আমাদের কাছে y1 এবং y2 স্থানাঙ্ক দ্বারা সংজ্ঞায়িত উল্লম্ব অঞ্চলগুলির একটি সেট রয়েছে, যেখানে y1 হল শুরুর বিন্দু এবং y2 হল প্রতিটি অঞ্চলের শেষ বিন্দু৷
আমাদের স্থানাঙ্ক সিস্টেমের উৎপত্তি হল উপরের-বাম কোণে, তাই y2 সর্বদা y1 থেকে বড় হয়৷
এটি একটি উদাহরণ -
const অঞ্চল =[ [10, 100], [50, 120], [60, 180], [140, 220]];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসাবে একটি অঞ্চল অ্যারে এবং দ্বিতীয় আর্গুমেন্ট হিসাবে একটি সংখ্যা নেয়৷
আমরা একটি নির্দিষ্ট আকারের চেয়ে বড় সমস্ত বিচ্ছিন্ন ছেদ খুঁজে বের করতে চাই, (ফাংশনের দ্বিতীয় আর্গুমেন্ট দ্বারা নির্দিষ্ট করা হয়েছে)।
ধরা যাক, উদাহরণস্বরূপ, 20 ইউনিট।
তারপর উপরের অ্যারের জন্য আউটপুট −
এর মত হওয়া উচিতকনস্ট আউটপুট =[ [60, 100], [140, 180]];
আমরা একটি সরলীকৃত অ্যালগরিদম ব্যবহার করতে পারি এবং ওভারল্যাপিং আইটেমগুলি অনুসন্ধানের জন্য পণ্য জুড়ে ব্যবহার করতে পারি।
তারপরে পুনরাবৃত্তি করে সাধারণ অংশগুলি পান এবং শুধুমাত্র অজানা মিলগুলি ফিল্টার করুন৷
৷উদাহরণ
এর জন্য কোড হবে −
const অঞ্চল =[ [10, 100], [50, 120], [60, 180], [140, 220]];const getIntersections =(arr,num) => { let disjoint, res; ফেরত 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])]; রিটার্ন ডিসজয়েন্ট [0] <ডিসজয়েন্ট[1]? (ই. ব্যবহার করা =সত্য, বিচ্ছিন্ন) :s; }); res[1] - res[0]> num &&acc.push(res); রিটার্ন acc; }, []);}console.log(getIntersections(regions, 20));
আউটপুট
এবং কনসোলে আউটপুট হবে −
<প্রে> [ [ 60, 100 ], [ 140, 180 ] ]