2024 day 8 Complete!

This commit is contained in:
Brian Buller 2024-12-09 12:17:53 -06:00
parent 6af73b70f2
commit 30a2f6df7b
5 changed files with 138 additions and 0 deletions

50
2024/day08/input Normal file
View File

@ -0,0 +1,50 @@
............s...............1.....................
......................E......3.....S..............
.......................3.....S....................
...e........T.t.......S.1...........I.............
..................B..................I.....O......
g.......z........i39......B..I....................
.......s....S.......3......................i..I...
....e.............2..........B....................
.......tC...z.......g......1......................
.E......s....R....................................
..G...t..........2................................
.........K...C.......2............................
....T..e...........5...C..........................
...T................................O...o.........
...............................g..............o...
.........z...................g......i............o
...9.E............H...........Y.......O...........
..........R..H...............7.O..................
...........H.............v......7........B........
..9.Q.......................W......1........Y.....
.........................z.7.................Y....
.....Q................................v...........
....K.......E.....R...............2..........o....
.n............H......v...........................Y
.G.y..........................Q...................
......G....A5.....................h...............
..........D...5.w...9.............................
......n....5...L..................................
............................v.....................
............L...0t..........7.....................
..n....k............y....................W........
..k..........0.........................W..........
...n.......R..L..a........................W.......
.........................................h........
..0..L........c...b...............................
.....................8.y..........................
.......w.................6.............h.......N..
..........y..4....................................
...0....8...k.....Z........r......................
..............a...8Z.........G......4.............
........4..b.q.....................K..............
.q...........kZ.K......b..D.........d.............
.8.....................D................r.........
.....w.........a...............d........A.........
................................d.A.hV............
................c..........D.....V....r...........
.......Z......6.....l........................A.d..
...................l..6..c....b......r...........N
......a....4........q..l..V..c................N...
l.....w...........q..6............V...............

59
2024/day08/main.go Normal file
View File

@ -0,0 +1,59 @@
package main
import (
"fmt"
h "git.bullercodeworks.com/brian/adventofcode/helpers"
)
func main() {
inp := h.StdinToStringSlice()
part1(inp)
fmt.Println()
part2(inp)
}
func part1(inp []string) {
c := h.StringSliceToCoordByteMap(inp)
anC := h.StringSliceToCoordByteMap(inp)
nodes := c.FindAllNot('.')
for k, bt := range nodes {
fNodes := c.FindAll(bt)
for _, nd := range fNodes {
if k.Equals(nd) {
continue
}
diff := k.Sub(nd)
an := k.Add(diff)
if anC.ContainsCoord(an) {
anC.Put(k.Add(diff), '#')
}
}
}
fmt.Println("# Part 1")
fmt.Println("Antinodes:", anC.Count('#'))
}
func part2(inp []string) {
c := h.StringSliceToCoordByteMap(inp)
anC := h.StringSliceToCoordByteMap(inp)
nodes := c.FindAllNot('.')
for k, bt := range nodes {
fNodes := c.FindAll(bt)
for _, nd := range fNodes {
anC.Put(nd, '#')
anC.Put(k, '#')
if k.Equals(nd) {
continue
}
diff := k.Sub(nd)
an := k.Add(diff)
for anC.ContainsCoord(an) {
anC.Put(an, '#')
an = an.Add(diff)
}
}
}
fmt.Println("# Part 2")
fmt.Println("Antinodes:", anC.Count('#'))
}

12
2024/day08/testinput Normal file
View File

@ -0,0 +1,12 @@
............
........0...
.....0......
.......0....
....0.......
......A.....
............
............
........A...
.........A..
............
............

10
2024/day08/testinput2 Normal file
View File

@ -0,0 +1,10 @@
T.........
...T......
.T........
..........
..........
..........
..........
..........
..........
..........

View File

@ -42,6 +42,13 @@ func (c *Coordinate) MoveNW() {
c.Y--
}
func (c Coordinate) Sub(o Coordinate) Coordinate {
return Coordinate{
X: c.X - o.X,
Y: c.Y - o.Y,
}
}
func (c Coordinate) Add(o Coordinate) Coordinate {
return Coordinate{
X: c.X + o.X,