From 3e654056822277ad51bc7b2d3f0fd86b5a6616ad Mon Sep 17 00:00:00 2001 From: Matthew Reishus Date: Fri, 24 Dec 2021 23:23:04 -0600 Subject: [PATCH] 2021/25: python --- 2021/inputs/25/input.txt | 137 ++++++++++++++++++++++++++++++++ 2021/inputs/25/input_small.txt | 7 ++ 2021/inputs/25/input_small2.txt | 9 +++ 2021/python2021/aoc/day25.py | 93 ++++++++++++++++++++++ 2021/python2021/python2021.py | 9 ++- 5 files changed, 251 insertions(+), 4 deletions(-) create mode 100644 2021/inputs/25/input.txt create mode 100644 2021/inputs/25/input_small.txt create mode 100644 2021/inputs/25/input_small2.txt create mode 100644 2021/python2021/aoc/day25.py diff --git a/2021/inputs/25/input.txt b/2021/inputs/25/input.txt new file mode 100644 index 0000000..44fe1c7 --- /dev/null +++ b/2021/inputs/25/input.txt @@ -0,0 +1,137 @@ +>v.v>...>v>.>>v>.>..>.v.v..v>v..v>.v.>.v.vv.v>...v.vv>v.>v>v>.v>v.>..v.v..v..>..>vv.>v.v...vv.vvvv>v.vv.>v....>.>..v>.v>.>v>v.>>>v......v.> +..>vvvv....v...>>>>.v.>.v>.v>v.>.....>>v.>....v>..v..v.v.v.v.>v>.vvvv.>.v..>>v.>>>.>.>..>v.v...>>.>.>.v>.>>...>v.....>>.>v.>>...v.>.>>.v>.> +....v>v..>>>.v....>..>.>.v.>..>vvv..>.>..>.v>vv.v.v.>v>..>>>...v...v.>..>v.>vvv.>>.v>..>...>>v.>vvv>....>v>.>>vv.v>>......>v.vv.>v>.v>v..v> +v..>v.v...>..>.......v..>>>..>>.>.v.v.v.>v.>.>>>v.>>>>.vv>.......>.>.>>>.......v.>v....v..v...>.>.v>v..>.>>>v..vv>...v.>>...v...>.>>....>.. +>>.v....>...v.>..vv.>>>..vv.v..>>..v..v>vv>..>>.vvv..>.v...v...>...>v>.v..v>...>......v.v>....v...v.v..>>>....v>.v>.v>>>...vv>..vv..v...vvv +v..>.v..v....v>.>>>v..v>...v>>v...vv.>>>.>.v>vvvv>.......v>v.>>..>>.vv...v..>>..>..>....>..v.>>v>.v>...v.>v...>v>vvvv>..>v..>>.>.>.>.>>.v.. +.vv.v>>>>.>>v.>..>v>..v..>.....v>v.>.>vv.>..v......v>.vvvv.>..v.v.v>>>>..>...>.>.vvv....vv.>>.>...>.....v>>.>....>.v..v....>v..>v.vv.v..v.. +..v.>v>>>v.v....v.>.>>vv.>>>v>>>v.vv..v..>>v>v.v>>>>.vv..>>...>v.>v..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.....>vv.v...>.v>v>vvv>>.v...>>>>vvv...>..v.>.vvv.vv>v>>>>>.>v..>>....>>v>v.>...v>..v....v.>v.>.v.v>>vvv +...>v>.......v.>v>........v>....v.>.vv...v.>>.>>..>...v.....vvv>>.....>...>.>vvv>vvv>..>>..>v...v.v.......>>v>>v....v.>.>v.vv..>.>>..>v..>> +........>>.v>..>.....>.>.>...>>..v......v.v.v.v.>.>v..vv..>.>.v.>v>>..>v.>..vv...v>.>.v..>..v>..v>>vv.v.v.vv...>..v>...vv...v...>>>vv>....> +..vv.>v..vv.....>>.>..>.>v.v>>....>v...vv>>v.>v.v..>.v>..vv.>..v>>>.....vv.>>..v.>.v.v..>...>..>v....v>.>>..>>vv>>..v>.>v.>v.>.>vv...>.>>.> +...vv...vv...>..>...vvv.vv>v.v..v.v.>.>....>.>.v>>..vv..>...>v.v>.>.vv>v>..v....v.>..v.>v..v..v>.vvv.>>>..v>>..vv.v.>.>.v..>.>.>>v.v..>vv>> +>>.>.v.v......v>..v...>vvv.v.v..vvvv>v>>vvv.v.>.......>.>.v.>....>.v.vv.v.v.v.....v>v.>...>.v....vv>.>...v......v..v>v>.>>vv...vv>..v.v.... +.>vv>...>>...v.vv...>..>.v.vv..>>.v..>....>.>.vv...v..>>v..>.>>..>v>.>.>>....vv.vvv>.>....>...vv...v.>..>.>>>>v..>..>v>.>vvv..v...>.v>>..>. +v.vv..v...vvvv>>>...>>>.v>.>..vv.v...>.v..>.vv.vv.>....v>v.vvv.vv..v>>>..v..v....>...vvvv.....vv..>..>vvvvvvv.v..>..>v>..>........vv...vvvv +>>.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.vvv>v +v>>.>>>v.>..v>..>vv>>...>..>>>.v>>.v.vv.>.v>..v..>>..vv..v.>..>vvv>>.>..v.>>....>vv>.>v.v.v.>..v.v..>v>>v>>v..v.>..>>...vvv>>...>.vvv.>.v.. +...v....>v>..vvv...v..v>..v..>>>>.vv..>v..v.>>.v..>...>>..>.v.>.....v.v.>.>v.v..v.>>........v.v.>v>>vv.vv....>v>>.v>v..>..v.>.>.>>...>.>... +v..>...v>>......v>.vvv...>>.>..vvvv>v....>..>..v>>.>>v>.>.v.v.v.v..>...v>...v..>vvv>>..vv.....v>.>.v.>.v>>.....>..v>v.>..vvvvv....v....v.v. +.>v>vv.v>.....>.vv>.....vvvv.>...v.v>...v.>.v...>.>vv..>v..>.>v.vv.vv>.vv...v...vvv..v.>v>v>.>v.>.>>..>>>.>v>>v>.>.v.>...>...v>>>>v....>..> +>.vvv...>..>.>>>>>..v....v.>>....>..vv>.>.v.v.>..v..>..............v.>>v...vvv...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.>..>vvvvv>v>vv..vv....vv..v>>>.v.v.v.>.>.v..vv>v.>>..v.>vvv..>.v..v>>...v..vvv>.>v>vv>..>>vv +.v..v.>.>v....>.v...v...>.v>...v>>...vv..v>v.v.vv.>..>.>v..v...v>..>>v..v.v.>v>...>.v.v>..>>.>.>vv.v>>..>>>..>..v.>.>>>vvvvv>......>.>...>> +.>v>...>>...>.>...>.v..>>.v..>>.v....>v.v>..v>..>....>..>v>>.vv>.v.vvv.v.....v..vvv.>>.v>>>v>v>>v>.>v.>>v>..>.>>>>>v..vv..>......>>.>>.>>>. +.v...v>>....v.v>>vv>.v....vv..vv>vvvv..v...>v>vv.v....>v>..>>v..>.v.>.>v.v.vv>v.>>.>.>.>v>..>v.>...vv..v>v.v.>v...v.vv>v>.....>..v..v>v.>.. +.v.>...vv.v.>v>.>...vv>..v>..v>>v>>v.v>v..>....v.>.vv.>>vvvv..v.>..>v>v.vv..>>...>...>.>>>..vvv.....v..>.......v.>vv....v..v..>.>.v>.>v..>. +v..v...>v...v..>v.v.v>>.>v>vv>>.>v.vv.v>...v>.>...v>>.v>..v.>..>.v>>.>.....>.>vv>>.vv>..>>>>.>>v..v>...>..v.v.v>>v>vv.vv>..v>>>>>>v...>.v.. +...>...>>.vvv.....vv..>>..v..>....>vv...>vv>>>>.v.>>.>..v>v.vv.....v>..>.>>v>v>>>..vv.....vv..v>..vv>>...>.>.v...v..v>.v....>>..v....v..... +.....>>v.>>.>.>..v..>.>....v.vv.>v..vv..>v..vv.v.>v.v>..>>vv>>..v>>>.>........v.>.v.>...v>.>..>>v..v.>>v..vv.>>....v.>.v.v>..>>.>.vv.>vvv.. +...v..>v..>>.>>.>>..v.>.>vv.>.v>.>v..>vv>..v>v..>v>vv...v...v>>>vv>>.>>..>v.>..>v>>>..>v>...>>v>.v.>v>...>>..vv..vvvv..v>>v..v..vvvv.v>.... +..v.>.>..v.>>..v..>v>.v.v.>v..>v.v..........v.v>>v>..>>>....>>..v..>vv>....>..>.v.v.......v>v>v.v>>>v.v.>>.vv..>..>v..vvv..>>v..>..v.>v.>.. +.v>>...>>>vvv..>v...v......vv.vv>v.v....>.v..>vv.>>.vv...v.>.>>..v>..vv.>>........v.>.>vv.....v>.>v.vv.v>......>>..>.vv>>.>v>.v......>....v +.>>>v........>.v.>.>...v.>..vv>.v..>v.>>v....>v..vv.vv..v>vvv>..v....>.>..v.>......>.....v.>.v.v..v..v>.>v.>.>.>>...>..>>.vv..>>>.vv..v>>.v +>>>>...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..v.....>>v.>.v..>.........v..>....v..>v.v>.v>..v>....>>v>.v...>>>v...>>.>...v...vv>v....v.v.>.>v.>>..vv.v>..vvvv>...v.. +.vvv...>>>v..>>..>..>v>..>.>...>vv>>>.>...vv.v..v.....>v.>.>v>..v....vv>.>.v..vv.>.>v.>>.vv.>.vvv>.>vv..>>....v...>.>v.>>.>.v..>v>.vv.v.v>. +v>>..vv>vv..>.v>>..v.v>..>v..v>.v>vvv>..v.>>v>..v.>.>..v>>.vv>>..v..>vvv>..>vv.>...>...>>v........vv.v.v..>.>>.>>.v.>.>....>...>.vv.>.vv.>. +..v>v>>v..>.vv.v.vv..>..v>.>v..>v>.>vv.>..>.>.v>.>>v>.v.v.>.vv.>>v...>>vv...vv.>.>>.>..>.v>vv..>..v.>v..v.vvv>.v...>.v.v.>>v>>..>.v>..v..>> +>>vv......v.>v.v>.....>....vv.v>..>.vv>v>>v..v>...v.>......v..v.>..v>..>vvvv..v.vv.v>.v>v..v...v..v..>v..v..>.>vv>..v...v...>vv...vv...v... +...v>>.v>..>....>>>>>vvv.v>.>>vv..>.>.v>v.....>..>..v>vv..v..v>..v.>>>v>v>v...>.>...>...>>.......v.v.v....>>v..v.vvv.vv>>...>v>>.v....v.v.. +v>vvv>.>...>..>>.v..>.>>v.vvvvv....>.v>.>>>..v.v....>.v>...>>v.v>..v...v>..........>..>..>v..vv.>.>vv>>..>>..v...v.v>>vv>v>..>v..vv..>v.v.. +.vv>>>>>v>.>vv>.v.>>.>>>.>>>>v..>v.>>.v>..v>.>>vv..v.....>...vv...>>..>v.v>.>v>vv>..vv..>.v.>v>>.>...>vv>..v>v..>.>v.vvv..>...v.>v.>.vv.... +v>vv.vvv>.v.v.v>....>.>v>>..vv>>.>>.>v..v..>>>...>..>v...>..>.vvvv..>>.v>.>>.>..vv.....>.>..v.vv>.>>v...v>..v.vv..v>v>.>....v>v.>>.>vv.>>v. +.>.>.v.v.v..>.>.>v>v>.>...>.>.v>v>.v>.v>>..>.v.>..vv>......>.>>..vv.>v.v>v..vv>...vv.>v>>..>v..>>vv.>>...>.....v..>>..v.>vv...>.>.>..>..v.. +.>>...v..v>....v....vvv.>v..v.....>.>.>vv>v.v..>.....vv>>.vvvv....v..>>..vvvv.>vv..vv>vvvv.>..v.>..>>.vv.v..vv>>...v>v.>v>v...v.v>v.>>v>v.. +>>>.v>.v....v>.v.>.v......vv.v...>..v.vvv..>..vvv.vv..>v.>v>v.>..v.v>v.v>>.>..v.........>>..v..vvvvv..v....v.......>.>..vv.v.v.vvv.....>>vv +>v>.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>>>.vv...>.....>.v.v..v>..v..>..>.v>>v>..>.vvvv>..vv>....>...>...>.....v...v>>.vv...vv>..>>..>>.>v.>>v.v +>v>v>vv..>..>>.v....v...>>v>.....vv>.>.vv.v>v.>.>>v>>.vvvv..v....>.>.v>....>.v>.vv..v>>..>v>>.v>v.>..>.v.v>...vv...>vv.>..v...>vv>v.v>.v.v. +.vv>v.>v.......>.>......vvv.>.>v..v.>v>>>.>..vvvvv>....vvvv>v..v>v..>v>>>>v.>vv>vvvv..v....>...>...vv..v>.vv...>>v>vvvvv...>v>>.vv>.>v.>... +...>..>.>>...>..>.v.>vvv.v.v>>....v>..>....v>>.>vv..>...>...v.>.>.......>v.v....>.vvv.>...v.v.>.v..>...v.v.vv....v>...>vvv>...>>.vv....>..> +vv..v....v..>..v..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.....>v...>.v>v.v..v.>.....>..>..v.>v....>.v.......>..>v>.>......>>..vv>>..vvv..>v.vv.>v...>....>.>.v..>....>....v.>.>>vv..>.v..>>v.>>. +..>>vv.vv>>....v>v.v.v>v>..v>...>.v>..>.v>v.>.v.>>.v>>>vvv.v>.v...v..v.vv.>.v>.v.vv>...>.v.vvv.v.>>v.>.>>..>.....v.>v.v>vvv>>v>.v.>.>vv.>>> +>.v>.v..v>...>..>..v.>...v>v.>.v.>....v.>v..>>..vv....vvvvv..>.vv.v>vv..>v.>v>.>>v....>v>......v..>v.v>.v....vv.vv>>vv.>vvv..v>v..>>v.>vvv. +...>..>....v....>v.v>.>>v.>v>..vvvv>...v..v....vv...v.>>.......>v>>v...vv.....>>vvv>v>>>..>vv>.v>v.>vvvvvv..v....vvv>>>v>vvv>.>........v..> +....v.>>.vvvv>.>>v.>>.>..v>...>.>.>v>..vv>>..>....vvv>v>>v..>v.vv..>vvv>v.v....vv.>.v>.v>..>v.>.>..v...vv>.>v>.v>..v.v>vv...>.>...>>.....>> +>>v.>..vvv.vv.v>v..v>vvv.>..>.v..>>.vv>>.v...>...>>>>>.v...v........vv..>v.v.>v>..v..>.>>.v>>.>>>..>>v.v.v......>.v.v.>v..v>v>.v........... +..>.>.v..>.vv..>>.>.>vvv...>v.vv>.>..v..v..>.>.>.vvv........v.>>>.>.vv>v>>v..>>v..>>>.vv>.vvv>>v.>>..v.>v...v>..>..>.v..v..>.vv...v...>.>.v +.vvv..v>.>..v.>..>v....v>>>>.>.>.>v>..vv.>.>....v>....>....>>v...vv.v>vv.>.>.....v>vvv..vvvv>....>>.>..v.>....v.>>v>...v.v.>>>.v>>.>.v>>.>. +.>.>v.>.v..vvv....>....vv>>.v.v....v.>.v>..>....vv.v.vv...>v....>.......>.>.v....v..>>vv>.>>v>..>vv.v...vv.>.>v>.vv...>vv.v>..>..vv>.>.v... +>v.>>>vv.vv..v.....v..>>>.>.vv>>vv.>.>.v>v>..>v.>....v......vv.>>.vv...v..v>v>...>>>>..vvv...>.......v>vv..>.>>..>>v.>..v..>.v..vv..>.vv.>> +...>>>v>>v.......>.vv.v>>..>..>>.>.v.v>>>..v.>>>v>...v..>.>..vv.v>v.v>.v.>v....>v....v..vv>v>v....>....vv>v>.>v.>.v>>v.....>v>v.v..>....>.. +.>>.>..v.>.v>>.>.>>..>>.v.>v.vv>v.>v.>v.v...vv...>.v.v>v......>>.v.v..v>..>>>...vv>vvvv...>v.vvvv.>vv.vv......vvv.....v..>>>v...>v..>.>>.>v +v.vv.vv>vv>v.v...>.>vv>>....>....>.vv>>>v.v..v..vv.v.vv.>vv....v>v.>v>>>>>.>.v.>.>>>>>>.>.>v..v>.v>.v..>...vvv........v>...>.>v>......>>.vv +>v>.......vv.>..>>vv>...>..>.......v>.v...v>vvv>.>.v..>....v.v.....v.>>.v>vvv>>>..>.v>>.>>...>..vv....>v.vv..v>.vv>.>.v..>.......>..>v>...> +....>v>.vv>..>.>v...v....v..v>v>>.v.>v..>vv...v>.>.>.>.v..>.v.v...vv>...>v........>>.v..v>.v.....>...>>.vv>>>>.v>v....>>.>>>.v.v>.>...v.>vv +..vv>v.>vv..v.vv..>.v.v.vv......>>v>.v.v.v>>>....>...v.>>v>vv>...v>>v>.vv.>.vv.v..>.v>>..>..v...v..>.vvv.v....v>v.vv.>.v.>>.>>.>.vvvv.vvvv. +..>..v>.>vv>....v.>>.>>>>v>.>v..vv>..vv>>.>..>.v>>......v.>...v.......v.vv....v>...v.>v>.>>v.vvv.>.....v>v>....v..>..vvv.vv>.>>v>vv..>.>>>v +v.>v.>.>.>.....>.v>v.>>vv>vv>...v>...>v...v.v...>>v.>...>v.>v>.>.v.....>>.>>....>.>v>>.>v.v..>....v..>>v>.>>.>......>.v.v>vv.>.>>>>>>>.v..> +>vvv.>.>>.v.>...vvvv...v>..v>.>....>.>vv...>>..>v>>.>>...v..v..v>..v.v..>v>.>.vv...>..vvv.>v>v.>>.vv>v>v.vv.>v...>.vv>v.>>v.>.v>>..>..v.>vv +>.>.>....v....v.v>.v..>..vv..v>v.v...........>v>....vv..>>..>>v.>vv.v......>.>.>..>>.v.v>.>..v>>v.vvv...vv.....>vv>>.vv>....vv.v>v.....vv>. +>.vv>.>.>....>..v.>v.>..>>..v.v.>v>..>>vv...vv.>v..>.vv..v.v.v....>>>.>>>.v.>>.>>..vv>vv>.>..vvv.v.....v...>.v>..v.v>>..vvv.vv.v.v.....>>v. +.v.>.....v..>>.v...>>v..>>v.....v...v>..v..v..>..>.v.v>.>.>..v.......v..v>...v...>..v>.>>>.v>v>vv..>.>v...v...>>vv.vv....v>v>....>...vv.>.> +>>..v..>.>.>.>>>.>>.........vv...v>.v>v..vv.>..>vv.>vv.......v.>.v..vv....>>>>...v.>vvvvv..vv.....>...>.>vv>..>.>>>vvvv...vv>v.>.>.v.v>>>>v +v...>.>.>.>..vv.>>.vv>v.vv>v..v>>.v.>.>v..v>.....v...>vv>v>v>...v...v>..>.>..v>..>v>v>>>v.v..v..>>>vvv....>.v.......>>..>vvvv.v>.>...>>v.v> +>.>.......v>..v...v...v..v>v.>vv..vvvvvv.v.>....v.vvv.>.>>.>.v>.v..v>.v>.>.vv>>v.vv...>v...v>.vv>.>v>>....v>.vv.>..v..>v>v...vv...v>>v...v> +.v>vv...>.>..>v>.v.v.>>.>>vv...>>.......>..>...v.>v.....v.>....>v>.>.v>>>.>.v>vv..vv....>.>>>.v....>.....>.>>.v.>.>v>v>.>v.v.v.v.>>..v>.v.. +>vv.>.....>.v>..v.>...vvv>>>..vv.>v>....v.......>>.....>vv..>>vvv>>..v>v.>v...>..>....vv>.v>..v>>v..>.vv>>...>v>..>v>....v...>..v.........v +v....>.>>.>>>>>>..>vvvv.vvv.>v...vv>v...>v..>>..>>..v>>v>.>vv....>>>.>v.>..vv.v>..vvv.v.....v..v>....>>v...v...>vv.v....>..>..v.v.>.>.v>.vv +v>vv>..v.>v...v>.>v..>>>..>..>.>v..v....vvvv......>.v....>.>.v.v>>vv.vvv...v..>v.>.v...v.v>..>..v>v>>..v..>>.v..v>>.v.>.vv..vvv.>>..>vv.... +.v..>.>v......>...>>..>.>.>v>.>..vv...vv.>.>v.v....v.vvv.v.>vv>>.v.v..v.>.>>v...>v.>..vv..v.....v>...>v..vv...v..v.v..>v.v.>.>....v.v.>.... +..v.>.vv>v>.v..v>....>>>.v>>>>.v...v>>v..vvvv>..v>v>.v..>.vv...v..v.v>v.>vv.vv..vv>.v>v..vv>v..>>.v......vv>.>>>.>>.vv.v.....>v>v.v..>.v.>. +>v.....v.>v...v>.v>.>.>...v.vv>.>>.vv.>>...v.v.v.>..v>>v...vvv.v>.....v>v.v.>>.vv.>>v.v>.>.>.vv>..v.>>.>....vv>..>v..>.v....>v>vv>>v..v..>. +v..>v>>..v.vvv>.>>>.v..>.v..v..v.v....v....vvv.v....vv>...>>>..v>........v.v...>.>>..vv.>..vv..>v..v..v...vvv.>v>v.>v>....>v>>>..>>....>... +vv>.>vv..vv..>v.>.>...>v.>>.v..>..vv.v.v.>.>v>..vv..vv...>.v.v...v....>v.>.>>v.>v.v.v.>>.>v.>.v>.....v>vvv>>.vv...>>>>.v...vvv.v>>.v>vv..vv +...>...v.vv....>>>v>.vv.v.....>.v>v.>.v>.v.v.v.v...>v....v>.vv.>..vvv.v........>>>..v........>.....v>v..v.v..v>>v.>>>>..v..vv.>......v>..v. +...v....v.v>.>.>..v..v..v>.vv..>....>.vv..v>v...>.v....v.v.......vv..vv.>>..v.vv>>.>vv...v....>.v>>v>.>vv..v>v..>..v>>.>>..>..>>.vvv.v...v> +.>v..>.>..v.....>>..v>v..v>.>v.>>v.v..>..>>.>v.v..vv..v.....v...>.>..vvv..>>......v.v>>...>>v>v..v..v....v>>.vv>.v>v>vv...>.........>.vv>.. +v>v.v..vvv..>...v....v..>>...>>...>...v.>vv..>.>..v>.vv..>....v..vv.>>v.....v.>>.....v..>.>.v>...>v.....v>..v.>>v.v>v..v...>..v>>.>v.>...v. +.v>>.v....v>.v>>>.>..>....v>>>.v...>.>>.>>..v.....v>>....v.>>vvv...>>>....vv.vvvv...>.v..>vvvvv>..v.vv.>.>.>v.>>v.>.vvvv.>>v..>>v....v>>>v. +v.v>...>v..v>.>vv...v..>>>>v>.>v..v.>..........>>...v...>...vv...v>.vvvv>.v>.v.>vv...>..>>v..>.v.vv...>...>.>v>>>.v>..>......>.v..>.......> +....>v...v.....>..>...>v>>.>...>.>.vv..v.v>.....>>..v.>v.v>...>>>v>>.v>v..>.v>>>.v..vv..>.>.v...vv..v..vv.>v..>.vv.>v.>v.v>vv..v...>.>....> +.>.>.>.>..v>v.>.....v>.v..>vv...v>..vv>..vvv...v..vvv.........vv>vv...v.>.v...>.>.v>.vv.v.>...>>..v.>v>..v..>>..>...>..>.>....vv>.v.>..>... +>v>.....>v.>.v.>>.....>>>.vvv.....>..>>.v>v>..v...>>.>v.v..>>v..>vvv.v......vvvv>>>..v>.>vv.>.v>.v>..>......>...v>>.>.v...v>.>>.v.vv..v>... +...v.v.v.>.>v>..>.>..v>vv>..v..v>..v>....v>.vv.v>.vv>>>.v......>.....>v.v.....>.>..>v.>v.vvv>>>>>.>>.vv>v...>v.....vv>>.>>>>>>v....vv.v...v +>>v>vv.>..v.v.>vv>>v....v..v>.v.vv.v.v....>>vv...v..v>vv.>.v...>>vvv.v.>v>....v...v.v....v.>..v.>>>v.v>>>......>>...v>..>>.v.>..v..>v>>.vv> +v...vv>>...>.>>vv.....>...>>>v.>>v>.>>>v.vvv......vvvv..v.vv..>>vv..vvv......v.>.vv..>>.v.v>.v...>v.>v.>.>.>.>>v.vvv.vv.>..v.>..>v....>v>.v +>.v>>....vv..>......vv.v..>...v>..vv>vvv>..vvv.>...v.v...>.....v>.>>..>..>>v.v..v..v.>v.>.>>.v>vvvv>v.....v.....v>>v..>.>v.....>>.>...vv.>> +.>..v..v>...v.v>>..>.v.....>>...>.v>vvvvv..>>..>..v>...>..>>>>>.v.>..>>v.v.v..>v....v....>>v..>>.v.....>v>.>.vv.vv.v>..vvv>.v.v.>..>>>v>..v +>>v>>vv.....v>.>..>v...........>>>v>.v.....v.v.>v.vv..v>v.v.>>>>vv>....>v>>v.>.v.v.v...>>..vvv..>vv.v.>vv>..vv.>v...v>.v>>v>.>.vv>.v...>vv. +.vv.....>...>v>..v.>vv...>v....>..v.>v.vv>>>.vvv.>.v>.>.>.....>..v.v..v..vv..vvv>......>v.>.>vv...v.>vv>.>....v..>v.>..v.>.v>.v.>....>....v +...v.>>>>.v..>v>...v..v>...v.>>vv>....v.vv..vv.vv>v.>>.vv>>>.v>.v...v...v.....>.>..>v>.v..>v>...v.v.>.v.v>.v..v.vvv>v>.....v>.>.v>..v.>v..v +..>.>.........v>.v..>>v..>..v....vv.v>....vv..vv.v.vv>.v>>>.v>vv.>......vvv...>>v>>.vv..vv>.......v..vv>.vv>>.v..vv>.>>..v.vv..v.v..>v.>..> +..>>.v.v...v..>..v.>v.......v..v>.>......v..v.v....>...v..>..>.v>.....>v...v.v>.>..v.v.>..>vv.v.v..>v..vv>v........v>..>v.vvv>>.....>.>>>.> +vv>.....v.>vv>>>>>....v>vv.>.......>..>.v..v..>vvv..v.>.v.vvvv..v..>v....>..v>..v..v.....v>v...>.vv>.vv.vvv.>.v>..vvv>v>>.v...>>v..v....... +v.v>.>...v>.v.>...>..>....>v...>v>.>.>..>..>>....>v..v..>...v....>>v.>v.>v.vv>.vvv>>..v>>>>>.vv.v>.>....>......>vv>.v.vv.>>.v.>.>.>..>>v>>v +v>>v.vv>.....>...>.v......vv..>..v.vv.>.>..v>...vv........vv...v>..>.v..v.vv>....v.>..v..>>v....v>>.v>v.vv.v.vv>.v>>.>>>>..>vvvvv.v....>>.. +..v>.>v..vvv.v>..v>v.v.v..vv>v.>....v.>......>...>v>vvv.v>vv.>>.>.>>.>.....v.v.....v.vv.>......>vv.v..v..v....>v>v...v.v.>.>......>.>vv.v.v +>>......v.>.>.v..v..>>v..v>>v.>...v..>v.v...v>>..v..>>..v.vv.>>v>.vv.v.v...>>.>...>.v....>>.v.v.>...vv....vvv>....>.>.v.v...>v>.vv..vv.v.v. +.vvv.>>>.>...v.v>>.vv>v.>...>>v.v.v...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..>v.>vv.>v.>.>v>.....v.>......v>.vvv....v.v.v.......>>.> +..v.vv>v..>v.vv>.>>>..v>vv....v>.......v..v.....>.v.>>.>>..>.v.>..v.vv....vvv...>.v>vvvv....v.v..v.v>..>>>>>vvv>v.>vv>..>.vvv.>.>..v.vv.>>> +...vv>>.vv>v.v>>...>...v..v>>..vvvv..v>>v...>.>>v>..v......v.v...>>...vv>>v..v.v>......v..v...vv.v>....v.>vv..>v.v..v>.>...>vv....v.>...v.. +vvv....v>>v..v>vv>>v..>.....>.>v>.vv..v..vvv.>.vvv.v.v.>.....vvv>.v>>.>v>v..>..>.vv..v...v>v>...v.>>>.....>v.v>v..v....>....v.>>>.vvv>>.v.. +..vv.>.vvv.v.v.>.vvvv>>>.....>.>v.v>..v.>vv.>.>....>v.>v>.vv>..v..v.>....v>..v.v>>vv>.v.v..v>..v.v.>v>v...v...v.>v>vv..v.v.....>.v>>>v.>>.> +>.>.>...>.>v>.vv.>....v.vv.v>.>.>vv.>...v.>>.vvv.>.v.v..v..>.vv>>.>v.....v..vv.......v.>.>.>..v>>>.v.v..>>...v.v...>.>v.v..>.vv.v.v..>>v>vv +vvv>.vv.......>v....v>..v.v.v.>...>..vv.>.>..v>v>>>vv.v.v>v.>v.>v>vv...v.v>v.>vvv.>>.>vv.vv..vv.>..v.>.>v...>.>v>>>..v>v.>>>.>>v.>>>.>v>vv> +>.vv>..>v..v.v..>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....vvv>..>>v.vv.>v.>v..v..v.>v...>.>..>.vv>>..>v>.v>v>..v...>...v>.v..>..>>>v.....>vv..v...>v...>.>v>....v...vv>> +v>v..vv..>v>>.....>...v.v.>v>.>vv..vv>v.>.>..vv.>>>v>.v>..>v..vv.v.>..>.>>vv>vv.v>....vv......>v.......v>v...>v.v>..>vv..v..>...>.v...v.... +vv..>>..v>..>v.vv.>...>.>v.>>vv>v>.>..v.v.v>...v....v>....>>vv>>v>>.....>.>v...>v..v>.vv.vv.>.>v.v>>vvv>...v>>v>.vv..>>>v..>.v..v..v..vv.vv +.>..>.>.>>.>.>.v..v.>...v.>....vvvv..vv..v>>>v.v........>vv>......>v..v..>..v.....v>.>vv..v.>.v.v>>....v..>>v>.>...vv.>...>vv..>....v..>..> +v.vv.v>>v..v>..>>>v>..v>.vvv>>v...>.>.v...>....>v..>.v..>.>>v>>>.v..>>.v>>.>>>..vv>..>...v..>vv.>vv.>v>vv>.vv..>>.vv...>......>...v.>v>>>.. +.>.............>>v>.v.>>>v.....v......vv>>.....>..vv.>>>v>>vv.v..v>>>>>..v...>..v..v>v.>>...vv.>>..v>..>.>v..>......>....>.>>v>v......v>.v> +.>.vv.>.....>.vvv...>.v...>.>vvv>.v....>.>.>..vvv......>..v>vv.v>.v....>>v>vvv.....>>..>.....>>.>..>vv>.>>vv....vv.....v.v.>..>v....>vvvvv. +>>.v..>>v.v>..>.v>.v>vv.v..v>vv.>.>...>v.>.v....vvv.v.vv.v....>>>..v.....v.v>>v.vv.v.v>v.>>>.>>...v....>..v.v..v..v...>>>v>>.vv.>...>.v..>. +v>...>vvvv>>.v...vv.vvv>>>>.v......v..>.>...v....v.>....vv>..vv.>.v.vv.v.>...vv.>.v>.....v.>>>.v.>v...vvv>.v...v>.....>>.v...........v.>.>. +....v.vv..>...v...>v...>...>..>.v.>v.>.v......vv..>v.>>.>>.>v>.v..v...v....v...>..>v.>..vv..>.>...v>>>...vvvvv..>.v..vv.>..v.>>..>v..>..v>> +..>>>...>v.>>.........>>..v..>v.vvvv.>>>.......v>....>>>...v.>v>...v>...>...v>..>v.v>vvv..>..>>...>.........v>..>v>.v.>.v>.>v.v.>v.>..>>v>v +.v>>..v...>v>..>.>.>vv.>.v.>v.v.>>..>>.>v>.>.v>..v..vv>..v>v..>>>>v.vv>..>v>>...>.v.>....>vv.>>>......v.>v.>>....>vv.vvv...v>.>>v.v>..v..v. +.>..>.vvv..>.v..>.v.vv......>..vvvv..v..>>.>vvvvvv>>..>.v>>.v>.....>vv.>>>...v..vv.v..>..v....>.>.vv.v.v>.v..>.>>.v.>vv.v>.v>..v>.....>...v +>..v..>v...v.>>.vv.v>.v.>..>>>v>.vvv>>>...>.>..>v..>>..>>>>v..v.vv.v>.>.>...>........vv>.v.v>>.>v.v>.v.v......>vv>.v.vv..>>v..>>v..v..>>v.> +...>vvvv.v...>>v.v....>..v>>.v.v..vv.vv.v.v>..v..v.v...>......>vv.......v>vv>..>v..v>>>..>v..>>>....>v...vvv.....vv..>.>.......v>...>>..>>. +.......>.>>>.........v>>v.>>...>..>..v.v.>..v...>..>.vv.>.>...vv>...>.....>..>.v.v>..>.>.....>vv.>.>v.>>.>..>>.>>v..>>>.v..v>v....>...v.>.> +v.>...>...v.>..>v.vv.v.>..>>..>..v....v>.v..>.>>.>.>..v..vvv.>v..>.>v>.v.v.>....vvv...>.>.v..v..>.....>>.....>..>.v.v.>..v.vv>.>v.v.v...>>. diff --git a/2021/inputs/25/input_small.txt b/2021/inputs/25/input_small.txt new file mode 100644 index 0000000..76296ab --- /dev/null +++ b/2021/inputs/25/input_small.txt @@ -0,0 +1,7 @@ +...>... +....... +......> +v.....> +......> +....... +..vvv.. diff --git a/2021/inputs/25/input_small2.txt b/2021/inputs/25/input_small2.txt new file mode 100644 index 0000000..0f3c0cd --- /dev/null +++ b/2021/inputs/25/input_small2.txt @@ -0,0 +1,9 @@ +v...>>.vv> +.vv>>.vv.. +>>.>v>...v +>>v>>.>.v. +v>v.vv.v.. +>.>>..v... +.vv..>.>v. +v.v..>>v.v +....v..v.> diff --git a/2021/python2021/aoc/day25.py b/2021/python2021/aoc/day25.py new file mode 100644 index 0000000..c67cb11 --- /dev/null +++ b/2021/python2021/aoc/day25.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python +""" +Advent Of Code 2021 Day 25 +https://adventofcode.com/2021/day/25 +""" +from typing import List +from collections import defaultdict + + +def parse(filename: str): + grid = defaultdict(lambda: " ") + x = y = 0 + max_x = 0 + max_y = 0 + with open(filename) as f: + for line in f: + for char in line.strip("\n"): + grid[x, y] = char + max_x = max(max_x, x) + max_y = max(max_y, y) + x += 1 + y += 1 + x = 0 + return grid, max_x + 1, max_y + 1 + + +def display(grid, xsize, ysize): + for y in range(ysize): + for x in range(xsize): + print(grid[x, y], end="") + print("") + + +def step(grid, xsize, ysize): + moved = False + + # Right march + delete = set() + add = set() + for y in range(ysize): + for x in range(xsize): + me = (x, y) + there = ((x + 1) % xsize, y) + if grid[me] == ">" and grid[there] == ".": + delete.add(me) + add.add(there) + for (x, y) in delete: + grid[x, y] = "." + for (x, y) in add: + grid[x, y] = ">" + + if len(delete) > 0 or len(add) > 0: + moved = True + + # Down March + delete = set() + add = set() + for y in range(ysize): + for x in range(xsize): + me = (x, y) + there = (x, (y + 1) % ysize) + if grid[me] == "v" and grid[there] == ".": + delete.add(me) + add.add(there) + for (x, y) in delete: + grid[x, y] = "." + for (x, y) in add: + grid[x, y] = "v" + + if len(delete) > 0 or len(add) > 0: + moved = True + + return grid, moved + + +class Day25: + """ AoC 2021 Day 25 """ + + @staticmethod + def part1(filename: str) -> int: + """ Given a filename, solve 2021 day 25 part 1 """ + grid, xs, ys = parse(filename) + i = 0 + while True: + grid, moved = step(grid, xs, ys) + i += 1 + if not moved: + break + return i + + @staticmethod + def part2(filename: str) -> int: + return -1 diff --git a/2021/python2021/python2021.py b/2021/python2021/python2021.py index 4bdd1d3..bf38198 100755 --- a/2021/python2021/python2021.py +++ b/2021/python2021/python2021.py @@ -29,6 +29,7 @@ from aoc.day23 import Day23 from aoc.day23b import Day23b from aoc.day24 import Day24 +from aoc.day25 import Day25 def alldays(): @@ -98,10 +99,10 @@ def latest(): # print("2021 Day 20 Part 2 (small2):", end=" ") # print(Day24.part2("../inputs/24/input_small2.txt")) - print("2021 Day 22 Part 1:", end=" ") - print(Day22.part1("../inputs/22/input.txt")) - print("2021 Day 22 Part 2:", end=" ") - print(Day22.part2("../inputs/22/input.txt")) + print("2021 Day 25 Part 1 (small):", end=" ") + print(Day25.part1("../inputs/25/input_small2.txt")) + print("2021 Day 25 Part 1:", end=" ") + print(Day25.part1("../inputs/25/input.txt")) if __name__ == "__main__":