Days 8-11

This commit is contained in:
James Hogge
2025-12-17 02:16:48 +00:00
parent b3ae04b51d
commit 654d1d666c
11 changed files with 3065 additions and 2 deletions

View File

@@ -1 +0,0 @@
/nix/store/ribr3gc7kazm282bxiqpmjy9j2h4jaxk-source

195
10-input.txt Normal file
View File

@@ -0,0 +1,195 @@
[..#.##] (0,1,3,4) (0,3,4) (0,5) (0,1,2) (3,5) (0,2,3,4) (2,3) {58,27,37,57,37,24}
[####] (0,1,2,3) (0,1,3) {180,180,10,180}
[#.#.] (2) (1,3) (0,2) (0,1,2) (0) (1,2,3) {27,9,26,9}
[#.####...#] (2,5,6) (0,1,3,4,6,7) (0,1,2,3,4,5,7,8) (3,6) (3,4,6,7) (0,2,3,5,7,8,9) (0,1,2,3,4,5,7) (1,2,3,4,5,9) {37,37,56,66,48,56,48,48,10,20}
[#.#.##....] (0,2,3,4,5,7,9) (0,1,4,5,6,7) (0,2,3,5,8,9) (0,1,3,4,6,7,9) (0,1,2,3,5,6,8,9) (0,4,7) (2,3,4,8,9) (1,2,3,5,7,8,9) {189,165,28,35,188,174,158,192,14,35}
[.#.#.#] (0,1,2,3,5) (1,3,5) (2,4,5) (3,4,5) (0,1,2,4) (0,3) {25,18,25,15,25,15}
[.##....##.] (0,1,2,4,5,6,7,8) (1,2,3,5,6,7,8,9) (0,2,3,4,5,6,7,8) (0,3,5) (2,3,5,6,7,8,9) (2,3,6,7) (4,5,9) (1,2,3,6,9) (1,4,5,6,7,8) (2,3,4,6,9) (1,2,4,6,7,8,9) {14,26,46,38,43,42,48,40,31,45}
[.##...##.] (1,3,6) (0,2,6,7,8) (0,5,7,8) (2,5,7) (3,4,5,6,7,8) (0,1,2,3,5,6,7) (1,2,3,4,6) (2,3,4,5) (0,1,3,5,6,7,8) {34,37,37,191,163,206,188,203,180}
[.####.#.] (0,1,2,3,4,6) (1,2,3,4,5) (5,6,7) (1,2,4,5,7) (0,1,2,3,4,6,7) (0,2,3,4,7) {30,42,52,49,52,27,25,30}
[##.###] (0,3) (0,2,4) (1,2,3,5) (0,1,4,5) {23,31,29,20,22,31}
[...#.###] (1,5,6) (6) (6,7) (2,4,5,7) (1,2,3,5,6,7) (3,5,6,7) (0,1,3,7) (1,2,3,4,5,7) (0,1,2,5,7) {30,70,54,53,25,84,60,94}
[#..##] (0,3,4) (0,1,2,4) (0,2,4) {38,3,23,15,38}
[#....] (0,1,2) (3,4) (2,3) (0,1,2,4) (0,3,4) {52,39,46,23,35}
[###.] (0,2,3) (1) (0,2) {8,18,8,2}
[##..] (1,2) (0,3) (0,1) (2,3) {8,13,13,8}
[##..#####] (1,3,7) (1,5,6,7) (0,2,3,5,7,8) (0,1,2,3,4,5,7,8) (0,1,4,5,6,7,8) (4,5,6,7,8) (0,2,3,4,6,7,8) (4,7,8) (0,1,2,3,4,5,8) (1,6) (1,2,4,5,7,8) {59,105,73,73,93,92,51,124,103}
[####..##.#] (2,3,5,7,8,9) (0,3,5,6,8) (1,3,7,8) (0,2,3,5) (1,2,3,4,5,6,7,8) (3,5,7) (9) (0,1,3,4,6,7,8) (0,1,2,3,4,5,7,9) (0,1,2,3,4,5,6,9) (5,8) (2,3,5) {47,30,68,91,24,97,20,46,53,53}
[##.#.#.] (0,2,3,5,6) (0) (1,2,4) (1,2,3,6) (2,4) (3,6) (0,3,6) (0,1,3,5) (2,3,4,5,6) {42,28,156,67,138,35,53}
[..###..#] (1,5,6,7) (0,2,3,5,6,7) (1,2,3,4,7) (0,2,4,5) (0,1,2,4,5,7) (0,3,5,7) (0,7) (2,3,4,6,7) {47,45,49,46,49,55,30,85}
[#.#.] (1,2) (0,3) (2,3) (0,2) (0,2,3) (0,1,2) {67,37,82,45}
[..##.] (0,2,3) (1,3,4) (3,4) (0,1,2,4) (0,1,2) (0,1,4) (1,2,4) {40,49,21,30,53}
[#....##..#] (1,2,3,4,5,6,8) (1,3,5,6) (2,3,7,9) (1,2,4,6,8) (2,3,5,8) (1,3) (2,8,9) (1,5) (0,4,6,8) (1,2,3,5,6,7,8,9) (0,6,7) {29,63,88,63,45,54,74,40,86,37}
[.#.####..#] (1,2,3,5,6,7) (0,3,5,9) (0,1,4,5,7,9) (0,1,2,3,4,7,8,9) (0,1,4,6,7,8,9) (0,1,4,5,6,8,9) (0,2,3,4,6,7,8,9) (1,7) (1,3,4,5,7,8) (0,1,2,3,4,5,8) {62,241,38,67,57,67,40,223,56,43}
[##.#.###..] (1) (0,2,9) (0,2,4) (0,2,4,5,8,9) (0,1,3,4,5,6,7,8) (1,6,8) (0,4,5) (2,4,6,8,9) (0,1,7,8,9) (1,4,8) (0,1,3,4,7,8) (2,3,5,6,7,9) {44,30,37,16,49,27,23,22,40,36}
[#.#.#.#] (0,2,3,5) (0,3) (1,6) (0,2,4,6) (0,1,2,3,5,6) (2,6) (0,3,4,6) (1,2,3,5,6) {20,21,37,28,12,19,40}
[#....#.###] (1,2,4,5,6,8,9) (1,3,4,5,6,9) (4,5,7) (5,7,8) (0,1,2,5,6,7,8,9) (0,4,5,8,9) (0,1,2,4,5,6,8,9) (1,3,5,6,8,9) {43,49,40,9,58,77,49,21,66,66}
[..####.##.] (1,3,5,7,8) (1,2,6,8) (0,1,4,5,9) (0,1,2,3,5,6,7,9) (0,1,2,3,4,6,7,8,9) (0,2,3,6,7,8) (1,2,3,5,6,7,8) (1,2,6,7) (2,3,4,6,7,9) (0,9) (1,6,9) (0,2,3,5,8) (1,6,7,8) {54,114,114,97,37,43,144,134,87,67}
[....#] (0,1,4) (2) (0,2,3) (4) (0,1,2) (1,2) {35,44,56,11,22}
[#...###] (3,4) (0) (0,1,2,4,5) (0,3,5) (4,6) (0,1,3) (1,5) (2,4,5) (5,6) {50,35,14,27,39,57,40}
[#....#] (1,2,3,4) (0,3,4) (0,1,2) (0,2) (1,3,4) (0,3,4,5) (1,4) (5) {29,33,16,16,30,19}
[...#.##.] (1,3,6,7) (0,1,3,4,5,6) (0,4,5,6,7) (0,1,2,5,6) (2,4,5) (0,1,2,4,5,6) {143,144,146,18,163,163,147,7}
[..##..#] (2,3,4) (0,1,4,5,6) (1,2,5,6) (0,1,2,3,4,5) (1,2,3) {22,34,27,19,34,30,27}
[#.#.] (1,2,3) (0,1,2,3) (0,1,3) {21,33,21,33}
[#....#..] (2,3,4,5,6) (0,1,2,4,7) (0,3,5,7) (0,1,5,6,7) (1,2,3) (4) (2,3,4) (0,1,2,3,4,5) (1,6,7) {38,69,72,62,74,45,50,43}
[##.#...] (1,2,4,5) (0,1,2,5) (0,2,5,6) (1,3,5) (0,1,2,5,6) (1,5,6) (3,4) (1,2,3,5,6) (0,2,6) {44,87,80,47,37,96,81}
[#...##.#.#] (2,3,7,8,9) (3,5) (0,1,3,4,5,6,8,9) (0,2,5,6,7,8) (2,4,6,8,9) (6,9) (0,1,2,3,4,6,7,9) (0,3,4,5,9) (0,1,2,4,5,9) {69,45,60,54,58,69,63,38,55,66}
[...#] (0,3) (0,1) (2,3) (0,2,3) (1,3) (2) {21,190,34,216}
[#.##..#.#.] (0,6,9) (0,1,3,4,5,6,7,8,9) (0,2,3,4,5,7,8,9) (1,3,4,6,7,8,9) (0,1,2,4,5,6,7,8,9) (0,1,2,3,4,5,6,8,9) (0,1,2,3,6,7,9) (0,3,4,5) (0,1,2,3,4,6,8,9) {71,41,47,56,60,46,57,42,57,76}
[#.#...] (3) (4,5) (2,5) (0,3) (1) (1,3,5) (0,1,4,5) (0,1,2,5) {41,61,29,14,33,68}
[....#.#.] (0,2,3,4) (3) (0,1,3,4,6,7) (0,1,2,4) (1,4,6,7) (4,6) (0,2,3) (3,5) {29,19,24,236,41,17,29,19}
[.#.#.] (1,2,4) (0,1,3) (2,4) (0,1,2,3) (2,3,4) (1,2,3) {9,31,42,30,19}
[#...#..#.#] (1,2,3,6) (1,2,4) (0,1,2,3,4,6,7,8) (0,4,7,9) (0,2,3,9) (0,6,7,8) (1,2,3,5,7,9) (0,1,2,4,5,7,8) (0,1,2,3,4,5,6) {51,199,203,45,179,24,47,54,37,21}
[..#.] (0,3) (1,2,3) (1,3) (0,1) (3) {19,22,5,16}
[.#.#.] (0,1,2,3) (0,1,3,4) (1,2) (1,2,3,4) {189,194,23,192,174}
[#....#.] (3) (0,1,2,4,5,6) (4,5,6) (0,2,4,6) (1,2,4,6) (1,4) {30,20,33,5,55,33,52}
[.##.##] (0,1,3,5) (0,2,4,5) (1,3,4) (0,2,3,4) (0,2,3,5) (0,2,3,4,5) (2,5) {45,14,43,44,27,41}
[.#####.#.] (1,2,3,5,6,8) (0,1,3,4,5,6,8) (1,3,5,6) (0,2,4,5,7,8) (0,1,2,3,4,6,7,8) (1,3,6,8) (0,1,3,7,8) {46,60,47,60,32,48,46,46,61}
[...###.#.] (0,2,3,4,5,7) (0,4,6,7,8) (1,3,4,6,7,8) (0,1,2,3,4,7,8) (0,1,2,4,6,7) (1,2) (0,1,4,8) (0,5) (0,1,2,3,4,5,8) (0,1,2,3,5,6,8) (2,4,5,8) {79,55,68,52,71,52,50,50,56}
[####.#.#] (0,1,2,4,5,6,7) (0,1,2,3,5,7) (0,2,3,4,5,6,7) (0,1,2,3,4,7) (0,3,4,5,6) (5,6) {28,9,18,27,25,23,20,18}
[.##.#.#.##] (1,3,5) (4,5,8) (1,4,6,7,8,9) (2,3,4,5,7,8,9) (0,1,2,6) (0,1,2) (0,1,2,3,4,5,6,9) (0,1,4,5,6) (0,4,5,7) (0,1,2,7,8) (2,3,4,5,8,9) (4,6,7,9) {57,56,54,24,52,50,32,20,38,26}
[####.#] (1,4) (2) (1,3) (0,1,3,5) (0,2,5) {169,181,17,172,9,169}
[.#.###] (3,5) (2,3,5) (1,3,4,5) (0,2,3,5) (1,2) (3,4) (3) {0,131,17,161,137,147}
[#.#.#..] (0,5,6) (1,3,4) (0,1,6) (2,4) (2,4,5,6) {22,13,13,11,24,21,23}
[##.###] (0,2,3,4,5) (2,3,5) (2,3,4,5) (1,3,4,5) {15,16,37,53,45,53}
[...#] (1) (0,2,3) (3) (0,1,2) {33,20,33,21}
[..#...##.] (2) (0,4) (2,3,5,6) (1,2,4,5,8) (2,3,4,5,7) (1,2,3,4,5,7) (3,4,6) (1,4) (3,4,8) (4,8) {6,22,51,35,46,35,14,16,13}
[...#..##.] (0,1,2,3,5,6,8) (1,3,4,5,6) (0,5,7,8) (0,2,3,7,8) (1,2,3,6,7) (0,4,7) (6,7) (2,3,7,8) {22,40,29,45,21,29,56,41,18}
[#.##] (0,2) (2,3) (0,1,3) (1,2) (1,3) {31,25,36,28}
[####...] (0,1,4,5,6) (0) (0,2) (2,3,4,5,6) (0,2,3,4) (3,5) (5,6) {39,0,28,25,13,35,23}
[.##.] (2,3) (0) (0,1,2) (1,2,3) (0,1) {34,27,24,17}
[..#..#] (0,2,4,5) (0,1,2,3,5) (2,4) (0,3,5) (0,1,2,4) {43,23,51,25,33,38}
[##.....] (0,4) (0,3) (0,1,2) (0,2,3,4,5) (2,3,4) (6) (0,1,2,3,4) (3,5) {193,19,50,215,48,37,16}
[##.....##.] (2,4,5,8) (1,2,6) (2,3,5,6,7,8,9) (0,1,2,3,4,5,7,8) (1,4,5,6,7,9) (3,4,5,6) (2,3,5,7,8,9) (1,4,8) (2,5,6) (0,1,4,5,7,9) (1,7) (0,4,7,9) (0,1,3,4,5,6,7,8) {27,64,50,65,87,100,78,81,70,54}
[..#..] (1,2,3,4) (0,2,3) (0,3) (0,4) (2,3) (1) {34,33,52,54,38}
[##..#..] (6) (1,2,3,6) (1,5) (0,2,3,4,6) (1,4,6) (2,4,5) (0,2,4,5,6) (0,4) (0,1,2,5,6) {38,47,64,30,35,49,50}
[#..####] (0,2,3,5,6) (2,3,6) (0,1,2,3,5) (0,1,2,3) (1,3,4) (0,1,3,4) {165,176,169,199,30,28,23}
[#..#.] (0,3) (0,1,3,4) (1,3) (2,3,4) (3,4) (2,4) (0,1,2,4) {13,28,20,30,31}
[........#.] (6,8,9) (0,1,2,3,5,7,8,9) (3,7) (0,1,2,3,4,7,8,9) (2,4,6,7,8) (3,7,8) (0,1,3,5,6,8,9) (0,2,4,5,7,9) (0,5,8) (0,1,2,3,5,6,7) {166,36,163,49,133,165,39,176,36,156}
[#.##..#.] (1,3,5,6,7) (0,2,5) (0,1,2,5,6,7) (0,2,5,6) (1,2,3,5,6,7) (0,1,4,6) (0,1,5,6,7) (0,1,5,6) (1,2,7) (4,7) {78,60,50,7,31,70,75,50}
[.###] (1,2,3) (0,2) {7,20,27,20}
[..#...#.] (2,3,4,5,6) (0,2) (0,2,3,5) (3,4,5) (1,2,3,7) (1,2,3,4,5,7) (3,5) (0,1,2,3,4,7) (0,1,2,6,7) (0,1,3,4,6) {192,193,70,229,203,49,180,34}
[.####.#] (0,2,3,4) (0,3,4,5,6) (1,2,3,4,5,6) (1,3,4,5) (0,3) {126,24,116,150,142,34,18}
[#..##..#.] (3,7) (2,6,7,8) (4,5) (1,4,5,6,8) (0,1,2,3,7) (0,7,8) (0,2,4,6,7,8) (0,2,3,4,6,7,8) {45,22,61,30,29,5,49,73,53}
[..#.#] (0,1,2,4) (0,2,3,4) (0,3) (1,2,4) {33,31,50,21,50}
[...#..##] (0,1,4,5,6) (0,1,3,5) (4,5) (0,1,2,5,6,7) (0,1,2,4,5,7) (0,2,3,5,6) (2,5) (0,5) (0,2,6,7) {70,33,201,8,32,234,53,32}
[#.....##] (2,4,5,6) (0,1,2,4,5,6) (0,1,2,5,6,7) (0,1,4,5,6) (0,2,5,6) (0,1,2,3,6,7) (0,1,2,3,4,7) (3,7) (0,3,4,5,6,7) {258,230,249,33,60,262,266,225}
[##.#.##] (2,4) (0,2) (1,3,4,5,6) (1,5) (0,4,5,6) (2,3) (0,4) (1,6) {26,30,130,105,19,16,20}
[.#.##.##] (2,3) (1) (2,4,7) (0,1,2,3,7) (2,4,6,7) (0,1,2,4,7) (1,3,5,6,7) (2) (1,3,4,7) (0,5,6,7) {29,58,66,55,56,23,31,87}
[.###..#.#] (1,2,3,6,7,8) (0,1,2,5) (0,3,4,6,7,8) (2,6,7) (0,1,3,5,6,8) (1,5) (0,1,2,5,6,8) (0,1,4,5,6,7) {35,46,29,26,6,40,47,22,35}
[..#...] (1,3,4,5) (0,3,5) (0,1,2,4) (0,1) (2,3,5) {39,31,27,41,27,41}
[#.##.###.] (1,3,6,8) (0,7) (1,2,5,7,8) (0,1,2,3,4,6,7) (4,6) (0,2,4,7,8) (2,4) (2,5,6,8) (3,4,5,8) (1,7,8) {25,28,46,16,39,19,18,41,43}
[.#...#.] (0,6) (0,1,2,4,5,6) (0,2,6) (0,1,2,5) (0,1,2,4) (1,2,3) (0,1,2,5,6) {61,48,67,14,16,19,38}
[##.#.] (0,1,3) (1,4) (1,2,3) {12,135,123,135,0}
[#.##] (0,2,3) (0,1,3) {27,19,8,27}
[.##...#..#] (0,2,3,4,5,6,7,9) (4,6) (2,3,4,6,7,8,9) (1,2,4) (0,1,2,3,5,6) (0,1,3,5,7,8) (1,3,5,6,7,8,9) (0,2,3,4,5,7,8,9) (1,2) (0,3,4,5,6,7,8,9) (1,9) {52,37,48,65,47,55,53,48,46,47}
[..#.] (0,1,2) (0,2,3) (0,3) (0,2) {26,13,24,11}
[#.#.##.#.#] (0,1,2,3,4,5,6,8) (0,1,2,3,5,6,7,8,9) (0,1,3,7,8) (0,1,2,3,4,6,7,8,9) (0,1,2,4,5,6,8,9) (4,5,6,7,9) (1,5,7,8) (0,1,2,3,5,6,8) (5,7,8) (0,2,3,4,5,6,9) {97,90,77,83,165,210,190,180,104,167}
[...#.] (0,3) (0,1,3,4) (1,2) (1,3,4) (3) {134,158,19,155,139}
[...#] (0,3) (0,2,3) (0,1,2) (2,3) (0,1) {24,14,30,22}
[...##.] (2,4,5) (1,4) (0,1,2,4) (0,2) (0,1,4,5) (1,3) (2,5) {202,199,222,6,203,28}
[.#####..] (3,5) (3,4,6) (0,1,3,4,6,7) (0,1,2,5,6) (1,2,4,5,6) (1,2,3,4,5) (0,1,2,6,7) {37,42,23,51,44,23,60,29}
[#.....##.#] (0,4,5) (0,1,3,4,7) (0,1,2,3,4,5,8,9) (0,2,4,5,6,7,8,9) (0,1,3,4,5,6,7) (6,7) (1,2,3,4,5,6,7,8) (2,3,4,6,7,8,9) (0,2,3,4,6,7,8,9) {188,160,41,181,199,167,157,168,41,36}
[#####.#.] (0,1,4,5,6) (0,1,3) (0,3,7) (0,1,2,5) (1,5) (0,1,6,7) (6,7) (2,3,4,5,6) (0,3,4,6) {162,144,35,46,30,46,151,137}
[#..#.###.] (1,8) (0,2,3,5) (3,5,6,7) (0,1,2,4,5,6,7) (1,2,3,5,6,8) (2,4) (2,3,7) (0,7) (1,2,6) {51,49,67,41,31,56,50,51,24}
[#.###..] (0,1,3,5,6) (4,5) (0,3,5,6) (4,5,6) (1,2,3,4,5) (0,1,2,4,6) (0,1,2,3,5) {36,41,38,50,43,73,35}
[.#.###.] (2,4,5) (0,6) (1,3,4) (1,2,3,4) (0,2,5) (1,3,4,6) (0,1,2,4,6) {43,19,38,11,29,29,28}
[##...##.#] (1,6) (0,1,2,3,4,5) (1,4,8) (1,4,6,8) (4,5,7) (0,2,3,7,8) (2,7,8) (1,3,5,8) (0,2,3,4,7) (2,5,8) {54,57,72,74,49,43,13,57,65}
[#...#..] (0,1,2,3,4,5) (0,3,6) (3,6) (2,3,5) (0,3,5) (3,4,5) {25,16,27,44,20,40,4}
[#.#.#.] (2,3,5) (0,2,4) (0,1,3,5) (1,2,4,5) {17,16,26,5,25,17}
[##.....###] (0,2,4,5,7,8,9) (0,6,8) (2,7,9) (0,4,6,8,9) (0,4,7,8,9) (0,1,2,3,4,5,6,9) (0,1,2,6,7,8) (1,2,4,5) (2,3,6,7,9) (0,2,3,5,6,7,8,9) (4,5,6,7,8,9) (0,1,3,4,5,8,9) (1,2,3,4,6,7,8,9) {75,73,86,62,102,61,86,58,79,106}
[...##] (4) (1,2,3) (0,2,3,4) (0,1,3) (0,4) (1,2,4) {155,33,16,30,149}
[..#.##...] (0,1,6,8) (1,2,6) (0,4,7,8) (0,3,4,6,7) (2,4,6) (1,2,3,6) (1,2,5,6,8) {185,208,39,15,16,18,224,14,189}
[....##] (2,3,4,5) (0,1,2,3,4) (0,1,4,5) (0,3) (0,1,2,4) (0,5) {64,31,179,181,184,176}
[...#####] (0,1,2,4,7) (0,1,2,4,6) (0,1,2,3,6,7) (0,1,4,5,6) (0,1,4,6,7) (1,2,3,4,5,6) {17,20,9,6,17,10,20,7}
[##.#.] (3,4) (0,3,4) (2,3) (0,2,4) (1,2) (2,4) (0,1,4) {52,13,51,210,240}
[.#.#.#.] (0,1,3) (2,4) (1,2,4,5) (2,3,5,6) (0,3,4,5,6) (1,3,5) (2,5) {3,42,49,35,23,65,13}
[.#.###.#] (0,1,2,5,6) (2,3,4,6) (1,4,6,7) (0,3,6,7) (0,1,2,4,5,7) (0,1,2,4,6,7) (0,1,3,4,6,7) (2,6) (1,2,3,5) (0,1,2,4) {71,69,69,55,65,34,69,70}
[#####..#] (1,5,6) (1,6,7) (0,2) (0,1,2,3,4,7) (0) (2,3,5,6) (0,1,2,3,4,6,7) (1,5,7) {19,70,27,27,18,45,55,53}
[##.#] (0,1) (0,2) (0,1,3) {35,25,10,13}
[..#.##..##] (1,2) (0,1,3,4,5,7,8,9) (0,1,3,4,7) (3,8,9) (0,1,5,7,8) (0,1,2,4,5) (0,1,3,5,6,7,8,9) (3,4,5,6,7,9) (0,1,2,4,5,7) (4,6,8,9) (0,1,3,4,5,6,8,9) {158,173,34,138,139,145,116,48,147,131}
[..#.] (1,2,3) (2) (0,1,3) (2,3) (3) (0,1) {18,21,24,41}
[##.#] (0,1,3) (0,2,3) {183,171,12,183}
[.#...##..#] (0,1,2,3,4,7,8,9) (0,1,3,5,9) (3,6,7,8,9) (1,5,7) (2,4,5,6,7,8,9) (0,1,4,8,9) (0,5,8,9) (0,2,3,4,8,9) (0,1,4,6,7) (4,7) (0,3,4,8) (0,2,6,9) {85,54,46,56,89,53,30,65,86,96}
[..##.#] (0,1,2,5) (0,1,5) (0,5) (2,4) (2,3,5) (0,3,4) {223,218,44,22,9,239}
[#######...] (2,3,4,7,8) (3,4,5,7) (9) (0,1,2,3,4,5,7,8,9) (1,7,8) (0,1,4,5,6,7) (2,3,4,5,6,8) (3,4) (0,1,3,4,5,6,7,9) (2,3,7,8,9) (4,7) (6,9) (0,2,7,8,9) {38,51,54,92,93,61,51,90,70,62}
[#.##.###] (0,3,6) (1,2,4) (3,5,6,7) (1,4,7) (1,4,5,7) (2,4,5,7) {12,24,0,23,24,22,23,35}
[###...###] (0,2,3,6,8) (0,1,4,5,7,8) (0,1,2,3,4,5,7,8) (6,7,8) (3,8) (0,5,6) (4,6) {9,3,0,13,11,9,21,10,23}
[..#.#.#.##] (0,1,2,3,6) (2,4,5,6,8) (1,3,8) (0,1,3,4,5,6,7,9) (0,4,5,6,7,8,9) (0,2,3,5,7,8) (0,1,3,4,5,6) (0,1,4,5,6,8) {59,43,27,45,54,70,54,42,67,26}
[#.#.#] (0,2,3,4) (0,3,4) (1) (1,2,3) {6,21,14,18,6}
[#.##.#.#] (1,2,6) (0,2,3,4,6) (0,1,3,4,6,7) (1,2,3,4,5,6,7) (0,1,3,7) (0,2,3,5,7) (0,3,4,5,6,7) {44,23,28,45,30,29,41,40}
[####.] (0,1,3) (0,2,3,4) (4) (2,4) (0,3,4) (1,4) (1) {3,10,10,3,13}
[#.#..#.#] (3,7) (4,7) (2,5,6) (1,2,3,4,7) (1,2,4,7) (0,1,2,6) {3,122,128,115,125,6,9,134}
[#...##..#] (0,5) (1,2,3,4,5,6,7) (1,2,3,4,5,8) (0,1,2,3,6,7,8) (3,4,6,8) (2,4) (1,2,6,8) {17,64,84,48,57,40,48,26,52}
[.#.#.#.] (2,4,5,6) (1,2,3,4,6) (2,3,4) (0,1,4,5,6) (4) {14,31,34,27,68,21,38}
[#.#.#] (2,3) (2,3,4) (0,2,4) (1,4) {10,12,31,21,28}
[.##.######] (0,1,2,3,4,5,6,9) (3,5) (1,2,3,8,9) (1,3,4,5,6,7,8,9) (2,3,8) (1,2,3,4,6,7,8,9) (0,3,4,5,6,7,9) (0,3,4,6) (0,3,9) (0,2) {43,42,61,74,33,30,33,19,36,55}
[.#.##] (1,3,4) (1,2) (0,2,3,4) (2,4) {1,38,37,20,37}
[###.##] (0,2,3,4) (2,3) (2,3,5) (1,2,3,5) (0,3,4,5) (0,1,2,4,5) (3,4) {15,8,33,29,17,24}
[#.#.##...] (1,8) (2,5,8) (2,3,4,5,8) (2,3,4,5,6) (1,3,4,7) (2,3,6,7) (0,2,8) (3,4,5,6,7,8) {1,158,38,182,182,41,12,155,41}
[#.#.] (0,2,3) (0,2) (1,3) {21,8,21,27}
[#.....#.] (2,3) (0,1,4,5) (1,3,4,6) (4,5,6) (4,7) (1,2,4,5,7) (2,3,6) (0,6) {18,21,31,22,43,33,23,19}
[.##..#.] (2,3) (0,1,4,5) (0,1,5) (1,3,5,6) (3,6) (2,6) (1,2,3,5,6) (1,5,6) (1,2,3,4,5) {20,72,46,80,13,72,62}
[#.##] (2) (3) (0) (1) {11,13,16,139}
[.#.......] (0,1,2,4,5,6,7) (0,1,2,6,7,8) (0,1) (3,4,6) (1,3,4,5,6,8) (2,4,5) (0,1,2,3,4,5,6) (0,1,2,5,7) (0,1,2,3,4,6,7) (2,3,6,8) (0,1,2,4,6,7,8) {51,53,64,44,60,34,64,38,16}
[#..##.] (0,1,4,5) (3,4) (0,2,4,5) (0,3,4) {28,0,19,26,45,19}
[#.##..##.] (0,1,3,4,5,7) (1,3,5,6) (1,7,8) (2) (1,4,5,8) (1,3,6) (2,3,4,8) (3,4,7) (0,2,4) (1,2,3,4,5,7,8) (1,2,6,7) {3,49,54,53,48,32,23,35,42}
[....##] (1,2,3,4,5) (0,2,3,4,5) (1,2,3,5) (0,1,3,5) (2,4,5) (2,3,5) {21,9,60,46,36,62}
[#.##.##.#] (1,6,7) (4,6,7) (1,4,5,6,7,8) (0,4,5,6) (0,1,2,5,6,7,8) (2,3,4,6,7) (0,1,2,3,5,8) (0,1,3,7) (1,2,4,5,6,7,8) (0,1,2,5,6) (2) {48,62,60,39,65,67,75,60,43}
[.####.##] (1,2,3,4) (2,4,5,6,7) (2,3,5,7) (1,2,5) (1,2,3,6,7) (0,1,7) (2,3,4,6,7) {14,42,218,42,184,191,192,221}
[.###] (0,1,2) (1,2,3) {195,199,199,4}
[##..###] (1,4,5) (0,1,3,6) (0,2,4,6) (3,4,5) (0,1,5,6) {135,146,6,127,27,27,135}
[.#.##] (0,1,2,3) (1,2,4) (0,1,3,4) (0,2,3) (1,4) (0,1) {52,62,34,39,39}
[.#...] (0,1,3,4) (0,2,3) (3) (0,2) (1) (0,1,4) (0,1) {63,35,28,43,20}
[#####.#.] (0,2,3,6) (0,1,4,5,7) (2,4,5,6,7) (0,2,4,6) (0,1) (1,2,3,4,7) (0,2,3,4,5,6,7) {216,31,212,201,219,196,199,209}
[.#.##...#] (1,4,5,7) (0,1,2,3,4,5,7,8) (1,2,4) (2,4,6,8) (1,4) (1,6) (2,3,5,6,7,8) (1,5,7) (0,1,3,4,5,7) {37,86,44,53,64,68,35,68,36}
[#.#..###.#] (0,1,3,4,6,7,9) (1,2,4,8,9) (0,1,6) (0,1,3,4,5,6,7) (1,4,5,8) (1,2,3,5,6,7,8,9) (2,8) (1,3,4,9) (0,1,2,3,4,5,7,9) (6) {30,91,54,52,61,50,38,40,53,66}
[.#...#] (4,5) (1,2,3) (0,1,3,4) (0,3,4,5) (0,1,2,4,5) (2,5) {19,32,30,33,34,32}
[.#..#] (2,3) (3,4) (1,4) (0,1,3,4) (0,1,4) {32,50,197,215,51}
[#.###] (2,4) (0,3) (1,2,3,4) {17,3,16,20,16}
[..#.#.##..] (1,2) (0,2) (1,2,6,7,9) (0,2,3,4,8,9) (0,2,5,6,8,9) (7) (5,8) (4,8,9) (1,3,5) {42,22,51,32,32,33,21,3,52,53}
[.....#.##] (0,1,2,3,8) (2,4) (1) (0,1,2,8) (0,2,3,4,5,6,8) (0,8) (2,3,6,7) (6) (2,4,5,8) (1,2,8) {44,25,74,35,49,37,33,1,68}
[#.###.] (0,3,5) (1,3,4,5) (0,1,3,4) (1,2) {13,29,0,29,29,16}
[###.#] (1,4) (0,1,3) (0,2) {29,21,14,15,6}
[.#....] (0,3,4,5) (0,2) (1,2,4) (0,1,3) (2,3) (0,1,2,3) (1,2,3,4,5) (5) {47,51,51,37,19,13}
[.#.#.] (1,2,4) (0,1,3) (1,3) (0,2,3) (0) {20,184,178,34,164}
[.#.#] (0,1,2) (1,3) (1,2) (0,3) (2,3) {197,210,212,36}
[#...] (2,3) (0,2,3) (0,1) {22,10,17,17}
[#####.#..] (1,2,3,5,6,7) (2,5) (0,3,4,5,6,7,8) (0,1,4,5,6,7,8) (0,1,3,4,5) (2,5,6) (1,3) (4,6) {17,35,27,30,21,44,39,17,13}
[##.##.] (2,4,5) (0,1,2,3,5) (1,3,4,5) (0,1) (0,4,5) (0,2,3) (4) (0,1,3,4,5) {64,33,206,32,211,220}
[..####.] (0,1,2,4,6) (0,1,4,6) (0,2,3,4,6) (2,4,6) (1,2,3,5,6) (0,1,5) (0,2,3,5) (0,1,2,3) {182,182,50,26,163,27,170}
[##....] (1,2,3) (2,3,5) (1,3,5) (1,4) (1,2,4) (0,3,5) {3,19,20,23,8,20}
[.#..##.#.#] (1,4,9) (1,2,3,4,5) (0,2,4,5,6,7,9) (0,1,2,4,5,6,7,9) (6,8) (0,2,8) (0,1,2,3,5,6,8,9) (4,9) {41,196,57,35,181,57,48,22,26,184}
[#.###] (0,1,4) (0,2,3,4) (1,2,3) {16,21,31,31,16}
[###...##..] (1,2,4,5,6,7,8) (0,1,2,4) (0,3,6,8) (3,4,6,8,9) (2,5,7) (0,2,3,5,7) (1,2,3,4,6,9) (0,1,4,7,8,9) (0,1,4,7) {32,38,51,49,55,36,50,43,46,35}
[.##.##.##.] (2,3,4,5,6,7,8,9) (1,2,4,5,7,8) (0,1,2,3,4,5,6,7,8,9) (1,8,9) (0,2,3,5,6,7,8,9) (0,2,4,5,6,8,9) (0,1,3,5,7,8,9) (7,8) {42,37,62,53,49,71,49,76,81,58}
[###.#.##] (0,1,3,7) (0,1,3) (0,1,5,7) (2,3,4,6,7) (3,7) (0,1,2,4,6,7) (7) (0,2,3,4,6,7) (3,4,5,6,7) (0,1,4,6,7) {70,55,33,57,55,15,55,95}
[..#...#] (1,3,6) (0,1,2,3,4) (1,2,3,4,6) (1,4,5,6) (0,5) (0,2,3,4,6) {36,34,27,37,29,13,19}
[.#...##.] (0,2,3,4,5,6) (0,2,4,5,6) (0,3,5,6,7) (0,1,7) (0,2,6) (1,2,3,4,5,6,7) {43,11,49,30,40,45,54,16}
[###.] (0,1,3) (0,2) (1,3) (0,2,3) {31,32,13,38}
[...#..] (0,2,4,5) (0,1,4) (2,4,5) (0,1,2,3,5) (0,5) (0,1,2) (1,3,4,5) {65,56,49,23,53,60}
[#.#..] (0,1,3) (0,2,4) (0,1) (4) (0,1,2) {235,219,31,14,22}
[#...#.##] (5) (1,3,6,7) (0,1,2,3,4,6) (2,3,4,6,7) (1,2,3,4,5,6) (0,1,4,7) (0,1,2,5) (0,1,3,4,7) (0,1,3,5,6,7) (1,4) {38,70,48,68,57,38,59,56}
[.#.##...#] (1,3,4,5,6,8) (1,2,3,5,6,7,8) (0,2,3,4,8) (0,1,5,6) (0,4,7) (0,1,2,3,4,6,7,8) (1,3,4,5) (4,6) (1,8) {172,204,182,194,185,22,195,182,204}
[##.#..] (1,5) (0,2,3,4,5) (2,4) (0,1,2,3,4) {34,23,42,34,42,19}
[#....#.#.] (0,2,3,4,6) (5,8) (3,4,5,7) (0,5,7) (0,2,3,4,5) (0,6,7) (0,2,4,5,6,7,8) (1,2,3,5,6) (1,2,7) (0,1,2,3,4,8) (1,3,4,5,6,7,8) {53,25,39,43,45,46,38,37,28}
[...##.] (0,2,3,5) (0,3,4,5) (4,5) (1) (0,1,2) {19,29,10,9,25,25}
[...#] (0,1,3) (0,1,2) (0,1,2,3) {32,32,22,19}
[....#...] (0,3,7) (1,2,4,7) (0,1,2,3,4,5) (0,1,2,5,6) (0,1,3,4,6,7) (5,6) (0,1,2,4,5,7) (2,4) (1,2,3,4,5,6,7) {225,86,81,213,77,59,44,224}
[.##.] (0,2,3) (0,1) (0,2) {221,18,203,191}
[...#.#] (0,1,3) (2,3,4) (0,2,4) (1,2,5) (4,5) (0,1,2,5) (0,1,2,4,5) {18,29,26,9,8,21}
[...###] (0,1,4,5) (2,4,5) (0,1,3,5) (1,5) (0,3,5) {42,25,2,24,20,47}
[..##.#.##.] (0,1,2,4,9) (2,5,7) (6,7) (3,4,9) (0,2,3,5) (0,1,2,6,7,9) (0,1,2,3,5,6,8) (0,1,2,3,6,7,8,9) (0,1,7,8) (1,2,3,4,6,7,8,9) {73,62,80,53,23,36,47,43,34,49}
[.##.#..] (0,1,3,4,6) (0,1,2,4) (1,5,6) (1,4) (3) (1,2,4,5,6) (0,2,3,5) (4,5) {22,56,36,10,64,35,28}
[##.#.####] (1,3,6,7,8) (3,5,7) (3,6) (1,2,3,6,8) (2,5,6,8) (0,2,3,4,7) (1,2,3,4,5,7,8) (3,4,8) (2,3,6,7,8) (0,2,3) {30,17,71,81,30,37,43,43,58}
[#.#.###] (0,5) (3,4) (3) (6) (1,3,5,6) (3,5,6) (0,4,5,6) (1,2,4) {29,141,131,31,154,39,24}
[.####.#.##] (0,8) (2,3,5,8,9) (2,7) (5,8) (1,2,5,7,8) (4,5,7,8,9) (0,1,2,4,6,7) (0,2,3,4,5,6,8,9) (0,1,2,3,5,6,7,9) (0,1,2,6,7) (0,1,5,6,9) {86,59,81,40,26,63,75,58,40,61}
[#..#] (0,2,3) (0,1) (0,3) (2) {42,13,17,29}
[.###] (0,2) (1,2) (2,3) (1) (3) (0,2,3) {19,26,33,23}
[####.#...] (0,2,3,5,8) (0,1,2,4,6,7) (3,4,6,7,8) (0,5,6,7,8) (3,4,5,6,7) (0,2,3) (1,2,3,4,5,6,7,8) (1,2,3,5,6,7,8) {22,37,39,43,44,41,61,61,24}
[..###.#] (1,2,5,6) (3,5) (1,2,3) (2,3,4,6) (0,2,3,6) (0,5,6) {11,14,37,45,13,21,30}
[##..###.##] (0,1,2,5,6,7,8,9) (0,1,2,3,4,6,8,9) (0,1,2,3,5,6,7,8,9) (1,3,4,5,6,7,9) (1,5,6,7,8) (0,2,3,6) (0,3,6) (5,7,9) (1,3,5,7) (1,5,9) (0) (2,8) (1,2,3,4,5,6,7,9) {67,90,64,82,46,78,83,71,44,81}
[#..##] (0,1,3,4) (0,2) (0,3,4) (0,1,3) {18,17,1,17,1}
[.#..#.#..#] (1,2,3,7,8,9) (1,2,3,4,5,6,7) (0,1,4,5,6,7,8) (1,2,4,7,8,9) (0,1,3,4,6,8,9) (3,6,7) (0,1,2,3,6,7,8) (5) {19,67,50,52,46,31,43,67,50,38}
[.##.] (0,1,3) (2) (1) {9,14,20,9}
[#.####.##] (3,4,8) (3,6,7) (0,1,2,3,4,5,7,8) (1,5) (0,1,3,4,5,6,8) (0,3,4,5,6,7) (1,2,3,4,5,6) (0,1,2) (0,2,5,6,7,8) {69,64,58,76,65,85,70,56,66}

576
11-input.txt Normal file
View File

@@ -0,0 +1,576 @@
zez: afn pnv uvw
zae: hku ewv ydy
qet: unr qfm
igc: jcr
vzt: dac vvp nzv
bcl: kgk kns
mgt: rxm
jnn: hgv arg
ijx: mzw
crz: vot vut kcz
hmv: sga nnn
lll: czl rdx
veg: lll ttv ymx
beu: jfq own
uli: efk
zzv: oje xpx
qpn: wag kxd
arg: qmi
elp: fqe nwv fbt
tdq: som
wci: ewv ydy
odr: kps jjp odk fsu
nej: sni yyr otm
lcr: kns wko
dtc: clh zpj
qeq: ant ong wpc
hgv: wjv kco
cqt: you
vtp: gun rwh iqr jxr
ouo: efk
mhr: hgo lyi jeh
vha: hrj osn tjh
szx: xqw
chx: okn owt sbz sve
vcl: kva wcg
dak: svg rxg
sao: hgz xhz
hbw: itr wge jef
xbd: out
rbq: qet kaz zhk fim aky xli veg sdm
faz: zba zoi
wua: tol
ejk: ijx rww
abe: bxv
tol: yqu rwu jnn rrv flx hnq cdm fns wpr lys arc pkq amt wci mgo eui zae apo rar hcp hiz kvc fdk
qwv: bme
rzf: ohe
ajb: zpj
jng: out
psa: aar mof
kck: ycc mpf xqw
vfj: dhq
nei: lif urk qwv
zba: tol pmk dkl
nfk: ggk
gsi: dkl pmk tol
okn: clh
csd: vut
snw: unr qfm wyl
qac: odr noe dpp
zhk: zrm ttk mpk
ttk: jpm wig
xsp: xey vrh yrr
wpv: tmu
hku: mfr beu spp rpw
kpr: qeq svs
nep: pmk
zed: mpf xqw
mnf: dkl tol
yrj: hvh
osn: efk sjn
myr: uqk hfp
fpq: zyb zoe cua fom oto
tuu: fwr cda
jjp: swv xym
plh: rbq clx ikn
iwe: sjn oqa
sdw: qfm sao
bph: jua nei jwk pjt
pmk: zae rrv apo rwu flx wxl kvc hcp hnq fdk fns cdm wpr lys
jei: mpf
rme: vvp dac hst nzv eva
rzn: out
khw: noo ihr rry
vot: sbv ckk vcl
yni: cqt jeh lyi hgo
gld: dmm ooh
dgf: mpf
enx: jua nei jwk pjt
hqc: efk
sqf: clx rbq roj ikn
jml: out
eeu: mzw rbq
zsq: efk
pgg: jza
kps: xym drg vzi dch
gxy: rbq mzw clx
ooh: out
arc: yqi lpt
txu: bxi aeo syu szx qyg
uyh: zyb cua
cua: emo
aka: fnh
vst: lno loj fpy
xec: xoq vzt dnz qdc
wpr: arg
sqh: dhq rww plh ijx
tgq: out
xhz: fnh mpc
wpc: mmo byr oqg
ufn: cqt lyi
clh: xlu enx bph eby wdl xxx uaa fpq jxq brt uyh dyl xzk
xzk: rje
yqu: xkf ulo
mof: oub fwb ghi udp tbe
jua: haq urk lif qlf
fta: nwf
xpx: sbz sve owt okn
khe: qeq
bsn: kxe
dgo: xqw
wge: efk
dpp: odk jjp
hha: njk ygf
sjn: kpr rtu pab diq nxk dqw
bme: vtf
hfp: snd
zoe: ewz
nzv: ksp qqv vzo scu
wju: wsh mcy
jfa: xhc
ovn: out
jeh: clh
scu: dtc
wxd: clx rbq mzw ikn
xlu: oto cua fom
anp: xey yrr
mcy: zbn
enz: ixa
wsh: iwe
sni: mpf xqw
hvx: pfu
tbe: clx rbq roj ikn
loj: rtn egw zim
zrg: vwa kgk kns akv
njk: kck inl nyb jei
vzo: ajb amx
eud: mpf xqw ycc
qqv: amx dtc ajb
oto: emo epl
ttv: czl wue
cin: yyr sni ifu
uvw: biu
pkt: efk
kxm: nzs
qys: kzk
iqr: ryc elp dru
lcm: out
yyr: ycc
vpt: sjn efk
ril: nep ezr wig
wdl: vor dcu wpv yqh
dch: out
wue: jcr ufu
nso: ijo tgq rzn
ohg: mpc faz
hde: mpf ycc
huv: aoe zez xhc rpz qbi
vrf: oqa sjn
hrj: sjn oqa efk
akv: fft jzl
kns: jkz jzl fft
brt: tdq jcb rje kxm
pfu: kxe rzf btx
jcb: nrb som nzs
aoe: uvw jbz afn
biu: dkl pmk tol
xyd: beg
zoi: pmk
itr: oqa
yjn: nic
ezm: xiy wua
vor: pgg
qyg: ycc
imv: clx mzw rbq roj ikn
duh: lcn
yom: cin ppc qxa
unr: hgz aka
xed: hbw
ufu: tol
nwf: ooh xbd
wyl: aka xhz ohg
iij: grf rwh jxr
eui: tpk exk yyc
upt: qac
xhc: afn jbz uvw
xli: zpy ttk zrm
tqp: out
odk: swv vzi dch xym
yxk: btx
iah: tmu vst pgg
ifu: ycc
lyn: yjn poi oyp myr yom mbk qnk wtp fkd nyi onw ylg vav
efi: ycc xqw
jkz: sqf jtj imv
amx: you
pnv: vnp biu
btx: pgj twu
lwf: idh mph
hst: ksp qqv scu ggo
swv: out
ocv: xhc zez rpz qbi
jza: rtn zim
urk: mgt htm
egw: pjw ovn
wiu: gld
pqa: xpx quv
lfa: vut
lpt: vpt uma
cda: ovc
ubw: mal ybz yrj
pgc: zbn pkt
rtn: kcv ovn
idg: qmi hbw dbq kco
kjr: zyb zoe oto fom
mxe: sbz
fpy: zim
hgz: faz
you: ydh mkv wdl xlu uaa fpq brt hvx aom xzk
qdc: hst
ahu: ppc cin
apo: yqi yga
agv: wol
ybz: lzv hvh eud efi
uqk: rkn gpk
oqa: krf veu khe vdi uyk mtj anp rcw nqa pin xec nxk
aky: lll ttv ymx
ppc: otm yyr
flx: jaq ibc cgz
oxz: pgj hmv
hgo: you clh
wpm: ooh dmm xbd
fqe: dkl
vjd: sjn
lcn: roj mzw
gpk: hto dgo
ghi: ikn mzw rbq clx
jwk: haq urk qlf
wcg: mzw rbq roj
hnn: zzt
kgd: gpk
wax: pgc
ydh: zui tvm oaj upt
jbu: efk sjn
nyb: ycc xqw
qph: out
nnn: lcm tqp
pci: lcn imv
mtj: khw srk dgk hsb
rwh: elp ezm ryc
zke: syu aeo szx qyg
cqs: kzk
myu: otm yyr ifu sni
efk: ywb xec pin pab dqw nxk nqa rtu uyk mtj anp diq kpr krf veu khe xsp vdi jvn rcw
hto: ycc
cai: odr dpp noe
hcp: ulo xkf
vwa: pci
rar: qpn
qga: ikn roj rbq clx
mob: lzv hvh eud efi
bhd: quv xpx mxe oje
awe: grf gun iqr rwh jxr
mal: efi hvh
fwb: clx mzw rbq roj
mwk: nso
nqa: bvt hpj
idh: zzt qga eeu
noe: jjp odk fsu
nic: bxi syu szx qyg
dbq: vrf zsq jef
emo: wiu ssf
gwf: out
zui: qac cai
jpm: tol pmk
mzb: dgo zed hto hde
jzl: sqf lcn
ebd: jgt lwf kzk
fzx: njk ixa wev nxa
rnb: rxg svg bfp
axf: sjn
zsh: out
ydy: rpw beu mfr
bvt: mhr fwr ufn yni
jvn: khw hsb dgk
fim: lll
byr: hls tbj msc
tfk: mal mob
efl: chx xpx oje quv
aar: udp ghi fwb
gwv: ejk
rrv: cgz
dcu: vst pgg
mbk: myu qxa
czl: ufu gsi
dgk: noo ihr rry qim
vnp: dkl tol pmk
kcv: out
grf: elp ryc ezm
rmj: ixa wev nxa
kxd: sjn
bxi: ycc mpf
sve: zpj you
jbz: vnp mnf biu
sbz: you
ohe: sga nnn gzm
ihr: zpj
rmt: ttv lll
oje: sbz
nrb: idn
poi: ubw tfk
djn: pmk dkl
spp: own sna
mpc: djn zoi
wtp: zke gsd
ovc: zpj
oks: rkn gpk mzb
jfq: tjh hrj jhc
hls: you zpj
fnh: zba rvo
afn: mnf
ulo: uli wag ccf ouo kxd
dbn: nso chq dzg
vtf: zsh
krf: hsb srk khw
jxq: oaj tvm upt xyd
wqo: wcg kva wxd
lno: egw zim
tng: plh ijx dhq
uaa: tdq
umc: fkd poi wtp qnk vav myr oyp ahu onw ylg
ikn: snw vtp veg ocv fim ojt zhk yjk sdw rmt huv qet awe xli cuw aky jfa mbh iij
qim: you zpj
tjh: oqa sjn
eby: eyg yxk bsn pfu
aeo: xqw ycc
xxx: zui upt xyd oaj
veu: rme vzt dnz
ezr: dkl tol pmk
mzw: iij jfa mbh aky cuw awe xli huv rmt yjk sdw fim ojt ocv kaz zhk vtp veg sdm snw
fkn: szx
ant: byr oqg
jor: vfj ejk sqh
evw: chx oje mxe
rdx: gsi ufu
jgw: mhr fwr cda ufn yni
haq: bme htm mgt
sdm: iqr
yrr: zzv
kco: vrf jef wge zsq
jcr: tol pmk
ijo: out
rry: you
cox: aar mof
zzt: roj ikn
nzs: idn mwk
eva: qqv ggo scu
ccf: efk oqa
rje: nrb nzs som
dru: fqe xiy wua
ycc: csd prl bcl sjz psa dak nfk ekw cox lcr zvt fzw
diq: tuu jgw bvt
inl: mpf xqw ycc
zpj: qdk djg enx xlu kjr uyh dyl ycv fpq jxq brt ydh mkv bph uaa
gux: gld
lif: bme mgt
sga: gwf jng vnf
ywb: srk hsb
xym: out
clx: kaz zhk fim ojt snw veg sdm vtp huv qet sdw yjk rmt cuw aky xli iij jfa
hpj: ufn yni mhr cda fwr
cuw: zez aoe qbi
mbl: out
qlf: mgt htm
nxa: dgf nyb kck
dzg: rzn tgq
wxl: gms jaq ibc
epl: fta
prl: vot vut
qxa: ifu otm
kcz: wqo sbv
cgz: ulj kzl wju
msc: you
jne: njk
ygf: jei
cek: out
tpk: hqc
dmm: out
vtv: oqa sjn
vut: ckk vcl
srk: ihr noo juw
amt: tpk exk
ekw: ggk aar mof
fzw: mof ggk
pjt: qwv qlf urk lif haq
rxg: gwv qzr
svr: lyn vgi umc
kzl: mcy wsh pgc
qbi: pnv
ful: lzv
hsb: ihr rry juw qim
ylg: nic fkn gsd txu
qdk: pfu yxk
zrm: wig ezr
tmu: loj lno fpy
ymx: igc wue
exk: jbu vjd axf
ggo: ajb xfo dtc amx
tqe: jml cek zsh mbl qph
hiz: lpt yga yqi
kaz: ril
kgk: pci jkz
lzv: ycc
qfm: xhz ohg hgz
wol: sqh ejk vfj
nxk: wvz qeq svs
fom: ewz kay emo epl
roj: jfa yjk mbh iij snw awe ojt zhk
ggk: tbe fwb
rwu: arg xed hgv idg
quv: okn owt sbz sve
fwr: ovc lyi jeh
hnq: yga yqi
ryc: fbt nwv
pao: lwf
jaq: kzl wax
ztn: hfp kgd uqk
vnf: out
vzi: out
yqi: uma vtv vpt
iqm: spp
ejb: xqw mpf ycc
nwv: tol
pkq: tpk yyc
fns: hku iqm
vrh: evw pqa zzv efl
wag: sjn
vdi: qdc vzt rme xoq
sna: jhc osn hrj
sjz: wko kgk kns vwa
udp: ikn mzw
mbh: wyl unr qfm
zbn: efk oqa sjn
jef: sjn efk oqa
rww: ikn clx mzw roj rbq
rxm: cek mbl zsh qph
oaj: qac
onw: hfp kgd uqk oks
ewz: gux fta
vjr: kcz
chq: ijo tgq
jep: hha rmj jne fzx
xey: efl evw bhd
kvc: hku
bxv: mob ful ybz mal
fsu: xym drg
ibc: kzl wax
dhq: clx roj rbq mzw
som: mwk idn dbn
xkf: ouo ccf
bfp: gwv
qzr: vfj sqh tng
drg: out
pjw: out
lys: cgz jaq ibc
own: tjh osn
wev: kck inl jei nyb
dqw: wvz
pin: jgw tuu bvt
jgt: idh hnn
vgi: ztn ffs abe poi fkd jep
zim: kcv pjw ovn
mfr: sna own vha jfq
xiy: pmk tol
rvo: tol
qnk: ubw tfk
pab: yrr xey
rkn: hde hto zed ejb
cdm: yqi lpt
rtu: vzt xoq
kxe: hmv pgj twu
cri: svg agv
lyi: clh zpj
nyi: uqk
mgo: qpn xkf
fdk: hku ewv iqm ydy
oub: ikn rbq clx
owt: zpj
jhc: efk
beg: odr
pgj: sga gzm
svg: qzr gwv jor
fft: imv sqf
mmo: tbj hls
mkv: jwk pjt
syu: ycc
mph: eeu gxy
juw: clh zpj
wig: tol
fkd: rmj enz jne
ong: mmo byr
rcw: dgk hsb khw
kay: wiu ssf
qcf: tjh osn hrj jhc
xfo: zpj clh you
ssf: nwf wpm gld
xoq: hst dac eva nzv
ixa: inl jei dgf nyb
tvm: cai beg qac
twu: nnn
zpy: jpm nep wig
mpk: wig nep jpm
ycv: zui oaj
dkl: wxl hiz hcp fdk rrv apo jnn flx mgo eui cdm wpr yqu lys wci amt pkq
oyp: zke gsd txu
oqg: tbj
kva: clx roj rbq mzw
ojt: wyl sao qfm unr
ulj: wsh
vvp: ksp scu
ckk: kva
zvt: akv
qmi: itr
yga: vtv uma
mpf: ebd cox nfk csd vjr lfa cqs zvt crz
dnz: nzv vvp
uyk: qeq
yyc: hqc ujj axf
svs: ant wpc
sbv: wxd wcg
yjk: zpy mpk ril zrm
ujj: oqa
zyb: emo kay epl
ewv: rpw
eyg: rzf oxz kxe
otm: ycc xqw
yqh: tmu
gzm: jng tqp vnf
fbt: pmk dkl
snd: ejb hde
jtj: clx rbq roj mzw
aom: iah yqh wpv
ksp: dtc
kzk: mph
uma: efk oqa
djg: vor iah
htm: rxm vtf tqe
wko: duh
dyl: dcu yqh iah
wvz: ant wpc
noo: you clh
dac: vzo ggo scu ksp qqv
rpw: vha jfq qcf
ffs: jne fzx rmj hha enz
gsd: bxi szx syu aeo
vav: nej
ehw: kzk lwf jgt
gun: ezm
jxr: dru
xqw: bcl pao prl ebd sjz csd psa dak qys cri rnb cox ekw vjr cqs zrg lcr ehw crz fzw zvt
gms: wax wju
idn: dzg
wjv: zsq
tbj: you clh
rpz: uvw afn jbz
hvh: mpf xqw

1000
8-input.txt Normal file

File diff suppressed because it is too large Load Diff

496
9-input.txt Normal file
View File

@@ -0,0 +1,496 @@
97668,50157
97668,51385
98359,51385
98359,52575
97665,52575
97665,53785
97626,53785
97626,55034
97938,55034
97938,56284
98077,56284
98077,57485
97804,57485
97804,58599
97082,58599
97082,59720
96522,59720
96522,61011
96752,61011
96752,62293
96842,62293
96842,63219
95629,63219
95629,64637
96118,64637
96118,65759
95613,65759
95613,66948
95301,66948
95301,67785
94102,67785
94102,69157
94239,69157
94239,70372
93956,70372
93956,71497
93462,71497
93462,72391
92522,72391
92522,73588
92169,73588
92169,74677
91605,74677
91605,75577
90735,75577
90735,76527
89962,76527
89962,77334
88997,77334
88997,78807
88960,78807
88960,79327
87630,79327
87630,80406
87039,80406
87039,81692
86671,81692
86671,82145
85345,82145
85345,83121
84613,83121
84613,84404
84177,84404
84177,84975
83027,84975
83027,85494
81855,85494
81855,86592
81204,86592
81204,87652
80495,87652
80495,87676
78965,87676
78965,88740
78250,88740
78250,89295
77157,89295
77157,89838
76067,89838
76067,90648
75150,90648
75150,91244
74096,91244
74096,92217
73250,92217
73250,92230
71882,92230
71882,93396
71109,93396
71109,93796
69948,93796
69948,94048
68730,94048
68730,94809
67727,94809
67727,94758
66408,94758
66408,95089
65245,95089
65245,96007
64268,96007
64268,96250
63068,96250
63068,96202
61799,96202
61799,96958
60733,96958
60733,97436
59585,97436
59585,96828
58233,96828
58233,97534
57121,97534
57121,97396
55877,97396
55877,98131
54733,98131
54733,97773
53479,97773
53479,98175
52283,98175
52283,98456
51067,98456
51067,97614
49842,97614
49842,98235
48618,98235
48618,97487
47434,97487
47434,98106
46176,98106
46176,97992
44959,97992
44959,97234
43825,97234
43825,97343
42587,97343
42587,97475
41328,97475
41328,97086
40161,97086
40161,96999
38929,96999
38929,96224
37868,96224
37868,96534
36518,96534
36518,95278
35629,95278
35629,95798
34176,95798
34176,94596
33315,94596
33315,94217
32167,94217
32167,94017
30938,94017
30938,93419
29875,93419
29875,93320
28572,93320
28572,92335
27707,92335
27707,91771
26634,91771
26634,91292
25508,91292
25508,90722
24430,90722
24430,89993
23451,89993
23451,89058
22622,89058
22622,88249
21717,88249
21717,87950
20423,87950
20423,87200
19461,87200
19461,86247
18673,86247
18673,85600
17622,85600
17622,84972
16535,84972
16535,83818
15957,83818
15957,83194
14847,83194
14847,82131
14198,82131
14198,81126
13499,81126
13499,80183
12731,80183
12731,79509
11615,79509
11615,78372
11092,78372
11092,77532
10163,77532
10163,76010
10248,76010
10248,75053
9507,75053
9507,74092
8762,74092
8762,73055
8135,73055
8135,72149
7253,72149
7253,70795
7249,70795
7249,70085
5902,70085
5902,68911
5525,68911
5525,67490
5790,67490
5790,66691
4469,66691
4469,65248
4903,65248
4903,64335
3774,64335
3774,63137
3507,63137
3507,61856
3575,61856
3575,60662
3352,60662
3352,59529
2838,59529
2838,58343
2546,58343
2546,57131
2395,57131
2395,55892
2480,55892
2480,54676
2452,54676
2452,53518
1692,53518
1692,52280
1887,52280
1887,51047
2466,51047
2466,50147
94584,50147
94584,48634
2325,48634
2325,47435
2529,47435
2529,46159
1677,46159
1677,45037
2751,45037
2751,43735
2074,43735
2074,42540
2355,42540
2355,41440
3136,41440
3136,40187
3040,40187
3040,39003
3312,39003
3312,37702
3141,37702
3141,36629
3850,36629
3850,35406
4019,35406
4019,34280
4503,34280
4503,33068
4742,33068
4742,32005
5379,32005
5379,30924
5950,30924
5950,29889
6610,29889
6610,28717
6971,28717
6971,27573
7409,27573
7409,26669
8292,26669
8292,25449
8608,25449
8608,24676
9669,24676
9669,23306
9786,23306
9786,22403
10628,22403
10628,21705
11733,21705
11733,20341
11945,20341
11945,19857
13281,19857
13281,18293
13312,18293
13312,17548
14319,17548
14319,16511
15002,16511
15002,16236
16458,16236
16458,15367
17296,15367
17296,14521
18158,14521
18158,13110
18542,13110
18542,13065
20086,13065
20086,11920
20724,11920
20724,10924
21504,10924
21504,10871
22957,10871
22957,9785
23686,9785
23686,9422
24893,9422
24893,8528
25771,8528
25771,8112
26930,8112
26930,7439
27946,7439
27946,7070
29117,7070
29117,6038
29976,6038
29976,5771
31192,5771
31192,4984
32190,4984
32190,4519
33326,4519
33326,4219
34520,4219
34520,4482
35883,4482
35883,3439
36843,3439
36843,3095
38020,3095
38020,2870
39227,2870
39227,3158
40535,3158
40535,2565
41659,2565
41659,2852
42936,2852
42936,2524
44112,2524
44112,2000
45279,2000
45279,1788
46488,1788
46488,2310
47739,2310
47739,2367
48950,2367
48950,1804
50159,1804
50159,2234
51368,2234
51368,2144
52585,2144
52585,2549
53771,2549
53771,2273
55012,2273
55012,2455
56214,2455
56214,2142
57493,2142
57493,3027
58579,3027
58579,3427
59731,3427
59731,2947
61082,2947
61082,3867
62107,3867
62107,4342
63227,4342
63227,3931
64621,3931
64621,4462
65733,4462
65733,5072
66808,5072
66808,5293
68029,5293
68029,5570
69240,5570
69240,6136
70329,6136
70329,6925
71305,6925
71305,7721
72262,7721
72262,8355
73294,8355
73294,8527
74598,8527
74598,9036
75720,9036
75720,10333
76330,10333
76330,10765
77501,10765
77501,11424
78523,11424
78523,12187
79469,12187
79469,13065
80319,13065
80319,13864
81229,13864
81229,14274
82492,14274
82492,15569
82946,15569
82946,15997
84228,15997
84228,16975
84972,16975
84972,18086
85559,18086
85559,18601
86820,18601
86820,19675
87442,19675
87442,20608
88231,20608
88231,21531
89038,21531
89038,22646
89577,22646
89577,23868
89936,23868
89936,24672
90934,24672
90934,25781
91453,25781
91453,26818
92092,26818
92092,27910
92630,27910
92630,28912
93351,28912
93351,30291
93269,30291
93269,31123
94390,31123
94390,32350
94611,32350
94611,33635
94637,33635
94637,34545
95707,34545
95707,35695
96123,35695
96123,36876
96442,36876
96442,38138
96445,38138
96445,39253
97013,39253
97013,40456
97229,40456
97229,41635
97573,41635
97573,42864
97628,42864
97628,44148
97188,44148
97188,45339
97389,45339
97389,46492
98162,46492
98162,47736
97751,47736
97751,48931
98481,48931
98481,50157

306
Cargo.lock generated
View File

@@ -5,3 +5,309 @@ version = 4
[[package]] [[package]]
name = "aoc-2025" name = "aoc-2025"
version = "0.1.0" version = "0.1.0"
dependencies = [
"nalgebra",
]
[[package]]
name = "approx"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
dependencies = [
"num-traits",
]
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "bytemuck"
version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
[[package]]
name = "glam"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "333928d5eb103c5d4050533cec0384302db6be8ef7d3cebd30ec6a35350353da"
[[package]]
name = "glam"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3abb554f8ee44336b72d522e0a7fe86a29e09f839a36022fa869a7dfe941a54b"
[[package]]
name = "glam"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4126c0479ccf7e8664c36a2d719f5f2c140fbb4f9090008098d2c291fa5b3f16"
[[package]]
name = "glam"
version = "0.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e01732b97afd8508eee3333a541b9f7610f454bb818669e66e90f5f57c93a776"
[[package]]
name = "glam"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525a3e490ba77b8e326fb67d4b44b4bd2f920f44d4cc73ccec50adc68e3bee34"
[[package]]
name = "glam"
version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b8509e6791516e81c1a630d0bd7fbac36d2fa8712a9da8662e716b52d5051ca"
[[package]]
name = "glam"
version = "0.20.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f43e957e744be03f5801a55472f593d43fabdebf25a4585db250f04d86b1675f"
[[package]]
name = "glam"
version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815"
[[package]]
name = "glam"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774"
[[package]]
name = "glam"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e4afd9ad95555081e109fe1d21f2a30c691b5f0919c67dfa690a2e1eb6bd51c"
[[package]]
name = "glam"
version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945"
[[package]]
name = "glam"
version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3"
[[package]]
name = "glam"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9"
[[package]]
name = "glam"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "779ae4bf7e8421cf91c0b3b64e7e8b40b862fba4d393f59150042de7c4965a94"
[[package]]
name = "glam"
version = "0.29.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee"
[[package]]
name = "glam"
version = "0.30.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd47b05dddf0005d850e5644cae7f2b14ac3df487979dbfff3b56f20b1a6ae46"
[[package]]
name = "matrixmultiply"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
dependencies = [
"autocfg",
"rawpointer",
]
[[package]]
name = "nalgebra"
version = "0.34.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4d5b3eff5cd580f93da45e64715e8c20a3996342f1e466599cf7a267a0c2f5f"
dependencies = [
"approx",
"glam 0.14.0",
"glam 0.15.2",
"glam 0.16.0",
"glam 0.17.3",
"glam 0.18.0",
"glam 0.19.0",
"glam 0.20.5",
"glam 0.21.3",
"glam 0.22.0",
"glam 0.23.0",
"glam 0.24.2",
"glam 0.25.0",
"glam 0.27.0",
"glam 0.28.0",
"glam 0.29.3",
"glam 0.30.9",
"matrixmultiply",
"nalgebra-macros",
"num-complex",
"num-rational",
"num-traits",
"simba",
"typenum",
]
[[package]]
name = "nalgebra-macros"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "973e7178a678cfd059ccec50887658d482ce16b0aa9da3888ddeab5cd5eb4889"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "num-bigint"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [
"num-integer",
"num-traits",
]
[[package]]
name = "num-complex"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
dependencies = [
"num-traits",
]
[[package]]
name = "num-integer"
version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
dependencies = [
"num-bigint",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "paste"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[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 = "rawpointer"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]]
name = "safe_arch"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323"
dependencies = [
"bytemuck",
]
[[package]]
name = "simba"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c99284beb21666094ba2b75bbceda012e610f5479dfcc2d6e2426f53197ffd95"
dependencies = [
"approx",
"num-complex",
"num-traits",
"paste",
"wide",
]
[[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 = "typenum"
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "unicode-ident"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "wide"
version = "0.7.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03"
dependencies = [
"bytemuck",
"safe_arch",
]

View File

@@ -4,6 +4,7 @@ version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
nalgebra = "0.34.1"
[[bin]] [[bin]]
name = "1-secret-entrance" name = "1-secret-entrance"
@@ -31,4 +32,20 @@ path = "src/6-trash-compactor.rs"
[[bin]] [[bin]]
name = "7-laboratories" name = "7-laboratories"
path = "src/7-laboratories.rs" path = "src/7-laboratories.rs"
[[bin]]
name = "8-playground"
path = "src/8-playground.rs"
[[bin]]
name = "9-movie-theater"
path = "src/9-movie-theater.rs"
[[bin]]
name = "10-factory"
path = "src/10-factory.rs"
[[bin]]
name = "11-reactor"
path = "src/11-reactor.rs"

131
src/10-factory.rs Normal file
View File

@@ -0,0 +1,131 @@
use std::cmp::min;
use std::fs::File;
use std::io::{self, BufRead, BufReader};
use std::str::FromStr;
use std::u64;
use nalgebra::{DMatrix, DVector};
#[derive(Debug)]
struct Machine {
lights: Vec<u64>,
buttons: Vec<Vec<u64>>,
joltages: Vec<u64>
}
impl FromStr for Machine {
type Err = io::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let groups: Vec<_> = s.split(' ').collect();
let lights_part = groups[0];
let lights = lights_part[1..lights_part.len()-1]
.chars()
.rev()
.map(|c| if c == '#' { 1 } else { 0 })
.collect();
let buttons: Vec<_> = (1..groups.len()-1)
.map(|i| parse_button_group(groups[i]))
.collect();
let joltages_part = groups[groups.len()-1];
let joltages: Vec<_> = joltages_part[1..joltages_part.len()-1]
.split(',')
.map(|j_s| j_s.parse::<u64>().unwrap())
.collect();
Ok(Machine { lights: lights, buttons: buttons , joltages: joltages })
}
}
fn parse_button_group(s: &str) -> Vec<u64> {
s[1..s.len()-1].split(',')
.map(|x_s| x_s.parse::<u64>().unwrap())
.collect()
}
fn parity_solve(machine: &Machine, target: &Vec<u64>) -> Vec<u64> {
let mut solutions: Vec<u64> = Vec::new();
for selection in 0..(1 << machine.buttons.len()) {
let mut parity = target.iter().rev()
.fold(0, |state, x| (state << 1) + (x & 1));
for (i, button) in machine.buttons.iter().enumerate() {
if selection & (1 << i) != 0 {
for j in button {
parity ^= 1 << j;
}
}
}
if parity == 0 {
solutions.push(selection);
}
}
solutions
}
fn minimum_solve(machine: &Machine) -> u64 {
fn apply_button(machine: &Machine, button_idx: usize, mut current: Vec<u64>) -> Option<Vec<u64>> {
for i in &machine.buttons[button_idx] {
if current[*i as usize] == 0 {
return None;
}
current[*i as usize] -= 1;
}
Some(current)
}
fn recurse(machine: &Machine, target: &Vec<u64>, max_cnt: i64) -> Option<u64> {
if target.iter().sum::<u64>() == 0 { return Some(0) };
if max_cnt <= 0 { return None };
let parity_solutions = parity_solve(machine, target);
let mut min_solution = None;
for parity_sln in parity_solutions {
let current = (0..machine.buttons.len())
.fold(Some(target.clone()), |state, i| {
if parity_sln & (1 << i) != 0 {
apply_button(machine, i, state?)
} else {
state
}
});
let Some(current) = current else { continue };
let parity_ones = parity_sln.count_ones() as i64;
let new_max_cnt =
(match min_solution {
None => max_cnt,
Some(ms) => min(ms as i64, max_cnt)
} - parity_ones) / 2;
let new_target = current.iter().map(|&x| x / 2).collect();
let sln = recurse(machine, &new_target, new_max_cnt);
let Some(sln) = sln else { continue };
min_solution =
match min_solution {
None => Some(parity_ones as u64 + 2u64 * sln),
Some(ms) => Some(min(ms, parity_ones as u64 + 2u64 * sln))
};
}
min_solution
}
let result = recurse(machine, &machine.joltages, i64::MAX).unwrap_or(0);
println!("Result: {}", result);
result
}
fn main() -> Result<(), io::Error> {
let f = File::open("10-input.txt")?;
let reader = BufReader::new(f);
let machines: Vec<_> = reader.lines()
.map(|l| l?.parse::<Machine>())
.collect::<Result<_,_>>()?;
println!("Parsed {} machines: \n {:?}", machines.len(), machines);
let presses: u64 = machines.iter()
.map(|m| minimum_solve(&m))
.sum();
println!("Result: {}", presses);
Ok(())
}

70
src/11-reactor.rs Normal file
View File

@@ -0,0 +1,70 @@
use std::{collections::HashMap, fs::File, io::{self, BufRead, BufReader}};
#[derive(Clone)]
enum GraphNode {
Output,
Branch(Vec<String>)
}
fn count_paths(
node: &str,
nodes: &HashMap<String, GraphNode>,
memo: &mut HashMap<String, usize>
) -> usize {
if let Some(&count) = memo.get(node) {
return count;
}
let count =
match nodes.get(node) {
None => 0,
Some(GraphNode::Output) => 1,
Some(GraphNode::Branch(children)) => {
children.iter()
.map(|c| count_paths(c, nodes, memo))
.sum()
}
};
memo.insert(node.to_string(), count);
count
}
fn main() -> Result<(), io::Error> {
let f = File::open("11-input.txt")?;
let reader = BufReader::new(f);
let nodes: HashMap<String, GraphNode> = reader.lines()
.map(|line| {
let line = line?;
let parts: Vec<_> = line.split(' ').collect();
let name = parts[0][..3].to_string();
if parts[1] == "out" {
Ok((name, GraphNode::Output))
} else {
let branches: Vec<String> = parts[1..].iter().map(|s| s.to_string()).collect();
Ok((name, GraphNode::Branch(branches)))
}
})
.collect::<Result<_, io::Error>>()?;
let svr_paths = count_paths("svr", &nodes, &mut HashMap::new());
let missing_fft_paths = count_paths("svr",
&(nodes.clone()
.into_iter()
.filter(|(k, _)| k != "fft")
.collect()), &mut HashMap::new());
let missing_dac_paths = count_paths("svr",
&(nodes.clone()
.into_iter()
.filter(|(k, _)| k != "dac")
.collect()), &mut HashMap::new());
let missing_both_paths = count_paths("svr",
&(nodes.clone()
.into_iter()
.filter(|(k, _)| k != "fft" && k != "dac")
.collect()), &mut HashMap::new());
println!("Result {}", svr_paths + missing_both_paths - missing_fft_paths - missing_dac_paths);
Ok(())
}

103
src/8-playground.rs Normal file
View File

@@ -0,0 +1,103 @@
use std::{collections::HashMap, fs::File, hash::Hash,io::{self, BufRead, BufReader}};
#[derive(PartialEq, Eq, Clone, Hash, Debug)]
struct Node {
x: u32,
y: u32,
z: u32,
}
impl Node {
fn square_dist(a: &Node, b: &Node) -> i64 {
let dx = i64::from(a.x) - i64::from(b.x);
let dy = i64::from(a.y) - i64::from(b.y);
let dz = i64::from(a.z) - i64::from(b.z);
dx*dx + dy*dy + dz*dz
}
}
impl From<&str> for Node {
fn from(value: &str) -> Self {
let coords: Vec<_> = value.split(',').map(|s| s.parse::<u32>().unwrap()).collect();
Node {
x: coords[0],
y: coords[1],
z: coords[2]
}
}
}
#[derive(Debug, Clone)]
struct Edge {
a: Node,
b: Node
}
#[derive(Debug)]
struct DisjointSet<T> {
parents: HashMap<T, Option<T>>
}
impl<T: Eq + Hash> FromIterator<T> for DisjointSet<T> {
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
DisjointSet {
parents: iter.into_iter().map(|x| (x, None)).collect()
}
}
}
impl<T: Eq + Hash + Clone> DisjointSet<T> {
fn representative(&mut self, x: &T) -> Option<T> {
match self.parents.get(x)?.clone() {
None => Some(x.clone()),
Some(p) => {
let rep = self.representative(&p)?;
self.parents.insert(x.clone(), Some(rep.clone()));
Some(rep)
}
}
}
fn union(&mut self, a: &T, b: &T) -> Option<T> {
let rep_a = self.representative(a).unwrap();
let rep_b = self.representative(b).unwrap();
if rep_a != rep_b {
self.parents.insert(rep_a, Some(rep_b.clone()));
Some(rep_b)
} else {
None
}
}
}
fn main() -> Result<(), io::Error> {
let f = File::open("8-input.txt")?;
let reader = BufReader::new(f);
let nodes: Vec<Node> = reader.lines()
.map(|lr| lr.map(|l| l.as_str().into()))
.collect::<Result<_, _>>()?;
let node_cnt = nodes.len();
let mut all_edges: Vec<_> =
(0..node_cnt).flat_map(|a| {
let na = &nodes[a];
(a+1..node_cnt).map(|b| {
let nb = &nodes[b];
let sqr_dist = Node::square_dist(na, nb);
(sqr_dist, Edge {a: na.clone(), b: nb.clone()})
})
})
.filter(|(_, e)| e.a != e.b)
.collect();
all_edges.sort_unstable_by_key(|(d, _)| *d);
let mut ds: DisjointSet<_> = nodes.clone().into_iter().collect();
let connections: Vec<_> = all_edges.iter()
.filter_map(|(_, e)| ds.union(&e.a, &e.b).map(|_|e.clone()))
.collect();
let last_connection = connections.last().unwrap();
println!("Result {}", u64::from(last_connection.a.x) * u64::from(last_connection.b.x));
Ok(())
}

170
src/9-movie-theater.rs Normal file
View File

@@ -0,0 +1,170 @@
use std::{cmp::{max, min, Ordering}, fs::File, i64, io::{self, BufRead, BufReader, ErrorKind}, fmt::Debug, str::FromStr};
#[derive(Clone, Copy, Debug)]
struct Vertex {
x: i64,
y: i64
}
impl FromStr for Vertex {
type Err = io::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let parts: Vec<_> = s.split(',')
.map(|s| s.parse::<i64>())
.collect();
let err = io::Error::new(ErrorKind::Other, "Unable to parse vertex");
let Some(&Ok(x)) = parts.get(0) else { return Err(err) };
let Some(&Ok(y)) = parts.get(1) else { return Err(err) };
Ok(Vertex { x: x, y: y})
}
}
#[derive(Debug)]
struct Edge {
a: Vertex,
b: Vertex
}
#[derive(Clone, Copy, PartialEq, Eq)]
struct Segment {
lo: i64,
hi: i64,
truncate_lo: bool,
truncate_hi: bool,
dist: Option<i64>
}
impl Segment {
fn new(e: Edge) -> Segment {
Segment {
lo: min(e.a.x, e.b.x),
hi: max(e.a.x, e.b.x),
truncate_lo: false,
truncate_hi: false,
dist:
if e.a.x < e.b.x { Some(e.a.y) }
else { None }
}
}
}
impl PartialOrd for Segment {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
if self.hi <= other.lo {
Some(Ordering::Less)
} else if other.hi <= self.lo {
Some(Ordering::Greater)
} else {
Some(Ordering::Equal)
}
}
}
impl Ord for Segment {
fn cmp(&self, other: &Self) -> Ordering {
self.partial_cmp(other).unwrap()
}
}
impl Debug for Segment {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(format!("({}, {})", self.lo, self.hi).as_str())
}
}
fn rect_area(x1: i64, x2: i64, y1: i64, y2: i64) -> i64 {
(1 + i64::abs(x1 - x2)) * (1 + i64::abs(y1 - y2))
}
fn rect_from_point(state: &Vec<Segment>, v: &Vertex) -> i64 {
let mut max_area = i64::MIN;
let mut max_y = i64::MIN;
for segment in state {
if segment.hi <= v.x { continue }
let Some(seg_y) = segment.dist else { break };
if seg_y >= max_y {
max_y = seg_y;
if !segment.truncate_hi {
max_area = max(max_area, rect_area(v.x, segment.hi, v.y, seg_y));
}
if !segment.truncate_lo {
max_area = max(max_area, rect_area(v.x, segment.lo, v.y, seg_y));
}
}
}
let mut max_y = i64::MIN;
for segment in state.iter().rev() {
if segment.lo >= v.x { continue }
let Some(seg_y) = segment.dist else { break };
if seg_y >= max_y {
max_y = seg_y;
if !segment.truncate_hi {
max_area = max(max_area, rect_area(v.x, segment.hi, v.y, seg_y));
}
if !segment.truncate_lo {
max_area = max(max_area, rect_area(v.x, segment.lo, v.y, seg_y));
}
}
}
max_area
}
fn update_state(state: &mut Vec<Segment>, incoming: Segment) {
for i in (0..state.len()).rev() {
let current = state[i];
if incoming.lo <= current.lo && current.hi <= incoming.hi {
state.remove(i);
} else if current.lo < incoming.lo && incoming.hi < current.hi {
state.push(Segment { hi: incoming.lo, truncate_hi: true, ..current });
state.push(Segment { lo: incoming.hi, truncate_lo: true, ..current });
state.remove(i);
} else if current.lo < incoming.lo && incoming.lo < current.hi {
state[i].hi = incoming.lo;
state[i].truncate_hi = true;
} else if current.lo < incoming.hi && incoming.hi < current.hi {
state[i].lo = incoming.hi;
state[i].truncate_lo = true;
}
}
state.push(incoming);
state.sort();
}
fn main() -> Result<(), io::Error> {
let f = File::open("9-input.txt")?;
let reader = BufReader::new(f);
let vertices: Vec<_> = reader.lines()
.map(|l| l?.parse::<Vertex>())
.collect::<Result<_, _>>()?;
let mut edges: Vec<Edge> = Vec::new();
for i in 0..vertices.len() {
let j = (i + 1) % vertices.len();
edges.push(Edge {
a: vertices[i],
b: vertices[j]
});
}
edges.sort_unstable_by_key(|e| e.a.y + e.b.y);
let horizontal_edges: Vec<_> = edges.into_iter()
.filter(|e| e.a.y == e.b.y)
.collect();
let mut max_area: i64 = 0;
let mut state: Vec<Segment> = Vec::new();
state.push(Segment { lo: i64::MIN, hi: i64::MAX, truncate_lo: false, truncate_hi: false, dist: None });
for e in horizontal_edges {
max_area = max(max_area, rect_from_point(&state, &e.a));
max_area = max(max_area, rect_from_point(&state, &e.b));
update_state(&mut state, Segment::new(e));
}
println!("Result {}", max_area);
Ok(())
}