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

JavaScript में वर्टिकल लाइन सेगमेंट्स के सेट में सभी डिस्जॉइंटेड इंटरसेक्शन ढूंढना


हमारे पास y1 और y2 कोऑर्डिनेट्स द्वारा परिभाषित वर्टिकल रीजन्स का एक सेट है, जहां y1 प्रत्येक रीजन का शुरुआती बिंदु है और y2 अंतिम बिंदु है।

हमारे कोऑर्डिनेट सिस्टम का मूल शीर्ष-बाएं कोना है, इसलिए y2 हमेशा y1 से बड़ा होता है।

यह एक उदाहरण है:

const regions = [    [10, 100],    [50, 120],    [60, 180],    [140, 220] ];

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

हम एक निश्चित आकार से बड़े सभी डिस्जॉइंटेड इंटरसेक्शन ढूंढना चाहते हैं (जो फ़ंक्शन के दूसरे आर्गुमेंट द्वारा निर्दिष्ट है)।

मान लीजिए, उदाहरण के लिए, 20 यूनिट्स।

तो उपरोक्त ऐरे के लिए आउटपुट इस तरह दिखना चाहिए:

const output = [    [60, 100],    [140, 180] ];

हम एक सरलीकृत एल्गोरिदम का उपयोग कर सकते हैं और ओवरलैपिंग आइटम्स की खोज के लिए क्रॉस प्रोडक्ट का उपयोग कर सकते हैं।

फिर इटरेट करके कॉमन पार्ट्स प्राप्त करें और केवल अननोन मैचों को फ़िल्टर करें।

उदाहरण

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

const regions = [    [10, 100],    [50, 120],    [60, 180],    [140, 220] ]; const getIntersections = (arr,num) => {    let disjoint, res;    return arr.reduce((acc,val,ind,array) => {       if (val.used){          return acc;       };       res = array.map((el, index) => array[(ind + index) % array.length]) .reduce((s,e) => {          disjoint = [Math.max(s[0],e[0]), Math.min(s[1],e[1])];          return disjoint[0] < disjoint[1] ? (e.used = true, disjoint) : s;       });       res[1] - res[0] > num && acc.push(res);       return acc;    },[]); } console.log(getIntersections(regions, 20));

आउटपुट

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

[ [ 60, 100 ], [ 140, 180 ] ]

  1. जावास्क्रिप्ट में एरे बनाम सेट जावास्क्रिप्ट में एरे बनाम सेट

    Set डेटा टाइप को ES2015 में पेश किया गया था और एरे और सेट के बीच अंतर यह है कि जहां एरे में डुप्लिकेट वैल्यूज हो सकती हैं, वहीं सेट में नहीं हो सकतीं। एरे में एलिमेंट्स को इंडेक्स का उपयोग करके एक्सेस किया जा सकता है जो सेट में संभव नहीं है क्योंकि यह कीज़ का उपयोग करता है और एलिमेंट्स को केवल उसी

  1. - C++ प्रोग्राम: दिए गए सेट के सभी विशिष्ट उपसमुच्चय (subsets) ज्ञात करना

    यहां हम देखेंगे कि दिए गए सेट के सभी विशिष्ट उपसमुच्चय कैसे प्रदर्शित करें। इसलिए यदि सेट {1, 2, 3} है, तो उपसमुच्चय होंगे {}, {1}, {2}, {3}, {1, 2}, {2, 3}, {1, 3}, {1, 2, 3}। सभी उपसमुच्चयों के सेट को पावर सेट (power set) कहा जाता है। पावर सेट में 2n तत्व होते हैं। हम 0 से 2n (बहिष्कृत) तक लूप कर

  1. - C++ प्रोग्राम: क्षैतिज और ऊर्ध्वाधर रेखा खंडों के बीच त्रिभुजों की संख्या ज्ञात करना

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दिए गए क्षैतिज और ऊर्ध्वाधर रेखा खंडों के प्रतिच्छेदन बिंदुओं को जोड़कर बनने वाले त्रिभुजों की संख्या ज्ञात करता है। उदाहरण के लिए, मान लीजिए हमें निम्नलिखित रेखा खंड दिए गए हैं। इसमें हमारे पास 3 प्रतिच्छेदन बिंदु हैं। तो इन बिंदुओं का उपयोग करके बनने