एक बाइनरी मैट्रिक्स केवल 0 या 1 वाली सरणियों की सरणी होती है। हमें एक JavaScript फ़ंक्शन लिखना है जो बाइनरी मैट्रिक्स को एकमात्र आर्ग्युमेंट के रूप में लेता है।
हमारे फ़ंक्शन को समान संख्या में पंक्तियों और स्तंभों वाला एक नया मैट्रिक्स बनाना चाहिए, और मूल मैट्रिक्स के प्रत्येक तत्व के लिए परिणामी मैट्रिक्स में उस तत्व की मूल मैट्रिक्स में 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 ] ]