From f9e6e7ace80e0186a35477800c64196f3370f60b Mon Sep 17 00:00:00 2001 From: Louis Vallat Date: Sat, 15 Jan 2022 11:02:10 +0100 Subject: [PATCH] Added day 25 code for part 1 and 2 Signed-off-by: Louis Vallat --- .gitlab-ci.yml | 5 ++ day25/Cargo.toml | 8 +++ day25/input | 137 ++++++++++++++++++++++++++++++++++++++++++++++ day25/src/main.rs | 76 +++++++++++++++++++++++++ 4 files changed, 226 insertions(+) create mode 100644 day25/Cargo.toml create mode 100644 day25/input create mode 100644 day25/src/main.rs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8013f33..42f80ae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -123,3 +123,8 @@ day-24: stage: build script: - cd day24; cargo run --release ./input + +day-25: + stage: build + script: + - cd day25; cargo run --release ./input diff --git a/day25/Cargo.toml b/day25/Cargo.toml new file mode 100644 index 0000000..dbb6a46 --- /dev/null +++ b/day25/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day25" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day25/input b/day25/input new file mode 100644 index 0000000..bb07884 --- /dev/null +++ b/day25/input @@ -0,0 +1,137 @@ +v...>.>vvv.>v.v.>>.v>.>>>>.....>v>....v....v.>>.>.>v.vvv>v...>v>>......v.v>v.>vv.>>v...>...v.v...v.v..>.>..>...>>v.>...>.v.>v.>.....>>...vv +>...v..v.>>.vv.v.>vv...>>v>>>.v.>v.v....v.>...vv>v>v..>>.>.vv...v..>v>.vv>>.v.>v..>>>...vv...v>.>>.>.vv.vvv..>..>.>.>..v>vvv>.>.....>vv..>. +v.>v...>>..>>>..>>...>>>>..vv.......vv.>.v.>..>v>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.vv>.>..>.vvvv..>v.>.v.>..vvv.>>.v.vv.vvv..>>.v..v>..>.v.>..v.vv.v>>v>v>.v>v......>>>vv>...>v...>. +..>>v>>>..v.v..>..vv>>v>v......v.v>vvvv.v>....>>>...vv..>vvv.v.>.v.>v>.>.>..>.v..>......>v>>v.>.>.v>v>>v.>.....v>..>..vv>.>vv>.>.>...vv>..> +..>>.>>v..>.>v....v>>...v.v>v.v.>.v.>.vv>>>>>>vv...v..v>>>vv..>...vv..>>v..>>>>...>vv....v.v.v..>..>v.>.>>vvv.vv.>.v>..v.vv.>>vv>.>.v.vv.v. +v>>>.>>.v......v>..v.>...v...>v>.v.>.v.vv..>.>>>v>v>.v>v.v>>..>..>..vv.v.>v...v>.>.>v>.vv.v..>...vv...v>.v>>vvv..v...>>v.>v.....v...>>..v.> +v>>.>vv>vv....v>..>v.v.v>.>.v...>.>>>.v>...>v>>>>v..>>.......vv.v.vv.>v.v>v..v.>..v>v.>v.v.v>v>..v.v>.v...>vv..>.>..>..>....>....>...>.vv.. +..>...>...v.>vv>.vvvvv>>......v.v..>>v..>.....v.vv.>v>....>.vvv>.>..>v...>.v.v>v>...v...>..>.>.v>v>v..>.>.>vv.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...>>.vv>.>.v.v..vv +..v>>v>....>.v.....v...v>v..>v...vv.>v.>vvv>vv.>v>..>...v.>v>..v.>..>>vv.v..v.v.>..>>...v..>.v.v..v....v>>....v.>v>vv..v.v..>.>.>>..v>>.v.. +>.>..>>.>vvv.....>v.v..v>v>v>v.>v..>...........v.v..v>.v>>........>v>...v>..v...vv>.vvv>.v.>v.>..>>.v...v>vvv.>>>.>..>..>....vvv..>>...vvvv +.v......>..>>v.v.v.v>...>>.vv.>>.>.>vvv.vvv...v.vv.>.v....v.v.vv...v..vv...>>v......vv>v>>>v>...>>.>vvv>.>>v.>>>>>>>.>.>>>.v.v>v.v>...v.v.v +.>.>v.>>>>..>>vv.v>..v>v>.>.>>.....>v..>vv>.>v>vvv>....>..>>v.vv..>..>>vv...v>.v.......v>>>v>>.v.....v>..vv..v..vv>.>>>.v.>>>>.v..v>>.>vvv. +..>.v...>.v.>>..>>vvv.v...>v.>.v.>vv.>>>..vv.>...>......v>>vv...v......v.>.>.v....v>v..>...>v>v...vvvv.v>.>.........>.v>..>v>>...>..v.v.v>. +>.v..v.>v>.>>.v>v.vv>...v..>...vv...>.>>v...>.>v.v.vvv>..vvv..>..>vv.v.....v.vv.>v.vvv.vv>>.......>.v>..vv.vv.>>>....v..>....vv.vv.>.v..... +...v..>v.v..>v...v..>.v.vv..>.>...v>v>v.v.....vv>>.v>>vvv>.>>.....v.>vv>.v.......>v...>.....v..>..v.v.>v...>..v>vv.v>>>vv...>....>..>.v.vvv +>v>v.>.vvv....vvv>vv>.v.v>..>v..>....vv.>v>v>.>...>>.v>>.>v.v>.>...>>.>.>.>>....v.vvv..vv.>..>..v.>>>>...v.>.>vv..>.v.>>.>.>.v>v.v..>...>.. +>.>vv>vv>>.>v..>....v>.>>v>....>v>>v...vv..v>vv.>..>.v.v>>>.v.v.>>v....vv>v..v.>>vv>v>>.v>...v.>....v.>v>.>...>......>vv.v...>...>v>>...>.. +.v.>.>..vv.vv.v..v>>.>.>>>vv.>.>.>>..>..>.vv...>>>vvvv....vv..v..v..v.>v.>v>vv>.v....>vv>v.v.>>.>..v..>>.vvv>.>..>.....v>..v...v.v>>.>.>v.v +vv.v.>.....v.vv...vv>>>...>v..>.v..>v.>v.v.>v...v..vvv.v....vvv.v.>>..>.....v.vv.>..v...>.>>....>.>v>....vv..vv>>.>>>....>>.v.v.v.v>vv...v. +v>>>.>vv.>>.>>v....>>>>.>v>.....>v...>.>.v>.vvv>..v.v.>...v.vv.v>....v.v.vv>v.>v>.>>...>v.v....>>..>.v.>..>vv>v>>vv...v.v.>.v>>vvv>.vv>.>.v +>.vv......>vv..vv.>v.>.v...>...>>v>.>.>.>v....>v>.v....>..>.>>v.v..vv..v>>.....>....v.>.>>>...vvvv.v.......v.v.v..v>.>v..v...>.>..>vvv.>>v. +>.>.v.>vv......vv>v..v...vv..v..>...v....>.>>>.vv>.>>>.>v.v>v.>.vv.>>..v.....>>.>.>v.>.>......vv>>v>>......v..v>v>>.>>.>.>...>>>v>....>.>>> +.>v.>.>>..>>>..>.vv...>v..>>v>v..>>.v.....v....vv>v..v..>...v.v..vv..>>>>>...>......>.v>v>.vv..v.....v..v.v.vvv>.>.>....>.>..>>v>v>>.v.>>v> +.>...>.>v..>>>..v>.>v>v.v...>.>.>v...vv>v.v....>.vv>...v>.v.>vv...v..>>>..>>v>..>vvvv>v.v>.>..v>v>.>v.vv.>.>...v...vvv..v.vv>..v..v.v>.v..v +v>>.>>..>.>....>....v.....v>...>vv.>>..>..>.vv>v..v...v.v.>vv.>...v..vv>....>>...v..v..vv..>>...>.>vv.>.vv>v>...>vv.>vv.v>.v>.vv.v>v.....>. +v.>>.>..>>v...>>v..>>>vvvv>>.>>....>>....v.vvvv.>.....>v>.>v.v..v...v.v...v>>>.>>>..v.v>>.>.>.v..>.....v.>..v.v>...v...>..vv>..>>>v>v>.vvv> +v...>>v...v...vvv.v>.>>.>.v>....>vv.v>....>.>..vv.v.>>.>>.v..>..v..>vv....>>.vv>>..v.>>..v.>.>.>>vv>...v.>.>v>>..v>vv..v>....vvv....vvvvv>> +>..>..>v.v..v..>.>>...v...vv.>v.v.>.>>.>>.>.>.v..>v..>v..v>......v.v.>..>>.v....>..>>.v..>.>>....>...v>.......v..v....>>...>.>>.v>..v..v.>. +..vv..>v.....v>v>...v>...v>v..v.v>v.>.....v..>>>>>vvv>v>>...>>...>vv..>.v>.....>>....>...>.>vvv..>..>.>...vvv>vv>>v>...v..v.>vv..v..>vvv... +>.>v..>..>.vv.vvv>...v.>..>>..v.>>vv>...>>v>......>>>......>..>v.v..>vv>vv..>..>>.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>.>.>>>>.>.v>>v.....>v..v...>...v.>. +v...v>>vv....v..>>...v.>>..>>v.v>v.v>>.>..>v..>...v..>..vvvvv...>vv.>.>v......vv.>>>..>.>>.v....v.>>>.v.>>..>.>v..>...>.v.>>.>v..>>....v... +vvv.v>v>.vv>....>..v>..>vv>v.vv.>......vvv.vvvv>>..v>>>v..v>>v..>..>>v>..v....>v...v....v>v>.>.v>....v..v.v>>>.v.v....v>.>.v...>.v..v>.v>>. +v>..>..>.>v.vv.v..v>..>>....v..vvvv>v>..v.v..>>..vv.>.>>v....>>...>v..>.>>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>>>..>v.v...v.>..>>>v.v..>>.>.v>v....>>..v.>vvvvv.>>.v>vvv.>>>.vv.v.vvv.v.>v...>.>vv +.v...v.v.>v..vv..v..>v>.vvv.v.>..v>v....v.vv.>vv>vv..>>v.>........vvv>..vv.>v..v...>>>>v..v.v>v>.>..v.>>>.vv..>>>v..vv.vvv>.>.v>..v..v.v>.> +.>..>vv>>.v>..>.vv.>..v>.>>>v>>v..>>....v...>>v>>>.vv.v.>>.>>.v.v..vv.....>..>>...vv.v>>>.v.>..vv..>>...>v......v.v>.vv.>>..>.>...>>>..v>>> +.v..>v>v..v>vv>...vv...vv.....>v>...v.vv>>v>vv>vv>>.>vv...v.v>.....>>......>v..v.v..>.v>v>>.>v....>...>..>...>....v.>v>..v.>>>v>.v..v>..v>. +>vv.v.vvv....v>...v>v......>>..>vv>.v.>.>.v.v......>>>.>..v>v....v.v..v>v>>v>v>...vv..v...>.vv.>>>v>......v.>.>.vv...v..v.>...>>.v.>..v.... +>.v.>..>..>>v>>.>..v.>>..>>>>v>.v...v.v.>......v>...vvv.>>vv>v....v.>>.v.>>.v....>v>....vv..v.v>.vvv>>.vv.vv...v.>>.v.v.>>>.>.>v>.>v.>v.... +v.vv>>>vv.....>.......v.v.vv.>.....>v.v....>..v.>>v>.>>..vvv..v>...>v>.>..>..>.vv.vv.v.>>>.vv>...v.>>v.>.>v....vv.v>>.v.vv.>.>.>.>.v.>>.>vv +>v.v.>v.>vvvv>.vv..v....v>.v>.>...>v.>.v.>vv>..>v...v..>vv>>.....>>vvv>..>.>.v>.>v>v>v.>.>...v.>>.>>.>>.>.>>...v...>.>......>....>.v..v.>.> +vvv>.vv....>.>.v....>v..v.>>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.....>..>vvvv...v..>.v.>v>>....v.....>.v>>.>>>v.....>..>v>...>.>v.v.......v.>...v>>...>v..v..>...vv.v>v.>v.v>.vv.v>vv...v....>vv...v +....v>>...>v>.vv.v....v..>.>.>..>v.vv.>..>...vvv.>vv.>v...v..>..v.....vv...vv.>vv...>.>v>.vv...>>>>v>>..v>.....v.>v...>v>>...>vv...vv.>..>. +>..>vv...>>..vv.>>v...>.>v.v>....v>v..>vvvv>>.>vv>v.vv>.vv.>>vv...>v>v>........vv>.vv>.>..>>>..>.>>v.....vvvv>>v.>>.vv>v>v>....>.>.v.vv>v.v +v......v>..>vv>>.>v..>>..>...vv.....>v>..v.>..v.v....v>vv..>>>..vv.>>>vv.>v.....vv.v>.>.>..>...v>.v..v.>.v>>>>.>v..vv>..vv...v.v>>.v.v.>..v +..>.........>...>.>..vv.v>.>>>.....v.v.v>.>.v....>...vv>v..v..v.v...v.>>vv.v>.>.>..v.>.v..>..v>.v.vv..>.v..v.>>v..v..>.>>.>....>....v>v.v>v +v>.v...v....v.vv....>.>..>>v...v>..vv.vv.v.>vvv.>>>.vv>..v.>>.v>v>.vv>>v>.v>v>>>.>...>v.vv...>v..>....v.....v...>...vvv.>>>>v.v.>..vv.>v>.. +.>...>vv.>v>v>vv.v....v>..>...v>>.v.>v..v.v>>v..v>>.v.....vv.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...vv>...>...>.>...v>vv.vvv.v.>.>vvvv.vv.vv..>....>>...>>.vv>.>..>v.v..>.v.>>.>>>>>v...v.>...v.vv>.>. +.>..vvv.vv..>v>v.v.v.v>.>..v>>.v..v>..>...>.vv>v.v>v.>>vvv>>..>.vvv.v..>.v>.>v...v.v.>.>v.>.v....v>.v>.v>v..>vvvv.v.....>..vv>v.>>..>.v.v>> +v>v.vv.>.>>>>>.v..v>.>.>...>>>..>v>>..>.>>..>>vv.>..v>v..v...>.....>v......>v.vv.>>.v>v>>..>.v.vv..vv.>..>....>....v>..v>v.v...>.>.v..v.>.. +.......v>>..>.v>.>.>....v..v.>>.>v>>.v>vvv.v.>..>v>v....v..v....vvv.v....v.....>>.v>>vvv.>vv.v>......>v...v..v>.....>vv..vv.>..>v.v.v..v.v. +v.v..v>.>.v..>v>>.v..v>.>..>...vvv...>.vv...>>......>vv.>v.v..v...v..>v>>vv>>..>>>...v>......v.v..v.v.>>v.>v.vv.>>..>....v>v..>>v>>v...>vv> +v..v>v>..v....>..>..vv.>..>..vv.>>.>..>.v...>.>...v...v>>>..>.>v.v.vv.v.>...v..>..>.......v>.vvvv...>..>>.vvv.>..>....v..>>>v.v>>>>.v...>.v +.>.>>>.>..v...vv..>.vv..vvv.>.vv..v>>v.>v>......v.v.v...>v>v>.....>>..>.>>v.v>.>.>vv>....>...v>.>.>>...>v.vvv..>.>>vvv.>>....v>....>>.>...v +v...>>>.v..>>.>>.>>>..v>>>..>..v.>.>v..v>v..vvv>.vv...v.>..>.>>...>>....vv....v...v.>.v>>v..v...v.>..v..>.v>.>....>>.>...vvv.>..>.v.>.vv... +...v>.....>...v...>vvvv..>.>vvv.>.>.>.v....>.v..>>v..>..v..v.>>vv>v.v....v...v.v>v..>..v.v>v.>v..>.v>>vvvv.v..v..>.>>...>>>v>.v.>v>.......v +>v.>vv.....vvv.>.v..>.>.v>.>...vv...v.vv.v..>>>v.vv.>...>>>.>v.>>.v.>.>v>vv.>..v>.v..>v..>.>..>.v>>..v>>>v..v..v>>>.v.>>>v.>.v........vv.v. +..>v>.>>>..vv>..>....>..v.>.>....vvv.>..>>v....>.>...v....>..vv>>>.>>v.vv.v..>>..v.vv.>.>.vv...v.v>..>......>...v>>.>..>v..>....>.....v.>v> +>.v>v>vvv.v.v>v....>v.>v>.v..vv.>..>v.>.>v..v..v.v......>.vv>v.>.......>vv.v>>>>.>..v>v.>v>>.>........v>...v...v>...>v.......v>.>v...v.v>.v +v>>.v..>vvv>.>.v..v..>v..>>..v>>>>>>vv>.v.>>v.v>v>.v..vvv.>.......v....v>.v.>vvv..v.>...v....>v>.v>.v>.>v...>vvv.....vv.>>>.>.>v>v>..v.v.v. +.v...v>>>v.>>vvv...v.v>>..v>vv..v..>v>.v>v..>>.v>.v>>...>..>vv>..vv>v.........v......>.>>v..v.vv>v...>.>.v>v..v...>..v.>>>..>v..>..>...>>.v +v..>>..vvvvvv.v.>>vv>v..>...>..>.v>...>>vvv>v>..>>.>.v.>v.>>.>>..v>.>v.>..v>>.>vv>.>.>vv.>..v>>..v.>>.>v..>>>>vv>>>..>.v.>..v..v.v>>..v>.>> +.....v>v...>vv>.v>>..v>.v..>>>v.>.....v..>.....>>vv.>.v.>vv>.v>..>>.>v>.v>>>v.v.>v.vv>>>..v...v.>.v.>>..>....v>..>.v>..vv..vv....vv.>v>>v.. +>....vv.>..>>.>>.......>.vv...>vv......>v.>vvv......v.vvv..>v>..v..v....>........>.v..vv.v..>..v.>v>.v>.>.>.>.v.v.v.vv...v.....>..>>....... +>.vv....v..>v.v.vvvv...>.vvv.vv..>..>v>>.v...>.>.vv.....v>..v...v>.>...v..>.>.>vv.>..vv..>.v....>..>>.>......v.>>vv...v...v..v.v.v.>.v>..v. +v..v>.>>.>>.>>vvv>.>>>vv..>v>>v>v.v..vv....v>>....>v>.>.vv.v.vv>.>>vvv.>>.>>......>...>..vv>v>.>v.v.vv.>>.>.>.vv..v..v.vv.v>.vvv.v>..>...v. +...>>v.v.v.>.>>...>vvv>..v..v.vvv...>.v>.>.>v..>.vv>..vvv>>.....v..>>.......>v......>v.>.v.vv.>...vv.vv....v.v..v..v>>vvv....>v.....>>v.v.. +..>..v>>.>v..>......v.>...v.v.v...>.>>vv>>.vv.>>>>>vv>..>vv..>...v.v>.>vvv>....>.>>....v.>>...v..v...vvvv>...v>>>>>vvv>vv......vv.......>.> +.>v.>>.>>..>.>v...v..>.>>..>....vv...>...>v..>..v>v>....>..v>>v.>.>>>.v.v..>.v..>v>.v.v>.v.>...>...>v>..v.>..>>v>.v..>.v.v..>..>.>>vvv>>.>v +v........v>>>.>..>....>.>.>>...>v..v.>v>...vvv>>v>.....vvv..v..v.>..v>.vvv.>.....>.v.>.>>.v..v.v>>>.>>...>.v.>.>vv.>v>.>>......v.vv.>.v..v> +v.>.v>>.>..v......v>v>...>.>>.>v..>>..>....>v.vv..>..v>vv.v.>v....>...>v>..v...>>v.v...>>.v>..>.>.>..>>.v.....v>.>v...v.v.>vv.>.....>v.v>.. +v.>v.>v.>>>v>.v>.>>...>.>vv.>v.......vv......>.>>.>..>vv.>....vvv....v>.>>.>.>v>.....v....v...>vvvvvv>.>.....>.v>v.vv.>.v>.>v>v>v>..>....>> +>vv..vv.v...>vv.v.vvv..vvv>..>....v>.vvvv..>.vv.>.vvv.>v>.>.v..>.........v>.v..vv>...>.>.>..vv...>.....v>v>..>.>..>...vv..vv..v>..>.>>>.>>> +.>>..v..>.>.>>v>>.>vvvv.v.v.>>v.>v....>..vv.......v>v..>.>..>>>vvvv>.v.v.v>v....v>..vv.v.v.v>>...v>.........>........v.vvv..vv.....>.v.>>>> +....>.>vv>>>>.......vv...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>.>>.>>v.>v..>.v>..v>.v..>.v....v.>.>...>v.v>.....>>v.>..v..>>.>vv.>.vv.vv.>...>..v..vv...>vv.v.....>.....vv>v.>>....v.>.v....>>.>>.v.> +..v>vv>v>>.v..>v.>>...>..>v....v>>.v..v...>...>.vv>.>.....v>>v.....v.>v.v.v>.>.v...>..vvvvv...vv....>...>.........>.v.v..v.v...vv>v.>.v.vv. +..v..v>.v>v..v...v..vvv.vv.>......>.>.........>>...v...>vv>..v..vv>...>.vv..........>>.>>>v>>.>>>.vv....>.>vv>..v.>.>.v.v..>>v>>vv>.v.>.... +v..>>.>..>>.v..>>v>..v..v.>.vv>.>vv.>.>.vv.>.>v.v>....v.v...>.>>v....v..>.v>vv...>v>.v...>v.>..vv.>v>>.vv>>>.v....>>v..>.>v>.>.>v>.vv.>.v.. +.>v.>>v>>v>v>.>.>v.>.>>..v>.v...v>>.>..>>..v>>>>.>v..>v>.....>..>..>.>>>.vvvv.v.>>....vv>..v>v>.>..>...v.v..>v...v...>...v.>.>.v.v.v..>.... +v>.v...vvvv..>v..v>.....>...vv...>v.>.....vv..v>.>....>v..v>.v.>>.v>.>vv.>...vv.......>...v...>.v....v..v..>vv>v.>..vvv...v>vv.v>v.v>..>.vv +v>.vv>.>..>.v>>.....v...v>..>>.>..v...>.>..>v..>>v>.vv.vvv..>...>>..>>>...>..>.>>>v....v.......v>.>>v.vv>.v>v.v>.....>>.v.>....>v>>.>....>v +v...>..vv>v>v.v>..>v.....>.....>..>>.>.....>vvvvv.v...>.v..>vv.v>v.>v....>vvv...>..v.v..v>.vv>>>v>v>.......vv.>..v>>.vv.>...v.vv..>v...>.v. +v..v>vv.>.>>>..>.v.>vvv...>.....v.>....>>..>.vv.v.v.>v..>>vvv.>>>...v.>>v>vv>v..>>..v.......>.>>....>>vv.v..>..v....>v....>.v>.v>.....vv... +.vv.>.>vv.vv....>v.v..>v...>>.>>.>.v....>vvv>.vv...>....>....>v.v>>.v.v.>.>...>....v>>..>.v>....v..>.>>vvv>v>.v.>.>>..v.>..>.v>...>..>vv..v +.>v>>....>vv>...>.vvv.>.>v>...v.>>vv>..v>.v.>vvv.v.>>.....>.>>>v>v>....v...v>v.vv.......vv.>.>.>......>...>>..>.v.vv...>.v>>..v..v....v...> +>>.>....v>...>v...v...v.>>.>v.v>vv>..>.>..>.....v.>>..>>.>>..v..>...v...vvv......v>.vvv.>>.v..vv..>v.v.......>.v...v..>>>>...>>.v..v>.v..vv +v..vv....v>....vvv......>>v..v>>v>...vv.vv>..v.v......v...>.vv....>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..>..v.v>..>v.v.v>vv>>v.v.>>.vv....>v>...>..v....>v..vvv>vvvv..>.v.>.v>>v>. +.vv.......v.....>.v...v>..vv..>v>.vv>>>..vvvvv>>.vvv.>vv.v.....>>v>.....>....>..>...v>>.>>.v>v.vv..>>>v.v>>....v>v.v..>v..>.>.>.>...v.>>.>. +..>....>>>>>.v.v.>.>>v.>....v.v.....v.>v>>v>.v.vvv...v..v>v.....v.....v..>v.>vv.>.>>v.>...v..>...v.>>>.......v.>v>>v.vv>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>vvvvv>..>v.vv...vv.v.>>.>>v..v.>>>v>v.>>>.. +>>vv>v..v.v>.>>v..>v.....>>..>v>...v..>.>vv.>.v.v.vv..vv.v.>.>.....>.>v>v..>>...>vv....vv....v.v>>v..v.>v.v>v>.v..>.>v>>v..v..vv.>v>.....>. +vv..>v..v>...>.>v...v..>..>>v.....v.vv..>.>>>v.vv.>vv...v.>..v>.>...>vv>>vv>>>...v..>v..>..v..>vvvvvvv...v>>..>>>.>.>>>v.>>v.v.>v.vvvv..>.> +>>>.>....v..v..>..>>.>vv.>.....>>>v.v.......v..v.>.>>.>.v...v>>v.>>..vv>..v..>.>...v..>..v.v...>.vv.>v..v>vvv..v>.>>vvv....>v>>vvv.vv.>.v.. +v>>.v>>vvv...v.....v...v...>...v..>..v>>>>v..>.v...v>>vv>..vv......>.>>v..vv...>.vv>>>.>>>v.>>>.v...>vv>.>>v>>>v>v.>v..v>>v.>.>.>.>.>>v..>. +....vv.v>>v>.vv.v...>>>....>>.v..v.v.>v>vv.v..v......vv>.>.>.......>vv...>v..vv.>.>....>v.>.....v.v.....v.v>.>..v>...>>v>..v>.v>.....>..>vv +>vvv.v>>>.v........v>...>>.>>v...>v>..>v.>v>.v.>>>v>>>..vv...vvv.v>v.>..>v.v..vv>.vv..>...>.>>>v.v...>....>>.>.>v.vv>v>v.v.v>...v..>.>.v.>. +.>vv..>>v.>v.>>v.>v..>v......v>v>v..v.>>>>>.>.....>..>..>>v...>....v>...vv..v>>.....v..>...vv.v.>>v.vvv...>..>.....>>v.>>...v...vv..>vv>.v. +..>v.>>.>>>vv....>>>v>.>.vv.v.v.vvv..v.vv>>...v.v>.>..>.>..v>v>>....>.......>..v>.>>>..>>>........>>..>>>....v...>.vv>>>>.>...vv....vv..v.. +.v....>..v.>>v.>>vvv......>>v>>...>..>.vv>v>...vv.>>.vvv>.>...>.>>>.>..>>.>>v..>..>vvv.>v>>vv.....v..>>..v.>..>..>..v..>.>.>>.vvvv..>.>.v>v +v.v.>>>.vv>>..>.>.>>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.>.>vv>v.>.vv>vv.>>..>v.v>..>..>....v>>>.....>>..>..>.vv.....v.v>.....>.>>v...>v>v..>..>>...v>...>>.>>...>..v...v.v..>vvv. +>v>>v..v.>>v>.>>...>.vv>.>.>v.v...v>....vv..>.v..>>v>..>..>>>>..>.>v...v..>.v.....>>......v.>.v.....>.>>v.v>>.>vvvv.>v.>vv>vv>v>...v..vv>.. +.v>..>.v.v...>vv>..>.v..>..>>.vvv...v.>.v.>>v>...>...>.>v>..v.vv..>>.vv.v>>v>...>..v.>>...>...vvv.>.v..v.v>>..vv.v...>...v..vv>>..>.v...v.. +v>>>.v.vv...vv>v..v...v.>>v.v..vv......>>..vv.vv>v.vv.>..v>>vv>.>.v.>.vv..v>>v.>.vvv..>>.v>v>.>.v.>..vv.>...vv.vv..vv.>.>.v...vv.>v.v..>.vv +>...v>>v.vv>.>..>.>>>.vv>vv.v.v>....v>v.v.>.>....>v.v>v.>....vv.v.>>vv...>.>>.>..v..v...v>>v..>>.>...v>>>>...>v..........vv>v.>.v.....>..>. +.>>v.>.vvvv>>>..v..v>v....v...>...v.v....>.>...v>.>.>.v>vv>v>>.v..v.>vv>..>>..vv>>.>>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>..v..v.v...v>v.>v.>...v..vv>...>>>>..v.>v...vv.vvv.v. +v.v.v...vv.v.>v.>.>...v...>vv....vv.>...>v>>.>v>..>vv.v.>.>.v.>.>v>>>..>vv......>...vv...v>....>>..v>>..v>..>v......v.v>....v..>.>vv.>vv.>. +.>>>..>>.v..>.....>v.>vv.....v.v.>vvv>>v.v....v>....>vv..>.v.v..>.>v>v>>..vv.>...>>.>.>>v>..>.>>..vv>......vv.>>..v>v>..v.v.v>.>..>>v..>.v. +>..>..v.v........v.>.>.>..vvv..>>..>v.v>>>.>.>>>v>>v.>..>v......>.>.v.>..vv...v....v.>...v.vv....>v.v..vv......>.v..>vvv.>v.......>..v>>>>> +..>.>v....v.>..v.>v>..>..>.>>v>.>..>v...v...>.>.v..vvvv..>vvv>..v..>v>...v.>.>.v.v...>>>..>vv.....v.vvv.v.>.v.>.>v>.v.>.v.v..>.>..>>.>..v>. +>>..v>..>..v..>...>..>v>vv>v.v>...v.v>>>...v>.v>.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.>>.>>vv.vv.v>v>...>v.v..vv>vv...>.v>.v>v.>>v... +.>v.v.v.>v.vv.....>..>.>v>vv....v>.v>.v>.>.>.>>>.>...vvv.v.v.v>v.>.vv...>.vv.>.>v.v......v.vvv..>>>.............v.>>......vv>>>.v>..>v>..v. +.>.>>..>>.....>v>v..v..>>...>v..vv...>vv..>v.>....>.>...>..vv>>.>v.v>vv..vvvv.>>.>>v.v>..v>v>>>v>>.>>..>.>..vvvvvv.v.......vv.v.>..>.>.>.v. +>v..>>....v.>....vv.>v>>......>v..>...v>.>.>..>>..>..>>.v.>.v.>>.>.v>v.v>.>>.>.......>v>vv..>.vv.>>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.vvv>...>...>.v..>v>.v.v>v.vv..v>>.>..> +>.v..v..>.>.v...>>>>..>>...vv......>.>..>..>.>.v...>.>.v>.........v>v...v>..v.>..>v>v.>.vv.v.vv.>.v..>.v.>>......>v..>>.>..v..v.v...>v..v.. +.....v.>>...>....v..vvv...>..>..>.v.v..>v.>>v.>>>..vv>.v>vv...>.>...>>.>>.v..v...>vv>.....>>..v....>.v>>>vv>......>>.v.>..>v...>...>vv..vv. +..>..vvv.v.>..>v.>.>.>>.v>>>.>>>.>..v.vv...vv.>..vv>.>..>..>.v..>v..>>..>>v.>>.v.>vvv...v.>.>...>v....>vvvv>v.>v....v..>.>...>..v>.v.>...>> +..>.>v>.....>>>vv>v>..>>..v.>>.v>v..v.v.>v.v.v...>.vv.>.>.....>.vv....>>v.>v..>v.vvv>>.v.v..>....>.v....>...>.>.....>v>....>>.....>>vvvv>>> +.v..>..>>.v.>....v....>.v..v>.v.v.>.>v......>v......v.......>...>>v....v>>.v.v.>>v.v..vvv.>....vv.v........v.>>.v>>.v..v>.>>.vv>..v.v.vvvv. +>.>...v.>v..vvv.>...>....v>v..>v>.v...v>...v..>..>.v>>.>>....>...v.>v>>.v......>...>..v.v>....>.v.v..>v>>..v>>.>vv>..v>.vv>v.>..v....>>v..v +v.v.v.>.....>.>vv..>>.>.v.v.........>..>v.v>>.>..v...>>.>.>v.v>>>vv.v..vv>..>vv......v....vvv>....>v...>>v.>.>...v>.>.>.....>.>.>.v.vv>>.vv +>...>>vvv.....>>.>..vv>v>vvv>........v>v>>v..v..v..>vv.>.v.v.>v....v>.>..v>.>..>vv.v.>.v>..>v.....vv.v.v.....v..>v..>.>.v>>vv....>.>..v>... +.....>v>.v...v....>v.>.vv..>.>v.v>.>v.v>.vv..>.v>..>vv...>..>.>>>>>v>..v>vv>v.v>.vvv.>v..>>.v>v.v>.>.>.v.vv.v>.>>v..v>v.v....vv..v>.>.v.>.> +>.>.>>>.>>...>>vv..v>v..vvv.vv.v.v.v..v...v...v.>.>>v>.>v>.....>.>v...v..v.>....v>>.v>.>>....>v>>v..>..>v>.v...>...>>.>vv..>.v>v..>v..>v..v +.v...v.vvv..vv.>...v>.....vv.>.........v>v..>.>.>>...>>.vv...>...>vv>.vv.>......>>v..>>.>.>v....v.v>>..vv......vv>>>v>.>....>v>v...>v>.>... +.>>..v>vv>.>.vv.>v.vv..v....vvvvv.>>v>vv...>.v>v>v..v..v.v.>.>>vv.....v>...>>v..v....vv..>v..vv..>>>..v..v.>.v....>v>.v.>....vv..v...vv..vv +vv>..v>.>.v>.v>...>>...v>.>.>vv..>.>.v..>v>.>.>>...>....v>v..>v.vv.>..>....>vv.v....vvv>...vv.>.>.>.....v.>.vv........v...v..v....>v>>...v. diff --git a/day25/src/main.rs b/day25/src/main.rs new file mode 100644 index 0000000..f24580c --- /dev/null +++ b/day25/src/main.rs @@ -0,0 +1,76 @@ +use std::{fs, env, collections::HashSet}; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +enum Direction { + East, + South, + Empty +} + +fn read_input(path: &str) -> String { + return fs::read_to_string(path).expect("Cannot read file."); +} + +fn parse_input(s: &str) -> Vec> { + let mut f: Vec> = vec![]; + for (r, l) in s.lines().enumerate() { + f.push(vec![]); + for c in l.chars() { + f[r].push(match c { + '>' => { Direction::East } + 'v' => { Direction::South } + _ => { Direction::Empty } + }); + } + } + return f; +} + +fn get_next(i: usize, m: usize) -> usize { + if i == m - 1 { return 0; } + return i + 1; +} + +fn apply_step(v: &mut Vec>) -> usize { + let mut f = HashSet::new(); + let mut o = v.clone(); + for r in 0..v.len() { + for c in 0..v[r].len() { + let n = get_next(c, v[r].len()); + if v[r][c] != Direction::East { continue; } + if v[r][n] != Direction::Empty { continue; } + if o[r][n] != Direction::Empty { continue; } + if f.contains(&(r, c)) { continue; } + f.insert((r, n)); + v[r][n] = Direction::East; + v[r][c] = Direction::Empty; + } + } + o = v.clone(); + for r in 0..v.len() { + let n = get_next(r, v.len()); + for c in 0..v[r].len() { + if v[r][c] != Direction::South { continue; } + if v[n][c] != Direction::Empty { continue; } + if o[n][c] != Direction::Empty { continue; } + if f.contains(&(r, c)) { continue; } + f.insert((n, c)); + v[n][c] = Direction::South; + v[r][c] = Direction::Empty; + } + } + return f.len(); +} + +fn main() { + let args: Vec = env::args().collect(); + for arg in args.iter().skip(1) { + let input = read_input(&arg); + let mut vec_in = parse_input(&input); + let mut i = 1; + while apply_step(&mut vec_in) != 0 { i += 1; } + println!("[{}]", &arg); + println!("\t[Part 1] => Answer is '{}'.", i); + } +} +