From 0fb22d2358e3d0409586fd7680e67f81f6481245 Mon Sep 17 00:00:00 2001 From: Andrew Ekstedt Date: Wed, 10 Dec 2025 06:10:56 +0000 Subject: [PATCH] day 10 part 1 --- day10/input | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ day10/input.x | 200 +++++++++++++++++++++++++++++++++++++++++++++++++ day10/parse.py | 15 ++++ day10/sample | 3 + day10/sample.x | 3 + day10/sol.go | 110 +++++++++++++++++++++++++++ 6 files changed, 531 insertions(+) create mode 100644 day10/input create mode 100644 day10/input.x create mode 100644 day10/parse.py create mode 100644 day10/sample create mode 100644 day10/sample.x create mode 100644 day10/sol.go diff --git a/day10/input b/day10/input new file mode 100644 index 0000000..45df6e2 --- /dev/null +++ b/day10/input @@ -0,0 +1,200 @@ +[.#.#] (0,2,3) (1,3) (2,3) (0,1,2) (0) {31,4,31,29} +[#..#..##.#] (1,2,3,4,5,6,7,8,9) (2,5,6,7) (0,1,3,5,7,8) (0,2,3,5,6,8,9) (0,1,3,5,6,7,8,9) (4,7) (3,5,7) (4,6) (1,2,4) (0,1,2,4,5,7,8,9) {34,50,61,55,68,80,58,88,50,48} +[....#] (0,2,3,4) (1,2) (0,2,3) (0,1) (0,4) (0,2,4) {56,27,37,17,27} +[#..#.###.] (2,7) (0,2,3,5,6) (1,2,4) (0,1,8) (0,1,3,4) (4,5,7) (0,1,3,5,6,7,8) (2,3,4,5,7,8) {162,179,40,30,44,38,18,52,161} +[#.###] (1,2,4) (2,4) (0,1) (1,3,4) (0,1,4) {10,33,28,15,44} +[#.#.] (1,2,3) (0,2) {4,1,5,1} +[.###..###.] (2,3,4,5,8) (0,2,3,5,7,8,9) (2,4,5,8,9) (1,7) (2,5,6,9) (1,2,4,5,6,7,8,9) (2,4,5,7) (1,5,6,9) {16,33,62,32,46,78,30,46,49,49} +[#.##.#.#.#] (0,1,2,3,4,5,8) (1,8) (1,4,5,6,8,9) (1,2,5,8,9) (0,1,2,3,4,5,6,8,9) (2,3,4,6,8,9) (5,7,9) (0,1,2,3,4,5,6,7,8) (0,2,4,5,6,7,8,9) {39,76,63,40,67,92,61,46,93,76} +[###.#..] (0,1,3,5,6) (1,4,5,6) (2,6) (1,3,6) (1,3,4,5,6) {1,27,6,11,20,21,33} +[###..#.#] (1,2,3,4,5,6) (2,3) (0,2,4,6) (0,5,6) (3,5) (0,1,2,4,5,7) {21,10,16,2,16,17,15,8} +[.#.####...] (0,1,4,6,7,8) (1,5,8,9) (1,6) (0,2,4,5,9) (1,3,4,6,8) (0,4,5,8,9) (2,6,7,8) (1,2,3,5,6,7,8) (0,2,6,7) (1,4,5,8,9) (1,2,3,4,5,8,9) (0,1,2,3,4,5,7,8) (1,3,5,6,8) {29,77,54,44,63,72,44,37,84,49} +[..#...#] (0,2,3,5,6) (2,5) (1,4,5) (1,2,3,5) (1,2) (2,3,5,6) {9,199,39,17,182,204,17} +[##.#.#] (1) (0,1,2,3) (0,1,2,5) (3,4) (0,4) (1,5) (2,5) {39,42,22,21,24,26} +[......###.] (0,2,3,4,6,8) (5,8,9) (2,6,7) (1,2,5,6,7) (1,2,3,4,5,7,8,9) (0,5) (0,5,6) (1,4,5,6,8,9) (2,8) (3,5,7,9) (0,1,6) {53,45,19,12,24,193,66,21,153,155} +[.##..#] (1,2,5) (0,1,2,3) (0,4,5) (0,3) {17,21,21,17,0,5} +[####.#.#.#] (3,4,6,8) (1,3,4,6,8) (2,3,5,6) (0,1,6,7,8,9) (0,1,2,8) (0,1,2,3,7,8,9) (1,2,4,6) (0,4,5,6,9) (0,1,2,3,5,7,9) (0,3,4,5,6,7,9) {51,38,54,49,28,47,49,24,31,37} +[...##..] (1,4) (2,3,4) (0,1,2,4,5,6) (0,5,6) (1,2,3,4,5,6) {18,38,32,28,48,36,36} +[.##.####] (0,1,2) (0,7) (0,1,2,6,7) (1,3,4,6,7) (2,4,5,6,7) (0,1,3,4,6,7) (3,7) (2,7) (0,1,2,3,5,6,7) (0,4,7) {225,72,54,66,44,18,71,271} +[####...#.#] (2,6,8,9) (0,2,4,7) (0,1,6,7) (1,2,6,7,9) (0,1,2,3,4,6,7) (0,2,4) (0,1,2,4,5,6,8) (3,5,6,8) (0,6,9) (0,1,4,5,6) (0,1,4,5,6,7) (3,8) (1,6,7) {70,85,46,29,50,35,103,69,25,22} +[#...#..##.] (1,2,3,4,6,9) (4,9) (1,2,3,4,5,6,7) (1,3,4,5,6,7,9) (1,3,4,8,9) (2,3,8) (1,4,5,6,7) (1,4,5) (1,2,3,6,7,9) (0,1,2,3,4,5,7,8) (0,4,5,7) (0,1,2,4,6,7,8) {14,78,67,67,84,35,68,57,17,62} +[#.##.##..#] (1,2,3,4,6,7,8,9) (0,3,4,5,6,7,8) (1,2,3,4,6,7,9) (0,3,5,6,7,9) (0,1,4,5,6,7) (2,3,4,7,8) (0,1,3,4,5,7) (0,1,3,4,5,6,8,9) (0,1,3,9) (0,1,2,4,5,7,8,9) (1,2) (6,9) {92,75,35,75,73,73,80,84,42,88} +[#......#..] (2,9) (2,3,4,5,6,8,9) (0,1,2,3,4,5,6,7,9) (0,2,3,4,5,6,7,8,9) (6) (0,1,2,9) (0,2,3,4,5,6,8,9) (0,7,8) {61,32,72,42,42,42,47,31,45,72} +[#.#.#] (0,1,2,3,4) (0,2,4) (0,2,3) {29,17,29,20,26} +[....#] (0,2) (2) (1,2,3) (0,4) (4) (0,1,3,4) {10,10,136,10,12} +[.#...] (1,2,3) (3,4) (2,3) (0,2,4) (1,3,4) (0,4) (1,2) {29,19,33,36,42} +[#####] (0,1,2,4) (0,1,2) (3) (1,3,4) (2,3) (0,1,4) (1,2,3) {37,61,65,42,32} +[#.#..#.#] (3,5,6) (0,2,3,5) (2,5,6,7) (2,3) (1,3,5) (0,1,2,3,4,5,7) (2,4,6) {21,30,53,56,28,72,49,28} +[#.##..#.] (1,2,3,5,7) (5,6) (1,2,3,4,5,6,7) (0,5,6) (3,4,5,6) (2,5) (2,4,5,6,7) (3,5,6,7) (0,1,2,4,6,7) {12,23,50,200,198,246,224,38} +[.#.#..#] (1,5) (4,5) (0,1,2,3,4,6) (1,2,3,5,6) (0,1,2,3) (2,6) {23,44,43,27,16,24,33} +[..#...#] (0,3,4,5,6) (1,2,5,6) (0,1,3,5,6) (3,4) (1,4,6) (0,1,3,4) (2,4,5,6) (0,1,2,3,4,5) (0) {55,47,38,59,73,61,50} +[####...] (1,2,3,5) (4,5,6) (0,6) (0,1,2,3) (0,1,5,6) (1,2,3,4) (0,1,3) {26,39,17,23,13,22,19} +[##.#] (1) (0,1,3) (0,3) (2,3) {33,15,15,48} +[#.##] (1,2) (2,3) (2) (0) (1,2,3) (0,2,3) {20,9,43,36} +[..###..###] (0,1,2,3,4,5,7,9) (4,5) (2,3,4,7,8,9) (0,1,2,5,6) (0,3,5,6,7) (0,2,3,4,6,7,8,9) (0,1,4,6,7,8,9) (0,3,4,5,8,9) (0,1,2,3,4,6,7,8,9) (1,3,7,8,9) (1,3,4,5,6,7) {64,39,47,79,241,231,47,69,35,55} +[.#####] (0,1,3) (0,4,5) (0,1,3,5) (0,2,4,5) {40,23,3,23,17,22} +[.#..##..] (0,1,3,4,5,7) (0,2) (1) (0,1,2,4,5) (2,4,5,6,7) (0,1,2,5,6) (2,3,4,5) (0,2,3,5,6,7) (1,3,4,5,6,7) {71,67,86,73,89,106,49,66} +[.#.#.] (0,3,4) (2,3) (1,4) (0,1,2,3,4) {17,156,18,20,158} +[###.] (2,3) (0,1,3) (0,1) {14,14,11,12} +[..#...] (1,4,5) (0,1,2,3,4) (2,5) (0,2,4) (0,5) (1,2,3,5) (0) {31,25,30,24,14,31} +[#.##.] (0,1) (3) (1,2,3) (0,2,3) (1,4) (0,2) {165,164,35,44,10} +[#.#.#.] (1,2,5) (1,2,4,5) (1,3,5) (0,3,4) {1,33,19,15,16,33} +[#..#...] (1,3,4,5,6) (1,2,3,4,5) (0,2,5,6) (0,1,2) (0,4,5) (0,1,2,4,5) {44,51,39,30,56,63,26} +[..##] (0,1,2) (0,1) (0,2) (0,3) {48,15,25,14} +[#..#.....] (0,3,4,5,7,8) (2,5) (3,5,6) (4,6,7,8) (2,3,4,5) (2,3,4,7) (1,3) (0,5,7,8) (0,2,4,5,6,7) (0,2,3,7) (5,6,7) {35,16,53,64,58,76,37,69,36} +[.#....] (0,1,4) (0,2,5) (1,2,4,5) (1,2,3) (0,1,3) (2,4) (0,2,3) (1,3) {60,49,47,39,29,25} +[#.#.] (0,1,3) (0,2) (0,1,2) (1,3) {52,37,32,25} +[#.#..#.#] (1,2,5,6) (0,1,2,3,4,7) (1,2,4,5,6,7) (1,2,3,4,5,6) (2,3,4,5,6,7) (0,2,3,4,5,7) (0,4,5,7) (2,3,5,6) (0,1) (0,4,6,7) {160,44,65,54,178,185,72,164} +[.#####...] (3,5) (0,1,2,4,5,6,7,8) (1,2,3,4,6,7,8) (0,3,4,5,6,7) (1,2,3,4,5,6) (0,1,2,4,5,7,8) (5) {41,48,48,42,60,52,46,60,48} +[..#.#.#] (0,4,5,6) (0,3,5) (2,6) (1,6) (0,2,3,4,5,6) {23,11,29,21,20,23,42} +[##.#.#.##.] (3,4,6) (0,1,4,6,7,8,9) (0,1,2,5,7,9) (1,3,7,8,9) (1,2,3,4,5,7,8,9) (0,1,2,3,4,7) (1,2,3,8) (0,1,2,4,5,8) (1,3,6,9) (1,3,7,9) (3,5) (0,1,2,3,4,6,7,8,9) (0,1,4,5,8,9) {167,207,67,89,174,32,150,167,166,169} +[#..#.##] (1,2,3,4) (1,5) (2,3,5) (1,2) (0,5) (2,5,6) (1,3,4,6) {2,22,32,28,11,23,6} +[##.#.] (0,4) (1,2) (0,2,3) (3,4) (1,3) (2,3) (0,2,3,4) {40,16,52,71,29} +[#........] (0,1,3,4,7) (0,2,5,7,8) (0,3,6,7,8) (0,2,3,4,6,7,8) (1,2,5,6,7) (0,1,2) (1,3,4,7) (4,6) (0,2) {52,41,47,43,36,22,35,65,33} +[...##.#.##] (0,1,3,4,5,6,7,8) (0,1,3,4,7,8) (0,1,2,4,6,7,8,9) (0,1,8) (0,1,2,3,4,5) (8,9) (2,5) (3) (1,3,4,5,6,7,8,9) (4,8) (1,2,4,5,6,7,8) {83,121,67,77,123,90,72,91,127,48} +[.##.#.] (0,5) (0,1,2,3,5) (0,1,4,5) (0,1,4) (1,3) {31,37,9,20,17,22} +[###..#...] (1,3,4) (0,2,3,6,7) (0,2,3,5,7,8) (0,2,7) (0,2,3,5,6,7,8) (0,1,4,6,7,8) (0,1,2,3,5,6) (0,1,2,4,5,7,8) {73,54,71,63,40,60,35,59,48} +[.#.##.#] (0,2,3,5,6) (4,5) (0,1,4,5,6) (1,2,5) (0,1,2,3) (2,5,6) {216,216,242,216,0,42,26} +[.###..#.#.] (1,2,5,6,7,8) (1,5,7,9) (1,3,4,5,8,9) (0,5,7) (1,2,3,4,8,9) (2,3,5,8,9) (1,2,4,5,6,7) (1,3,4,9) (2,3,4,5,7,9) (1,5,9) (0,2,6) {17,74,36,44,45,76,12,38,49,67} +[##.#####] (0,2,3,4,5,6,7) (0,1,5) (0,2,6) (0,2,3,4,5,6) (0,1,3,4,5,6,7) (0,6,7) (0,1,2,3,6,7) {107,49,64,63,47,62,92,54} +[...#.##] (4,5) (0,3,4) (0,1,4,6) (0,2,3,5) (1,5) (0,1,2,3,5) {65,43,34,54,34,49,11} +[###.#.##] (1,2,3,5,6) (1,4,5) (1,3,4,7) (2,4,5,6) (0,1,2,4,6,7) (1,2) (0,5,7) {19,38,10,21,30,40,7,34} +[#######.] (1,3,5) (1,3,4,5,7) (1,2,3,4,5,7) (0,4,6,7) (2,3,7) (1,3,4,6,7) (1,4,5,6,7) (0,1,6) (0,2,3,4,6,7) {23,198,30,208,50,183,41,55} +[.##.#...#] (1,2,3,6,8) (0,1,3,4,6) (0,7) (0,4,6) (5,7) (1,2,3,5,6,7,8) (1,2,3) (0,2,3,4,5,7) (0,3,4,5,6,7,8) (3,7) {217,61,201,236,204,199,80,217,46} +[..###] (2,3,4) (0,1,4) (0,1) (0,1,2,4) (1,2,4) {222,242,228,14,241} +[..#.#..##] (1,3,6,7,8) (1,3,4,5,6,8) (0,1,4,5,6,7,8) (0,3,5,6,7,8) (0,1,2,6,7) (0,1,3,4,6,7,8) (1,3,4,5,7) {46,73,18,66,38,38,73,76,55} +[#.###] (0,2,3,4) (1,2,4) (0,1,2,4) {135,128,147,19,147} +[..##] (0,1,2) (1) (0,3) (0,2) {34,34,22,12} +[.##...#.] (0,2,5,7) (2,3) (4) (0,4,5,6,7) (0,1,2,3,4,5,6,7) (0,2,3,4,5,6) {32,9,39,34,29,32,27,14} +[.#..#.#] (0,2,6) (0,1,3,5) (0,1,3,5,6) (1,3,4) (0,3,4,5,6) (1,4,6) (0,3) (0,1,2,3,5) {63,42,20,59,14,36,23} +[.#.#####.#] (0,2,3,4,6,7,8,9) (0,2,6,8) (0,1,2,6,8,9) (2,3,4,5) (2,3,4,5,6,7,8,9) (0,2) (1,2,3,4,6,9) (0,2,5,7,8) {40,27,70,38,38,23,56,26,49,48} +[#.#.#.#] (0,5,6) (0,1,2,3,4) (0,1,2,5,6) (0,1,3,4,6) (0,2,4,6) (5) (0,1,4) (0,1,2,3,4,5) (4) {48,38,24,9,35,41,23} +[###....#..] (0,2,4,9) (0,7) (1,2,4,6) (1,4,5,7,8) (0,1,3,5,7,8,9) (0,2,5) (0,1,2,3,6,7) (1,2,4,5,7,9) (5,6,8,9) (0,4,6,8) (0,1,2,3,4,5,6,8,9) (1,2,3,4,5,6) {197,55,181,40,62,198,45,41,53,50} +[.##....##] (1,2,4,7) (0,2,3,4,6,7,8) (2,4,6) (0,2,3,6,7,8) (1,2,8) (3) (0,1,2,3,5,7,8) (0,2,5,6) {55,42,84,51,34,35,42,51,51} +[.#####.] (1,3,4,6) (1,3,4) (1,3,4,5) (1,2,3,4,5) (0,1,2,4) (4,5) (0,1,2,3,5) (1,6) {17,76,29,49,66,47,31} +[.#..] (3) (0,3) (1,2) (0,1,3) (1) (0) {54,44,17,39} +[#.##] (0,1,3) (0,2,3) {27,16,11,27} +[#.....] (3,5) (0,1,3,4,5) (0,2,3,4,5) (0,1,5) (1,4) (0,1,2,5) {200,207,5,20,29,201} +[.#..###.#] (0,1,2,4,5,6,7,8) (1,3,4,6,7,8) (1,3,6) (0,1,3,4,5) (1,2,3,4,5,6,8) (4,8) (0,2,4,7) (4) (2,3,4,5,8) (0,3,5,6,7,8) {41,50,22,46,84,39,34,30,43} +[.####.] (0,2) (1,2) (1) (0,5) (0,2,3) (0,1,4) (1,3,4,5) (1,2,4,5) {12,28,23,5,15,12} +[#....#.#] (0,2,3,5,6) (2,5,7) (0,1,4,5,6,7) (2,6) (3,4,6) (1,7) (0,6) (0,1,2,3,4,7) {42,23,38,27,21,30,50,27} +[###.] (0,1,2) (1,2) (1,2,3) (0,3) (1) {148,181,171,15} +[#.#....#] (0,3,6) (2,4,5,6) (3,5) (1,2,3,5,6) (1,2,4,6,7) (1,3) {10,23,8,185,3,160,18,1} +[#.#.##.] (0,1,3,5) (0,3,5,6) (1,2,3) (0,6) (0,2,3,4,6) (2,5) (0,4,5) (1,3,6) {228,210,37,243,30,213,50} +[..#.#..#] (2,5,6,7) (1,2,7) (0,1,4,5,6) (0,3,4,5,6) (0,1,5,6,7) (0,1,2,3,7) (0,1,2,5,6,7) (4,7) {45,49,41,21,18,31,31,52} +[.##.] (2,3) (0,3) (1,2) (0,2) (1) (3) {20,21,30,47} +[.###.##] (0,1,2,6) (0,3,5) (0,1,2,4,6) (3,4,5,6) (1,2,3,4,6) {25,32,32,205,222,198,230} +[##..##] (0,2,4,5) (2,4) (1,3,4,5) (0,1,3,4) (2,3) (1,4) {185,43,206,45,229,188} +[..#.##] (0,2,4,5) (2,4,5) (1,2,3,4) (0,1,2,4,5) (0,3,4) (1,3,5) {29,21,47,33,59,28} +[.#....#.##] (2,3,5) (1,4,6,7,8) (3,4,5,6,8) (1,2,3,5,7,8,9) (0,2,3,4,5,6,9) (0,1,3,4,5,7,8,9) (1,9) (0,2,4,5,8) {18,38,43,46,34,59,20,20,48,41} +[#..#] (1,2,3) (1,2) (0,3) {19,11,11,25} +[##..##] (1,2,3,4) (3,5) (1,2,5) (1,2,4,5) (0,1,5) {9,33,24,18,14,39} +[#.#....###] (5,7,8) (0,1,3,5,7) (0,3,8) (0,1,2,3,5,6,7) (0,1,2,3,5,6,7,9) (0,2,4,5) (4,9) (3,5,7,8) (0,1,2,4,6,7,9) (1,2,3,4,5,6,7,9) (2,4,6) {70,64,67,63,56,90,50,84,28,44} +[#...#.] (0,2,3,4,5) (0,1) (0,1,2,3) (0,2,3,5) (1,4) {47,44,34,34,14,14} +[.#.##.#...] (0,6) (4,5,6,7) (0,1,2,3,4,5,9) (1,2,3,4,5,6,7,9) (4,7) (1,3,4,6) (2,3,6,8) (0,1,3,9) (0,2,3,4,5) (0,3,4,6,7,9) {54,34,43,69,61,33,40,17,10,26} +[.##..##] (0,2,4,5,6) (2,3,4,6) (0,1,2,3,4) (1,2,5,6) (0,3,5) {26,2,19,13,17,28,19} +[...####] (5) (1,3,4,5,6) (0,1,2,3) (0,1,2,3,5) (2,6) (1,2,5,6) (2,3) {26,41,175,48,5,32,137} +[.#...#] (1,2,4) (0,1,2,3) (0,2,3) (1,3,4) (2,3) (1,3,4,5) {23,124,29,139,110,109} +[####...] (0,1,2,5,6) (2,5) (0,1,2,3,4,6) (1,2,6) (1,2,3,4,5,6) (5) (0,3,5,6) (0,2,3,4,5) (0,2,4,6) {28,37,59,16,17,55,40} +[..#.#.##] (0,1,2,3,4,5,7) (3,7) (0,1,3,5,6) (0,1,2,4,5,6,7) (1,3,4,5,7) (0,1,2,3,6,7) (0,2,4,5,6,7) (0,1,2,3,4,7) (0,5,6,7) (5,6) {66,61,39,79,51,79,54,85} +[###.] (0,2) (0,1) (0,1,3) (1,2,3) (3) (1) {27,33,6,22} +[.#..##.] (2,3,4,6) (0,2,3,4) (2,3,4,5,6) (0,1,3,4,5,6) (0,1,4,5,6) (4,5) (0,1,3,6) (0,2) {35,28,16,32,58,51,37} +[.#.#] (1,3) (0,2) (0,1) (0,3) {25,10,2,23} +[##.##] (0,4) (2) (0,1,2,4) (0,1,4) (1,3) (0) (2,4) {31,28,27,10,29} +[..##.] (0,2,4) (0,3,4) (0,1,2,4) {210,1,190,20,210} +[##.#.] (3) (0,1,2,4) (1,2,4) (0,2,4) (0,2,3,4) {24,14,35,20,35} +[####.] (0,3,4) (0,2,3,4) (1,2,3) (2,3,4) {4,14,19,19,5} +[###.#] (0,1,2,3,4) (0,1,2,4) (2,3) {138,138,154,25,138} +[#..##.] (0,2,4,5) (5) (0,1,3,4) (1,2) (1,3,4) (0,1,5) {38,50,14,29,39,42} +[.##.##..#] (0,2,3,4,7,8) (1,2,4) (1,2,3,4) (0,1,2,5,6,8) (0,1,2,3,4,8) (0,1,2,3,4) (6,8) (1,5,7) (3,6,8) (2,4,5,7) {63,68,98,85,86,37,38,42,73} +[.###.#..#] (0,1,2,3,4,5,7) (0,1,4,5,7,8) (0,2,3,5,6) (1,3,5,6,8) (0,4) (2,5,6) (4,6) (0,4,8) {46,23,28,33,52,37,39,14,13} +[####...#] (3,4,5,7) (0,1,2,5,6,7) (0,1,3,6,7) (0,2,3,4,5,6,7) (5,7) (0,6) (2,3,5,6,7) (0,1,2) {36,28,33,44,11,36,41,52} +[##.##.#.] (0,3) (2,3,4,5) (0,2,7) (0,1,2,4,6) (4,5) (1,3,4,6,7) {206,26,31,198,43,17,26,31} +[..#.#.] (1,2,4,5) (0,1,3,4,5) (0,2,4) (3,4) (0,1,2,3,5) {19,20,19,207,198,20} +[##.###.#.#] (0,7,9) (2,3,4,5,6,7,8,9) (3,4,5) (1,2,3,5,6,9) (0,1,7) (2,6) (0,1,2,3,5,6,9) (1,2,3,4,5,7,8,9) (3,4,5,8,9) {18,45,62,69,46,69,46,37,26,56} +[##.###..#] (1,4,6) (1,5) (2,5,7,8) (0,2,3,4,5,6,8) (2,3) (0,2,3,5,6,7,8) (0,3,7,8) (0,1,2,4) {34,25,33,33,20,32,19,35,40} +[.#.###] (3,5) (0,2,4) (2,4) (1,3,4,5) {7,14,27,27,41,27} +[..##.#..] (0,1,3,4,6,7) (0,1,4,5,6,7) (0,1,2,3,4,6) (0,2,3,5) (0,1,2,4,5,6,7) (1,2,3,5,6,7) (0,4,5,6,7) {80,60,48,37,70,55,71,53} +[..###..] (2,3,4) (0,1,3,4,5) (0,2) (1,2,3,5) (1,2,6) (1,2,3,4,5) (1,5) {15,55,55,57,48,50,5} +[######] (0,2,3,4) (0,2,4,5) (0,2,3,5) (0,1,2,4) (1,4) {18,10,18,9,20,7} +[#.##] (2) (2,3) (0,1,3) (1) {0,4,198,11} +[###.....#] (3,5) (1,4,6,7) (0,1,3,4,5) (0,1,3,4,6,7) (0,1,3,5,7) (2,3,7) (1,2,3,4,5,6,8) {28,211,185,231,202,202,199,49,172} +[....#.#..#] (0,2,5,6) (0,1,2,3,4,5,6,9) (2,4,5,8,9) (3,4,7,8,9) (4,8) (0,3,7,8,9) (0,1,4,5,7,8) (0,1,2,3,5,6,8,9) (1,4,6) {241,218,216,244,241,227,211,48,85,249} +[..#..###.] (2,8) (5,7) (0,4,7) (0,2,3,7,8) (0,2,4,5,6,8) (3,4,6) (0,1,3,4,5,7,8) (2,5,6) (2,3) (1,5) (1,2,4) {22,21,21,30,40,36,29,23,18} +[#.#.] (1,2,3) (0,2) {15,4,19,4} +[#.###.] (4) (0,1,2,5) (0,2,3,4) (0,2) (0,2,4,5) (2) {214,8,214,9,19,8} +[###.###] (0,2,4,5) (0,1,3) (1,3,4,5) (0,1,3,4,5) (0,1,2,4,5) (0,1,4,5,6) (0,4) (1,2) (0,3,4,5,6) {223,77,39,188,225,207,166} +[##.#....] (2,3,4,6,7) (0,1,2,5,6,7) (0,1,2,4,6) (0,2,3,7) (0,1,3,4,5,6,7) (1,2,3,4,5,6) (5,6) (0,1,3) (0,2,3,4,6) {52,31,35,56,21,17,30,32} +[#.#.#.] (1,2,3,4) (0,4,5) (2,4,5) (0,1,3,4) (0,2,4) {132,3,34,3,152,135} +[..###] (0,1,3) (1,4) (1,2,3) {8,27,0,8,19} +[.##.#.] (0,1,2,3,4) (2) (0,2) (0,1,3,5) (0,2,3,4,5) (2,3,5) (1,2,4,5) {50,19,69,42,23,33} +[#####.#] (0,2,3,4,6) (0,3,4,5) (1,6) (0,2,4) (0,1,2,4,6) (3,5,6) (0,1,3,4,5,6) (0,1,2,3,5) (0,1,2,4,5) {90,67,71,72,72,69,67} +[##.#.####] (0,1,3,5,6,7,8) (0,1,2,3,4,5,7,8) (1,2,3,7) (0,2,5,6,7) (0,4,5,6,7) (1,3,4,5,6,7,8) (1,2,3,4,5,7,8) {48,38,43,38,27,61,43,66,33} +[#...#] (0,4) (1) (0,1,3,4) (2,4) (2) (0,2,4) (0) {30,23,171,3,187} +[.##.#.] (0,1,2,3,4) (3) (0,1,3,4,5) (1,2,3,4) {18,29,29,48,29,0} +[.##.######] (3,6) (3,5,6,9) (0,1,4,6,7,9) (0,1,2,4,5,6,7,9) (2,3,8) (0,1,2,3,4,5,6,9) (1,4,6,7,9) (1,4,5,6,8,9) (0,1,4,5,9) (0,1,2,3,5,6) (2,5,6,7,8) (0,3,4,5,8) (2,3,7) {75,76,84,94,78,111,115,77,46,79} +[...###.] (0,2,6) (0,1,4,5,6) (0,3,4,5,6) (0,2,3,4,6) (0,1,2,4,5,6) {134,118,125,13,131,123,134} +[#.#.#.#.] (6,7) (0,3,6) (0,2,4,5,6,7) (4,6) (0,1,2,4,5,6) (1,3,4,5) (1,2,3,5,7) (0,2,3,5,6,7) {41,38,56,40,45,64,67,62} +[.#.....#] (1,3,5,6,7) (2,3,5,6,7) (0,1,2,4) (0,1,4,7) (0,1,6,7) (1,4,5) {200,229,196,25,217,43,26,43} +[#.#.####] (0,6) (0,4,5,6,7) (0,1,4,5,6,7) (6,7) (1,4) (2,7) (0,2,4,5,7) (5,6) (3,7) (1,2) {46,24,27,13,37,30,56,64} +[##.#] (0,1,2) (1,2) (0,2,3) {16,20,26,6} +[.#.#..] (0,1,3) (0,1,4,5) (1,4,5) (0,4,5) (0,1,2,3) (0,2,4,5) (0,2) (0,2,3,4,5) {204,36,42,30,195,195} +[##...#.##] (2,4,6,8) (0,1,3,5,7) (2,3,4) (1,2,3) (4,5,6,8) (0,1,3,4,5,7) (1,4,5,6) (1,2,7,8) (0,1,3,5,8) (5,8) (0,5,7) {30,54,56,41,38,55,24,36,73} +[..#.#.##] (2) (0,3,4,5,6,7) (0,4,5,6,7) (1,2,3,5) (0,1,2,3,4,6,7) (0,2,3,5) {42,20,50,40,32,36,32,32} +[####] (0,3) (1,3) (0,2) {13,196,6,203} +[.#####] (1,5) (0,1,3,4) (1,2,3,5) (2,3,4) {7,30,19,26,8,23} +[.#..#####.] (1,2,3,5,6,7,9) (1,2,3,4,5,7,9) (1,5,7,8) (0,1,2,3,4,5,7,9) (1,3,5) (0,3,5,6) (1,2,7) (1,3,5,7) (1,3,4,7,8) (0,2,3,4,5,7,8,9) {29,183,37,189,158,63,19,188,154,36} +[###.] (1,2) (0,1,2) (0,1,3) {28,35,26,9} +[#.#.] (0,1,3) (0,2) {27,17,10,17} +[.####.##] (3,5,6) (0,4,6) (5) (0,2,3,4) (0,3,5,6) (0,1,2,5,6) (3,4,7) (0,2,4) {51,9,25,37,37,44,50,4} +[...#.#..##] (4,8,9) (0,1,2,3,6,8,9) (0,2) (0,1,2,3,8) (1,2,6) (1,2,4,6,8,9) (2,3,5,9) (1,5,9) (0,1,2,4,5,8) (1,2,3,4,5,6,7,8,9) {55,63,75,44,32,30,35,14,61,36} +[....#.#] (3,6) (0,6) (2,5) (1,2,3,4,6) (2) (0,4) (1,3,5) (0,1,2,3,6) {39,29,41,47,12,29,57} +[##.##] (0,1,3) (0,1,2,3) (1,2,3,4) (1,2,3) (0,3,4) (1,3,4) {20,27,14,34,11} +[#.##] (1,3) (0,2,3) {11,15,11,26} +[#.#..#] (0,1,3) (0,1,2,3,4) (0,1,3,4) (1,3,4,5) (0,1,4,5) (0,2,3,4,5) (0,1,5) (0,2,3,4) {94,87,39,88,81,55} +[...#..#] (0,1,2,3,5,6) (0,3,5) (0,1,2,3,5) (0) (0,1,3,4,6) (1,4,6) (0,6) (1,3,4) (1,2) {39,52,11,40,41,8,35} +[##...##.#] (0,2,4,5,6,7) (1,2,3,4,5,6,7) (0,2,3,4,6,7) (0,1,2,4,5,6,7,8) (0,2,3,6) (0,1,5,6) (0,1,3,4,5) (0,1,2,3,6,7) (0,1,3,5) {62,54,41,40,48,56,55,39,14} +[.#.#] (1,3) (0,1,3) (2,3) {14,23,14,37} +[.#...#] (1,2,3,4) (0,4,5) (3) (0) (0,1,2,5) (0,2) (1,5) {21,30,20,115,1,31} +[##.#..#.##] (0,9) (0,1,2,3,4,5,6,9) (0,1,2,4,6,9) (0,6,7) (0,1,4,6,7,8) (3,4,7) (0,1,3,4,5,6,7,8) (0,1,4,5,6,7,9) (0,2,3,4,6,7,8) (0,1,2,5) {99,74,29,30,66,49,67,56,36,45} +[#.#....] (0,2,5,6) (3,6) (0,1,2,6) (0,1,2,4,5) (3,5,6) (1,3,4,5,6) (0,1,3,5) {46,48,36,43,32,69,50} +[#.###] (2,3) (2,4) (0,1,2) (0,4) {25,15,37,6,26} +[#...##] (0,2,3,5) (0) (0,1,4) (2,3,5) (2,3) (0,1,3) (0,1,4,5) (2,3,4) {54,46,37,52,38,31} +[.##.##] (0,1,2,3,4) (1,2) (1,2,3,5) (0,5) (2,5) (0,1,2,3) (1,2,4,5) (0,2,4) {18,45,58,22,23,50} +[#...#.##.] (1,2,4) (2,5,6,8) (0,2,3,7,8) (0,1,2,3,5,8) (0,3,7) (0,2,3,4,7,8) (0,1,3,7,8) (5,6) (0,2,3,4,6,7,8) (2,3,4,5,6,7,8) (0,8) {248,197,238,250,51,202,49,79,264} +[##..] (0,2) (1) (1,2,3) (3) (0,1) (0) {27,215,20,24} +[..#..#.###] (0,2,3,4,5,6,8,9) (3,4,5,9) (0,1,2,4) (0,2,4,6,7,8) (0,1,2,3,4,5,6,8,9) (0,2,3,4,5) (0,1,3,4,7,8,9) (2,4,9) {58,26,202,45,228,29,27,30,43,199} +[##..#....] (0,2,3,5,6) (0,1,2,5,6,8) (1,2,4) (0,1,2,3,6,7,8) (0,1,2,3,4,5,6,7) (0,1,5,6,8) (1,2,3,5,6,7,8) (1,7) (0,1,2,3,4,6) {73,97,77,62,29,59,85,58,49} +[......#.] (0,1,3,4,5,7) (2,6) (0,2) (1,2,3,4,7) (0,1,2,4,7) (0,4,5,7) (2,3,4,5,6) (4,7) (1,2) (1,3) {19,35,49,11,30,5,17,30} +[...###.#.] (4,5) (0,2,4,8) (3,6,7) (0,1,2,6,7) (0,1,2,3,4,5,8) (0,4,8) (1,3,6,8) (6) (0,3,4,8) (3,6) (0,1,3,4,5,7) {48,30,24,67,52,24,57,28,45} +[..#..#] (2,5) (1,2,3,4) (2,4,5) (0,1,3) (1,5) (2,3,4,5) {17,31,45,30,32,45} +[##.#....] (0,2,5,7) (0,2,3,7) (1,2,3) (0,3) (1,2,5,6) (4,5,6,7) (2,4,5,6,7) (0,6,7) (1,2,3,4,5,6) {38,21,44,25,19,39,50,45} +[...#.###] (0,4,7) (0,1,4,5,6,7) (0,1,2,3,5,7) (3) (1,2,4) (0,1,3,7) (2,3,4,5,7) {54,54,36,32,42,26,7,55} +[.#..#] (2,4) (0,2,3) (1,4) (0,2,3,4) (2,3,4) {16,19,52,36,63} +[..#.#....] (1,2,3,4,6,7,8) (2,3,5,6,7,8) (2,3,4,6,7) (4,6) (2,4) (0,1,2,6,7,8) (0,3,4,5,6,8) {29,15,62,65,67,40,88,54,55} +[.#.#...#.#] (1,4,5,6,7,9) (3,6) (0,1,6,7,9) (0,1,2,3,5,6,7) (1,3,4,5,6,7,8) (0,4,5,6) (0,4,6,9) (0,2,8,9) (1,2,3,4,5,7,8,9) (0,2,3,6,8,9) (1,9) (0,3,4,5,6,7) (0,1,5,7,8,9) {70,49,40,51,45,46,81,42,49,67} +[.###.#.#.] (2,3,4,5,6,7,8) (1,7) (0,3,6) (0,3,7) (0,2,4,6,8) (2,3,4,6,7,8) (1,2,5) (2,4,5,6,7) (1,2,4,5,6,7,8) {41,36,70,63,57,47,76,82,42} +[#.##.#..] (5,6,7) (0,1,3,4,5,6) (0,1,3,5,7) (2,4,5,6) (0,1,2,3,5,7) (1,2,5) (0,1,2,4,5,6) (0,1,2,3,4,5) {56,61,40,50,31,67,26,31} +[..#######] (1,4,8) (2,5,6) (6) (0,1,2,3,4,6,8) (7) (1,2,5,6,7,8) (1,2,3,4,6,7,8) (1,6) (0,2,3,4,5,6,7,8) (7,8) (0,7,8) {30,60,62,40,53,34,93,44,69} +[###..#] (0,1,4,5) (1,5) (1,2,3,4) (1,2) (0,1,2,3,4) (0,2) (0,1,2,5) (2,3) {52,66,67,27,29,36} +[.##.#.#..] (0,1,2,3,5,6,7) (1,2,3,7,8) (0,2,6) (0,5,7) (1,2,4,6) (1,6,7,8) (0,1,2,3,4,5) {51,34,42,16,20,32,37,33,14} +[###.###.#.] (0,1,4,5,6,7,8,9) (0,2,3,4,5,8) (1,2,3,4,6,8,9) (0,1,2,3,5,7) (0,3,5,7,8,9) (0,4,5,6,7,8,9) (0,1,3,4,5,6,8) (1,7,8) (0,2,5,6,8,9) {78,50,56,53,57,78,64,56,97,77} +[##.#] (1,3) (0,1,2) (0,2) (2,3) (1,2) {35,44,75,26} +[##..##] (0,1,4,5) (1,2,3,4) (1,2,4) (4,5) (0,1,5) {33,59,26,15,53,45} +[.####] (1,2,4) (0,3,4) (0,1,4) (0,4) {39,14,9,14,48} +[.....#####] (2,7) (6,7,8) (2,5,8,9) (4,6,8) (0,5,6) (0,1,2,3,4,5,6,8) (0,1,6,8) (0,1,2,3,4,5,6,7) (1,2,3,4,5,7,8) (2,4,5,7,8) (0,1,2,4,5,6,8,9) {61,58,77,23,66,63,90,69,85,22} +[..##.] (2) (4) (3) (0,2) (1) {8,6,18,17,4} +[...#] (2,3) (0,2) (1,2) (1) (1,3) {10,47,180,162} +[..##..#.##] (0,1,2,3,4,5,6,8) (1,3,4,5,6,7,8,9) (1,3,4,6,8) (0,4,6) (1,2,3,6,8) (0,1,2,3,5,7,8,9) (9) (0,3,4,7,8,9) (0,1,3,4,7,8,9) (0,4) (0,1,2,3,4,5,7,8) (0,2,3,5,6,9) {100,206,46,235,240,43,206,53,226,77} +[.##.....#] (1,2,4,5,6,8) (0,2,4,5,7) (3,4,8) (1,2,4,5,6,7,8) (3,4,5,6,7,8) (1,4) (0,2,3,4,5,6,8) (1,2,3,4,5,6,8) (0,1,3,4,5,6,7) (2,3,4,5,7) {23,59,82,43,93,90,63,53,57} +[######..#] (0,1,2,3,5,7) (0,1,2,3,4,5,8) (2,3,4,5,6,7,8) (0,1,2,3,4,8) (2,6,8) (1,4,5,7) (2,7,8) (1,3,6) (0,3,4,5,6,8) {54,69,76,88,62,55,56,44,75} +[.##..#.] (2,3,4,5,6) (0,1,2,5,6) (0,5) (0,1,5,6) (1,2,4,5) (0,2,3,5,6) (0,1,3,5,6) (0,2,3,4,5,6) {52,34,49,31,13,64,50} +[#..##.] (2,3,5) (1,3,5) (0,2,4,5) (0,3,4) (2,4) {14,4,44,31,33,29} +[.#.#.#] (0,4,5) (2,3,4) (0) (1,2) (0,2,3,5) (1,3,5) (4) {11,4,16,14,16,6} +[#.##] (0,1,2) (0,2) (2) (1,2) (0,3) {2,6,25,0} +[###.#....#] (0,2,3,5,6,8,9) (0,1,2,3,4,5,8) (1,6,8) (0,2,4,5,6,7) (0,1,2,3,4,6,7,8) (0,2,4,5,6,7,9) (3,7) (1,3,4,8) (0,1,2,3,4,5,7,8) {199,66,199,195,63,185,184,43,209,144} +[##.###.#.] (2,3,4,5,8) (0,1,7,8) (0,5,6,7) (1) (0,1,2,3,4,5,8) (3,4) (1,6) (1,2,4,5,6,7,8) {26,51,25,23,34,37,39,25,27} +[.#.##...##] (0,1,2,3,5,6) (0,1,4,7,8) (1,3,8) (0,1,4,5,7,8,9) (1,4,5,7,9) (1,4,6,9) (1,5) (0,2,4,6,7,8) (0,3,5,6,8,9) (2,3,4,5,6,7,8,9) (0,1,2,3,7,8,9) {63,102,51,48,84,61,65,70,72,51} +[#.#..#.#.] (0,2,3,6,7) (2,4,7) (0,2) (1,2,3,5,6,7,8) (0,1,2,3,4,6,7,8) (1,2,3,6) (0,3,6,8) (4,6,7) (4,5,8) {51,44,69,77,48,22,85,62,59} +[#.#....#] (2,4,5) (3,4) (0,1,2,3,5,6,7) (0,1,2,3,4,5,7) (1,4) (0,1,2,4,6) (2,3,6) {14,34,36,37,45,14,24,10} +[####..#.#] (0,1,3,4,5,6,7) (2,4) (3,5) (1,2,8) (0,5,6) (3,6) (1,4) {18,18,13,24,17,25,29,6,7} diff --git a/day10/input.x b/day10/input.x new file mode 100644 index 0000000..2d5f547 --- /dev/null +++ b/day10/input.x @@ -0,0 +1,200 @@ +0x5 0xb 0x5 0x3 0xe 0x8 +0x24d 0x1ff 0x9c 0x356 0x2db 0x35f 0x24 0x54 0x28 0x1a0 0x3b7 +0x1 0x17 0xc 0x16 0x18 0x11 0x15 +0x12e 0x42 0x16c 0xd0 0x181 0x1b0 0x1a 0x1af 0x7b +0x17 0xd 0x5 0x18 0xb 0x19 +0xa 0x7 0xa +0x1ce 0xf2 0x2d7 0xb3 0x104 0x99 0x1bf 0xb4 0x119 +0x2d5 0x3f2 0x102 0x13b 0x193 0x3fb 0xeb 0x15 0x3fe 0x2bf +0x74 0x6b 0x27 0x11 0x29 0x2f +0xe5 0x7e 0x30 0xaa 0x86 0x14 0xed +0x178 0x32e 0x113 0x108 0x2b1 0x16a 0x233 0x8e 0x1de 0x28c 0x133 0x1f3 0x3f6 0x15a +0x11 0x5b 0x12 0x26 0x3a 0x30 0x1b +0x35 0x10 0x3c 0x39 0x6 0x22 0x11 0x9 +0xe 0x2ea 0x13 0x8c 0x19c 0x1f7 0x210 0x218 0x13b 0x82 0x55 0x308 +0x19 0x19 0x3c 0x23 0x24 +0x3d5 0x6a 0x16a 0xd8 0x30f 0x382 0x3c7 0x1a8 0x239 0x3d5 0x27d +0xc 0x24 0x1c 0x77 0x43 0x3f +0x6f 0xe0 0x81 0xe3 0x5b 0x2f 0xdb 0x11 0x21 0xf7 0x89 +0x3c5 0x8b 0x2a4 0x30c 0x18d 0x3ec 0x2a0 0x3ba 0x5a 0x209 0x338 0x33c 0x42 0x10c +0x226 0x1e9 0x21 0x1fc 0x17d 0x163 0xc2 0x13c 0x130 0x1cd 0x3f6 0x234 0x3ae +0x2d9 0x1ef 0x27e 0x1ed 0x25d 0x33c 0xe6 0x374 0x37b 0x341 0x3b7 0x180 0x9 +0x204 0x81 0xfb 0x3fd 0x2ff 0x8 0x381 0x2fb 0x206 +0x15 0x1f 0x15 0x16 +0x1 0x14 0x4 0xe 0x11 0x1 0x1b +0x8 0xe 0x3 0x6 0x15 0xb 0x11 0xc +0x1f 0x1d 0x1c 0x2 0xb 0x6 0x19 0xe +0xa5 0x16 0xb4 0x27 0x30 0x54 0xfd 0x2a +0xb2 0x75 0x6 0x7f 0x86 0x1e 0x24 0x2f 0x17 0xeb +0x29 0x22 0x6 0x7d 0x3b 0x78 0x11 +0x11 0x4f 0x33 0x6b 0xc 0x25 0x6c 0x17 0x7e 0x40 +0x78 0x3a 0x7 0x41 0x78 0x63 0x3c 0x68 +0xd 0x4 0xd 0x9 0x3 +0xb 0x6 0x3 0x2 0x8 0x7 0xb +0xe7 0x3f5 0x30 0xe7 0x398 0x25c 0x2ef 0x32f 0x273 0x3ef 0x147 0x17c +0x1f 0x34 0x23 0x35 0x2b +0x4c 0xdd 0xa0 0x40 0xec 0x2f 0xe6 0x3c 0xb7 0x5f +0xa 0x13 0x6 0x9 0x1f +0xe 0x3 0xd 0xc +0x8 0x13 0x3e 0x9 0x2a 0x21 0x1d 0x20 +0x16 0x18 0x2 0xe 0x16 0x9 0x14 +0x2a 0x19 0x1b 0x15 0x26 +0x48 0x2f 0x3e 0x53 0x70 0x46 0x76 +0x3 0xe 0xc 0xa 0x9 +0x120 0x13b 0x48 0x2c 0x17 0x78 0x72 0xa0 0x10b 0x15e 0x162 0xe +0x10 0x32 0x29 0x1b 0x1c 0x34 0xa 0x2c 0x14 +0xa 0xd 0xa 0xe 0x5 +0xa5 0x66 0xf9 0x6f 0x7e 0x3f 0xbd 0x8d 0x36 0xc0 0x8b +0xf8 0x28 0x1df 0xf7 0x13e 0xfc 0x1db 0x8 +0x15 0x47 0x4a 0x11 0x21 0x5f +0x356 0x68 0x32f 0x395 0x147 0x1f7 0x3e4 0x1c2 0x3b2 0x149 0x145 0x50 0x3ef 0x333 +0x4b 0x3c 0x22 0x1a 0x30 0x42 0x13 0x2d +0x1a 0x11 0xc 0x16 0x3 0xa 0x6 0x17 +0x100 0x1b2 0x14b 0x127 0x177 0xce 0x1c0 0xb2 0x14 0x140 +0x6b 0x37e 0x366 0x3af 0x302 0x3f0 0x3 0x90 0x40 0x17f 0x22 0x1be +0x1a 0x21 0x3d 0x33 0x32 0x14 +0x1c8 0xb0 0x166 0x16b 0x142 0x16f 0x197 0x1ec 0x1db +0x2d 0x5b 0x6 0x67 0x32 0x78 0x13 +0x1ca 0x19e 0x115 0x173 0x214 0x1e3 0xd3 0x1bc 0x161 0xf5 0x111 0x288 +0xdf 0xbf 0xc4 0xa2 0xbe 0xdf 0x83 0xf3 +0xb 0x6 0x4c 0x65 0x5a 0x22 0x7a +0xeb 0x76 0x4c 0x59 0x2e 0xeb 0x60 0x85 +0xfe 0x54 0x5d 0x7d 0x8b 0x31 0x5b 0x4f 0xc2 0xbb +0xd1 0xe5 0x1b4 0x102 0x114 0xa 0xef 0xe0 0x17a 0x13f 0x22 +0x7 0x7 0x19 0x18 0x1d 0xd +0x53 0xa7 0xbd 0x19f 0x12f 0x1c6 0x1b7 0xba +0x17 0x17 0xd 0x1d +0x3 0xe 0x4 0x9 0xa +0x62 0xa5 0x30 0x8 0x8f 0xff 0xbe +0x25 0x51 0x6a 0x6b 0x2c 0x4f 0x25 0x48 0x7a +0x17d 0x2ef 0x28a 0x38b 0xf0 0xff 0x280 0x1e9 0x296 +0x55 0x43 0x7c 0x73 0x6d 0x55 0x2 0x64 0x7e 0x4 +0x384 0x2a1 0x204 0x1a8 0x136 0x357 0x290 0x3cc 0x1b5 0x1b 0x22a 0x3fb 0x1f8 +0xc3 0xd2 0x177 0x54 0x167 0xc1 0x20 0x1eb 0x14c +0x3e 0x2d 0x2c 0x2e 0x3e 0x74 0x6 0x7a 0x21 +0x4 0x1 0x9 0x6 0xd 0x4 0x8 +0xb 0xd 0xb +0x20 0x5 0x37 0x2f 0x31 0x12 0x39 +0x9d 0x1df 0xb7 0xa4 0x1b8 0xfd 0x11 0x152 0x10 0x79 0x12f +0x1e 0x28 0x18 0x10 0x21 0x2c 0x32 0x17 0x1b +0x85 0xb6 0x25 0xcf 0x22 0x1a 0x41 0x82 0xf9 +0xe 0xe 0x6 0x7 0x9 0x4 +0xa1 0x92 0x2e 0x14 0x76 0x6b 0x50 +0x56 0x6a 0x4b 0x38 0x41 0x5d 0x12 0x46 0x29 +0x29 0x27 0x61 0xce 0x9e 0xc7 0xf1 0xe7 0x9 +0x6 0x3 0x9 0x6 0xa 0x4 0x1 +0x3b 0x71 0x4a 0x75 0xf 0x3d +0x33 0x2b 0xa 0x17 0x36 0xc 0x12 +0xb 0x2b 0xb 0x1e 0x3b 0x26 0x15 +0x10b 0xd0 0x12e 0x7a 0x1d7 0x2f9 0x377 0x101 0x2b2 +0x9 0x7 0x6 0x9 +0x33 0x1e 0x5 0x19 0x1b 0x31 +0x287 0x16 0x354 0x242 0x3dc 0x3dd 0x2b0 0x21 0x56 0x3ad 0x1fd 0xa8 +0x22 0x2f 0x30 0x3c 0x2d 0x12 +0x168 0x208 0x3c 0x3f1 0x1fd 0x24 0x168 0xca 0x341 0x2f0 0x26d +0x33 0x57 0x1d 0x7c 0x33 0x4a +0xf 0x2 0x2f 0x78 0x7a 0x11 0x33 0x18 +0x11 0x1a 0x3c 0x2c 0x16 0xc 0x17 +0x78 0x73 0x12 0x7d 0x31 0x3f 0x2 0x4b 0x5e 0x55 +0x2b 0xfd 0x11 0xd6 0xef 0x5d 0xf3 0xaf 0xf9 0x87 0x6 +0xe 0xa 0xc 0xd 0x7 0x1 0x4 +0x26 0x1d 0x5c 0x1f 0x6f 0x67 0x6 0x69 0x50 +0x5 0x5 0xa 0xc 0x9 +0x1b 0x11 0x4 0x1d 0x19 0xa 0x10 0x5 +0x6 0x15 0x13 0x1d +0x1a 0x2 0x1d 0xd 0x15 0x17 +0x1e 0x13 0x17 0xe 0x7 +0x1d 0x1f 0x1d 0x6 +0x26 0x2b 0x1 0x36 0x18 0x16 0x31 +0xd9 0x173 0xd0 0xf0 0x1cd 0x1f1 0x1f0 0x5 0x8a 0x25 0x5a +0xe9 0x1fa 0x19b 0x16c 0xad 0x110 0x4c 0x14 0x111 +0xf1 0x1d 0xe7 0xd3 0xbf 0x5 0x82 0x37 0xe0 +0xda 0x90 0x3c 0xa1 0xea 0xc 0x5b +0xa 0x1b 0x37 0x2a 0x6 0x3d +0x375 0x205 0xff 0x70 0x1d9 0x304 0x88 0x3d9 0x1f7 0x73 +0x1b9 0x94 0x88 0x4b 0x17d 0x60 0x16f 0x123 0x1d0 +0x17 0x5 0x2a 0xa 0x17 +0x34 0xdb 0xcf 0xfa 0xb4 0xef 0x77 0x8f +0x1c 0x1c 0x6e 0x50 0x3a 0x31 0x3e 0x22 +0x3f 0x2e 0x2b 0x2d 0x3a 0x12 +0xb 0x2 0x3 0xd 0x4 +0x1c1 0x28 0x96 0x1b8 0x1b6 0x1aa 0x62 0xfd +0x29 0x298 0x3f9 0xb3 0x67 0x22 0x247 0x336 0x3db 0x128 +0x4e 0x41 0xa 0x112 0x163 0x15d 0x34 0x1bb 0x4c 0x60 0x88 0xd0 +0xa 0x7 0xa +0x2e 0x2 0x39 0x2e 0x28 0x2b 0x8 +0x77 0x56 0x68 0x2e 0x6e 0x76 0x67 0x44 0x30 0x4f +0xd0 0x3b 0xe7 0xea 0xb1 0xdf 0x7e 0x6 0xd0 0xba +0x2a 0x1e 0x23 0xb 0x36 0x2a +0x7 0x1a 0x9 0xe +0x1a 0x3e 0x8 0x28 0x35 0x2f 0xd 0x1b +0x7d 0x5d 0x4e 0x21 0x54 0x75 0xb 0x6f 0x7a 0x76 +0x1af 0x1af 0x1fb 0xe2 0x14e 0x11e 0xbf 0xfb +0x11 0x11 0x8 0x1b 0x5 0x4 0x15 0x10 +0x1a 0x3e 0x4 0x37 0x1e +0x1bf 0x48 0x59 0x32d 0x3bd 0xc2 0x3f9 0x12d 0x13b 0x331 0x3d8 0x9e 0x272 0xc4 +0xe 0x51 0x67 0x4f 0x5d 0x77 +0xaa 0x3 0x92 0xaf 0xa 0xee 0x5c 0x75 0xb7 +0x41 0x57 0x37 0xe8 0xc9 0xc3 0x4c +0xaf 0x82 0x8f 0xcf 0x3 0x48 0x21 0xad 0x6 0x11 0x60 +0xd 0xe 0x6 0xb +0x14 0x34 0x33 0x13 0x23 0x3c 0x2b 0x28 0x2f +0x18b 0x55 0x1aa 0x70 0xe0 0x1d 0x1ba 0x9c 0xc3 0x1a9 0x9 0x10a +0x2b 0x20 0x9f 0x8f 0x74 0xfb 0xb4 +0xf 0x9 0x5 0xa +0x1f 0x11 0x36 0x1d 0xe +0x13e 0x1dd 0x1f5 0x116 0x3f5 0x150 0x258 0x184 0x154 0x166 0x2f7 +0xe 0x6 0xe 0xd +0xa 0xd 0xa +0x7b 0x16 0x8a 0x4 0xb8 0x96 0xe6 0x19 0xa8 +0x53 0x23 0x3cb 0x280 0x3c2 0x188 0x1ab 0xd1 0x111 0x3b2 0x1ff +0x5 0x9 0x41 0x12 0x3d 0x10 0x44 0x2a 0x79 +0x1b 0x1a 0x1e 0xf 0xe 0x13 0xb +0xb 0x5 0xb +0x29 0x34 0x3e 0x36 0x17 0x33 0x2f 0x31 0x2e +0x9 0x7b 0x4a 0x7a 0x40 0x6d 0x25 0x41 0x2c 0x30 +0x18d 0x15e 0xfe 0x176 0x1df 0x164 0x18c 0x1b8 0x1e6 0x1a8 +0x5 0x5 0xd 0x3 +0x11 0x1e 0x23 0x4 0x20 0x39 0x28 0x11 +0x34b 0x201 0x3f9 0x3a9 0x20c 0x32e 0x64 0x37e 0x33d 0x2ee 0x390 +0x50 0x53 0x9 0x71 0x76 0xb 0x2f 0x6a +0x17 0x6 0x5 0x1c 0x11 +0x23 0x2d 0x20 0x32 0xd 0xc 0x34 0x33 0xe +0x1b 0x3e 0x18 0x1d 0x21 0x9 0x3c 0x1b 0x2a +0x116 0xd0 0x4d 0x163 0x1e9 0x122 0x173 0x1a3 0xc 0x177 0x7f 0x101 +0xc 0xa 0x4 0x7 0x1 0xc 0x8 +0x97 0x2fb 0x71 0x3a0 0x2ae 0x3fb 0x2f0 0x367 0xa1 +0x190 0x16c 0x1cd 0xd0 0x1e7 0x1fe 0x18d 0xef 0x82 0x1f4 +0x2 0xdd 0x22 0xa0 0x79 0xe9 0x8d 0x3e 0x9 0x60 0x50 +0x3a 0x18 0x151 0x26 0x1c6 0x1f9 0x111 0xa5 0x4 0x131 0x24 0x1ba +0x9 0x9 0x1e 0xb 0x34 0x11 0xf +0xd0 0xa5 0xb1 0x70 0x90 0x66 0xf 0x2f 0x83 0x7e +0x17 0x89 0xcf 0xf5 0x10 0x68 0xd1 0x3d +0x9 0x5 0x16 0x9 0x17 0x7 +0x50 0xf7 0x6f 0x76 0x14 0x50 0x1c7 0x13d +0x145 0x13d 0x48 0x30d 0x3dc 0x17e 0x238 0x229 0x283 0x1f7 0x2cb 0x101 0x27c 0x317 +0xea 0x7f 0x82 0x124 0x122 0x155 0x77 0xc8 0x5e 0xdf +0xb4 0x7 0xde 0xd5 0x2e 0xf5 0x64 0xee 0xfc +0x7f 0x91 0x4c 0x4 0x1f5 0x2 0xcf 0xf7 0x84 0x17f 0x3 0x103 +0x39 0x33 0x11 0x1e 0x18 0x3e 0x28 0x39 0xc +0xd4 0x1ee 0xe3 0x144 0x10a 0xd4 0x87 0x1f8 +0x3ba 0x33f 0x2f2 0x1eb 0x3d4 0x257 0x23f 0x37a 0x106 0x29b +0xd 0x5 0xe 0xa 0x3 0x6 +0x33 0x33 0x1e 0x1a 0x3 0x31 +0xf 0xd 0x13 0x19 0x11 +0x1f 0x84 0xe 0x93 0x2a 0x218 0x3fa 0x30a 0x3fc 0x1f6 0xb6 0x3bb +0x6 0x4 0x1 0x2 0x14 0x8 +0x1 0x3 0xa 0x6 0x4 0x5 +0xcb 0x3fa 0x17f 0x16a 0x228 0x1ca 0x3d7 0x1 0x267 0x367 0x220 0x3f6 0x2d9 +0xc1 0xdd 0x15a 0x31 0xdf 0x3f 0x90 0x17d 0xfd 0x1be 0x7a +0x1f9 0x1ea 0x1f9 0x7f 0x1f1 0x45 0x9a 0x43 0xa4 0x13d +0x32 0x1f 0x73 0x42 0x63 0x36 0x5b 0x6b 0x5f +0x26 0xd 0x15 0x2b 0x26 0xa +0x15 0x23 0xe 0x20 0x18 0x2d 0x15 0x2 +0xb 0xe 0xa 0x2 0x6 0x9 +0x3a1 0x2db 0x3f2 0x10a 0x2bc 0x3ee 0x2bd 0x44 0x162 0x3f6 +0x1ba 0x79 0x183 0x10e 0x80 0x1f9 0x30 0x84 0xdf +0x163 0x3d8 0x326 0x142 0x337 0x135 0x129 0x110 0x2ae 0x25b 0xff 0x3c7 +0x14a 0x166 0x52 0x140 0xef 0x1f7 0xe4 0x125 0x16 0x19 +0xa1 0x2c 0x18 0xf7 0xfd 0x48 0xea 0x32 +0x1e5 0x1be 0x50 0x28 0xc1 0x10c 0x24 0x90 diff --git a/day10/parse.py b/day10/parse.py new file mode 100644 index 0000000..4254829 --- /dev/null +++ b/day10/parse.py @@ -0,0 +1,15 @@ +import sys +for line in sys.stdin: + p = line.split() + state = p[0].strip("[]") + costs = p[-1] + + n = len(state) + state = int(state.replace("#","1").replace(".","0"), 2) + buttons = [] + for x in p[1:-1]: + val = 0 + for i in x.strip('()').split(','): + val |= 2**(n-int(i)-1) + buttons.append(val) + print(*map(hex, [state]+buttons)) diff --git a/day10/sample b/day10/sample new file mode 100644 index 0000000..dd91d7b --- /dev/null +++ b/day10/sample @@ -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} diff --git a/day10/sample.x b/day10/sample.x new file mode 100644 index 0000000..9275e3b --- /dev/null +++ b/day10/sample.x @@ -0,0 +1,3 @@ +0x6 0x1 0x5 0x2 0x3 0xa 0xc +0x2 0x17 0x6 0x11 0x1c 0xf +0x1d 0x3e 0x26 0x3b 0x18 diff --git a/day10/sol.go b/day10/sol.go new file mode 100644 index 0000000..3ca7340 --- /dev/null +++ b/day10/sol.go @@ -0,0 +1,110 @@ +package main + +import ( + "bufio" + "container/heap" + "fmt" + "log" + "os" + "strings" +) + +func die(err error) { + log.Fatal(err) +} + +func check(err error) { + if err != nil { + die(err) + } +} + +func main() { + solve("sample") + solve("input") +} + +func solve(filename string) { + input, err := os.Open(filename + ".x") + check(err) + + scanner := bufio.NewScanner(input) + scanner.Split(bufio.ScanLines) + total := 0 + for scanner.Scan() { + line := scanner.Text() + parts := strings.Fields(line) + var nums []uint32 + for _, p := range parts { + var x uint32 + fmt.Sscanf(p, "0x%x", &x) + nums = append(nums, x) + } + //fmt.Printf("%b %v\n", nums, parts) + n := best(nums[0], nums[1:]) + fmt.Printf("%b %v\n", nums, n) + total += n + //fmt.Println(n) + } + check(scanner.Err()) + fmt.Println(total) + +} + +// An CostHeap is a min-heap of ints. +type CostHeap struct { + heap []uint32 + cost map[uint32]int +} + +func (h *CostHeap) Len() int { return len(h.heap) } +func (h *CostHeap) Less(i, j int) bool { return h.cost[h.heap[i]] < h.cost[h.heap[j]] } +func (h *CostHeap) Swap(i, j int) { h.heap[i], h.heap[j] = h.heap[j], h.heap[i] } + +func (h *CostHeap) Push(x any) { + // Push and Pop use pointer receivers because they modify the slice's length, + // not just its contents. + h.heap = append(h.heap, x.(uint32)) +} + +func (h *CostHeap) Pop() any { + old := h.heap + n := len(old) + x := old[n-1] + h.heap = old[0 : n-1] + return x +} + +func best(target uint32, pool []uint32) int { + //var states = []uint32{} + var cost = make(map[uint32]int) + h := &CostHeap{nil, cost} + heap.Push(h, uint32(0)) + for h.Len() > 0 { + s := heap.Pop(h).(uint32) + if s == target { + break + } + // enumerate all the states that can be reached by toggling button p + for _, p := range pool { + t := s ^ p + if cost_t, ok := cost[t]; ok { + if cost[s]+1 < cost_t { + cost[t] = cost[s] + 1 + for i, x := range h.heap { + if x == t { + heap.Fix(h, i) + break + } + } + } + } else { + cost[t] = cost[s] + 1 + //states = append(states, t) + heap.Push(h, t) + } + } + } + + return cost[target] +}