Merge branch 'main' of git.z1glr.de:z1glr/advent-of-code-2025
This commit is contained in:
142
07/input
Normal file
142
07/input
Normal file
@@ -0,0 +1,142 @@
|
||||
......................................................................S......................................................................
|
||||
.............................................................................................................................................
|
||||
......................................................................^......................................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................................^.^.....................................................................
|
||||
.............................................................................................................................................
|
||||
....................................................................^.^.^....................................................................
|
||||
.............................................................................................................................................
|
||||
...................................................................^.^.^.^...................................................................
|
||||
.............................................................................................................................................
|
||||
..................................................................^.....^.^..................................................................
|
||||
.............................................................................................................................................
|
||||
.................................................................^...^.^...^.................................................................
|
||||
.............................................................................................................................................
|
||||
................................................................^.^.^.^.....^................................................................
|
||||
.............................................................................................................................................
|
||||
...............................................................^...^.^.......^...............................................................
|
||||
.............................................................................................................................................
|
||||
..............................................................^.^.^.^.........^..............................................................
|
||||
.............................................................................................................................................
|
||||
.............................................................^.^...^.^.^.^.^.^.^.............................................................
|
||||
.............................................................................................................................................
|
||||
............................................................^.^.^.^.^...^.^.^.^.^............................................................
|
||||
.............................................................................................................................................
|
||||
...........................................................^.^.^.......^.^.^.^.^.^...........................................................
|
||||
.............................................................................................................................................
|
||||
..........................................................^.^.^.^.^...^...^.^.^.^.^..........................................................
|
||||
.............................................................................................................................................
|
||||
.........................................................^...^.......^.^.^.^...^...^.........................................................
|
||||
.............................................................................................................................................
|
||||
........................................................^.^.....^...^.^...^...^.^...^........................................................
|
||||
.............................................................................................................................................
|
||||
.......................................................^.^...^.^.^.^...^.^...^.^.....^.......................................................
|
||||
.............................................................................................................................................
|
||||
......................................................^.^...^.....^.^.^...^.^.^...^.^.^......................................................
|
||||
.............................................................................................................................................
|
||||
.....................................................^.^.^...^.^.^.^.^.^.^...^.^...^.^.^.....................................................
|
||||
.............................................................................................................................................
|
||||
....................................................^.^.........^...^.^.^.^...^.^.^.^.^.^....................................................
|
||||
.............................................................................................................................................
|
||||
...................................................^.....^...^.^...^.^.^...^.^.......^.^.^...................................................
|
||||
.............................................................................................................................................
|
||||
..................................................^.^...^.^.^.^...^.^.^.....^.....^.^.^...^..................................................
|
||||
.............................................................................................................................................
|
||||
.................................................^.^.^.^.^.^.^.^...^.^.^.^...^...^.^.^...^.^.................................................
|
||||
.............................................................................................................................................
|
||||
................................................^.^.....^.....^.^.....^...^.^...^.^.......^.^................................................
|
||||
.............................................................................................................................................
|
||||
...............................................^.^...^.^...^.^.....^.^.^.^.^.^...^.^...^.^.^.^...............................................
|
||||
.............................................................................................................................................
|
||||
..............................................^...^.^.^...^.....^...^.^.^.....^.^...^...^.^...^..............................................
|
||||
.............................................................................................................................................
|
||||
.............................................^.^.^.^.^.^.^.^.^.......^.^.^.^.^.^.^.^...^.^.^.^.^.............................................
|
||||
.............................................................................................................................................
|
||||
............................................^.^.^.^.^.^.....^...^.^.^.^.^.^...^...^.^.^...^.^.^.^............................................
|
||||
.............................................................................................................................................
|
||||
...........................................^.^...^.^.^.^.^...^.^.^.^.....^.....^.....^.......^.^.^...........................................
|
||||
.............................................................................................................................................
|
||||
..........................................^.^...^.^.^.^...^.^.^.^.^.^...^.^.....^.^.^.......^.^.^.^..........................................
|
||||
.............................................................................................................................................
|
||||
.........................................^.^.^.^.^.^.^...^.^...^.^.^...^...^.^...^...^.......^.^.^.^.........................................
|
||||
.............................................................................................................................................
|
||||
........................................^.^.....^.^...^.^.^...^.^.^...^.^...^.^.^...^.^.^.^.^.^.^...^........................................
|
||||
.............................................................................................................................................
|
||||
.......................................^...^.....^...^.^.^.^...^...^...^.^...^.^...^.^.^...^.^.^.^.^.^.......................................
|
||||
.............................................................................................................................................
|
||||
......................................^.^.^...^.^.^.^.^.^.^.^.^.^.....^.^...^.^.^.^.^...^.^.^.^.^.^.^.^......................................
|
||||
.............................................................................................................................................
|
||||
.....................................^.^.....^.....^.....^.^.^.^...^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^.....................................
|
||||
.............................................................................................................................................
|
||||
....................................^.^...^.^.^.^...^.^.^.^.^.^.^.^...^.^.^...^.^.^.^...^.^...^...^.^.^.^....................................
|
||||
.............................................................................................................................................
|
||||
...................................^.....^.....^.^.^.^.^.....^...^.^.^.^.^...^...^.....^.^.^...^.^.^.....^...................................
|
||||
.............................................................................................................................................
|
||||
..................................^...^...^...^.^.^.^...^.......^.^...^.^.......^.^.^.^...^.^.....^.^.^...^..................................
|
||||
.............................................................................................................................................
|
||||
.................................^.^.^.^.^.^.^.^.^.^...^.^.^.^.....^.^.^.^.^.^.^.......^.^.^...^...^...^.^.^.................................
|
||||
.............................................................................................................................................
|
||||
................................^.^.^.^.^.^.^.^.^.^.^...^.^...^.....^.^.^...^.^...^...^.^...^.^...^.^.^.^.^.^................................
|
||||
.............................................................................................................................................
|
||||
...............................^.^.....^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^...^.^...............................
|
||||
.............................................................................................................................................
|
||||
..............................^.^.^.^.^.^.^.^.^.........^.^.^.^.^.^.^.^...^.^...^.^.^.^.^.^.......^.^.^.....^.^..............................
|
||||
.............................................................................................................................................
|
||||
.............................^...^...^.^.^.^...^.^...^.^.^.^.^.^.^...^.^...^.^.^.^.^.....^...^.^...^.^.^.^.^.^.^.............................
|
||||
.............................................................................................................................................
|
||||
............................^.^.^.^.^...^.....^...^...^.^.....^.....^...^...^.^.^.....^.^.^.^.^...^.^.^.^.^.^.^.^............................
|
||||
.............................................................................................................................................
|
||||
...........................^.^.^.^.^.....^.^.^...^.....^...^...^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.....^...........................
|
||||
.............................................................................................................................................
|
||||
..........................^.^.^.^.^.^.^.^.^.^...^.^.^.^...^.....^.^.....^.....^.^...^...^.^.^...^.^.^.^.^.^.^.^.^.^..........................
|
||||
.............................................................................................................................................
|
||||
.........................^.^.^.^.^.^.^.....^...^.^.^.........^.^.......^.^...^.^.^...^.^.^.^.^.^.....^.^.^...^...^.^.........................
|
||||
.............................................................................................................................................
|
||||
........................^.^.^.^.....^.^...^.^.^...^.^...^...^.^.^.^.^.^.....^.^.^...^...^.^.^.^.^.^.^...^.^...^...^.^........................
|
||||
.............................................................................................................................................
|
||||
.......................^.^.^...^.^.^.^.^.....^...^.^.^...^...^.^.^.^.^...^.^.^...^...^.^.....^.^.^.^.^.^.^.^...^.^.^.^.......................
|
||||
.............................................................................................................................................
|
||||
......................^...^...^.^.^.........^...^.^.^.^...^.^.^...^.^.^...^.^...^.^...^.....^.^.^.^.^.^.......^.^.^.^.^......................
|
||||
.............................................................................................................................................
|
||||
.....................^...^.^.....^.^...^.......^.....^.^.^.^.^.....^.^.^.^.^.....^.^.^.^.^.^.^...^...^.^.^...^.........^.....................
|
||||
.............................................................................................................................................
|
||||
....................^...^.^.^.....^...^.^.^.^.....^.^.^.^.^.^.^.^...^.^.^.^...^.^.^...^.^.^.^.^...^.^.^.....^.^.^.^.^...^....................
|
||||
.............................................................................................................................................
|
||||
...................^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...........^.^.^...^.^.^.^.^.^.^.....^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^...................
|
||||
.............................................................................................................................................
|
||||
..................^...^.^.^.^.^.^.^.......^.^.^.^.......^.^.^.^.....^.^...^.^.^.^...^.^.....^.^...^...^.^.^...^...^.^.^.^.^..................
|
||||
.............................................................................................................................................
|
||||
.................^.^.^.^.^...^.......^.^...^.^...^.^...^.....^.^.^.^.....^.^.^.^.^.^.^...^.^.....^.^.^.^.^.....^.^.^.^.^...^.................
|
||||
.............................................................................................................................................
|
||||
................^.^...^.^.^.^.^.^.^...^...^.^.^.^.^.^...^.^...^.^...^.....^.^...^...^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^................
|
||||
.............................................................................................................................................
|
||||
...............^.^.^.^...^.^.^...^.^.^.^.^...^...^...^.^...^.^.......^.......^.^...^...^.^...^.^.^.^...^.^.^.^...^.......^.^.^...............
|
||||
.............................................................................................................................................
|
||||
..............^.^...^.^...^.^.^.^.^...^.^.^...^.^...^.^.^...^.^.........^.^.^...^.^.^.^.^.....^.^.^.^.^...^...^.^.^.^.^.....^.^..............
|
||||
.............................................................................................................................................
|
||||
.............^.^.^.....^.^.^...^...^.^.....^.^.....^...^.^.....^.^.^.^.^.....^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.............
|
||||
.............................................................................................................................................
|
||||
............^.....^.^...^...^.^.^.^.^.^.^.^...^.....^.^...^...^.^.^.^.^.^.^.^.....^.^.^.^...^.^...^.^...^.^.^.^.^...^.^.^.......^............
|
||||
.............................................................................................................................................
|
||||
...........^.^.^.^...^.^.^.^.^.^.^.^.^.....^.^...^.^...........^.......^.^.^.^.....^.^...^.^.^.^.^.^.....^...^.....^...^.^.^.^.^.^...........
|
||||
.............................................................................................................................................
|
||||
..........^...^.^.^...^.^.^.^...^...^...^.^.^.^...^.^.....^...^.^.^.^.^.^.........^...^...^.^...^...^.^.^...^.^...^.....^...^.^.^.^..........
|
||||
.............................................................................................................................................
|
||||
.........^.............^.^.^...^.^.^.^.^.....^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^...^...^...^.^.^.^.^.^.^.^.^.^...^...^...^...^.^.^.........
|
||||
.............................................................................................................................................
|
||||
........^.^...^...^.^.^.^...^.....^...^...^.^.^.^.....^.^.^.....^.^.^.^.^.^.^.^...^.^.^.....^...^.^.^...^.^...^.^.^...^.^.^...^...^.^........
|
||||
.............................................................................................................................................
|
||||
.......^.^.^.^...^.^.^.^.^.^.^...^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^...^...^.^.^.^...^.^.^.^.^...^.^.^...^.......^...^.^.^.....^.....^.......
|
||||
.............................................................................................................................................
|
||||
......^.^.....^.^...^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^...^...^.^.^.....^.^.....^.....^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^......
|
||||
.............................................................................................................................................
|
||||
.....^...^.^...^.^.^.....^.^.^.........^.^.^.^.^...^...^.^.^...^.^.^.^.^.^.^.^.^...^...^.^.^.^.^...^.....^.^.^.....^.....^.....^.^...^.^.....
|
||||
.............................................................................................................................................
|
||||
....^.....^.^.^.......^.^.....^.^.^.^...^...^.^.^.^...^.^.^.^...^.^.^.......^.^.^.^.^.....^.^...^.^.^.^.^...^.^.^.^...^.^.^.^...^.....^.^....
|
||||
.............................................................................................................................................
|
||||
...^.^...^.......^.^.^.^...^.^.....^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^...^.^.^...^.^.^.^.^.^...^.^.^.^.^.^...^.^...^.....^...^.^...^...
|
||||
.............................................................................................................................................
|
||||
..^.......^.^.^.^.....^.^.......^.^.^...^...^.........^.......^.^...^...^.^.......^...^.^.........^.^...^.^.^.^.^.^.^.^.^...^...^...^...^.^..
|
||||
.............................................................................................................................................
|
||||
.^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.^...^.^.^.^.....^.....^.........^...^.^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^.....^.^.^.^.^.^.^.....^.^.
|
||||
.............................................................................................................................................
|
||||
110
07/main.go
Normal file
110
07/main.go
Normal file
@@ -0,0 +1,110 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.z1glr.de/advent-of-code-2025/pkg/aoc"
|
||||
)
|
||||
|
||||
type Schematic struct {
|
||||
rows [][]byte
|
||||
splits int
|
||||
}
|
||||
|
||||
func (s *Schematic) CalculateRow(i int) {
|
||||
if i == len(s.rows)-1 {
|
||||
return
|
||||
}
|
||||
|
||||
for ii, char := range s.rows[i] {
|
||||
switch char {
|
||||
case byte('S'), byte('|'):
|
||||
s.processPosition(i+1, ii)
|
||||
}
|
||||
}
|
||||
|
||||
s.CalculateRow(i + 1)
|
||||
}
|
||||
|
||||
func (s *Schematic) processPosition(row, index int) {
|
||||
if s.rows[row][index] == byte('.') {
|
||||
s.rows[row][index] = byte('|')
|
||||
} else if s.rows[row][index] == byte('^') {
|
||||
s.splits++
|
||||
|
||||
s.rows[row][index-1] = byte('|')
|
||||
s.rows[row][index+1] = byte('|')
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Schematic) Clone() *Schematic {
|
||||
returnSchematic := Schematic{
|
||||
rows: make([][]byte, len(s.rows)),
|
||||
splits: s.splits,
|
||||
}
|
||||
|
||||
for ii, rr := range s.rows {
|
||||
returnSchematic.rows[ii] = make([]byte, len(rr))
|
||||
copy(returnSchematic.rows[ii], s.rows[ii])
|
||||
}
|
||||
|
||||
return &returnSchematic
|
||||
}
|
||||
|
||||
func (s Schematic) CalculateQuantumRow(i int, pathCount *int) {
|
||||
if i == len(s.rows)-1 {
|
||||
return
|
||||
}
|
||||
|
||||
for ii, char := range s.rows[i] {
|
||||
switch char {
|
||||
case byte('S'), byte('|'):
|
||||
if s.rows[i+1][ii] == byte('^') {
|
||||
(*pathCount)++
|
||||
|
||||
parallelPath := s.Clone()
|
||||
|
||||
s.rows[i+1][ii-1] = byte('|')
|
||||
parallelPath.rows[i+1][ii+1] = byte('|')
|
||||
|
||||
parallelPath.CalculateQuantumRow(i+1, pathCount)
|
||||
} else {
|
||||
s.rows[i+1][ii] = byte('|')
|
||||
}
|
||||
s.CalculateQuantumRow(i+1, pathCount)
|
||||
return
|
||||
}
|
||||
}
|
||||
s.CalculateQuantumRow(i+1, pathCount)
|
||||
}
|
||||
|
||||
func do(test bool) (int, int) {
|
||||
rows := aoc.ReadFileRows(test)
|
||||
|
||||
schematic := Schematic{
|
||||
rows: make([][]byte, len(rows)),
|
||||
}
|
||||
|
||||
for ii, rr := range rows {
|
||||
schematic.rows[ii] = []byte(rr)
|
||||
}
|
||||
|
||||
quantumSchematic := schematic.Clone()
|
||||
|
||||
schematic.CalculateRow(0)
|
||||
|
||||
timelines := 1
|
||||
|
||||
quantumSchematic.CalculateQuantumRow(0, &timelines)
|
||||
|
||||
fmt.Println(schematic.splits)
|
||||
fmt.Println(timelines)
|
||||
|
||||
return schematic.splits, timelines
|
||||
}
|
||||
|
||||
func main() {
|
||||
if r1, r2 := do(true); r1 == 21 && r2 == 40 {
|
||||
do(false)
|
||||
}
|
||||
}
|
||||
16
07/test
Normal file
16
07/test
Normal file
@@ -0,0 +1,16 @@
|
||||
.......S.......
|
||||
...............
|
||||
.......^.......
|
||||
...............
|
||||
......^.^......
|
||||
...............
|
||||
.....^.^.^.....
|
||||
...............
|
||||
....^.^...^....
|
||||
...............
|
||||
...^.^...^.^...
|
||||
...............
|
||||
..^...^.....^..
|
||||
...............
|
||||
.^.^.^.^.^...^.
|
||||
...............
|
||||
Reference in New Issue
Block a user