Compare commits

...

2 Commits

Author SHA1 Message Date
9ef7abed94 Day 11 2025-12-12 00:17:07 +00:00
8bf230ff8f Day 10 2025-12-11 23:23:48 +00:00
10 changed files with 2218 additions and 12 deletions

124
Cargo.lock generated
View File

@@ -13,4 +13,128 @@ name = "aoc"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"rand",
]
[[package]]
name = "cfg-if"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "getrandom"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "libc"
version = "0.2.178"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]]
name = "proc-macro2"
version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom",
]
[[package]]
name = "syn"
version = "2.0.111"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "unicode-ident"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "zerocopy"
version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
dependencies = [
"proc-macro2",
"quote",
"syn",
] ]

View File

@@ -39,5 +39,15 @@ path = "src/day8/main.rs"
name = "day9" name = "day9"
path = "src/day9/main.rs" path = "src/day9/main.rs"
[[bin]]
name = "day10"
path = "src/day10/main.rs"
[[bin]]
name = "day11"
path = "src/day11/main.rs"
[dependencies] [dependencies]
anyhow = "1.0.100" anyhow = "1.0.100"
rand = "0.8"

189
src/day10/act.txt Normal file
View File

@@ -0,0 +1,189 @@
[.##.##] (4,5) (0,5) (2,3) (1,3,5) (0,3,5) (0,2,3,5) (0,1,4) (0,2,4,5) {198,181,22,50,173,65}
[#...##..#] (0,1,3,6,7) (0,1,4,6,7) (0,1,5,6,7,8) (0,1,3,5,7,8) (2,5) (1,4,8) (1,4,5,7,8) (3,5) (1,3,4,8) (0,2,3,4,5,7,8) (0,1,4,5,6,7,8) {38,59,4,35,41,34,31,46,43}
[.#.#.###.] (0,3,4,8) (2,4) (0,1,2,5,8) (3,4,5,6,7,8) (0,1,2,3,6,7) (1,3,5,6,7) (0,1,4,8) (0,1,3,4,7) (0,2,3) {64,47,42,52,33,35,16,20,43}
[....#] (2) (0,1,3,4) (1) (2,3,4) (1,2,3) {16,26,13,28,24}
[#..##] (3,4) (1,2,4) (0) (1,3,4) (2,3) {0,20,38,33,31}
[####.#.] (1,2,3,4,5) (0,1,2,3,4,5) (4,5) (4,5,6) (0,2,6) (0,2) (1,3,6) (0,1,2,3,5) (0,2,5) {227,70,247,70,53,75,201}
[#...###.] (1,4,7) (0,1,3,4,5,7) (0,5,6) (1,2,4,6,7) (2,3,4,5,6) (3,5) {18,27,19,35,41,35,19,27}
[#.###] (3,4) (0,1,2,4) (0,3,4) (0,2,3) (0) (1,4) (1,3) {46,23,25,58,54}
[.#.#] (0,1,2) (1,3) {9,18,9,9}
[##..##.#.] (0,1,2,3,4,7,8) (8) (0,4) (0,1,3,5,6,8) (1,3,4,5,6,7,8) (1,6) (0,2,5,7) (0,2,4) (3,4,7) (0,1,2,4,5,8) (1,3,7,8) {47,58,37,38,44,46,28,40,54}
[...#] (0,1,2) (0,3) (1,3) (3) (2,3) {12,22,9,40}
[.....#.#..] (0,1,2,3,4,6,8) (0,2,3,6,8,9) (0,2) (1,3,4,5) (0,1,2,3,4,5,6,8,9) (3) (1,3,4,6,7,8,9) (0,3,4,7,8,9) (1,5,6) (1,2,4,5,7,8,9) (2,3,4,5,7,8) (3,4,5,8) {61,66,74,87,77,53,62,59,93,68}
[.#..#] (1) (1,2) (0,1,2,3) (0,1,4) (1,3) (1,3,4) {18,69,35,36,13}
[.....#] (0,1,2,3,4,5) (1,2,3,4,5) (3,5) (0,1,2,4,5) {114,120,120,20,120,130}
[#.#.##.] (1,2,4,5) (1,5) (0,1) (3,4,5,6) (0,1,3,4,6) (1,2,3,4,5,6) (0,2,3,5) (0,1,2,5,6) {37,39,16,33,26,30,23}
[.####.####] (0,3) (2,4,6,8,9) (4,5) (0,2,3,4,5,6,9) (0,1,4,6,7,8) (0,1,2,3,5,6,7,8,9) (0,1,2,4,5,6,8,9) (1,6,7,8) (5) (8) (4,5,6,7,8) (5,7,8,9) (1,3,4,5,8) {56,62,21,50,55,57,57,49,257,21}
[....#.] (1,3,4,5) (0,1,2) (2,3,4,5) (0,1,2,4) {17,27,27,20,28,20}
[..##] (0,3) (0,2) (2,3) (1,2) {17,9,31,27}
[..###] (2,3) (0,1,4) (0,1,3) (1,3,4) (1,2,3,4) {7,12,18,30,5}
[#.##] (1,3) (0,2,3) {6,10,6,16}
[.####] (1,2,3,4) (0,2,4) (0,1,3) {18,20,10,20,10}
[####.] (0,1,2,3) (1,2,3) (1,2,4) {1,172,172,7,165}
[#.....####] (2,4,5,6,7,8) (0,2,3,4,6) (0,1,2,3,6,8,9) (0,1,2,3,4,6,8,9) (0,1,2,4,8,9) (0,1,3,4,5) (3,6,7) (0,2,6,7) (0,4) (0,2,3,4,5,6,7,9) {239,210,239,72,227,26,84,34,214,202}
[#.#.] (0,2,3) (1) (0,3) (0) (1,2) {132,14,126,116}
[###.##.#.] (1,3,6,8) (1,2,3,4,7,8) (4,7) (0,1,2,3,5,6,7) (0,2,4,6,8) (0,1,2,3,7,8) (3,5) (4,5,6) (0,1,2,3,8) (2,3,4,5,6,7,8) {17,116,121,127,148,31,33,132,122}
[.#..] (0,2) (0,1,3) (0) (2,3) (0,3) {34,12,30,33}
[...#.] (0,1) (3) (0,2,4) (0,2,3,4) {217,10,207,210,207}
[....#..##] (0,4) (0,2,4,8) (0,1,3,4,6,7,8) (0,1,3,6,7) (1,2,3,5,8) (1,2,3,4,5,7,8) (1,3,4,5,6,7,8) (2,3,8) (1,2,3,4,6,7,8) (0,1,2,3,4,8) (0,1,2,3,5) {63,89,91,105,88,49,35,55,98}
[#.###...] (0,4) (0,2,3,4,6) (1,2,4,5,6) (0,2,3,4) (5,6) (1,7) (7) (3,4,6) {12,36,31,22,41,32,45,26}
[.##..#.] (0,4,5,6) (0,1,2,3,4,6) (1,4) (0,2,3,4,5) (5) (0,2,4,5) {142,13,27,15,143,140,127}
[########.] (0,1,3,4,5,6) (3,5,7) (3,4,5,6,8) (1,5,7) (0,5,8) (0,1,3,4,6,7) (2) (2,3,4,6,7,8) {34,32,15,50,46,54,46,29,34}
[..#.#.#.] (0,3,4,5,7) (0,1,2,3,4,6,7) (0,2,3,7) (0,1,3,4) (0,4) (0,1,2,4) (4,6) (0,1,2,3,4,6) (2,3,4,6) (0,1,2,4,5,6,7) {77,56,57,60,187,25,156,44}
[.#..#] (2,3,4) (1,2) (2,3) (4) (1,3,4) (3,4) (0,2) {5,19,22,50,54}
[..#..] (0,1,2,4) (1,2) (0,3) (1,2,4) (1,2,3) (1,3,4) {36,67,50,40,41}
[#.#.#.] (0,2,4,5) (0,4) (0,1,4) (1,3) (0,2,4) (0,5) (2,4) {56,9,26,4,41,24}
[.##.##..] (7) (0,1,2,4) (0,2,3,7) (0,1,2,3,5) (2,7) (1,2,3,5,6,7) (2,3,4,5,6) (0,2,4,6) (0,3,6,7) {69,33,75,56,32,33,46,50}
[.###.] (0,2,4) (0,1,2) (1,2,3) (2,3,4) {18,23,35,17,12}
[..##..#] (0,5) (0,3,4) (0,1,2) (0,1,4,5,6) (1,6) {53,48,19,13,28,21,29}
[##.#] (1) (0,3) (2) {164,20,14,164}
[###.] (0,1,2) (1,2,3) {11,186,186,175}
[##....#] (0,1,2,4) (0,1,3,5) (0,1,2,6) (0,1,3,4) (0,3,6) (0,4,5) (0,1,2,4,5) {188,168,153,25,44,33,137}
[.#####.#] (0,2,7) (0,1,2,3,5,7) (0,1,3,5,6) (0,1,2,3,5,6,7) (0,3,4,5,7) (0,1,5) (1,2,4,5,6,7) (1,3,4,6,7) {56,76,55,44,30,71,47,66}
[#.#...##..] (0,1,2,4,5,6,8,9) (0,2,3,4,5,6,8,9) (0,1,5,8) (0,3,6,7,8,9) (0,6,7,9) (5,6) (0,2,3,7,9) (1,2,3,4,5,9) (2,4,8) {77,19,62,52,46,43,67,51,62,78}
[..#.] (0,1) (0,3) (2) {24,17,11,7}
[##.#] (0,2) (1,2) (0,3) (2) (1,3) (0,1) {42,36,37,19}
[.#####..##] (0,7,8) (0,1,2,3,5,7,8,9) (1,6) (2,6,8) (4,5) (1,3,4,6) (0,1,2,4,7,8,9) (4,5,6,8) (0,9) (6,7,8) (1,3,5) {23,38,23,21,42,23,52,21,41,21}
[#...] (0,1) (0,2,3) (0,3) (2,3) (1) (1,2) {221,21,203,217}
[.#.###] (0,1,2,4,5) (0,2,3,5) (0,1,4,5) (1,2,3,4,5) {154,32,156,152,32,169}
[..#.##] (2,3,4,5) (0,1,4) (0,1,2,3,5) (4) (3,5) (2,3) (0,1,2,4,5) {20,20,25,25,30,29}
[.#####.#.] (0,2,3,4,6,8) (0,1,3,4,5,6) (0,1,2,4,5,7) (2,5) (1,2,3,4,7) (0,1,2,4,5,8) (0,1,2,3,5,6,7) (0,2,3,4,7) (0,6,8) (1,8) {52,47,57,27,31,43,34,30,41}
[##.#.] (1,4) (0,1,3) (3) (0,4) (0,3,4) (2,4) {27,29,13,27,39}
[#..###....] (0,3,4,5,6,7,9) (0,3,4,5,6,7,8,9) (0,3,6,8,9) (0,1,5,6,7,9) (0,2,3,6,7,8,9) (4,6) (0,1,3,4,5,8,9) (0,8) {90,30,7,61,49,51,80,45,69,78}
[##..###] (0,1,3,4) (1,2,5,6) (2,3,5,6) (1,5) (1,3,4,5) (0,4) (2) {31,51,35,36,34,48,26}
[.###.####.] (1,2,3,4,5,7) (0,1,2,4,6,7,9) (1,2,3,4,5,6,8,9) (1,2,3,6,7,9) (1,3,5,6,8) (5,6) (0,2,5,6,7,9) (0,5,7,8) (1,2,3,4,7,8,9) {27,74,89,70,52,70,71,82,39,72}
[###.....#.] (6,8) (3,4,5,7,9) (1,2,7) (0,1,2,4,7,8,9) (1,4,7,9) (0,2) (2,4,5,9) (1,3,9) (5,8) (0,2,4,5,7,9) (1,2,3,4,5,7,9) (2,4,5,7,9) (3,4,7,8,9) {28,34,37,37,74,45,9,72,55,77}
[.###.] (1,4) (0,1,3) (1,2,3) {3,11,2,5,6}
[##....#.] (2,3,4,6) (1,2,5,7) (1,4,7) (0,2,3,4,5,7) (1,2,3,5,6) (2,3,4,5,6,7) (0,2,3,5,6) (0,2) (2,6,7) (1,4,6,7) {27,177,232,72,72,184,90,203}
[###.###..] (3,4,7) (0,1,2,3,4,5,8) (4,6) (0,3,4,5,7,8) (0,1,2,3,5,6,7) (0,1,2,4,6,7,8) (0,8) (1,2,7) {261,233,233,245,246,234,41,70,241}
[#..#..#] (0,1,2,5,6) (2,3,4) (0,1,2,3,5,6) (1,2,3,5) (0,1,2,3,4) {159,162,179,178,166,13,10}
[...#.#...] (0,3,4,5) (1,5,7,8) (4,6) (0,2,3,4,6,7,8) (2,4,8) (0,1,2,3,4,5,7,8) (3,5) {29,8,43,29,61,14,28,24,44}
[##..###.#] (0,1,2,4,5,6,8) (3,4,5,6,7) (0,3,6,8) (5,6) (2,3) (0,2,3,4,5,6) (0,1,2,3,4,5,6,8) (0,1,2,3,5,7) (2,8) (0,2,3,4,5,6,7,8) {61,34,222,204,64,74,71,25,53}
[##.#] (0,1,3) (0,2) {178,168,10,168}
[#..##] (0,2,4) (0,3) (0,1,3,4) (0,1,3) (0,1,2,3) {27,22,6,23,23}
[###.#.] (1,2,4) (2,3,4) (3,4) (0,3) (0,2,5) (1,2) {23,11,45,31,26,18}
[..##.###..] (4,5,7) (0,1,2,3,4,6,7,8,9) (0,1,2,3,4,5) (2,3,5,6,7) (1,2,3,8,9) (0,1,2,3,4,5,8,9) (0,5,6) (0,1,2,3,4,5,7,8) {21,38,42,42,35,39,4,21,21,18}
[.##.] (0,1) (0,3) (0,2) (1,2) {42,4,21,19}
[...###.] (1,2,3,5) (1,3,4,6) (0,1,2,5,6) (1,2,3,5,6) (0,1,6) (2,4) (1,2,5) (3,4,5) {23,47,28,30,11,38,34}
[#...#] (2,3,4) (1,2,4) (0,1,3) (0) (2,3) {3,5,16,11,9}
[.#.#..#] (0,1,4) (1,2,3,6) (4) (1,2,3,4,5) (0,2,3,5) (3,4,5) (2,4,5,6) (2,4) {23,38,67,37,80,43,28}
[.##.#] (0,1,2) (0,2) (0,2,3,4) (2) (2,4) {29,13,47,0,12}
[#.#..#.] (3,4,5,6) (4,6) (0,1,2,4,5,6) (0,1,2,3,5) (1,3,4,5,6) {14,26,14,28,30,28,30}
[#...#...] (0,1,2,3,4,5,6) (0,1,4,5,6,7) (0,1,2,3,6,7) (0,3,4,5,6,7) (2,5) (0,2,3,5,7) (0,3,4,5,6) (5,7) (1,7) {85,41,45,72,58,99,68,84}
[.#..##..##] (2,3,5,6,7,8,9) (2,3,5,7,9) (2,3,4,5,8) (0,1,2,3,4,5,6,7) (0,5,7,8) (2,3,4,5,7) (1,4,6,9) (6,8) {21,5,51,51,19,69,22,56,48,36}
[#.##.##.#] (3,8) (0,3,4,5,6,7,8) (1,4,8) (0,2,4,5,6,7,8) (0,1,2,3,5,6,7,8) (0,1,2,4,5,6,8) (0,1,3,4,5,6) (0,1,2,3,4,7,8) {258,240,240,50,246,245,245,57,254}
[.#.##...] (0,3,4,5,6,7) (3,6) (1,5,7) (0,2,3,5) (3,4,5,7) (0,2,4,7) {18,8,12,26,22,22,18,30}
[####..##..] (0,2,3,5,7,8,9) (1,3,4,7,8) (1,2,3,6,7,8,9) (1,7) (0,3,4,5,8,9) (2,3,4,5,6,7,8,9) (0,2,3,5,6,7,8,9) (2,5,8) (1,5,9) {38,43,72,83,48,90,40,65,101,89}
[.#.#.#] (0,1,4,5) (3,4,5) (0,1,2,4,5) (1,2,3,5) (1,2,3,4) (1,2,3,4,5) {20,54,49,48,62,59}
[#.##] (1,2) (0,1,3) (0,2,3) {23,28,35,23}
[#.##.#..##] (4,5,7) (0,2,3,4,7) (1,2,3,4,5,6,8) (1,2,3,5,6,8,9) (2,7) (0,1,5) (1) (1,2,5,6,7,8) (1,4,5,7,8,9) (0,3,6,7,9) (0,1,4,5,8) (0,4,6,9) {49,72,49,37,89,72,50,67,56,46}
[...#.] (1,2,3,4) (2,3) (0,2,3,4) (1,3,4) {20,25,177,184,45}
[#...##] (0,2,4,5) (0,4,5) (0,1,2,4) (4,5) (0,1,3,5) (0,1) (3,4,5) (2,4) {48,28,10,28,40,57}
[##.#...##.] (0,4,8) (0,1,4,6) (3,5,7) (1,5,8,9) (4,5,8) (1,2,3,5,7,8,9) (2,5) (1,3,9) (0,1,2,8) (0,2,6,7) (2,3,4,5) {215,41,227,39,64,85,195,207,68,30}
[.##.##] (0,1,3,4,5) (0,1,4,5) (0,2,3) (0,1,2,3,4) {25,20,19,24,20,6}
[##...##.] (1,3,4,5,6,7) (0,1,2,3,4,5,6,7) (1,2,4,5,7) (0,1,2,6) (1,2,3,6) (1,2,3,4,7) {8,50,33,30,43,41,30,43}
[##..] (0,2) (0,1) (0,3) (3) (1,3) {11,20,4,30}
[...#] (0,1,2) (0,2) (0,2,3) {32,10,32,12}
[#####.] (0,2,5) (3) (1,2,3,4) (0,1,2,3,4) (0,3,4,5) {13,167,170,186,168,4}
[###..#.#] (4,7) (0,1,7) (1,3,4,5,6,7) (2,4) (0,3,4,5,6) (1,2,4,7) (2,5,7) (0,1,2,7) (2,4,6) {24,128,164,20,181,33,39,160}
[....#..##] (2,4,6) (0,1,6,7,8) (0,2,4,5,7,8) (1,2,3,4,5,6,8) (2,5,6,7,8) (2,3,4,5,6,8) (1,3,4,5,6,7,8) {14,24,61,32,47,61,54,34,63}
[.####.#.] (0,1,2,4,5,6) (1,2,4,5) (0,2,3,6) (1,2,3,5,6,7) (0,2,6,7) (1,6,7) (2,3,5) (1,4,5) (1,2,3,4,6) {40,140,66,30,28,42,157,130}
[###..##.##] (3,4,6,8,9) (0,5) (0,1,3,6,7,8,9) (4,8,9) (1,2,3,4,5,7,9) (1,2,3,4,6,7,8,9) (0,3,5,6) (4,6,7,9) (1,2,3,4,5,6,7,8) (0,1,2,5,6) (1,3,5) {6,33,21,42,42,26,30,30,32,39}
[###.###.] (5) (1,4) (3,5) (0,4,5,7) (0,1,2,4,5,7) (1,5,6) (0,4,5,6,7) (0,1,2,4) {27,31,9,5,45,46,12,19}
[###..#.###] (0,2,6,9) (1,4,5) (0,5) (0,1,4,6,7,8,9) (2,3,4,6,8,9) (0,5,7,9) (0,3) (1,2,4,7,8,9) (3,8) (3,5,8,9) {42,38,33,19,43,12,37,40,55,57}
[..##...##.] (5,7) (0,4,6,7) (0,6) (1,2,4,7,9) (0,3,4,6,7,8,9) (0,2,3,5,6,8) (0,1,2) (1,3,5,8,9) (0,1,2,3,5,9) (1,2,4,5,6,7,9) (0,2,3,4,7,8,9) {169,64,189,161,44,178,146,60,149,62}
[###...#.#.] (0,1,2,3,4,7,8) (0,1,3,9) (1,2,5,6,8,9) (0,1,4,5,7,9) (1,2,7,8) (5,6) (3,6,7,8,9) (5,6,8) (2,3,6,7,8) {32,50,39,49,13,45,62,48,62,50}
[##.##] (1,2,4) (2,3,4) (3) (0,1,4) {2,21,39,172,41}
[.####.###.] (1,3,8,9) (0,2,3,4,7,9) (1,3) (2,3,4,5,7) (0,5,6,8) (0,1,4,8,9) (0,3,4,8) (1,2,4,5,6,7) (1,2,3,4,6,7,8,9) {55,56,38,56,69,31,32,38,67,54}
[..##..#.] (0,1,3,4,5,6,7) (1,2,4,5,6,7) (3) (0,3,5,6) (0,1,2,3,4,5,7) (0,4,5) {39,36,30,46,43,50,24,36}
[####..#.#] (1,3,4,7,8) (1,2,4,7,8) (0,2,4,5,7) (2,3,5,7,8) (6,8) (0,1,2,4,5,7,8) (0,2,4,5,6) (0,1,3,4,5,7) (0,4,7) (0,1,2,3,4,6,8) {46,41,63,31,72,54,218,60,246}
[....#.#.] (0,1,2,4,6,7) (1,2,4,5,7) (0,1,3,4,5,7) (2,5,7) (0,1,2,4,5,6,7) (0,4,5) {57,61,60,20,62,64,36,80}
[#..###] (0,1,2,5) (1,5) (0,1,2,3,4) (1,2,3,4) (0,5) (0,2,3,5) {51,54,37,18,17,53}
[.#.#.#..] (0,2,3,4,5,7) (0,2,4,5,7) (0,1,5,7) (0,1,2,3,5,6) (1,4,7) (5,6) (3,4,5,7) {43,16,37,33,40,73,28,46}
[.#..] (0,1,3) (0,2,3) (1) {21,20,11,21}
[.....#.###] (0,1,2,4,6,7,9) (0,5) (2,4,5,6,8,9) (2,9) (1,4,5,6,7,8,9) (3,4) (0,3,4,6,7,8,9) (0,1,3,4,5,6,7,8) (0,1,3,9) (2,4,5,6,7,9) {43,40,47,26,64,44,57,47,35,82}
[...#.#.#.] (1,2,3,4,7) (1,4,6,7) (0,1,2,5,6,8) (0,1,2,3,7,8) (0,1,2,3,4,6,8) (1,3,4,5,6) (0,1,3,8) (7,8) (3,5,7) (2,3,4,5,6,7,8) {34,61,47,70,40,42,34,58,45}
[##.#..#] (1,2,3,6) (2,5) (0,5) (0,1,3,4,5) (0,1,3,6) (1,4,5,6) {8,143,11,7,136,148,143}
[......###] (0,1,2,3,4,8) (2,3,5,6,7,8) (0,1,3,4,6,7,8) (1,3,4,5,6,7,8) (4,5,7) (0,1,3,4,7,8) (2,4,7) (0,1,4,6,7,8) {46,51,23,43,79,21,34,74,53}
[######] (0,4,5) (0,1,2,3,5) (4) (0,1) (0,2,3) (1,3,4,5) (2,4,5) {31,15,24,18,30,22}
[#...#] (1,4) (2,3,4) (0,2,3) {17,10,29,29,22}
[##.#.#...] (2,3,4,8) (1,2,3,4,5,7,8) (0,3,4,5,6,8) (1,2,3,5,6,7) (1,4,5) (0,1,4,5,6,7,8) (0,1,2,3,6,7,8) (3,5,6) (0,5,6,7) (1,3,4,6,7,8) (0,1,2,3,5,7) {23,75,53,85,70,78,51,62,54}
[.##.###] (2,3,6) (1,2,3,5) (2,3) (0,4,5,6) (1,2) (0,3,4,5,6) (1,3,4,5) {13,23,19,38,28,32,23}
[.####.#] (3) (1,5,6) (0,1,2,3,6) (0,1,4,5,6) (1,4,5) {28,40,19,20,19,21,30}
[.#.#.#] (0,2,4) (0,1,2,5) (4) (0,2,3,5) (0,1,2,3) (1,2,4) (0,1,4,5) (1) {44,44,53,20,186,19}
[###..] (0,3,4) (0,1,4) (0,1,2) (1,3,4) (2) {35,27,30,28,28}
[#.###.###.] (1,2,3,4,5,6,7,9) (0,3,4,6,8) (2,4,7,9) (0,2,5,9) (0,3,7,8) (1,2,3,4,5,6,8,9) (1,8) (0,2,3,5,6,7,8,9) (1,3) (0,1,3,6,7) (0,5,7,8,9) (1,2,3,5,7,8) (1,2,3,4,5,6,8) {46,62,75,70,45,86,54,54,78,75}
[#...##.###] (2,3,5,7) (0,2,3,4,5,6,8,9) (2,3,6,9) (1,5) (2,5,8) (0,1,3,4,5,7,8) (0,1,2,4,6,7,8,9) (0,3,4,5,7,8,9) (0,5,6) (3,4,5,6,7,8,9) (0,1,4,5,6,8,9) (0,1,2,4,5,6,9) (0,2,3,4,5,6) {94,33,68,71,79,111,84,36,63,79}
[###.###..] (1,2,3,6,7,8) (0,2,3,4,5,7,8) (2,6,7) (5,7) (4,6,7) (2,3,4) (1,2,3,4,5,6,7) (0,4,8) {13,4,26,15,31,6,20,22,13}
[#...#] (2,3) (0,1,2,4) (0,4) (0,2,4) (1,2) {24,30,46,14,24}
[..#..#.##.] (1,8) (1,6,7,9) (0,3,8) (0,1,2,4,5,8) (0,4,6,9) (1,2,3,5,6,7,8,9) (0,1,2,3,5,6,9) (4,5) (1,3,7,8) {30,35,13,19,30,27,27,17,29,27}
[....#.##.] (0,2,3,5,6,7,8) (1,3,4) (2,3,6,7,8) (1,2,3,5,6,8) (1,2,3,4,6,7,8) (2,5,7,8) (3,8) (0,5,6,7,8) (0,1,3,4,5,7) {23,43,58,84,28,39,57,56,72}
[###.#.] (0,2) (0,2,3,4,5) (3,5) (0,1,2,4) (2,3,4,5) {31,14,31,28,24,28}
[#.#......] (0,1,2,4,5,8) (0,1,2,3,4,5,6,8) (2,3) (0,1,3,7) (0,4,6,8) (4,5) (0,1,3,4,7,8) {75,61,23,47,64,30,23,38,57}
[#..####..#] (0,1,2,3,5,6,7,9) (6,7,8,9) (1,3,5) (0,6) (0,1,5,8,9) (2,6,7,8) (0,2,3,4,6,7,8,9) (0,1,4,5,7,8) (2,3,5,6,7,8,9) (0,2,3,4,5,7,8,9) (1,3,4,6,7,8) (0,4,5,8,9) (0,1,2,5,6,7,8) {97,72,75,76,50,94,83,89,97,82}
[#.##..] (0,3) (1,2,4,5) (1,2,3,5) (0,4) (0,2,5) (0,1,3,4,5) (0,1,5) (1,2,3,4) {47,64,63,47,47,67}
[#..##] (3) (1,3) (2) (0,2,3) (0,1) (0,1,2) (0,1,4) {6,10,126,21,3}
[###..###.#] (0,3) (3,4,9) (0,2,6,7,9) (4,6,7,8,9) (3,9) (2,3,5,9) (1,4) (1,2,4,6,7,9) (1,3,4,6,7) (0,4,5,6,7,9) {48,37,27,224,87,24,70,70,12,237}
[..##......] (0,2,5,6,9) (0,2,3,4,5,6,8,9) (0,1,4,5,7,8) (0,2,3,5,6,7,8) (1,7) (0,1,2,3,4,6,7,8) (0,1,3,4,6,7,8,9) (5,7,8,9) (0,1,3,4,5,6,7,9) (2,3,4,5,6,8,9) (0,1,3,7,8,9) (2,4,7) {230,50,217,218,66,218,212,244,232,60}
[###.#.#] (2,5) (2,4) (1,2,4,5) (0,1,4,5,6) (0,3,5,6) (2) (0,3) (1,4,5,6) {25,19,54,19,35,51,28}
[#.###.] (1,2) (0,1,2,5) (1) (0,1,2,4,5) (2,3,4,5) {30,56,47,11,28,41}
[###.#.#.#.] (2,5,6,7,8) (0,1,3,6,9) (0,3) (0,1,9) (3,7,8) (1,2,3,7) (0,1,5,6,7,8) (3,5,7,8) (1,3,5,9) (0,2,3,4,5,6,7,9) (3,5,7,8,9) (1,2,3,7,8) {46,79,165,112,17,173,148,206,171,61}
[.#...] (0,1,4) (0,2,3) (0,1,3) (1,2) (1,3,4) (3,4) {34,43,19,64,36}
[###.#..] (0,5) (0,1,2,4,6) (0,3,4,5) (0,1,3,4,5) (0,3,5) (0,2,3,4,6) (0,1,2,6) (0,3,4,5,6) {239,18,187,224,225,52,205}
[..#...#] (1,4,5,6) (0,1,2,3,4,6) (2,6) (0,4,6) (0,4) (0,3,4,5,6) (1,2,5) {46,17,13,25,53,32,50}
[......#.] (1,4,5,6) (2,4) (1,2,7) (0,2,5,6,7) (2,5) (0,1,2,4,5,7) (3,6) (0,1,2,6,7) (0,6,7) (1,2,6,7) {23,41,50,0,9,15,36,50}
[..#....#] (0,3,4,5,6,7) (0,1,2,3,4,7) (3,6,7) (0,6,7) (2,4,5,6) (0,1,2,3,7) (0,1,2,5,6) {43,22,28,35,30,19,30,44}
[#.##.] (2) (0,2,3,4) (0,2) (0,2,3) (0,4) (1,3,4) {145,4,147,141,7}
[.##......#] (0,1,2,3,4,5,7,9) (3,7,9) (0,1,3,4,6,7,9) (0,2,4,8,9) (0,1,3,4,6,9) (0,2,8,9) (2,3,5,7,9) (1,3,5,6,7,9) (0,2,3,5,6,7) (1,2,6,9) {81,36,81,64,49,43,45,46,33,84}
[##...###.] (0,4,6,7) (0,1,2,3,5,8) (1,2,4,5,7,8) (1,3,4,5,7) (1,5) (0,1,5,6,7) (3,6) (0,1,3,5,6,7,8) (1,2,5,6,7) (3,4) (2) {22,51,40,24,41,51,42,54,24}
[..#.] (3) (0,1,2) (2,3) (1,2,3) {1,147,149,165}
[..##.#.#] (0,1,3,4,5,6,7) (2,5,6) (3,4) (0,1,4,5) (4,6) (1,2,3,4,6,7) {7,22,28,23,37,20,39,17}
[...#...#] (0,2,4,5) (0,2,3,5,6,7) (0,2,4,5,7) (4,7) (0,3,6) (2) (0,1,2,5,6,7) (0,3,5,6,7) (0,1,2,4,5) (1,2,5,7) {60,35,77,16,36,71,35,64}
[..#..#.] (0,1,5) (3,4,6) (1,3,4,6) (0,2,6) (0,3,5,6) (1,2,3,4) (0,6) (1,4,6) {39,50,13,31,45,20,57}
[..#...] (0,1,2,5) (0,4,5) (1,3,4,5) (1,4) (0,1,3) (1,2,3,4,5) {122,58,22,36,148,144}
[#.##...] (3,4) (2,5) (0,2,3,4,5) (1,2,3,4) (0,1,2,4,5) (0,6) {41,7,28,21,28,28,14}
[.##....##] (1,4) (0,1,2,3,8) (0,1,2,3,4) (2,3,4,6,7,8) (0,1,3,4,5,6,8) (7,8) (0,2,5,6,8) (1,2,3,4,5,6,7,8) (4,6,7) {32,35,48,39,60,11,39,43,41}
[#.##] (1,2,3) (3) (2,3) (2) (0,2,3) (1) {14,168,60,51}
[...##...#] (0,1,2,3,5,6,7,8) (0,4,5,7) (3,4,8) (0,2,4,5,6) (1,2,3,5,7,8) (0,1,2) (0,3,5) (1,3,5,6,7,8) (1,3,5,7,8) (0,1,2,4,5,6,7,8) {68,55,43,52,30,68,29,52,45}
[#..##] (0,3,4) (1,4) (1,2,4) (1,2) (0,1) (0,4) {28,31,18,8,18}
[#.##...##] (0,2,3,4,5,7,8) (2,3,4,5,6,7,8) (0,1,2,4,5,7,8) (0,6,7,8) (0,1,3,8) (1,6,8) (2,8) {42,23,170,46,28,28,34,41,205}
[###.#..#] (0,5,7) (1,4,5,6) (0,1,2,3,5,6,7) (1,3) (1,2,6,7) (0,3,5,6) (0,5,6,7) {33,49,31,28,7,40,44,47}
[...##] (0,2,4) (1,3,4) (2,3,4) (1,3) (3,4) (0,2) (0) {49,13,31,17,19}
[.##...#.] (0,1,2,3,4,5,7) (0,2,3,4,6,7) (0,1,2,4,5,6,7) (1,2,4,5,6) (0,1,3,5,7) (0,1,2,4,6,7) (4,5) {76,63,60,52,67,53,43,76}
[....##...#] (3,6) (0,1,2,4,5,6,7,8,9) (0,1,2,3,4,7,8) (2,3,4,5,7) (2) (3,5,6) (3,4,5,6,9) (0,2,4,5,6,8,9) (0,3,4,9) (0,2,3,4,5,6) (0,4,6,7,8,9) (2,3,6,8) {60,13,70,71,64,47,84,28,47,39}
[..##.] (4) (0,1,4) (1,2,4) (0,3,4) (2) (0,2) {32,35,43,4,49}
[.#...#] (0,3,4,5) (0,2,5) (0,2,4,5) (0,1,3,4) (2,3) (1) (0,2) {62,23,43,29,30,33}
[##...#####] (2,3,4,6,7,8) (9) (1,2,8,9) (0,4,9) (0,1,2,3,4,5,6,9) (1,3,4,5,6,7,9) (0,7) (1,8) (0,1,3,4,6,7,8) (0,2,5,9) (0,1,5,6,7,8,9) (7,8) {183,182,41,175,177,32,183,180,177,54}
[##.#] (0,1,2) (1,2,3) (2,3) (1) (0,2) {18,26,29,11}
[#..##.#] (3,4,5) (4,6) (3) (1,2,3,4,6) (1,3,4,5,6) (0,2,4,6) (0,1,5,6) (1,2,3,4,5,6) (1) {10,47,23,42,51,31,53}
[...#.] (1,4) (1,3,4) (0,1,3) (1,3) (2,3) (3,4) (4) {11,36,2,44,198}
[#.#.] (0,2) (1,2,3) {20,156,176,156}
[#....] (0,1,3,4) (0,1,2,3) (1,2,3) {28,29,15,29,14}
[###...] (0,4) (1,2,4) (1,5) (0,1,2,3) {12,38,26,11,16,12}
[..###.] (0,1,3,4) (0,2) (4,5) (2) (0,1,2,4) (1,3,5) (0,1,2,4,5) {32,26,38,3,36,19}
[..#..#.] (0,1,3,5,6) (3,4,5) (0,4) (1,3,5) (0,1,4,5,6) (2,5) (2,3,4,5,6) {39,44,26,48,45,78,51}
[#...] (1,3) (2,3) (0,3) (0,1,2) {11,15,7,24}
[##.####] (1,2,4,5) (0,1,2,3,5) (2,3,6) (3,4) (0,1,3,4,6) {27,42,41,207,196,35,13}
[...#...#] (0,2,3,4,6) (1,2,3,7) (6,7) (2,5) (0,2,4,5,6,7) (0,1,2,3,4,5) (3) (0,1,3,7) (3,6) {44,27,31,58,24,10,33,36}
[####...##] (4,5,6,7,8) (0,2,5,6,7,8) (0,1,3,4,6) (3,8) (2,3,4,6,7) (2,4,6,7,8) (0,1,2,3,4,6,7,8) (0,4,7,8) {33,22,51,43,64,23,75,63,56}
[.##..#] (0,2,3) (2,3,4) (2,4,5) (0,1,4) (1,5) (5) (0,1,2,3,4) (1,2,5) {33,43,47,32,40,33}
[.##.#..#..] (1,2) (0,1,2,3,5,7,8) (3,7,9) (0,1,2,4,5,6,8) (2,7) (0,1,2,3,4,6,7,8,9) (0,1,2,6,7,9) (4,6) (0,1,5) (0,1,3,4,5,7,8,9) {46,66,57,39,35,42,17,58,37,31}
[##.#] (0) (0,1,3) (1,3) (1,2) (2,3) (0,1,2) {21,35,28,39}
[####..#.#] (0,1,2,3,4,5,7) (4,5) (6,7,8) (1,2,3,4,5,6,8) (0,3,4,6,7,8) (0,2,4,5,8) (0,1,2,3,5,6,8) (3,7,8) (0,2,4,5,7) {48,37,47,62,67,59,62,52,67}
[.#.##.#] (3,5) (5,6) (0,1,2,3,5,6) (2,3) (0) (1,4,5,6) (1,2,4,6) (0,1,3,5) (4) {33,62,31,42,41,72,61}
[.#####] (1,2) (0,2,4) (3,5) (4) (0,2,5) (3,4,5) (0,1,3,5) (3) {32,7,25,202,32,200}
[..#.] (0,1) (0,3) (2) (0,2) (1,2) {35,39,37,6}
[##.#..] (0,2,3,4) (0,2,5) (0,2) (3,5) (0,5) (0,1,2,4) (1) (4,5) {30,21,21,7,18,30}
[.....#.] (1,4,5) (0,1,3) (1,4) (0,1,2,3,4,6) (1,2,6) (2,4,5,6) {193,235,212,193,228,32,212}
[.#..#..##] (2,7) (0,5) (0,1,7) (0,1,3,7) (4,8) (1,2,3,4,5,6,8) (0,1,2,3,4,5,6,8) (1,2,3,5,6,8) (1,7) {193,203,52,54,38,54,38,179,45}
[#..#.#] (3,5) (0,1,2,3,5) (2,4) (0,3,5) (0,1,5) {11,6,9,22,9,28}
[.#.#.##] (0,1) (0,2,3,5,6) (0,2,3,5) (0,1,2,3,5) (0,2,4,5,6) (4,5,6) (1,2) (4,5) {39,25,40,28,4,32,20}
[....##.#..] (0,2,3,4,5,6,7,8,9) (0,3,4,6,7,8,9) (6,7) (1,5) (0,2,3,9) (2,8,9) (1,6,9) (0,1,3,5,6,7,8) {50,39,35,50,17,39,64,47,42,52}
[####.##.] (0,1,2,4) (1,3,5,6) (2) (1,3,6) (0,1,3,7) (0,2,5,6) (0,2,7) (4,7) {49,37,38,21,18,1,7,34}
[.##.###.] (2,4,5,7) (4,5,6,7) (1,3) (0,1,2,7) (0,1,3,4,6,7) (2,5,6,7) (1,2,4,5,6) {20,49,64,12,41,50,34,52}
[.#....] (2) (1,2,3,5) (0,2,3,4,5) (1,3,5) (2,3,4) (1) {14,32,178,172,153,33}
[.####...] (0,1,2,4,6,7) (0,2,3,4,6,7) (1,2,3,6,7) (0,4,5,6,7) (0,1,2,3,5,6,7) (1,2,3,5,6,7) {48,40,58,46,46,33,74,74}
[.#.###.] (0,2,3,4,5,6) (1,2,4,5) (6) (0,1,3,4) (1,2,6) (2,3) (0,5,6) (3,4,6) (1,3,4,5,6) {35,33,58,55,52,40,189}
[#..####.] (1,3,4,5,6,7) (0,1,3,4) (2,4,6) (1,2,3,4,5,7) (0,1,3,4,6,7) (0,3,5,7) (0,1,4,7) {30,55,16,43,62,29,26,44}
[#.#.#..#.#] (0,1,2,3,4,5,7) (3,5) (0,1,2,4,6,7,8,9) (1,2,3,7,8,9) (0,1,6,9) (2,3,4,5,6,9) (1,2,4,9) (5,7) (0,2,8,9) {45,150,171,151,28,42,38,147,150,183}
[..##] (0,2,3) (0,3) (1,2,3) (0,1,3) {202,19,15,213}

1140
src/day10/main.rs Normal file

File diff suppressed because it is too large Load Diff

3
src/day10/test.txt Normal file
View File

@@ -0,0 +1,3 @@
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}

604
src/day11/act.txt Normal file
View File

@@ -0,0 +1,604 @@
zmg: vew ynx rdv kzq
fho: drg
qtg: bcp kzq
nbp: fkn
oaa: ulw zyf
fyy: dwh vjr cdg miw
rwj: kkt hdz irr ovu
qoy: rao eev wzh wkc
jzz: glp pwf fwp
aqu: swy txo nqu mla
yws: zxh fft
rdd: zbw cqw
hoo: bfn amg vyd dod ovp kii
bnz: vdk
shw: gzx
iep: zbw
mxl: udq owi yhh rrk
izl: tfr
oku: pvp
omu: pvq tsj hfl
xwc: bdu tuz tkz
tjf: rek vil
uak: bko
idt: yrr
que: yyb aqu cfl
tmg: eev
ybn: hfe qou xrk
dgj: jbz you fhk hoo
hfl: fmn gzw sug
mix: gzx
cwn: fhk you jbz
rek: dfy ued zya nnk
sug: utp btl lzb hor ndl uuw kyi zqd jdq cfs nvd acs pyx pbm eqc ome
lan: kkt ovu irr
miy: uub gyg yol tua
dev: out
ykn: fea rlv how ksp
yom: fhk
tcl: fnb
nnk: hdz kkt
wau: rtw vuk aoe
amz: nxs vku
nqy: fdp wyk
bdj: hit ytb tcl
bgd: uru mhm
zdl: fps pmc maa frp
wrv: sug cjl gzw fmn
feh: irc ojk
efc: out
zst: rta knd
nqi: gyt pwv
snz: out
fea: wqv hse rqw
tqh: fea
hho: isx whl yiz
tkz: zkq
omh: uuu
dxu: dwh vjr sfc cdg miw
wzh: zbx tjd
iyj: bgw mug
naw: hhm pkw hwn
qdf: tjr
vku: kez abg qmx
udf: ulz
mhj: tmg ffw qoy flj nyf ybn que fxt rua rys vyu cri aoh nuf fik jsk wmy epz
uuy: sug
roi: out
abz: isx yiz
cvr: isx yiz whl
xrw: fwp pwf fnk glp
rta: yug thh
lyu: efc yxj iof hgu kpd
qwv: fkn gzx lzk
aum: yrx ubo
uuu: fmn gzw cjl sug
hjd: hbs
epr: maa frp pmc srx fps
sav: dst
rng: qou xrk
jue: rdd cze
wzl: out
nwn: gyt cwn
flj: aqu yyb
cdj: kxf daa
zln: nxs owg vku
pmu: kwh pql
tqw: lzk jhf gzx fkn
txo: nfb eez prz wkl
bko: gzx fkn jhf lzk
cym: plo
ovp: plo imv ums sjv
sjv: vre qtg
uzz: irr
nxs: kez aum qmx
hwe: cqb abv
lak: weu rtq
gvt: iyd
bcm: frp fps
pli: mug pfl pxs
gxw: jyz
nrb: sem pmu kcm teh
ffw: cfl
teh: pql vnb kwh
zdh: pvn
ome: byz lql
jnl: mdt ajt yzg nvq lfk aco yws kpp wff vxd nrb evs tjx cdj zdl kml ipx kkf vaw xjv
yxj: out
lof: sug gzw
hwn: you hoo
eva: jiq dny jky yom
rgs: qke abv cqb
fxt: tlz qtc
fft: mbr uuu
xjw: rtq
fnp: fnb ctz jnl wpq zvu
dcw: out
rms: pym lyu
nwy: wxb bko qkz shw gvo
wpq: aco nrb zdl epr mdt
lpf: jho
tzo: wkm yns ndo
kii: yag gel
oty: dmu
cjl: vkl ndl eqc hor pbm hki nvd lzb btl utp jdq zqd qlt
kdw: evf dxu
inn: jnl zvu wpq ctz
idv: yol uub gyg
epz: yyb
ovu: zst kdw czw xrw alk hkm kha sor gct ytl wvx ixw edo qmw vvm qdf jzz eat
gel: bdu
oic: rms
arh: cvo wkq toa vdh
bgw: yoo
grv: wkm
duj: emk
tog: sem kcm teh
srx: omu otm qpk
pdv: rek asl vil
cvj: pdi
utp: pdv ugr jho
ufz: sug fmn gzw
vvm: eem
imv: ses zmg vre
uzk: oty nlq
pwv: jbz
xhr: jti ufz uls
xwa: cxv xjw qbx lak
kbb: jnl zvu fnb
chx: jhf
nxn: fxt wmy que jsk rng oxu flj tmg ybn
kkt: alk hkm bfb zst kdw xrw czw tnr ixw edo vvm qmw jzz eat qdf kha sor gct lsg ytl
vqb: fmn gzw
ytb: zvu fnb
pmm: hhm
evs: fho vyk
far: iep kir axy cze
hkt: zev uga
fwp: cdu pdk szr oaa
lfk: vyk dqg
hkv: shw wxb gvo
rgv: ctz fnb jnl zvu wpq
plo: vre ses zmg
qmw: tjr hmb
ari: kxu
xrk: bdj gfq
jyz: rwj ryf
jho: asl rek
irm: you hoo
hit: jnl ctz fnb
yug: xfk trd ffe
edo: tjr hmb ibe
qiu: fdp wyk
glp: szr pdk cdu
ohw: ary
ytl: evf
aaf: tcl rgv
eqc: zkb mxl zke
aco: frp srx pmc
eem: ari jvj
wkc: ubu zbx
jdq: byz tue
udq: ovu irr ybz kkt hdz
vyd: hlf sur rpe ntd
kez: yrx szz ubo
gvn: wpq jnl fnb ctz
wvx: fyy dxu
cvo: out
nev: uls tqy ufz jti
ipx: sem
gqb: izl
vfz: wkm yns ndo
sor: buf
lsg: knd
uuw: mxl zkb
ufu: bqi ssr yag
qmj: pwv
ruw: vuk fnp aoe
zya: ybz irr
tuz: bnz oai
rdv: sjc bew
tyc: znl
dfy: irr ovu kkt
wkm: irm dgj yqu
kyi: jho pdv tjf
pyx: zke
rrk: ovu irr hdz
mhm: cxv xjw qbx
ynx: vdf arh
zxh: uuu
zot: uuy kvl
pkw: jbz hoo
dqg: bww vqb kvl
axb: vyi
ajt: dzl haw nii hkt
wyk: pvn fnu myf
geg: out
ntd: uzk ggo
bgt: zdh
xfk: zih
qoq: xiw woi dcw geg smh
yzg: pmu teh sem
rqe: jti ufz tqy
ybz: czw xrw bfb hkm lsg kha gct edo qdf jzz eat qmw
zkq: vkn vdk ufm
vyu: ruw boq wau
cdg: uak
rlv: oic hse
ugr: rek
myf: fhk you hoo
bso: jcg mvt aji yny
ozr: kkt hdz irr ovu
uub: zvu jnl fnb ctz
czw: fwp
pmc: omu qpk usl
prz: kbb urb
vaw: zxh fft zrw
cph: out
inh: ble
dmu: woi dcw
emk: nqs dac
rao: zbx
ipm: pdk
kcm: kwh
wxb: gzx
jbq: hvb rys rua fxt nyf ybn yrj tmg ffw qoy flj epz jsk nuf vyu cri
ary: oty nlq iyd
ypy: vis jsp qmj nqi nwn
isx: deb naw pmm
wmy: hfe
shb: hhm hwn xik
znl: qit zpr ryf
cze: sby
xiw: out
dny: hoo
kxu: fkn jhf
cre: auy
wzq: gzx lzk
pym: iof hgu efc yxj
wby: jcg
aik: ojk gvn irc
wra: vyi jcg aji
xuq: hoo
ffe: wzq
qmx: dwf
ana: ulz cut
qbx: weu rtq
qlt: rez sbk cre hjd
bew: wkq cvo roi vdh toa
vdh: out
xbo: xln
szz: usg qtz
toa: out
jbz: cxl vyd cym elv ufu sfh
zkb: lan udq
kxf: nev rqe
cxl: imv ums
ral: lak
jsp: cwn
cwr: jhf
pfl: yoo yrg
xln: out
jky: jbz hoo fhk you
sur: jem gvt
rxy: out
jcg: nbp chx tsb mix
btl: pny jue
bqi: tuz
rys: rao eev wzh zkn wkc
pny: cze iep axy rdd
tue: gxw cxu
zke: lan owi
cqw: kkt ovu
vmw: lyu
gab: cut emk
smh: out
kvl: sug fmn gzw
vjv: zpr ryf rwj qit
uru: cxv xjw
ksp: hse wqv
sfc: eky uak nwy hkv
hhm: hoo fhk jbz
fdp: pvn hfc myf
gvc: jbz
asl: dfy zya
fnk: oaa
mfs: yat
vuk: ctz fnb zvu wpq jnl
maa: oku omu
cza: yny
nvd: far pny
qkz: jhf gzx
sbk: hbs hut
rpe: jem ggo
elv: gel xwc bqi yag
qlg: bgw
tnr: hmb
yrg: you fhk hoo
mbi: lzk fkn
pdf: ksp fea how rlv lvc
frp: qpk
owg: aum kez
utj: sug gzw
bfb: ipm glp pwf fwp
byz: gxw cxu
buf: jvj hrd yrr ari
hrk: kpd efc yxj
trd: qwv wzq
hor: hsv far pny jue
tgh: wzq zih
szr: zyf
zev: sav vkg uhr
irr: wvx gct kha lsg vvm jzz eat ixw edo xrw kdw czw tnr zst hkm
fps: oku
yrx: xbo usg qyt qtz
vnb: utj vqm
zyf: fkn jhf lzk
lzk: udf duj tzo haa pfh uwc
axy: cqw zbw
sfh: hlf rpe sur
oai: ufm
ojk: zvu wpq ctz fnb
vxd: dqg zot
mvm: fmn
yiz: fdk
fdk: pkw hwn xik
tsb: fkn gzx
nuf: wau boq
gyg: wpq zvu jnl
jvz: wyk zdh
boq: aoe fnp vuk rtw
ckx: out
ffm: cjw pdi
jti: fmn cjl
eaq: lzk
hhy: ovu ybz hdz
urb: fnb ctz
yrj: ruw wau
lql: trg tyc
you: qsz bqf tqh zln kii bgd pth
lca: ypy tfr rwd
ble: bgt nqy
sby: ybz hdz kkt ovu
war: tqy
nii: aub zev hmp
fnb: zdl nvq tjx tog ljh vaw ipx
vkn: snz rxy cph
iof: out
cfl: swy nqu mla
cqb: nqy qiu
swy: nfb lhi eez prz wkl
jiq: you hoo jbz
lni: wkq cvo toa roi vdh
uhr: dst rjv
nfb: inn kbb urb
afj: xjw cxv jrw qbx lak
usl: pvq
pxn: zvu ctz
dod: rpe ntd ohw
gzw: lzb lpf utp jum vkl uuw ndl hki qlt kyi cfs jdq pbm eqc acs nvd pyx
hki: tue byz
tua: ctz wpq zvu
hmp: ocz
tve: kud yug
qpk: tsj pvp pvq
iyd: prb dmu
jrw: rtq kwa
ndl: jho tjf
hdz: vvm hkm alk tnr sor zst
evf: cdg miw
nbl: ozr
ibe: wby bso axb wra
coy: nwn nqi qmj vis
kha: eem idt
irc: fnb ctz jnl wpq zvu
cfs: zke zkb mxl
kzq: arh vdf
gct: rta
mbr: gzw fmn sug
cdu: zyf tqw
vkg: mvm
nqu: wkl prz eez lhi
pql: utj lof bhd
pvq: fmn gzw sug cjl
zpr: kkt ybz irr
qsz: ums sjv
dwh: eky nwy ozt hkv
cjw: out
fjn: pym hrk
zih: fkn gzx jhf
eez: inn
ulz: nqs eva dac
ufm: ckx snz cph
whl: fdk naw deb shb
hsv: iep axy kir cze
qyt: dzo
rtq: gbo ffm cvj
cyf: yat
ssr: tkz
yol: wpq
yny: tsb mix
ubu: idv miy
cxv: kwa rtq weu
hmb: cza wby
brs: out
deb: pkw
bhd: gzw fmn cjl
ewj: vku
abg: ubo szz dwf yrx
prb: xiw geg
jvj: eaq dlc
qit: ybz hdz ovu irr
vkl: tal tue
tjd: miy
eev: tjd ubu zbx
usg: wzl dzo xln
miw: hkv uak nwy
ulw: lzk jhf
yag: bdu tkz tuz
weu: gbo mkb ffm
hkm: knd
mdt: zrw fft omh
aji: chx tsb mix mbi
trg: vjv nbl
eky: gvo
ubo: qyt
abv: bgt qiu
pwf: cdu pdk szr oaa
jem: iyd nlq
csr: yol uub gyg
yyb: nqu txo
zrw: wrv mbr
qou: gfq aaf bdj
kpp: daa
sem: vnb kwh
hvb: qou
uwc: ulz
mkb: pdi dev
amg: afj xwa uru ral mhm
pth: afj xwa mhm
how: wqv rqw
dwf: qtz usg qyt
jum: zkb zke
woi: out
yat: tfr coy ypy
pvn: jbz hoo
alk: tve knd rta
sjc: wkq roi toa
ryf: kkt ovu
vjr: nwy uak ozt hkv
abw: gyh cri vyu rng jsk fik nuf wmy ybn nyf tmg yrj ffw flj qoy oxu rys hvb que rua fxt
ums: zmg ses
fhk: amg cxl ewj amz pdf cym tqh sfh zln ykn
gbo: icr
tfr: jsp
fmn: pyx acs nvd ome eqc cfs jdq zqd kyi qlt hki ndl hor utp jum lpf btl lzb
gfq: hit pxn tcl
ndo: yqu irm
hgu: out
yhh: ybz hdz ovu irr
otm: pvp hfl
qla: isx yiz
dzo: out
wqv: vmw fjn rms
bww: gzw sug cjl
qtz: xln wzl
tjr: bso wra axb cza
hbs: uzz
yrr: cwr
gyt: you hoo
wff: daa
bfn: ohw sur rpe
yoo: fhk hoo jbz
ixw: fnk
dzl: zev hmp
tqy: fmn
zkn: tjd zbx
cri: aik feh qtc
daa: xhr
lvc: hse rqw
cxu: znl vjv
vqm: fmn sug
nqs: jiq jky
rjv: sug cjl fmn gzw
kir: sby zbw
kml: dqg
qke: qiu jvz nqy
svr: nxn mhj ybx abw jbq
pbm: rez sbk
haw: uga aub hmp zev
drg: gzw
eat: evf
kpd: out
pdg: ovu kkt hdz ybz
hlf: uzk ggo ary
tjx: teh kcm sem
ses: rdv kzq vew ynx bcp
oxu: boq ruw
zbw: irr
ozt: bko qkz wxb
vre: rdv ynx bcp
aub: vkg uhr
tmp: xhr war rqe
pdi: out
hse: fjn
gyh: qtc feh
nlq: dmu qoq
zvu: tjx cdj zdl kml ipx kkf vaw bcm epr ljh ajt nvq lfk aco yws kpp wff vxd nrb evs
rez: hbs auy hut
hfc: hoo fhk jbz
nyf: wzh rao
tal: trg
uga: vkg ocz
dac: jiq jky gvc dny
ued: ovu
thh: ffe tgh xfk
icr: out
rua: hfe xrk
bdu: oai bnz
kkf: hkt haw nyp dzl
rwd: vis nqi nwn
aoe: zvu jnl ctz
kwh: bhd lof vqm utj
dlc: fkn gzx jhf
vyk: kvl vqb bww
vyi: chx
hfe: gfq
xik: hoo fhk you jbz
tsj: cjl sug
vdk: ckx brs cph
dst: sug cjl fmn gzw
vil: dfy ued
ljh: tmp
ggo: oty nlq
aoh: boq ruw
hrd: dlc
yqu: jbz fhk you hoo
vdf: vdh wkq cvo
nvq: haw hkt dzl
gvo: lzk
mug: xuq
ctz: yws kpp yzg mdt lfk nrb wff vxd zdl kml cdj ljh tog ipx bcm
rtw: fnb ctz wpq
uls: gzw fmn sug
vew: sjc
knd: thh kud
pdk: tqw ulw
owi: hdz ybz
qtc: gvn ojk
fkn: hho udf vfz cyf wiy uwc inh iyj qlg grv mfs pfh qla abz pli cvr
pvp: sug
lhi: urb
nyp: uga aub
mvt: mix mbi tsb
ybx: nyf aoh flj yrj rys rng epz rua wmy
auy: pdg hhy
vis: gyt cwn
mla: nfb wkl prz lhi
hut: uzz pdg
jsk: wkc wzh eev rao
fik: cfl
bqf: fea rlv how ksp lvc
acs: tjf ugr jho
tlz: ojk
fnu: hoo
cut: dac
lzb: cre
wiy: pxs mug
pxs: yoo
jhf: haa uwc iyj wiy duj cyf udf gqb cvr ana pli tzo abz qla hwe qlg gab grv
zqd: sbk
ocz: dst
kud: trd ffe
yns: yqu dgj
gzx: vfz rgs gab gqb qlg udf inh ana iyj duj wiy
pfh: lca yat
xjv: kxf
haa: yiz
kwa: gbo ffm mkb cvj zcl
zbx: csr idv
bcp: bew lni vdf
rqw: vmw fjn rms
zcl: dev pdi cjw
wkl: kbb
wkq: out

125
src/day11/main.rs Normal file
View File

@@ -0,0 +1,125 @@
use anyhow::Result;
use std::{
collections::{HashMap, HashSet},
fs,
};
fn sol1() -> Result<()> {
let text = fs::read_to_string("src/day11/act.txt")?;
let graph = text
.split("\n")
.filter(|a| a.len() > 0)
.fold(HashMap::new(), |mut g, m| {
let mut split = m.split(":");
let node = split.next().unwrap();
let outs = split
.next()
.unwrap()
.trim()
.split(" ")
.fold(HashSet::new(), |mut s, a| {
s.insert(a);
s
});
g.insert(node, outs);
g
});
fn count_paths(t: &str, visited: &HashSet<&str>, g: &HashMap<&str, HashSet<&str>>) -> usize {
let mut visited = visited.clone();
visited.insert(t);
let mut sum = 0;
for i in g.get(t).unwrap() {
if visited.contains(i) {
continue;
}
if *i == "out" {
sum += 1;
continue;
}
sum += count_paths(i, &visited, g);
}
return sum;
}
println!("sol1: {}", count_paths("you", &HashSet::new(), &graph));
Ok(())
}
fn sol2() -> Result<()> {
let text = fs::read_to_string("src/day11/act.txt")?;
let graph = text
.split("\n")
.filter(|a| a.len() > 0)
.fold(HashMap::new(), |mut g, m| {
let mut split = m.split(":");
let node = split.next().unwrap();
let outs = split
.next()
.unwrap()
.trim()
.split(" ")
.fold(HashSet::new(), |mut s, a| {
s.insert(a);
s
});
g.insert(node, outs);
g
});
let mut node_hit: HashMap<&str, usize> = HashMap::new();
let mut node_hit1: HashMap<&str, usize> = HashMap::new();
let mut node_hit2: HashMap<&str, usize> = HashMap::new();
fn count_paths<'a, 'b>(
t: &'a str,
end: &'a str,
visited: &HashSet<&str>,
g: &'a HashMap<&'a str, HashSet<&'a str>>,
hit: &'b mut HashMap<&'a str, usize>,
) -> usize {
let mut visited = visited.clone();
visited.insert(t);
let mut sum = 0;
if let Some(n) = g.get(t) {
for i in n {
if visited.contains(i) {
continue;
}
if *i == end {
sum += 1;
continue;
}
if let Some(c) = hit.get(i) {
sum += c;
} else {
sum += count_paths(i, end, &visited, g, hit);
}
}
}
hit.insert(t, sum);
return sum;
}
// after some testing there is not path from out -> dac or out -> fft or out -> src
// our fft -> dac
// so the result is just svr -> fft * fft -> dac * dac -> out
println!(
"sol2: {}",
count_paths("svr", "fft", &HashSet::new(), &graph, &mut node_hit)
* count_paths("fft", "dac", &HashSet::new(), &graph, &mut node_hit1)
* count_paths("dac", "out", &HashSet::new(), &graph, &mut node_hit2)
);
Ok(())
}
fn main() -> Result<()> {
sol1()?;
sol2()?;
Ok(())
}

10
src/day11/test.txt Normal file
View File

@@ -0,0 +1,10 @@
aaa: you hhh
you: bbb ccc
bbb: ddd eee
ccc: ddd eee fff
ddd: ggg
eee: out
fff: out
ggg: out
hhh: ccc fff iii
iii: out

13
src/day11/test2.txt Normal file
View File

@@ -0,0 +1,13 @@
svr: aaa bbb
aaa: fft
fft: ccc
bbb: tty
tty: ccc
ccc: ddd eee
ddd: hub
hub: fff
eee: dac
dac: fff
fff: ggg hhh
ggg: out
hhh: out

View File

@@ -9,17 +9,5 @@
d="M5921 67692 L94901 67692 L94901 50265 L5921 50265" d="M5921 67692 L94901 67692 L94901 50265 L5921 50265"
count="1550760868" count="1550760868"
/> />
<path
style="fill: black"
d="M5921 67692 L94901 67692 L94901 50265 L5921 50265"
count="1550760868"
/>
<line
x1="5921"
y1="68607"
x2="5921"
y2="67692"
style="stroke: red; stroke-width: 200"
/>
</svg> </svg>
</html> </html>