Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में समीकरणों की वैधता जांचना


समस्या

हमें एक JavaScript फ़ंक्शन लिखना है जो एक सरणी arr को पहले और एकमात्र आर्गुमेंट के रूप में लेता है।

सरणी arr में निम्न दो प्रकार के स्ट्रिंग समीकरण होते हैं -

  • 'X === Y'

  • 'X !== Y'

यहां, X और Y कोई भी वेरिएबल हो सकते हैं।

हमारे फ़ंक्शन को जांचना चाहिए कि क्या सरणी में सभी समीकरणों के लिए, हम कुछ संख्या निर्दिष्ट कर सकते हैं ताकि सरणी में सभी समीकरण true हों।

उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

const arr = ['X===Y', 'Y!==Z', 'X===Z'];

तो आउटपुट होना चाहिए -

const output = false;

आउटपुट व्याख्या:

कोई फर्क नहीं पड़ता कि हम X, Y और Z के लिए क्या मान चुनते हैं। सभी तीन समीकरण कभी संतुष्ट नहीं हो सकते।

उदाहरण

इसके लिए कोड होगा -

const arr = ['X===Y', 'Y!==Z', 'X===Z']; 
const validateEquations = (arr = []) => { 
  const map = {}; 
  const len = {}; 
  const inValids = []; 
  const find = (item) => { 
    while(map[item] && item !== map[item]){ 
      map[item] = map[map[item]]; 
      item = map[item]; 
    }; 
    return item; 
  }; 
  const add = (a, b) => { 
    const first = find(a); 
    const second = find(b); 
    if(first === second){ 
      return; 
    }; 
    if(len[first] < len[second]){ 
      map[first] = second; 
      len[second] += len[first]; 
    }else{ 
      map[second] = first; 
      len[first] += len[second]; 
    } 
  } 
  arr.forEach((item) => { 
    const X = item[0]; 
    const Y = item[4]; 
    map[X] = map[X] || X; 
    map[Y] = map[Y] || Y; 
    len[X] = len[X] || 1; 
    len[Y] = len[Y] || 1; 
    if(item[1] === '!'){ 
      inValids.push([X, Y]); 
    }else{ 
      add(X, Y); 
    }; 
  }); 
  return inValids.every(([a, b]) => find(a) !== find(b)); 
}; 
console.log(validateEquations(arr));

आउटपुट

कंसोल में आउटपुट होगा -

false

  1. JavaScript Const: ब्लॉक-स्कोप्ड कॉन्स्टेंट्स JavaScript Const: ब्लॉक-स्कोप्ड कॉन्स्टेंट्स

    const ES2015 (ES6) में पेश किया गया एक ब्लॉक-स्कोप्ड वेरिएबल डिक्लेरेशन है जो रीअसाइनमेंट को रोकता है। यह आधुनिक JavaScript में डिफ़ॉल्ट विकल्प होना चाहिए जब रीअसाइनमेंट की आवश्यकता न हो। उदाहरण { try { a = 44; // TypeError: Assignment to constant variable } catch (e

  1. JavaScript में Const vs Let JavaScript में Const vs Let

    Const और let को ES2015 में ब्लॉक-स्कोप्ड वेरिएबल घोषित करने के लिए पेश किया गया था। जबकि let का उपयोग करके घोषित वेरिएबल को पुनः असाइन किया जा सकता है, const का उपयोग करके घोषित वेरिएबल को पुनः असाइन नहीं किया जा सकता। उदाहरण <!DOCTYPE html> <html lang="en"> <head> <me

  1. - JavaScript में सरणियों की वर्ग समानता की जांच

    समस्या हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं की दो सरणियों, arr1 और arr2, को पहला और दूसरा तर्क के रूप में लेता है। हमारा फ़ंक्शन true वापस करना चाहिए यदि और केवल यदि arr2 में प्रत्येक तत्व arr1 के किसी भी तत्व का वर्ग है, चाहे उनके प्रकट होने का क्रम कुछ भी हो। उदाहरण के लिए, यदि फ़ंक्शन