JSFiddle - React, Tailwind, and code Playground
by Abhishek Kumar
JavaScript
let data = [
[0, 1, 0],
[1, 0, 0],
[1, 1, 0],
[0, 1, 0],
[0, 1, 1]
];
let duri = [], winner = 0;
for (let i = 0; i < data.length; i++) {
let dist = [];
for (let c = 0; c < data[i].length; c++) {
dist[c] = (data[i][c] == 1) ? 0 : -1;
}
/* console.log(dist) */
for (let l = i - 1; l >= 0; l--) {
for (let j = 0; j < data[l].length; j++) {
if (data[l][j] == 1 && dist[j] == -1) {
dist[j] = i - l
}
}
}
/* console.log(dist) */
for (let r = i + 1; r < data.length; r++) {
for (let j = 0; j < data[r].length; j++) {
if (data[r][j] == 1 && (dist[j] == -1 || dist[j] > r - i)) {
dist[j] = r - i
}
}
}
/* console.log(dist) */
let score = Math.max(...dist);
duri[i] = [...dist, score];
let lastMinScore = (i > 0) ? duri[i-1][duri[i-1].length-1] : 0;
winner = (score < lastMinScore) ? i : winner;
}
console.log(duri, winner);