हमारे पास y1 और y2 निर्देशांक द्वारा परिभाषित लंबवत क्षेत्रों का एक सेट है, जहां y1 प्रारंभिक बिंदु है और y2 प्रत्येक क्षेत्र का अंतिम बिंदु है।
हमारे निर्देशांक प्रणाली का मूल शीर्ष-बाएं कोने में है, इसलिए y2 हमेशा y1 से बड़ा होता है।
यह एक उदाहरण है -
const regions = [ [10, 100], [50, 120], [60, 180], [140, 220] ];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो पहले तर्क के रूप में एक ऐसी क्षेत्र सरणी और दूसरे तर्क के रूप में एक संख्या लेता है।
हम एक निश्चित आकार से बड़े सभी असंबद्ध चौराहों का पता लगाना चाहते हैं, (फ़ंक्शन के दूसरे तर्क द्वारा निर्दिष्ट)।
मान लीजिए, उदाहरण के लिए, 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 ] ]