Solutions for day eleven

This commit is contained in:
Eric Wagoner 2021-12-14 15:30:24 -05:00
parent 2795e1baf5
commit 780bcdf940
3 changed files with 92 additions and 0 deletions

72
11/code.js Normal file
View File

@ -0,0 +1,72 @@
const fs = require('fs');
const inputArray = fs.readFileSync('input.txt').toString().split("\n");
const octopi = [];
for (const line of inputArray) {
octopi.push(line.split("").map(Number));
}
const height = octopi.length;
const width = octopi[0].length;
// Part One
// const runs = 100;
// Part Two
const runs = 1000;
let flashes = 0;
function flash(flashed) {
let flashing = 0;
for (let h = 0; h < height; h++) {
for (let w = 0; w < width; w++) {
const coords = `${h}-${w}`;
if (!flashed.includes(coords) && octopi[h][w] > 9) {
flashes++;
flashing++;
flashed.push(coords);
if (h >= 1) {
if (w >= 1) octopi[h-1][w-1]++;
octopi[h-1][w]++;
if (w < width - 1) octopi[h-1][w+1]++;
}
if (w >= 1) octopi[h][w-1]++;
if (w < width - 1) octopi[h][w+1]++;
if (h < height - 1) {
if (w >= 1) octopi[h+1][w-1]++;
octopi[h+1][w]++;
if (w < width - 1) octopi[h+1][w+1]++;
}
}
}
}
if (flashing === 0) return;
flash(flashed);
return;
}
for (let r = 1; r <= runs; r++) {
const flashed = [];
for (let h = 0; h < height; h++) {
for (let w = 0; w < width; w++) {
octopi[h][w]++;
}
}
flash(flashed);
for (let h = 0; h < height; h++) {
for (let w = 0; w < width; w++) {
if (octopi[h][w] > 9) {
octopi[h][w] = 0;
}
}
}
if (octopi.flat().reduce((a, b) => parseInt(a) + parseInt(b), 0) === 0) {
console.log(`Synchronized on run ${r}`);
break;
}
}
console.log(`Total flashes: ${flashes}`);

10
11/input.txt Normal file
View File

@ -0,0 +1,10 @@
4743378318
4664212844
2535667884
3273363861
2282432612
2166612134
3776334513
8123852583
8181786685
4362533174

10
11/sample.txt Normal file
View File

@ -0,0 +1,10 @@
5483143223
2745854711
5264556173
6141336146
6357385478
4167524645
2176841721
6882881134
4846848554
5283751526