day 7
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
|
||||||
|
|
||||||
|
const file = fs.readFileSync('./2025/inputs/7').toString();
|
||||||
|
const lines = file.split("\n").map(e => e.split(""))
|
||||||
|
|
||||||
|
|
||||||
|
const table: Node[][] = []
|
||||||
|
const nodes: Node[] = []
|
||||||
|
|
||||||
|
class Node {
|
||||||
|
isBeam = false
|
||||||
|
isSplitter = false
|
||||||
|
hasSplit = false
|
||||||
|
constructor(public x: number, public y: number, public character: string) {
|
||||||
|
if (this.character == "^") {
|
||||||
|
this.isSplitter = true
|
||||||
|
}
|
||||||
|
if (this.character == "S") {
|
||||||
|
this.isBeam = true
|
||||||
|
}
|
||||||
|
nodes.push(this)
|
||||||
|
}
|
||||||
|
toString() {
|
||||||
|
if (this.isSplitter) { return "^" }
|
||||||
|
if (this.isBeam) { return "|" }
|
||||||
|
return "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table.push(...lines.map((l, i) => l.map((e, j) => new Node(j, i, e))))
|
||||||
|
|
||||||
|
|
||||||
|
table.forEach((line, lineN) => {
|
||||||
|
if (lineN == 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
line.forEach((node, colN) => {
|
||||||
|
if (!table[lineN - 1][colN].isBeam) { return }
|
||||||
|
if (!node.isSplitter) {
|
||||||
|
node.isBeam = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let s = 0
|
||||||
|
if (colN != 0) {
|
||||||
|
if (!table[lineN][colN - 1].isBeam) {
|
||||||
|
node.hasSplit = true
|
||||||
|
table[lineN][colN - 1].isBeam = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (colN + 1 < line.length) {
|
||||||
|
if (!table[lineN][colN + 1].isBeam) {
|
||||||
|
node.hasSplit = true
|
||||||
|
table[lineN][colN + 1].isBeam = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(nodes.reduce((acc, n) => {
|
||||||
|
if (n.hasSplit) {
|
||||||
|
acc++
|
||||||
|
}
|
||||||
|
return acc
|
||||||
|
}, 0))
|
||||||
+94
@@ -0,0 +1,94 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
|
||||||
|
|
||||||
|
const file = fs.readFileSync('./2025/inputs/7').toString();
|
||||||
|
const lines = file.split("\n").map(e => e.split(""))
|
||||||
|
|
||||||
|
|
||||||
|
const table: Node[][] = []
|
||||||
|
const nodes: Node[] = []
|
||||||
|
|
||||||
|
let origin: Node | null = null
|
||||||
|
class Node {
|
||||||
|
isBeam = false
|
||||||
|
isSplitter = false
|
||||||
|
left: Node | null = null
|
||||||
|
right: Node | null = null
|
||||||
|
weight = 0
|
||||||
|
constructor(public x: number, public y: number, public character: string) {
|
||||||
|
if (this.character == "^") {
|
||||||
|
this.isSplitter = true
|
||||||
|
nodes.push(this)
|
||||||
|
}
|
||||||
|
if (this.character == "S") {
|
||||||
|
this.isBeam = true
|
||||||
|
origin = this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildGraph() {
|
||||||
|
let searchY = this.y + 1
|
||||||
|
while (searchY < table.length && (!this.left || !this.right)) {
|
||||||
|
if (this.x > 0 && !this.left && table[searchY][this.x - 1].isSplitter) {
|
||||||
|
this.left = table[searchY][this.x - 1]
|
||||||
|
}
|
||||||
|
if (this.x + 1 < table[searchY].length && !this.right && table[searchY][this.x + 1].isSplitter) {
|
||||||
|
this.right = table[searchY][this.x + 1]
|
||||||
|
}
|
||||||
|
searchY++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateWeight() {
|
||||||
|
if (this.weight) {
|
||||||
|
return this.weight
|
||||||
|
}
|
||||||
|
let leftC = 1
|
||||||
|
if (this.left) {
|
||||||
|
leftC = this.left.calculateWeight()
|
||||||
|
}
|
||||||
|
let rightC = 1
|
||||||
|
if (this.right) {
|
||||||
|
rightC = this.right.calculateWeight()
|
||||||
|
}
|
||||||
|
this.weight = leftC + rightC
|
||||||
|
return this.weight
|
||||||
|
}
|
||||||
|
|
||||||
|
toString() {
|
||||||
|
if (this.isSplitter) { return "^" }
|
||||||
|
if (this.isBeam) { return "|" }
|
||||||
|
return "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table.push(...lines.map((l, i) => l.map((e, j) => new Node(j, i, e))))
|
||||||
|
|
||||||
|
table.forEach((line, lineN) => {
|
||||||
|
if (lineN == 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
line.forEach((node, colN) => {
|
||||||
|
if (!table[lineN - 1][colN].isBeam) { return }
|
||||||
|
if (!node.isSplitter) {
|
||||||
|
node.isBeam = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (colN != 0) {
|
||||||
|
if (!table[lineN][colN - 1].isBeam) {
|
||||||
|
table[lineN][colN - 1].isBeam = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (colN + 1 < line.length) {
|
||||||
|
if (!table[lineN][colN + 1].isBeam) {
|
||||||
|
table[lineN][colN + 1].isBeam = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
nodes.forEach(n => n.buildGraph());
|
||||||
|
|
||||||
|
origin = origin as unknown as Node
|
||||||
|
origin.buildGraph()
|
||||||
|
|
||||||
|
console.log(origin.calculateWeight())
|
||||||
+142
@@ -0,0 +1,142 @@
|
|||||||
|
......................................................................S......................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................................................^......................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................................................^.^.....................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................................................^.^.^....................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................................................^...^.^...................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................................................^.^.^...^..................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................................................^...^.^.^.^.................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................................................^.^.^.^.^.^.^................................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................................................^.^.^...^.^...^...............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................................................^.^.^...^.^.^...^..............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................................................^.^.^.....^.^.^.^.^.............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................................................^.^.^.^...^.^.....^.^............................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................................................^.^.......^...^.^.^.^.^...........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................................................^.^...^.^.^...^.^.^.^.^.^..........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................................................^.^.^...^.^.^.^.^.^.^.^.^.^.........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................................................^.^.^.^.........^.^...^...^.^........................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................................................^.^.^...^.^.....^.^.^.......^.^.......................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................................^.^.....^.^.^.....^.^.^.....^.^.^......................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................................^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^.....................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................................^.^...^...^.^.^.^.^.^.^.....^.^.....^....................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................................^.^...^.^.^.^...^...^.....^.^...^.....^...................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................................^.......^.^...^.^.^.^.^.^.....^.^...^...^..................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................................^...^.....^...^...^...^.^.^.^...^.^.^.^...^.................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................................^.^.^.^.^...^.....^...^.^.^.^.^.^.^...^.^.^.^................................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................................^.^.^.^.......^...^...^.^.^...^.^.^.^.^...^.^.^...............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................................^.^.^...^.^.^.^.^...^.^.....^.^.^.^.^.....^.^.^.^..............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................................^.^.^.^.^.^.^...^.^.....^.^.^.^.^...^.....^...^.^.^.............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................................^.^.^.^.^.^.^...^.^.^...^.............^.....^.....^.^............................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................................^.^.^.....^...^.^.^.^...^.^...^.....^...^.....^.^.^.^.^...........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................................^.^.^.^.^.^.^.^.^...^.^...^.^.......^.^.....^.^.^...^.^.^..........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................................^...^.^.^.......^.....^...^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................................^.^.^.^.^.^.....^...^.....^.^.....^.^.^.^.^...^...^.^.^.^...^........................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................................^.^.^.^.^.^.^.^.^.^.^.^.^.^.......^.......^.^.....^...^.^...^.^.......................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................................^.^.^.^.^.^.^...^.^...^.^.^...^...^.....^.^.......^.^.....^...^.^......................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................................^.^.^.^.^.^.^.^...^...^.^.^.^...^.^.^.^...^.^.^.^.^.^.^.^...^.^...^.....................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................................^...^.^...^...^.^.....^.^...^.^.^.^.^...^.^.^.^.^...^.^.^.^...^.^.^.^....................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................................^.^...^...^.^.....^.....^.....^...^.^.^.^.^...^.^.^.^...^...^.^.^.^...^...................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................................^...^.^.^.^.....^...^.....^.^.^.........^.^.^.....^.^.^.^.^...^.^.^.^.^.^..................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................................^.....^.^.^.......^.^.....^.^.^.^.......^.^.^...^.....^.......^.^...^.....^.................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................................^...^.^.^.^.^.^.^.^.....^...^.....^.^.^.....^.^...^.^.^.....^.^.......^.^.^.^................................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............................^.^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^...^.........^.^.^.^.....^.^.^.^...^...^.^...............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............................^...^.............^...^.^...^...^.^.....^.^.....^...^.^...^.^.^...^...^.^.^.^...^..............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............................^...^...^...^...^.^.^.^.........^...^.....^.^.^.^.^.^.^.^.....^.......^.^...^...^.^.............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
............................^.^.^.^.^.^.....^.^...^.^.............^.^.^.^.^.^...^.^.^...^.^...^...^.^.^...^...^.^............................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........................^...^...^...^.^.^.^.......^.^.^...^...^...^.^.^...^.^.^...^.^.......^.^.^.^.^.^.....^.^...........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........................^.^.^.^.^.^.^.^...^.^...^.^...^.^.......^.^...^.^.^.^...^.^...^...^.^...^.^.^.^.^.^.^...^..........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........................^.....^.^.....^.^...^...^.^.^...^.......^.^.^...^.^.....^.....^...^.^...^.....^...^.^.^.^.^.........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
........................^.^.^.^.^.^.^.^.^.....^...^...^...^.^.^.^...^.......^.......^...^...^.^.^...^.^.....^...^.^.^........................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......................^.^...^.^.....^.^...^.....^.^.^.^.^.^.^...........^.......^.^.^.......^.^.^.^.^.^.....^.......^.......................
|
||||||
|
.............................................................................................................................................
|
||||||
|
......................^.....^...^.^...^.^.^...^.^.^...^.^...^.^.^...^.....^...^.....^.^.^.^.^.^...^.....^.^.^.^...^.^.^......................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....................^.^.^.^...^.^...^...^.^...^.^.^.^.^.^...^.^.^.^...^.^.......^.^...^.........^.^.^.^...^.....^.^.^.^.....................
|
||||||
|
.............................................................................................................................................
|
||||||
|
....................^.^.^.^.^.^...^...........^.^.^.^.^.......^.....^.^...^...^.^.^...^.^.^.^...^.^.^.^.^...^.....^.^...^....................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...................^.^.....^.^.^.^.^.^.^.^.^.^.^.......^.....^.........^.^.^.^.^.^.^.^.^.....^.^.^...^.^.^...^.^...^.^.^.^...................
|
||||||
|
.............................................................................................................................................
|
||||||
|
..................^.......^.^...^.^...^.^.^.....^.^.^.^.....^.......^...^.^.....^.^.....^.^...^.^.^.^.^.....^.^.^.......^.^..................
|
||||||
|
.............................................................................................................................................
|
||||||
|
.................^...^.^.^.^.^.....^.^.^...^.^...^...^...^.^.^.^.^.^...^.....^.^.^...^.^.....^.^.^.^.^.^.^.^.^.....^.......^.................
|
||||||
|
.............................................................................................................................................
|
||||||
|
................^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^...^...^.^.^...^.^.^...^...^.^.....^...^.^.^.^...^.^.....^.^................
|
||||||
|
.............................................................................................................................................
|
||||||
|
...............^...^.^.^.^.^.^.^...^.^.....^...^.^.....^.^.....^.^.....^.^.^.^...^.^.^...^.^.....^.^.....^.....^.....^.^.^.^.^...............
|
||||||
|
.............................................................................................................................................
|
||||||
|
..............^.^.^...^.........^.^.^.^...^.......^.^.^.^.....^.^.^.^.....^.^.^.....^.^.^.........^.....^.^...^.^...^.^.^.^.^.^..............
|
||||||
|
.............................................................................................................................................
|
||||||
|
.............^.^.^.^...^...^.^...^...^.......^.^.^.....^.^.^.^...^...^.^.^.........^.....^.^.....^.......^.^.......^.^.^.^.^.^.^.............
|
||||||
|
.............................................................................................................................................
|
||||||
|
............^...^.^.^...............^.^.^.^...^.^.^.^.......^...^.^.^...^.^.^.^...^.^.^.^...^.^.....^.^.^...^.^.....^.^.^.^.^.^.^............
|
||||||
|
.............................................................................................................................................
|
||||||
|
...........^.^.^...^.^...^.^.^.^...^.^...^.^.^.....^...^.....^.^.^.^.^...^.^.^.^.....^.^...^.^...^.....^.^.^...^.^.......^...^.^.^...........
|
||||||
|
.............................................................................................................................................
|
||||||
|
..........^.^.^.^...^.^.^...^...^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^...^.^.......^...^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^..........
|
||||||
|
.............................................................................................................................................
|
||||||
|
.........^.....^.^...^.^.....^.^.^...^.^.^...^.^.....^.^.^...^.^.^.^...^.^.^.^.^.^...^...^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^...^.........
|
||||||
|
.............................................................................................................................................
|
||||||
|
........^...^.^.^.^.^.^.^.^.....^.^.^...^.^.........^.^.^.^.......^...^...^.^.^.^.^...^...^...^...^.......^...^.^.^.^.^...^.^.^.^.^.^........
|
||||||
|
.............................................................................................................................................
|
||||||
|
.......^.....^.^.^...^.^...^...^.....^...^.^.......^.....^.^.^.^.^.^.^.^.......^.^.^.^...^...^.^.^.^.^...^.^.^.^.^.^...^.^.^.^.^.^.^.^.......
|
||||||
|
.............................................................................................................................................
|
||||||
|
......^.^.^.^.^.^...^.^.^.^.^.^.^...^...^.^.^.^.....^.^...^...^.^...^.^.^...^.....^.......^.^.^.....^...^.^.^...^...^.^...^.^...^.^...^......
|
||||||
|
.............................................................................................................................................
|
||||||
|
.....^...^.......^.^.^.^.^.^.^...^...^...^.^.^...^.^.^.^...^...^.^.^.....^.^.....^...^.....^.....^.^.^...^.^.^...^.^.^...^...^...^.^...^.....
|
||||||
|
.............................................................................................................................................
|
||||||
|
....^.^.^...^.^...^.^...^.^...^.^...^.^.^...^.....^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.^...^.^.^...^.^.^.^.^...^...^.^.^.....^....
|
||||||
|
.............................................................................................................................................
|
||||||
|
...^.^...^.^.^.^...^.^.^.^.^.^.^...........^.^.^.^...^...^.^.^...^.^.....^.^.^.^.....^...^.^.^.^...^...^.^.^.^.^.^.^.^.^.^.^.^...^.......^...
|
||||||
|
.............................................................................................................................................
|
||||||
|
..^.^.^.^...^...^.^.^.....^.^.^.^.^...^.^.^.^...^...^.^.^.^...^...^.......^.^.^.^.^.^.^.^.^.^.^...^.^.^...^...^.^...^...^.^.^.^...^.^.^...^..
|
||||||
|
.............................................................................................................................................
|
||||||
|
.^.^.^.......^.....^.^.............^...^.....^.^.^.^.^.........^.^.^.........^.^.^.^.^.^.^...^...^.^...^.......^.^...^.^.^.^...^.^.^...^.^.^.
|
||||||
|
.............................................................................................................................................
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
.......S.......
|
||||||
|
...............
|
||||||
|
.......^.......
|
||||||
|
...............
|
||||||
|
......^.^......
|
||||||
|
...............
|
||||||
|
.....^.^.^.....
|
||||||
|
...............
|
||||||
|
....^.^...^....
|
||||||
|
...............
|
||||||
|
...^.^...^.^...
|
||||||
|
...............
|
||||||
|
..^...^.....^..
|
||||||
|
...............
|
||||||
|
.^.^.^.^.^...^.
|
||||||
|
...............
|
||||||
Reference in New Issue
Block a user