Solutions for day eleven
This commit is contained in:
parent
2795e1baf5
commit
780bcdf940
72
11/code.js
Normal file
72
11/code.js
Normal 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
10
11/input.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
4743378318
|
||||||
|
4664212844
|
||||||
|
2535667884
|
||||||
|
3273363861
|
||||||
|
2282432612
|
||||||
|
2166612134
|
||||||
|
3776334513
|
||||||
|
8123852583
|
||||||
|
8181786685
|
||||||
|
4362533174
|
10
11/sample.txt
Normal file
10
11/sample.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
5483143223
|
||||||
|
2745854711
|
||||||
|
5264556173
|
||||||
|
6141336146
|
||||||
|
6357385478
|
||||||
|
4167524645
|
||||||
|
2176841721
|
||||||
|
6882881134
|
||||||
|
4846848554
|
||||||
|
5283751526
|
Loading…
Reference in New Issue
Block a user