This commit is contained in:
Zoé Cassiopée Gauthier 2021-12-25 15:57:47 -05:00
parent aedd3a237b
commit 661db710c6
3 changed files with 266 additions and 0 deletions

View File

@ -102,3 +102,7 @@ path = "src/day23.rs"
[[bin]] [[bin]]
name = "day24" name = "day24"
path = "src/day24.rs" path = "src/day24.rs"
[[bin]]
name = "day25"
path = "src/day25.rs"

137
inputs/day25.txt Normal file
View File

@ -0,0 +1,137 @@
>.v>.v...v..v>>.>.>...vvv>>.v.>.v>>vv..>......v>.......v.>>..vvvv.>..>>.>.>vv...vv>..........>..v...>v...v.vv..>v>.v.v>>v.>vv.v.>.vvv.>v.>.
v.v>>..>v>>.>>v...>>v>v>..>v.>.......v.>..v>>..>>.>.>....>.>>vvv..>...>>>...>v>...>>.vvv...vv..v.v..v.>..v>v...>..>.v.>.>>v>v>vv.v........v
....>.>vv>.v>>.>>>v.v>vv>>..v..v>..>..v......>....v.>vv>....v>>.vvvv.>.>..>.vvv...vvv.v>...>>......v>>.v.>v>.>v>..v...>>.>.vvvv.v.v.vv.v.>>
...>..v.v.....>vv..vv.vv.....>.v.>v.v.>>..>v.vv.v.>>v.>.>..>>>>.>vvvv>.v.v..>..vvv.......v.>.>v>vv>>.v.vvv..>>>>>v>.....>v...v>.vvv.>v...v.
..>.vv.v.v>v.v..v.v...v>v>v.>.v.v>v>.>>..>>v.>..>.>.......v>v..>...>.>.v..>v..v>vv>..>>>....vv.v....>.>..v.v..vv.>.>.v>>v..>>......vv.>.>v>
.>.>.>.>>>>v..>.>.v>vvv.>v>..>v>vv.>v>.v...vv.>...>.v>.>>v.>v.>>.v>.>..v..>v>>...>.>.v>..>.v>>vvv.v.v>v>.>..vv....>.vv..>>v.v..vv..v.>.v>..
>..>.>v>>v>>>>....v....>vv......v>.v.vvvvv.>..>v...>>v....>>v>>>>>.>>.......v..v>...>.>.v.v.vv....>>>v.>..v.>vv>...>v.>v>v.v..>.vv.>..>..>.
v.v>>>.vv..v.v.>v>v>>>......v>.v.>v..>..>>>.v..v>.>..v...v.vv.....v.v>>.v..>..>.....v>....>>v.vv>.......>.>v....>>......v>.>.>.v.>.>>..v...
>.v>..>>>..>..vv.vv>.>.>.>>vv.>v>>v.v>..>...v.>..>..........v..v.vv.>..>..>.v..v...vv..v>>>.>v....>..>>....>>>..v.>....>..v..>...>>.v.>>.>v
>.>..v.vvv..vvv>.v..>v>>v>>.>.>..vv..vv>>v....>.v.>vv>...>..v....v..v..v..>v>.....>>vv.v.v>.>>...v.>..>vv....>.v.v.>>...>..>>.>>>>>>>.v>>v.
v.v>>..vv>.v.v........>.v.v....>.v.vvv.>v>..>....vv.v.vv>.>v>v....vv.>v.v..>v.v>>...>>vv..>.v.>v.>v....v...v>vv>.>.v..>.v.....vvv>>..>...>.
.v>v.v>..>v....v.>v>...vv>v..vv.v.>>...v....v>>.v>v>>>.vv>>.vvv..v...v>....v..>..>vv>>v..v.v.>>>>>.vv..vv...>..vvvvv.v.v>v>>..>v.v.v>..>>v.
..v.vv>..v.v.>>..>v>.....>>.>v..>.>v.v.>vv>>>vv.>.v.>v>vv>>v...v>vv>>.>v>v..>.v>v>>..v>..v..v>v.vv.v>>.>v>>..>>vv.v>..v>v>>.v.v..>.>.v..vv.
>>.vv>....>v.>v.>..>....v.>..v>>..>....vv..>.v>.>>..>.v....v.>v>v....v.>>.v..vv.vv.>..vv>.vv.vv>v.v>v.>..v..>.v>v...v...vvv>....vv>..v>.>..
.v.v>>>v.....v...v..v...v.>.v...>>.vv.>>..v>..>v.v..v..v.v>.>>...>>....>..v>.>v.v.v..v.>>vv..v.>...>>vvv>v.vv.v.v..v.>.v.v>...>>......v..>>
v.>..vvv.v>>v.v>>...v..vv.v.>.>v..v..>v.>v.>>v..v..>..v..>..>v>v.....v.v>.>v.v.>>>.vv.v.>>..>..v..>v>>....v.vv>>v>>v>v.>v..>>>v>..v.vvv.>..
...>..>>.v....v>>..>.>v...v>>>..>....vv.v.>>...>...vv.vvv.v...>..v..>..v>.v>v.vvv>>v.>.vv...vvv>.>vv.>.v.vv...>.vv.>>>>>......>v>v..v......
>...>...v.vv.>v.>>>v>>..v.v.v>>..>>>..>v.>>.>v.v.>v.>.......>.>>>...v..>>..>..>.>>.v.v>>vv.v>.v.....>>...>....>>......v>......>v>.>...>>.v.
...v>v>..>...v>v.>>>vvv.v..v.vv>.v>..v>.v.v..vv.>v>.v.vv.>...>v..>...v...>v.v..v....>v>>..v...>..>...>...>>.v.v>.>..>.vvvv..>>>v.vv.>v.v>v.
.>...>>....v...>>v>v>v.v......v.vv...>.vv.v.>..vv>.v..>..>.....vvv.v..v.>...vv.>>>vvvv.>v>vvv...v>.v.>v.>.v>>.v.v>vv.>..vv>.v>v>>>v.v...>v>
..v..>v>.v..v..v>v.>v.v.>v>...>>v..v......v.>>>>.v.>.v.>v>v..>>>vv..>...>.....vvvv..>..>.>>>...>>>v>v..>...v.>....>.>...>.>v...>..........>
>.....v.>..>.>>......>vv..v>...v...>>..>.v>>v....v>>...v>......v..v...>...>.>v.>.vv.>....>...v..>>>..>.>...v...vv.v..vv..>...>....>.......>
v.>...>v....>..>>v.vv>.>>>..>vv..v..>>....vv...v..v.v..v>..>>>.>.v.>.v.v>..vv..>>.v.......v>.v.vv..>>v>>.....vv.>>..v>.>>v>...>vv>v>>v..>>v
v>.v>.vv>>.>..v..>....v...v...vv>......v.v>v.>...v.vv>..>v.v>v>.v.>>..>>.>.vv>v.v.>.....>.v.>..v>.....vv.>>..vvv..vv.v..v>...>..>..>vv.>..v
v>.....>v>>.>vv.vv.>>v..vv.>vv>v.vvv..v.v.>...v..>>v>.>vvvv.v...v.>.vvvv.>.v.v...v.>....>vv>..v..v..>....v.>.....vv.>.v.>.>.vv>vv..vv>v>>>.
>vv..vv.>>.vv....v>>vv.v....v>>v.>>.>...vvvv..>.>v..v.v.v.......v.....>>>v..>.v>v>>v.>....vv>>.>v....vvvv.>>...>.v.v>...>>..vv>....v..>>v..
....>...v>vvvv...v...>v.v...v.v...v>v>...vv....>>..vv.>....>>.vv.>.v>.>>v..vv>.v.>.>.>>.>.....v...v...v..v...>.vv.v....>.>v>.>.vv>>.vv.>>..
.vv>.>...v>...>v>.vv>.....>.....v.>.>.>.>.vv...>v.>.v>.vv.v.>....v..v.>.v>.>v>v...v>.v..v.v....>.v.....vv..>vv.vv.>..>>...>.>..>.....>..v..
v..v..>.vvv>.v.>vv.....>v.v...v.>.v.v>v.vvv.....v.>.....vv>...>>...v>>.>>..vvv>..v>>..>.>v>.v>v..v.>...>>v>v>.v.v..v..>v..>>.>..>.....v...>
v.v.v..>>>....>.>>>v>>.v...>...v.>.vv>>..v.>..>>>...v..>v>..>>.>..v....>vvv...v>v>>>..>..>v>.>>>..vvvvvv.>vv.v...>.>v..v.>v....v.>..>.v....
>>>>..v>v.....>.....>.v..v...>>....>...v..v...v>v.v>>....v...v>.vv>..>vvv.v..>vv.v...>......>v>>v..>...>....>........vvv>>.vv..>>.v..>>v.v>
>v...>v>>>...v>.......v>v.vv...v.vv..>v.>.>vv>>vv...>vvv>...>.v>.>..>..>...vv.>>..v..>.v..v.v>v>>..>...v>v.>.>v....vvv...>v>...v.v..>..v.>v
>.v.v..>..v.>.>.v.>..v..v.vv........>>vvv>.>v.v..>v.>..v.>..v>>....v..vvv>v..v>>>v>>...>.>>v>vv>....>v...>.>.vvv..>..v.vv.>....>..v..>.>>v.
>...>v..v.......v..v..>v...vv.vv....v>vvv>...>>.....>>vv.v.v...>.>.vv>>>.>..>>>..>..>.>v.......>vvvv.>.>vv.v>..>v.>.v..>.v...v>v>.>.v>...>>
vvv.>>.>v>....v>.>.>>v.vv...v.>>>>.vv>v>.>vv..v.>...v>>.v>..v.>v>..vv.>>vv.....v.>v>.>....v>....>vv.v.>v....v.v>>.>.v..v..v>.>>..>.....vv.v
>>v.>>>...vv.vvv>>.>v>>v.>....v.>.>>v>..>.vvv..>v>.>.>>.vv..v.v>>v.>.v>v>>.v>.......>v>.>>>.....v...>...v>..>..v>vv..vv.>.v..>vv>..>vvv.v..
>v...>v..v.v>>.....>....v>v..v>v.>..>.....>>..v>.>v.>.>.v>.>.v....>v...>.v.v.>vv.v.v.v..v>..v>v>..vv.v>...vv.v.vvvv>.>...>v...........>....
.vv.>v.v.>>>>v..v.vvv>...v..>>.>v.>>v>>>.>v>.>.v.>...>..v>>>.....>v.v..v>.v..>.>.v>..v.v...v.>....v..vv.>>..>.vv>.v..v..>...>.>..>>vvv.v>>v
.v.v>v.v.v.vvvv..>...v.vv.>vv..v>vv>>>..v>.v.vvvv..v>.>....>...>vvv>>>.v.>v>v.vv..vvv.v.v>.v.......>...>vv>v..>...>>...>.>v>>v..v.>....vvv>
v>.v........vv>.v.....>.v...>.>..v>.........>.>.v>>....>>.>>..>..v.vv>>v...v..>v.v...v.v.vv.vv.....v>.v>>v.v>v>>>....>v>>>>v>v..v.>vv.vv.>.
>vvv....>...vv.>>..v>>>.>>v....>...>.>vv..v>v.v.>>.v>.vv.>v>>.>v>....v.vv.v...v>.v.v>..>...>.>v>...v.....>v.>.v>....>.>.>.v.v>v.......vvvv.
v..vvv...>>.v....vv.>.vv.v..v.vvv.>>>>..>>..>.....>v...vv.>.v.>vv...v>..>v...v....v>vv.>.>v..........>v...v>v..v>v..>.....v>.v>..>v......v>
vv.>.>vv>v..>v>.vv...>.vv..>.v.>>>.>....v>v>>>>..v>....>vv..vv.>.v>.v.>...>.v.v>v>v>v.>..>v......v.vv>..>.>..>..>.v>vvvv.>...vv.>.>vvvv>>>>
>..v...>v.vv.>>vv>>.>.>....v>...>v...>....>..v.....v.v.>>>>.>.>.>>.>.>..vv.>>vv..>...>>>.v....v.>>.vv..v>.>>>.>v..vv..>>>.>vv>>.....>vv.>..
>.>>..vv>.>v.>>v...>..v>...>..>.>v>>v.v.....>.>..>.>v.v>.....vv>v>v..>v......>v..vv...>>>>>..v...>....>....>v.v>..>v.>.>.>.v.vvv..>>.v>v.>.
>....v>>v>...>v.vv>>v..>>..v....>vv.v.v>.......>v.v.v.>>.v>vv>>..v..>...>.>......>>..>>.>....vv.>.v>>....v.>...vv.v>.>.vv.......vvvv......v
.>..vv.....v....>>...v>.v.>>.vv..>.v...v.>>v>>>>vvvv....v....v.vv..v.vvv>>..>...>v.....>....>....v>v...>..>>..>..v.v.v...>>>.v.vv.v...v....
..v.vv>.v>.v....>.v..>>>>v>.>vv>.....>v..>....v.>.v...>.v>>.>..v>v>...v>....>>.v..v...v.....>v.>...vv>>.>..v>.vv>v>v>...>>..vv.>..>.v.>.>..
..>vv>.vv.v>v>v>.vv..>>>>..>>..>v>v>vv>.>.v>v.>>vv.>..>.vv.....>..>>.v.>..>.v.>.....v.v.vv.vvv..vv....>....v>.v...v>.>>v..v...vv.>...>.>.>.
.>>>....>vvv......v>...>v.>vv.v.>>vv>.....v.v.....v.>.>.>..>>.>vvv..vv>.>>...v>..v>.>vv>>......>>.v>..vv..v..>v>v>.>.>.>>..v..v....vv.>.v.v
.>.v..>.....v>v>>.>.>.>>>v>v..>....v....>>vvv.>>...vv>>v.v..v.>.>.>v.>..>>>v...>vv>.v>.vvvv..>.>.vv>.v..>.v..>..vv..>>>..v>>.>..>.vv>v.>v..
..>v>>.v.>.v>>v>v..v.vvv.v..>>>v.vv.....v.v.>.vv>.>vv.v>.vvv..v.>.v.>v.vv..v>.>.v.vv>>...vv.>v.>.>.vv.>v.vvv....vv.....>...v>..v.>v.>v..vv.
>.vv>.v>...v.vvv...vv.v>.vv>.v>vv>>v>>>>....>..v..v...v>v.>..v..vvvv>>v..v>v.v..>.>v...>...>v>>v.v.v>.....>v.v..>..vv>...>>.>...v.v..v.....
..>vvv.v>.>>v...v.>>v.>vv..v...v.>.v>.>v.v...>>...>.>>.v....v>v....>.>.vv>>.v>v.v.v.v..v....v.>vv>...>..v>>....>v..v.>v.>>.>.>.>.v.vv..v.>v
..>.......vv>v...>.>.>........v..>.>..v..v..v.>>.>>.v..v.>.>.>.v..>...>v.>v..>..>.v>>.v.v..>..vv.v>.>..v.>v>...>..vvv.v.v.vv.vv>>.v>>..>...
v..>v....v.v>.>.>v..>v...>>.>.v>>>>v.v>>vvvvvvv.v.>vv.v...>v>.>..vv..v..v....v......>>v..v..>v...>.vvv.>...>v....>.v.v..>..>...v.>...v.vv>v
>....v>.vv.....>>v.>>>>>.>.v..>.>v......>>>.>>...vvv......>.>>....v.>v.>..v>>>vv.>..>v>>....>.vv.>...v...v.v..>vv.>..v...v>.>v>.>>.>>.....>
>.vv.v>.....v..>v...>..v....>>...v>......>>v>vv>...v.v....v>v.vv.v.v>...v...>....v....vv..v.>...>.>.>>>......vv...>v>vv.v...>v.v>..>..v...>
vv>.v.....v>.vv>>..>..>.>....>>.>.>v...>>vvv...v..>>.v..v..>>v.v..v>>.>.v..vvvv.>vv>>.>....v.>..v>...v>v..>>v.vv>.>..vvv...>>.v...v..>..v..
>>v....>>.....vvv...v>v.....v...>>>>...v>...>>>>v...v.v.v.>...>vv.........v..v>>v.v>v>.>>>>>.>vv...>..v.vv.v>..>.>.v.....>>v..>v>v.>v.>v>.v
..>......v.....>vvv>....>>v>v....v>.>v.>v..>vv.vvv...vv..v.v.v.>...v.v>v.>>>....vv..>v...v.....vvv..v>.vv>v...v>.v.vvvv....>.>v.>v.>vv>vv..
>v...v.>....>.>.v...>>v>..>..>..vv..>.>>vv.v>.>>..>.v.....>>.>>v.v.>vv>v>.....vv.>>v..v>...v>v...>...>.v>..>>v>.>>vv>v>.>.v.vv.>>>.>v.v..>>
>.v>>.v.v>v>.>>..v>>.v>.v>v.v>....vv.vv..v..>...v.v>>..>vvvvv>.>.v..>>>..v..>>..v...v...>v.>.v.vv>.v>..>..>>.>.>.v.v..>v>.v.v>>v.vvv...>.v.
....>.>...>vv.vv..v...v.>>>...>vvv>>.>.v.....vv>vv.>v.........v>v..v..vv.>..v>v.>v....v.>..>.....v..v>>>.....>.>>>vvv...vv>.v..v..vv>.>..vv
v..vvv.>.>>....>v..v..v..v>>...v...v.>.v.>>.v..vv..>vvv..v....v...>.>>vvv>..>v.v.vv.vv.>.>.>vv..v>>>v.v.>......>.......v.v.v>.>v.....v.>v..
v.vv.v.>>.>v.>vv>..>.v.>>v>.>v>.>.>v>.>.v>>.v..>........v.v..v..>>.v..>...v.v.>v>...>v.>.vv..>>.>v....v.>..v..v...vv..>>v..v>>vvv..v.v...>>
>v..v>>v.>.>v..>v>..v...>...>v.v.>>..>v>.v>.>..v......v...v>>.>..v..v..v.>>....>>>>....>>....>.v>v.v>.v..>.>v>.>.v.v...v>...vv>>>..vvv>.v.>
...>...vvv>>..>>.>vvv.....vv..v.v>.v..>>.v>>>vv>>v>>..v.>..>v>>v.>v.>.v>>vv>vvvv>.vv.>>.v....>..vv>....>>.>v>..v.>..v>......vv.v>v>.v>..>..
.v>..v>>..v.vv.v..v>.>.v..v.v..vv.......>.>...>.>..>v.vvv...v..vvvvv.>>.v....v.>v.vvv>v>.>.>..v.vvv..>..>>v..>....>....>v.>...v...vv..>v>v.
vv.v>...v>>.....>v>v...vv>.>.>>.vv..v...v.>.>..>.v.v>>.>..>v...>.v..>.v>.v...>...>.>vv..>vv....>.>.>.>>.>.>>>>.v..>.vv...>>v..>vvv..>.>v>..
>..>v>.>v.>vv.>vv.v.v>.>.v..v..>v>>.>..>..>.v>.v.v.v>>..>....>>.>>>v.v....v.>>>...>v>v.>.>.v.vv.>>.vv>..>.v........>v>v.>..>.>.>>v.>..>.v>v
..v>>>>v.>vvv>...v..>.......>.v.>vv>v....>.>>>..vv.>..>>v>>v>.v>...v.>...v.v>v.....>v>.vv.>>>v>..vv.....vvv..v.>.>.v..>.>.v.>..v>......>.>.
>.v..>.>..v>vv.v..vv..vvv>>vvvv..>v>v>v>v...v.v>>>>v.>>v.>v..>vv..v...>v.>v..>vvv.vvv..v...vv...>.>>v.v.....v..v.>.vvvv>v..>v.>.v.......v..
v.v.v.v.v>.>.>v.>.v>>vv.v.v>.>.v>>..v>>>....vv.>...>...v.vv>.>...v..vvvvvv.v..v.>.v>v>v..vvv........>..>>...>..vv>v.......v>>v..v....v>.v.v
v..>>.>..>...>.v>vv...>......v>.>..>v....>v....vv..v.>>.>.>>.......>v..v.>>.v.v>..>.v..>v..>.>.vv>.vvvv>.v>.v>v.>>v.v>v>vvv...v....v>v>.>>.
.>>.>v.v>..>.>v........v>.v.v.v>.........>v>.>>v..>vvvv.>v.>>..v...>.vv>..>....>.vv.vvv.>>>..>>.v>v.v>.>.v>....vv...>v>>.....v.>..v.>.>>>v.
>v>>.v>.v>v...v..v..v>>...>.>>>..>..>...vv.>v>>>.v....>>.......v..v...>.v..v..v.>vvv.......>vv>v.....v..>>v..>.>vv>>..v>.v..>..>.v..v.vv>.>
v...v>v.v.>>.vv.>>...>...vv>....v.v>..>>..>>>...>>.>..v>v.>v..>..>.v....>.>..>.....>.vvv.v..>...v..v>v..>.v....v>.vv>v.v>.v.>.....v....>..>
v....v>.v..v>v>.v>vv.>.>v>.......>......v>.v.>..v.>...>...v...v.v.>...v>>v>.v.>v.>>...v>v.v.v>...v>v.vv.>v..>>>.>v>.>v.v.v...>.vv..>..>.vv.
v....>.v>..v>.v>.>..>..>.>vvv>>.v...v..>vv..>......vv.v..>>...>>.>>..>v...vv..>.v>.>v>v.>.>>...>.v.v.>..v>>>..>.vvvv>..v.>...v.>.>..v>.v...
>.vv>.v.>v....vv>.>>.v>>v....v.>v..v..>>>..vv..>.>>>.>>.>v.>>.v>>..>.>>...>.....>.>v..>.......v..vv..>>v.>>...vv>>.v.v>....v.v>>.>>..v>v.v.
>v...>>.....v.vv..v>.vv..>.....>....v.v>..>>...>..v..>>.v>>.v>v.v.vv.v>....v....>>.v>....>>vv......>>.v>..>.vv.>..v.v>.v>.vv.>...>>.....>vv
v>v...>.>.>....v.vvv.>vv>.>.>..>>v....>v.......v...>v.v.v...>v>.>.....>v....>.v..v.v.....>.vvvv.v.vv>.v>>...>...>..v>>>>...v>>.v..>v..v>...
..>>v>>vv..>.>>.>...v>>>vvv>v..vv.>...vv..vvvvvv.>>..>v..>.>>>.v.v.vv..v.v.>.......v>.vv...v>.v......vv>v.>v.v>.>>>v...>>vv>.>.>....v..>v>>
..>v.v..v>..v.>vv>vv..>.v.>v....>....v..v>>v>.>.vv....>v..v>..v..v>.v>.>>>>>.....>>.....>>>v.>>.v>..>>vv..>>>v.v.vv..>>..vv...>>.>>...>v...
..>v....v.>v.v.v>.>>v.v>...>>v.v>...v.v...>vv.>>..>>......v.>>vv...>.>....>v>.v...v....>.>.vvv.>>>v..>>vv.vv..>v.....>>....v>>v>.....>....>
v........>v..>.>vv....v.v>>.v>.>>v>.vv..>...>..>v.vvvv.v.>....>.v>>.>v>>>.v.>.>.....v.v>v.v>v.v.>v>..>v>>v..vv>>>..v..v>>.>v...v>...v..>>v.
.>..>>.v.>v......>.vv>v>.v.>.v.v..>>..vv...v..v.>>.v>.v>.....v.>..>.v.>v>.>..>v.v...vvv..v..>.>.v>vv>.v>....v>.>v..v>v>>>.vv.....v...>v>>v.
.....v>..v>>>v.v..>>vv.v..v>.>...v..>.v.>>>v.>.v>.v>v>.>>..v.....v..v>vv.>>...v.v.v.vvv>>>>..>vv..v>....>...>>.>....v>.>>..>>....vv>.vvvv.v
.vvv..>.v>vv>>>.>.v>..>>.>..>.vv.>....>.v..v>vv...vvv..vvvv.>.v.v.>>vv>..>>........>>..v...>.vv...>v>.v.>v.v.>..>.v>>>>.....>.....v>.>..>.>
.vv.>>vv.v...v.v...>v>>>>v..v...>>......vv.vv...>v..vvv.vv.v...v.v>....>v.v.v.>....>...v..>v...>v>....v...>....>.>>.>..>>v>.v>v....>..vv.v.
v>.v.>v...vv.>.v.>.....>.v.vv.>>.>....>..v.v.v..v>v.v>vv.>>.>v>.>....v.>.>.>v..>.vv..vv....>.v.>..>vv.vv>>v>...>v>>>v>...>v.>v>.v>.v>.v>v..
..>>>.vv.v..>.>..>....>...>>>.>..>>>v..>..v...v>v>.>.vv....v.v......v.>.>>>.v.v..vv.v..>.>..>>.>>...>.>>..v.vv..v>.>vv..v>.>vv.>..>.>..>...
..>.>...vvv.v.v..>.v.>>v.>v>>....>..>.>.v>>vv>.>>.v...>...vv>>>vv.v...>.vv..v..vv>..>v..>.>.>.>.>v>>.>..vvv>.>v....>v....v>>>............v.
v.vv.>..>vv...v.......>......>>>v.v>.....>.v>>.v.>..........>>.v.>.>..v>.v.v...>..v>.>>>>v>..v>v.>.>...>.>....vvv.....vv.v..>.......v>v>.>>
.>.vvv.>.>vvv...>>.>v.v...vv.v.v>...v..v>>v.v..v.>>vvv...v>>>.v...>..>v..v>>v.>v.>.v.v..v>v.>...vvv..>v......vv>>>>.>>.....v.>>>v.vv.>..v.>
.vv...>>>..vv..vvv....v>v.v>v>v.vv.>>vv.>vvv>..>...vvv...v.>.>...>...>........v.v>.v>>...v>...>>.>v.>...>.vvv>...v>..v...v.>v>>..>>..v.>v>.
.....>>.v....v..v>vv.>..v...>vvv>..>....v>..>.>..>v.>v....v>v...v...v..>...>>v.>>.vv..v..>.v..>.v.v>v>vv.>.>vvvv...>.v.v.v....>>v..vv.>>.>.
....v>.v>v>.>.>.v>.>...v>...v>>>...>>.>v>.....>>.>..vv..v..>>..>.>v.........>v....v..v.v>...>....>v.>v>>....v..v..>>v.>....>....>v.>..>.vv>
.>>.v.>.v.v.v...>vvv>..v.v>v..>v..>v...>....vvvv.v>>v.>>v...>..v.vvv..>..>>v..v...>v>>vv.>>..vv..v..v>...v...v....v...v....>vv>>.vvvv>.v...
..vv..vvvv.vv...>.v>>.>v>>>>>.v.>..>.>.v.vv>>.>>....vvv>.>>.v.>.v.vv>v>v.>....>v.......>.>.>.vv..v.v>v.v...>..v.>..v>...v>v>>>......v>..>v.
>.>>.v.v.>v>v.v>.>vv..>>.vv.>>vv>....>.v.....v.>v..>>>.>.>..v>.>v...v...v.>..>.v>v>..vv>..v.....v.>.v>.>>....v...>.v.....v>vv.....>>>v.v>.v
.v>.....v...>.>...v>v.v..v.>v.v.>>v>.vvv>.>.v.vv.>v>v>v>v>>.vv..>>v.vv>.v>>.>vv..v>..vv.vvv.vvvv>.>.v.>.>.>vv>.>...v>.v>v...vv>v..v>v..>...
...>..v.......>v.v.v>v.....vvv...v..>>vvv>.>...>..>.v.v.>>.v.v.>.v..vvv..vv>v>v..>..v.>..>v.>.>...v>.vv.>>.>v.>..v>v>....>.>.vv..v>....vv..
.vvvv.v.>.v..>.v.>v.v>>..vv...>>v.>>.>.>.>v.v.v.v>v....v..>v....>>.>v>v.....>.>..vv....>.vv...vvvv.vv.vv...vvv.>.v>v.>.v>..v.v>vv.>..>.....
>..v.v..>.>>.v>..>...>.>>.>>.>..>.>....>v.v>.>.v.....v>.v>.vv.v>...vv.>.vvv>>v>.>.v..>.>.v>v>.>..v..>.>......>>.......vv.>..>.v>vvvv..>vv.>
v....v.vv...>.v.v..>>.>....v>>........vv.>.>>...>.>...v..>.v>..>..>>v>....v.v..>..>v.vv.>.>>.v.>>.>vv>>.>v>.v>>>.v....>....>...v>>..v..v.v.
v.v.v...>>v...>>>.v.vv.vv.vv>>>.v.>...>>v.......>v.>vvv.>>.vv.......vv...v>..v>.>>.v..v>...>.v..vv.v>..>v...v.vv>.>>.v..>.v.>.>..>>.vv>...>
v..>vv.>v>.>v.>.>>>vvv>..v.>>>v>.>v....v.>v>.vvv>..v>....v..>>..v..vv.>...v.>.v......v.>.>.....vvv..>vv>.>...>.vv>....>>..v>..v.v..>>v..>v.
.....v.>>vv.v>>.>vv>.>..>...v>>..v>....>.v.>.>...v>..vv>v>..>..>.>......vv>.>.vv>.....v>...vv..>..>v.v.>.>.vv>.vv.vv>.vv.v>>>..>....>.>.>v.
.>v..v.vv..v.v.>v..>.v>>v>v.vvv>>...vvv.....vv..>.v>...>>>.v....v>>.>v>.v.vv>....>>>>..v.>.>.v.....v>>v..v....>..v....v>...>>v.>v>v...v.v..
.>v.....v..>.v..>...v..v.>vv.vv.>.>v.>...>...v>...v.v.>..>v..>..>v.v..>.v.v>v.>.v..v......>...v.vvv.v>>v.>.v.vv..>>v..v>>.v.>>.v.v>>>....vv
...vv.>v.>..v>>..v.>.>vv.vv...>.....>v>.....v..v..v.v.>>..vv.>v.>..v........v.v..>>v.>v.v..>...>v.v..vv>v.v.v>..v>.....v.v.>.v....>>>v>>..v
...>v.v.>...vv>.v.v.....v..v....>>..v.>v>vv>>.......>v..v.vv..>.>>>vv>v>>>.v....vvvvv.v..v>.v.>v>v>>..v..vv..v.vv>>v..>.>..>....>..>.>>.v>.
>>..>>...>..v>vv.>>>...vvvv....vv.v>.vv.>.v.vv>>..vv..>..>>>..>>..vv>>.>vv>>.>.>..>vv.>.>v..>>.>.v>....vv>v>..vvv.vv.>v.>v>>....vv.vvv...v>
..>>v>..>>.v>vv>....>..>>.v>vvv.vv..>.v>v..v.>>.vvv>.>.>v...>v.vvv.>.v.>v>v.>..>.v>>.>.>v..v..>v>>v>.v.>.>.v.>...vv...v.......vv.....>.v.>.
>..vv>>v...v>v.>vv>.v....v.vvv.>......>v.v>.vv>..>>>v....>>>.>...v>>>....>...v..>..v>vv..v>v...>vv>.v..v..v>.>.>.>..vv>>v..v>....>>..vv..>.
.>.>v>vvv.v..v.>v.>...v>.>v..>vv.>..v.>v>.v...v>.>>vv..........v>.v.vvv.>>>..v>vv.>>>v>..v....v..>..v.>>..>.>.v>v.v>.v>.v...v.>>.v....vv...
....>>.v..>.......>.v.v>>>vv>>..>v>v...>.v..v>.vv.v>>vvv....>vv>v>..vvv.>>>.v..>>.v.>.....>vv>>....v>vv>v..>.>...>.>>v......>..>v..v....vv.
.vv..>.>..>..v>...>v.vv.>..>v.>..v>v..vv>>>..vv..>vvv.....>...vv>.........v..>..v..>>.>>v.v...>>v>v>..v>>.v>.v..>v.vv>vvv>>>..v>.vv..>>.v.>
.>vv.v.v..>.>...>..>v>..>...v.>...>vvv.>....v...>..vv...v>...>vv>v.v..>v..>v.>...v.v>v.>.v>v>>>v>..vv..v.>>v>.v>..v...>v>>..>.v.v.>>..>.v.v
...v>..v.v..v>vv.....>..>..>>......v.v.>v.....>v.v...vv.v.>v>>>.....vv.>>v>>......v..v>v..vv>>v....v..>..>v>>>.v..>.>...v...vv>vv>v...>.v>.
v.>>v.vvv.vv.vv.>.>.v.v>v.v>..v>v.>>>..>v>.v....>v....>>.>>..v.vv...v.v....>.>..>........vv.v.>..>>.v.v>...v>v...vv.v>>.>v>>.>>vv>.v..>v>vv
v.>v.>v>.vvv.>v..>..>>>...v.>.v...v.>>.>..>>.v.>v..>.vv.>....>>vv>....>..>>vv>>....>v>.v..>.v>.>...v..v..>v>>>..v...>...>.>v>.>v.>.>.>.>.vv
vvv.>>v>>v>.>..v>v>..v>v.>>v.v...v..v.>vv...vv.>.v>>>vv>.v.>v..v>>.>>vv..v....>.>v.>>v.>.>....>>.>.v.vv>.vvv..v...>..vv..v......>vv.>>>v>..
.>.>.vvv....>v>>.>.v.vv.v>>.>>...>v>..v.>v.>>>>v.v>v.>v...>>>>>...v....>..>v.>>>.......>...>v.>vv.>.v.vv..>>......v.>..>...>.>v.>v>..v.vv>.
..v>..>vv.>v>>..v.>.v....v>.v>>v.v...>vv....v..>.>....>.>v.v.v.v>..>.>.>.v.>>.v..v.>>v.vv>>>v>.v..v...v.v>vv>>vvvv>.>...>v.v.v..>>>.v>>.v.v
.>...v>v>>..v.>>.>v.vv>.vvv>.v....v>..v.>.vv..>.>>.>.>v>...v.>v>..vv>.vvvv>.>....>..vv>.v.v..>v..v>...>...vvv.v>>>>>>..>.>.>...>..vv.>.v..v
v...>..>.>vv..>.>v..v.>>.v>>>.v>>...>.....vvv.v.>v..>..v..v...vvv.vv>..v>.>.vv>v...vv>>>v...v.>v....v.v..>..>vv.>v>vv.vv>>>..>v.>vvv.>v.>..
>v...v...>>.v.>.>>.v>>.vvv>>v>vv..>>..v>>.>..>.>v>>>v...v..>.>v..>....vv..>>.>>......>v>>>..v..v..>>>.>....>......v..>>v>>.>>...vv.v.>vv>v.
>.....v.....>v>.>.....>v.v.>.v>vv..>.>>....vv>..>v..v>.v...>.v.>v>v.>vvv..v>>v..>..v>>.>...>.>>.>..>.vv>>.vv..>>v>>.>.v.v.v.>vvv>v>>v>vv.v>
v.>..>v.v>v.......>v......v...v>.vv..v>...>.>.....v.>..>.>....>...v.v>v.v.....>....vvv>..>v.v.>vvv.v.v.v>>>..>v>.>.v>..v.v>.>vv.>.>.v.vvv.v
v...>.vv>.v..>.v>.....>>vv>.v..>>>v.>>..>.....>v...>>..v.>.vv.>..>..>v.>>>>>vvv....vv.>v..v>..>.v>..v.>...>v..v.>..>v.>.vv.>vv....>>v.vvv>.
>..>>...>.>.vv>..>v>..v..v>.v.>.>vv.>v>.>>..vv.>..vv.v>vv>v>.vv..>>>..>v...>.>v>v>>>.........>>>...vv.>.....v.vv>.>.vv>.....v.v..>...v.vv..
v..>>..vv..v..>...>>.>>>..>..>.>v..>..>.>.vv.>>...>.>.>v>.>..>>.vv.>..>.vvv>>....>>>>....>v.>>>>.>>..v.v.>vv..>..v..>.vv>v....>vvvvv>v....>
v...v.>v>.v...>>v.>.v>>.v.v...v.>..>..>>>...v.......v>>>>>.>.v.v..>...v.>v>v.v....v....vv>vv.>.>v>vv...v..vv.v.>>v..>.v.v.v...vv..v.>v>.>v.
.>v>.vv.v.>.>.>>v.>>...v.vvv.v>...>>.>>.>.v...v....>..vvv.>....v.vv.>..v...>>..>...vv.>.>v>v..>>>.v.....>.....vv.v..>.>>>v.vv>vv.>......>.>

125
src/day25.rs Normal file
View File

@ -0,0 +1,125 @@
use std::fmt;
use std::str::FromStr;
#[derive(Copy, Clone, PartialEq)]
enum Herd {
East,
South,
}
struct SeaCucumberMap {
inner: Vec<Vec<Option<Herd>>>,
}
impl SeaCucumberMap {
fn stops_moving(&mut self) -> usize {
let mut steps = 0;
while self.step() {
steps += 1;
}
steps + 1
}
fn step(&mut self) -> bool {
let shifted: Vec<Vec<Option<Herd>>> =
(0..self.inner.len()).map(|i| self.shift_right(i)).collect();
let new_map = (0..self.inner.len())
.map(|i| self.shift_down(i, &shifted))
.collect();
let changed = self.inner != new_map;
self.inner = new_map;
changed
}
fn shift_right(&self, i: usize) -> Vec<Option<Herd>> {
let row = &self.inner[i];
let mut new_row = Vec::with_capacity(row.len());
for (i, loc) in row.iter().enumerate() {
let left = row[(i + row.len() - 1) % row.len()];
let right = row[(i + row.len() + 1) % row.len()];
new_row.push(match (left, loc, right) {
(Some(Herd::East), None, _) => left,
(_, Some(Herd::East), None) => None,
_ => *loc,
});
}
new_row
}
fn shift_down(&self, i: usize, shifted: &[Vec<Option<Herd>>]) -> Vec<Option<Herd>> {
let height = self.inner.len();
let row = &shifted[i];
let above_row = &shifted[(i + height - 1) % height];
let below_row = &shifted[(i + height + 1) % height];
let mut new_row = Vec::with_capacity(row.len());
for (above, (loc, below)) in above_row.iter().zip(row.iter().zip(below_row)) {
new_row.push(match (*above, *loc, below) {
(Some(Herd::South), None, _) => *above,
(_, Some(Herd::South), None) => None,
_ => *loc,
});
}
new_row
}
}
impl FromStr for SeaCucumberMap {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
let inner = s
.lines()
.map(|line| {
line.chars()
.map(|c| match c {
'>' => Some(Herd::East),
'v' => Some(Herd::South),
'.' => None,
_ => panic!(),
})
.collect()
})
.collect();
Ok(SeaCucumberMap { inner })
}
}
impl fmt::Debug for SeaCucumberMap {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
for row in self.inner.iter() {
writeln!(
f,
"{}",
row.iter()
.map(|c| match c {
Some(Herd::East) => '>',
Some(Herd::South) => 'v',
None => '.',
})
.collect::<String>()
)?;
}
Ok(())
}
}
fn main() {
const INPUT: &str = include_str!("../inputs/day25.txt");
let mut map: SeaCucumberMap = INPUT.parse().unwrap();
println!("solution {}", map.stops_moving());
}
#[test]
fn test_stops_moving() {
const INPUT: &str = "v...>>.vv>
.vv>>.vv..
>>.>v>...v
>>v>>.>.v.
v>v.vv.v..
>.>>..v...
.vv..>.>v.
v.v..>>v.v
....v..v.>";
let mut map: SeaCucumberMap = INPUT.parse().unwrap();
assert_eq!(map.stops_moving(), 58);
}