Part A and B done
This commit is contained in:
parent
f458ca0c9b
commit
768f072476
40
src/04a.js
40
src/04a.js
@ -176,6 +176,20 @@ function checkAdjacent(rowIdx, colIdx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array} moveablePositions [rowIdx, colIdx] of all positions in which the roll can be removed
|
||||||
|
* @returns {Number} How many rolls were removed
|
||||||
|
*/
|
||||||
|
function removeRolls(moveablePositions) {
|
||||||
|
let removed = 0;
|
||||||
|
moveablePositions.forEach(pos => {
|
||||||
|
const row = rows[pos[0]];
|
||||||
|
row[pos[1]] = '.';
|
||||||
|
removed++;
|
||||||
|
});
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
|
||||||
const rows = new Array();
|
const rows = new Array();
|
||||||
inputs.forEach(row => {
|
inputs.forEach(row => {
|
||||||
const cols = parseRow(row);
|
const cols = parseRow(row);
|
||||||
@ -183,14 +197,24 @@ inputs.forEach(row => {
|
|||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
|
|
||||||
let moveableCount = 0;
|
let done = false;
|
||||||
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
let totalRemoved = 0;
|
||||||
for (let colIdx = 0; colIdx < rows[rowIdx].length; colIdx++) {
|
while (!done) {
|
||||||
const row = rows[rowIdx];
|
let moveableCount = 0;
|
||||||
const value = row[colIdx];
|
const moveablePositions = new Array();
|
||||||
if (value === '@') {
|
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
||||||
if (checkAdjacent(rowIdx, colIdx)) moveableCount++;
|
for (let colIdx = 0; colIdx < rows[rowIdx].length; colIdx++) {
|
||||||
|
const row = rows[rowIdx];
|
||||||
|
const value = row[colIdx];
|
||||||
|
if (value === '@') {
|
||||||
|
if (checkAdjacent(rowIdx, colIdx)) {
|
||||||
|
moveableCount++;
|
||||||
|
moveablePositions.push([rowIdx, colIdx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
totalRemoved += removeRolls(moveablePositions);
|
||||||
|
if (moveableCount === 0) done = true;
|
||||||
}
|
}
|
||||||
console.log(moveableCount);
|
console.log(totalRemoved);
|
||||||
Loading…
Reference in New Issue
Block a user