JSFiddle - React, Tailwind, and code Playground
by danbeam
JavaScript
function print(mtx) {
function nl(rows) { return rows.join('\n'); }
function sp(row) { return row.join(' '); }
console.log(
nl([
sp(mtx[0]),
sp(mtx[1]),
sp(mtx[2]),
sp(mtx[3])
])
);
}
function zeroRowsAndCols(mtx) {
var rows = {}, cols = {};
for (var i = 0; i < mtx.length; ++i) {
for (var j = 0; j < mtx[i].length; ++j) {
if (i in rows || j in cols)
continue;
if (mtx[i][j] == 0) {
rows[i] = true;
cols[j] = true;
}
}
}
for (var row in rows) {
for (var i = 0; i < mtx[row].length; ++i) {
mtx[row][i] = 0;
}
}
for (var col in cols) {
for (var i = 0; i < mtx.length; ++i) {
if (i in rows)
continue;
mtx[i][col] = 0;
}
}
}
var mtx = [ [ 1, 2, 3, 4 ],
[ 5, 6, 0, 8 ],
[ 9, 0, 11, 12 ],
[ 13, 14, 15, 16 ] ];
print(mtx);
zeroRowsAndCols(mtx);
print(mtx);