days 10-11
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
4525436417
|
||||
1851242553
|
||||
5421435521
|
||||
8431325447
|
||||
4517438332
|
||||
3521262111
|
||||
3331541734
|
||||
4351836641
|
||||
2753881442
|
||||
7717616863
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
const fs = require("fs")
|
||||
|
||||
const input = fs.readFileSync("input.txt", "utf-8", err => {
|
||||
err && console.error(err)
|
||||
}).split("\n").filter(line => line).map(line => line.split("").map(digit => parseInt(digit)))
|
||||
|
||||
let flashed, flashCount = 0
|
||||
for (let i = 0;; i++){
|
||||
flashed = Array(input.length).fill().map(arr => Array(input.length).fill(false))
|
||||
for (let x = 0; x < input.length; x++){
|
||||
for (let y = 0; y < input[x].length; y++){
|
||||
incAndFlash(x, y)
|
||||
}
|
||||
}
|
||||
flashCount += flashed.flat().filter(flash => flash).length
|
||||
if (i === 99){
|
||||
console.log(flashCount)
|
||||
}
|
||||
const all = input.flat()
|
||||
if (all.length === all.filter(num => num === 0).length){
|
||||
console.log(i + 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
function incAndFlash(x, y){
|
||||
if (flashed[y][x])
|
||||
return
|
||||
input[y][x]++
|
||||
if (input[y][x] > 9){
|
||||
input[y][x] = 0
|
||||
flashed[y][x] = true
|
||||
|
||||
for (let ny = y - 1; ny <= y + 1; ny++){
|
||||
for (let nx = x - 1; nx <= x + 1; nx++){
|
||||
if (x === nx && y === ny)
|
||||
continue
|
||||
if (ny < 0 || nx < 0 || ny > input.length - 1 || nx > input[0].length - 1)
|
||||
continue
|
||||
incAndFlash(nx, ny)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user