जावास्क्रिप्ट में उलटा काम करता है

मैं बहुत सारे choropleth मानचित्र बनाता हूं जिसके लिए मुझे एक कस्टम फ़ंक्शन चाहिए जो डेटासेट से मान स्वीकार करता है और संबंधित रंग देता है। उदाहरण के लिए, 1 से 10,000 तक लॉगरिदमिक रूप से वितरित डेटा को इस फ़ंक्शन की आवश्यकता हो सकती है:

var colors = ["#ffffcc","#c2e699","#78c679","#31a354","#006837"];
function val_to_index(val) {
    var index = Math.floor(Math.log(val)/Math.log(10));
    return colors[index];
}

जब पौराणिक कथाओं के लिए स्वचालित रूप से पाठ का निर्माण करते हैं, इस बीच, मुझे रिवर्स फ़ंक्शन की आवश्यकता होती है:

function index_to_val(index) {
    return Math.pow(10, index);
}
var legend_labels = [0,1,2,3,4].map(index_to_val);

जब यह लॉग/एक्सपोनेंट के रूप में सरल होता है, तो दोनों कार्यों को लिखने में कोई परेशानी नहीं होती है। लेकिन जब यह अधिक जटिल होता है, तो यह वास्तव में थकाऊ हो जाता है। उदाहरण के लिए:

   //divisions of 50,100,500,1000,5000,etc
function val_to_index(v) {
    var lg = Math.log(v)/Math.log(10);
    var remainder = lg % 1 > (Math.log(5)/Math.log(10)) ? 1 : 0;
    var index = return Math.floor(lg) * 2 - 3 + remainder;
    return colors[index];
}

function index_to_val(index) {
    index += 3;
    return Math.pow(10, Math.floor(index/2)) * Math.pow(5, index%2);
}

मिडिल स्कूल बीजगणित में, हमने एक्स और वाई चर को उलटकर और वाई के लिए हल करके स्वचालित रूप से कार्यों को उलटा करना सीखा (जो, निश्चित रूप से, केवल कुछ कार्यों के लिए संभव था)। मेरा सवाल यह है: क्या कंप्यूटर विज्ञान में समकक्ष संचालन है?

0

1 उत्तर

फ़ंक्शन के विपरीत को स्वचालित रूप से ढूंढने के लिए किसी प्रकार की कंप्यूटर बीजगणित सॉल्वर (सीएएस) लाइब्रेरी की आवश्यकता होगी। यदि आप हमेशा आगे के ऑपरेशन करते हैं, तो पहले, एक आसान तरीका हो सकता है; मूल डेटा को हटाने के बजाय, मूल मान और ऑब्जेक्ट में एक साथ गणना के परिणाम को लपेटें। इस तरह, उलटा गणना करने के लिए केवल मूल मूल्य वाले फ़ील्ड को पुनर्प्राप्त करने की आवश्यकता होती है।

0
जोड़ा
बहुत अकलमंद! धन्यवाद
जोड़ा लेखक Chris Wilson, स्रोत