एक बाइनरी मैट्रिक्स केवल 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 ] ]