একটি বাইনারি ম্যাট্রিক্স হল অ্যারেগুলির একটি অ্যারে যেখানে শুধুমাত্র 0 বা 1 রয়েছে৷ আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি বাইনারি ম্যাট্রিক্সকে একমাত্র যুক্তি হিসাবে গ্রহণ করে৷
আমাদের ফাংশনটি একই সংখ্যক সারি এবং কলাম সমন্বিত একটি নতুন ম্যাট্রিক্স তৈরি করা উচিত এবং মূল ম্যাট্রিক্সের প্রতিটি উপাদানের জন্য ফলস্বরূপ ম্যাট্রিক্সে মূল ম্যাট্রিক্সে 0 থেকে সেই উপাদানটির নিকটতম দূরত্ব থাকা উচিত।
আমাদের মনে রাখতে হবে যে দূরত্ব গণনা করার সময় এটি অনুভূমিকভাবে বা উল্লম্বভাবে চলতে পারে এবং তির্যকভাবে নয়। এবং এটা নিশ্চিত যে ম্যাট্রিক্সে অন্তত একটি 0 আছে।
যেমন −
যদি ইনপুট ম্যাট্রিক্স হয় −
const arr = [ [0, 0, 0] [0, 1, 0] [1, 1, 1] ];
তারপর আউটপুট ম্যাট্রিক্স −
হওয়া উচিতconst output = [ [0, 0, 0] [0, 1, 0] [1, 2, 1] ];
উদাহরণ
এর জন্য কোড হবে −
const arr = [ [0, 0, 0], [0, 1, 0], [1, 1, 1], ]; const findNearestDistance = (arr = []) => { let array = []; let res = arr.map((el, ind) => el.map((subEl, subInd) => { if (subEl === 0) { array.push([ind, subInd]) return 0 }; return Number.MAX_SAFE_INTEGER; })); const updateAdjacent = (ind, subInd, min, array = []) => { if (ind < 0 || subInd < 0 || ind == arr.length || subInd == arr[0].length){ return; }; if (res[ind][subInd] < min + 2) return res[ind][subInd] = min + 1 array.push([ind, subInd]) }; while (array.length) { let next = [] for (let [ind, subInd] of array) { updateAdjacent(ind, subInd + 1, res[ind][subInd], next) updateAdjacent(ind, subInd - 1, res[ind][subInd], next) updateAdjacent(ind + 1, subInd, res[ind][subInd], next) updateAdjacent(ind - 1, subInd, res[ind][subInd], next) }; array = next; } return res; }; console.log(findNearestDistance(arr));
আউটপুট
এবং কনসোলে আউটপুট হবে −
[ [ 0, 0, 0 ], [ 0, 1, 0 ], [ 1, 2, 1 ] ]