ধরুন, আমাদের কাছে এইরকম অ্যারের একটি বস্তু আছে -
const obj = { obj1: [ 0, 10 ], obj2: [ 3, 9 ], obj3: [ 5, 12, 14 ] };
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা অ্যারেগুলির এমন একটি বস্তুতে নেয়। মনে রাখবেন যে প্রতিটি বস্তুর একাধিক দূরত্ব বিন্দু আছে, কিন্তু অন্য অবজেক্টের দূরত্ব বিন্দুর সাথে একত্রিত করার জন্য শুধুমাত্র একটি বেছে নেওয়া উচিত।
উপরের দূরত্ব বিন্দুর উপর ভিত্তি করে আমরা 12টি উপায়ে তিনটি বস্তুকে একত্রিত করতে পারি।
উদাহরণস্বরূপ, এটি −
হতে পারে[0,3,5];
এই ক্ষেত্রে, তিনটি বস্তুর মধ্যে মোট দূরত্ব হবে 5 - 0 যা 5;
অথবা এটি [10, 9, 5] হতে পারে, এবং দূরত্ব হল −
10 − 5 = 5;
সংমিশ্রণটিও হতে পারে [0, 3, 12] এবং দূরত্ব হল −
12 − 0 = 12;
আমরা যা অর্জন করতে চাই তা হল সংক্ষিপ্ততম সমন্বয় খুঁজে বের করা, যা এই ক্ষেত্রে হওয়া উচিত [10,9, 12]; এবং দূরত্ব হল 12−9 =3;
মনে রাখবেন যে সংক্ষিপ্ত দূরত্ব দ্বারা, আমরা গোষ্ঠীর বৃহত্তম এবং ক্ষুদ্রতম উপাদানের মধ্যে পার্থক্য বোঝাতে চাই।
উদাহরণ
এর জন্য কোড হবে −
const obj = { obj1: [ 0, 10 ], obj2: [ 3, 9 ], obj3: [ 5, 12, 14 ] }; const findNearest = (obj = {}) => { let parts = [undefined, undefined, undefined]; let i; let res; const data = Object .values(obj) .map((a, i) => a.map(v => [v, i])) .reduce((a, b) => a.concat(b)) .sort((a, b) => a[0] − b[0] || a[1] − b[1]); for (i = 0; i < data.length; i++) { parts[data[i][1]] = data[i][0]; if (parts.some(v => v === undefined)) continue; if (!res || Math.max(...parts) − Math.min(...parts) < Math.max(...res) − Math.min(...res)) { res = parts.slice(); }; }; return res; }; console.log(findNearest(obj));
আউটপুট
এবং কনসোলে আউটপুট হবে −
[ 10, 9, 12 ]