29 lines
729 B
TypeScript
29 lines
729 B
TypeScript
import { open } from 'node:fs/promises';
|
|
|
|
const file = await open('./inputs/14');
|
|
|
|
let input = (await file.readFile()).toString().split('\n').map(e => e.split(""))
|
|
|
|
function fallToUp({ x, y }: { x: number, y: number }) {
|
|
let index = input.slice(0, y).findLastIndex(e => e[x] === '#' || e[x] === 'O')
|
|
input[y][x] = '.'
|
|
input[index + 1][x] = 'O'
|
|
}
|
|
|
|
|
|
input.forEach((row, rowIndex) => {
|
|
row.forEach((el, colIndex) => {
|
|
if (el === 'O') {
|
|
fallToUp({ x: colIndex, y: rowIndex })
|
|
}
|
|
})
|
|
})
|
|
|
|
|
|
const score = input.reduce((prev, curr, index) => {
|
|
let weight = input.length - index
|
|
let score = curr.filter(e => e === "O").length * weight
|
|
return prev + score
|
|
}, 0)
|
|
|
|
console.log(score) |