Part A and B done

This commit is contained in:
Skylar Grant 2025-12-05 21:02:06 -05:00
parent f458ca0c9b
commit 768f072476

View File

@ -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);