Day 8 part 1
This commit is contained in:
parent
dc54e2d776
commit
7ace3b8119
2 changed files with 92 additions and 0 deletions
42
2024/src/main/kotlin/day8.kt
Normal file
42
2024/src/main/kotlin/day8.kt
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
fun main() {
|
||||||
|
val grid = Grid.read("day8.txt")
|
||||||
|
|
||||||
|
val antennasByFrequency = mutableMapOf<Char, MutableList<Grid.Coordinate>>()
|
||||||
|
for (y in 0..<grid.height) {
|
||||||
|
for (x in 0..<grid.width) {
|
||||||
|
val value = grid.get(x, y)
|
||||||
|
if (value != '.') {
|
||||||
|
antennasByFrequency.getOrPut(value) { mutableListOf() }.add(Grid.Coordinate(x, y))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isAntinode(coordinate: Grid.Coordinate, frequency: Char, antennas: List<Grid.Coordinate>) =
|
||||||
|
antennas.any { antenna ->
|
||||||
|
val dx = antenna.x - coordinate.x
|
||||||
|
val dy = antenna.y - coordinate.y
|
||||||
|
val secondAntenna = Grid.Coordinate(antenna.x + dx, antenna.y + dy)
|
||||||
|
|
||||||
|
secondAntenna != antenna && grid.inside(secondAntenna) && grid.get(secondAntenna) == frequency
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isAntinode(coordinate: Grid.Coordinate) =
|
||||||
|
antennasByFrequency.any { (frequency, positions) ->
|
||||||
|
isAntinode(coordinate, frequency, positions)
|
||||||
|
}
|
||||||
|
|
||||||
|
val antinodes = mutableSetOf<Grid.Coordinate>()
|
||||||
|
|
||||||
|
for (y in 0..<grid.height) {
|
||||||
|
for (x in 0..<grid.width) {
|
||||||
|
|
||||||
|
val coordinate = Grid.Coordinate(x, y)
|
||||||
|
if (isAntinode(coordinate)) {
|
||||||
|
antinodes.add(coordinate)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println("Part 1: ${antinodes.count()}")
|
||||||
|
}
|
50
2024/src/main/resources/day8.txt
Normal file
50
2024/src/main/resources/day8.txt
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.....................U.........w..................
|
||||||
|
l.................................................
|
||||||
|
...........o.a................U...w...............
|
||||||
|
............................................W.....
|
||||||
|
..........T....................s.............7....
|
||||||
|
.............................................W....
|
||||||
|
.........T..............4....n.d.H.........5......
|
||||||
|
......T.....oj...U.....n...w......H...........z...
|
||||||
|
.G..x..........................E.....V..H.........
|
||||||
|
.........a....................d....s.......7w.....
|
||||||
|
...j....r.............o.............V.......d...W.
|
||||||
|
.......r..J.Goa.U...............n................z
|
||||||
|
.........Jj.........M..........Pv.................
|
||||||
|
...J...........t..3..M..............sLV...........
|
||||||
|
...................t................n.............
|
||||||
|
....r...........X...........M........v............
|
||||||
|
...x....t......I......a.PM...............W........
|
||||||
|
...........1.Bj....I........vO.h.dL...............
|
||||||
|
.........6....Rr......B...X........h..5v.L..z.....
|
||||||
|
......1G...........x.....3B.......5...............
|
||||||
|
.................B....0..........4..E.............
|
||||||
|
.....................X.....5..h....P....f.....D...
|
||||||
|
.......1........J.....eK..........................
|
||||||
|
..................I....R....K...........k.........
|
||||||
|
......G..................O........................
|
||||||
|
...........H...9...............K8.P.4..k..E.......
|
||||||
|
............1....3.............8.F.............f..
|
||||||
|
.........................4........................
|
||||||
|
.l...........X............9.......................
|
||||||
|
....N.................R...t.e.....................
|
||||||
|
...g............3..R.........e....h.........f.....
|
||||||
|
...........................e......i...............
|
||||||
|
................2...I.7..9..O.....s.........k.....
|
||||||
|
....................6...9E.............F..O.......
|
||||||
|
........................KN........................
|
||||||
|
.......g......................Z.........F..f...Y..
|
||||||
|
...........................A....i.................
|
||||||
|
...........6g...b........8.......y.....S..........
|
||||||
|
..l.....6.....m...............8...................
|
||||||
|
....u..m...b...............p...A..................
|
||||||
|
..............b.p........................k........
|
||||||
|
....m......2...........Z..y....i..................
|
||||||
|
........g2.....b.........i....D..ZF...............
|
||||||
|
......2.0...........p............N..........A.....
|
||||||
|
...m.............S...y........A...Z...N...........
|
||||||
|
..S..l..........................................Y.
|
||||||
|
........S....0u.................y......DY.........
|
||||||
|
...........0.........................D............
|
||||||
|
.................u...................p...Y........
|
||||||
|
.......u..........................................
|
Loading…
Add table
Reference in a new issue