JSFiddle - React, Tailwind, and code Playground
by nomadev
JavaScript
function surfaceArea(H, W, A) {
let cost = 0;
for(let k = 0; k < A.length; k++) {
const col = k % W;
const row = Math.floor(k / W);
cost += 2; // top e bottom
// se prima riga
if(row === 0) cost += A[k]; // sommo il costo la facciata lato top
else {
// diff con riga superiore sommo i lati esposti se ci sono
cost += Math.abs(A[k] - A[k - W]);
}
// se ultima riga sommo anche tutta la facciata esposta
if(row === H - 1) cost += A[k];
// se prima colonna sommo il costo la facciata lat sx
if(col === 0) cost += A[k];
else {
// diff con colonna precedente sommo i lati esposti se ci sono
cost += Math.abs(A[k] - A[k - 1]);
}
if(col === W - 1) cost += A[k];
}
return cost;
}
//console.log(surfaceArea(3, 3, [1,3,4,2,2,3,1,2,4]));
console.log(surfaceArea(3, 3, [1,3,4, 2, 2, 3, 1, 2, 4]));