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();
inputs.forEach(row => {
const cols = parseRow(row);
@ -183,14 +197,24 @@ inputs.forEach(row => {
return;
});
let moveableCount = 0;
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
for (let colIdx = 0; colIdx < rows[rowIdx].length; colIdx++) {
const row = rows[rowIdx];
const value = row[colIdx];
if (value === '@') {
if (checkAdjacent(rowIdx, colIdx)) moveableCount++;
let done = false;
let totalRemoved = 0;
while (!done) {
let moveableCount = 0;
const moveablePositions = new Array();
for (let rowIdx = 0; rowIdx < rows.length; rowIdx++) {
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);