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();
|
||||
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);
|
||||
Loading…
Reference in New Issue
Block a user