File tree Expand file tree Collapse file tree 4 files changed +200
-0
lines changed
Expand file tree Collapse file tree 4 files changed +200
-0
lines changed Original file line number Diff line number Diff line change 1+ class Day04 : Day {
2+ override fun partOne (filename : String , verbose : Boolean ): Any {
3+ val diagram = filename.asPath().parseMatrix()
4+
5+ val reachableCoordinates = mutableSetOf<Coordinate >()
6+ diagram.forEachIndexed { coordinate, char ->
7+ val neighbors = diagram.getAllNeighbors(coordinate)
8+ val reachable = neighbors.count { diagram[it] == ' @' } < 4
9+ if (char == ' @' && reachable) {
10+ reachableCoordinates + = coordinate
11+ }
12+ }
13+
14+ if (verbose) {
15+ diagram.print { it in reachableCoordinates }
16+ }
17+ return reachableCoordinates.count()
18+ }
19+
20+ override fun partTwo (filename : String , verbose : Boolean ): Any {
21+ val diagram = filename.asPath().parseMatrix()
22+ val removed = mutableSetOf<Coordinate >()
23+ do {
24+ var changed = false
25+ diagram.forEachIndexed { coordinate, char ->
26+ val neighbors = diagram.getAllNeighbors(coordinate)
27+ val reachable = neighbors.count { diagram[it] == ' @' } < 4
28+ if (char == ' @' && reachable) {
29+ diagram[coordinate] = ' .'
30+ removed + = coordinate
31+ changed = true
32+ }
33+ }
34+ } while (changed)
35+
36+ if (verbose) {
37+ diagram.print { it in removed }
38+ }
39+ return removed.count()
40+ }
41+
42+ companion object : Day .Main (" Day04.txt" ) {
43+ @JvmStatic
44+ fun main (args : Array <String >) = main()
45+ }
46+ }
You can’t perform that action at this time.
0 commit comments