From aecea3dde712e36c75b436dc0d18063d32a1de65 Mon Sep 17 00:00:00 2001 From: plasmaofthedawn Date: Wed, 25 Dec 2024 10:34:54 -0500 Subject: [PATCH] added idk a bunch of junk --- resources/2024/day16.txt | 141 ++ resources/2024/day17.txt | 5 + resources/2024/day18.txt | 3450 ++++++++++++++++++++++++++ resources/2024/day22.txt | 1691 +++++++++++++ resources/2024/day23.txt | 3380 ++++++++++++++++++++++++++ resources/2024/day24.txt | 313 +++ resources/2024/day25.txt | 3999 +++++++++++++++++++++++++++++++ run.py | 9 +- src/c/2024/day18/part1.c | 146 ++ src/c/2024/day18/part2.c | 170 ++ src/c/2024/day24/part1.c | 235 ++ src/c/2024/day24/part2.c | 235 ++ src/c/2024/day25/part1.c | 83 + src/pladcl/2024/day16/part1.pdl | 243 ++ src/pladcl/2024/day16/part2.pdl | 268 +++ src/pladcl/2024/day17/part1.pdl | 217 ++ src/pladcl/2024/day17/part2.pdl | 264 ++ src/pladcl/2024/day22/part1.pdl | 99 + src/pladcl/2024/day22/part2.pdl | 106 + src/pladcl/2024/day23/part1.pdl | 88 + src/pladcl/2024/day23/part2.pdl | 117 + 21 files changed, 15258 insertions(+), 1 deletion(-) create mode 100644 resources/2024/day16.txt create mode 100644 resources/2024/day17.txt create mode 100644 resources/2024/day18.txt create mode 100644 resources/2024/day22.txt create mode 100644 resources/2024/day23.txt create mode 100644 resources/2024/day24.txt create mode 100644 resources/2024/day25.txt create mode 100644 src/c/2024/day18/part1.c create mode 100644 src/c/2024/day18/part2.c create mode 100644 src/c/2024/day24/part1.c create mode 100644 src/c/2024/day24/part2.c create mode 100644 src/c/2024/day25/part1.c create mode 100644 src/pladcl/2024/day16/part1.pdl create mode 100644 src/pladcl/2024/day16/part2.pdl create mode 100644 src/pladcl/2024/day17/part1.pdl create mode 100644 src/pladcl/2024/day17/part2.pdl create mode 100644 src/pladcl/2024/day22/part1.pdl create mode 100644 src/pladcl/2024/day22/part2.pdl create mode 100644 src/pladcl/2024/day23/part1.pdl create mode 100644 src/pladcl/2024/day23/part2.pdl diff --git a/resources/2024/day16.txt b/resources/2024/day16.txt new file mode 100644 index 0000000..25b1d31 --- /dev/null +++ b/resources/2024/day16.txt @@ -0,0 +1,141 @@ +############################################################################################################################################# +#.#.........#...#.....................#...........#...............#...#.................#...........#...#...#.....#.#...........#.....#....E# +#.#.#.#######.#.#.#########.#########.###.#.#####.###.#####.#.###.#.#.#########.#####.#.#####.#.#####.#.#.#.#.###.#.#.#####.#.#.#####.#.###.# +#...#.........#.....#.........#.....#.......#...#.........#.#...#...#...#...#...#.#.....#...#.#.......#...#.#...#.#...#.....#.#.#.....#.#...# +#.###################.###.###.#.###.#####.#####.#####.###.###.#.#######.#.#.#.###.#.#.###.#.###.###########.###.#.#####.###.#.#.#.#.###.#.#.# +#.#.....#.....#...#...#.......#.#.#.#...........#.......#...#...#.....#...#...#.#...#.....#...#.........#...#.#.#...#...#.....#.#.#.#...#...# +#.#.###.#.#####.#.#.#####.###.#.#.#.#.#.#.#####.#.###.#.###.#.#######.#######.#.#.#.#.#.#####.#########.#.#.#.#.###.#.###.###.#.#.###.#####.# +#.#.#.....#.....#.#.#...#.#...#.#.#...#.#.....#.#.#.....#...#.#.....#...........#.#...#.#.............#.#.#...#.#.#...#.....#.#.#...#.#...#.# +#.#.#######.#####.#.#.#.###.#.#.#.#####.###.#.#.###.#.###.###.#.###.#.###.###.#.#.#.#.#.#########.###.###.#.###.#.#######.#.###.#.#.#.#.#.#.# +#.#...#...#...#.....#.#.....#.#.#.....#...#.#.#.#...#.#...#.....#...#.#.#...............#...........#.....#.#...#.#.....#.#.#...#.#.....#.#.# +#.###.#.#.###.#.#####.#######.#.###.#.###.#.#.#.#.#.###.###.#.###.###.#.#####.#.###.#.###.#####.#.#.#######.#.###.#.#.#.###.#.###########.#.# +#.....#.#.....#.#.....#.....#.#.#...#...#.#.#.....#.#...#.....#...#.#.........................................#.....#.#...#.#...#...#.....#.# +#####.#.#####.###.#######.#.#.#.#.#######.#########.#.#######.#.###.#####.#.#.#.#.#.#.#######.#.#.#.#.#.#####.#.#####.###.#.###.#.#.#.#####.# +#.....#.....#.#...#.......#.#.#.#...#.....#...#...#.#.#.....#.#.#.#.....#...#.....#.#.#.....#.#.#.#.#.#.....#.#.#...#.#.#.#...#...#.#.#.....# +#.#########.###.#####.#######.#.#.#.#.#####.#.#.#.###.#.###.#.#.#.#.###.###.#.#.#.#.#.#.###.###.#.#.#.#####.#.#.#.#.#.#.#.#.#######.###.#.#.# +#.#...#.....#...#.....#.....#.#.#.#.#.#...#.#...#.......#.#.....#...#.#.#...#.#.#.....#.#.#.....#...#.#.....#.#...#.#.#...#.......#.....#...# +#.#.#.#.#####.###.#####.###.#.#.###.#.#.#.#.#######.#####.#######.###.#.#.###.#.###.###.#.#######.#.#.###.###.###.###.#.#####.#############.# +#.#.#...#.....#...#.....#.#...#...#.#...#.#...#.....#.....#.......#...#.#.#...#...#...#.#...#.......#...#.#...#.#.#...#.......#.....#...#...# +###.###.#.#######.#.#####.#######.#.###.#.#.###.###.#.###.#.#########.#.#.#.###.###.#.#.#.###.#########.#.###.#.#.#.###########.#.#.###.#.### +#...#...#.#...#...#...#...#.....#.......#...#...#...#...#.#.........#.#...#.....#...#.#.#.#...#.........#.....#...#.....#.......#.#...#.#...# +#.###.#.#.#.#.#.#.###.#.###.###.#######.#####.###.###.###.#########.#.#####.#####.###.#.#.#.###.###############.#######.#.#######.###.#.###.# +#.....#.....#...#...#.#...#.#.....#.....#.....#...#...#.......#...#.........#...#.#.#...#.#.#.#.#.............#.#.....#...#.....#.#.#...#...# +#.#############.#####.#.#.#.#.#####.#####.#####.#######.#####.###.#######.#.#.#.#.#.#####.#.#.#.#.#.#.#######.#.#.#.###########.#.#.#.###.### +#...............#.....#.#...#.....#.....#.#...#...#.....#...#.....#.#.....#.#.#...#.....#...#.#.#.#.#.#.#.....#.#.#...........#.#.#...#.....# +#####.#.#.#.#.###.#####.#########.###.###.#.#.###.#.#####.#.#####.#.#.#####.#.#####.#.#.#.###.#.#.#.#.#.#.###.#.#########.###.#.#.###.#.###.# +#.......#.#.#...#.#.......#...#.....#.#...#.#...#...#.....#.....#...#...#...#.....#.#.#.#.#...#...#.#...#.#...#.#.........#.#...#...#.#.#...# +#######.###.###.#.#.#.###.#.#.#.#####.#.###.###.#########.#.#.#####.###.###.#####.#.#.###.#.#.###.#.#.###.#.###.#.#########.###.###.###.#.#.# +#...........#...#...#.#.....#.#.......#.......#...#.....#.#.#.#.....#.#...#...#...#.#.#...#.#...#.#.#.#.......#.#.#.......................#.# +#.#####.#####.#.#.###.#######.#############.#####.#.###.#.#.#.#.#####.###.#####.###.#.#.###.#.###.#.#.#.###.###.#.#.#########.#.#.###.#####.# +#.#.........#.....#.#...#...#.............#.#.....#...#...#.#.#.#.......#...#...#.#.#.#.#.#.......#.#.#.#...#...#.#.#.......#.....#.........# +#.#####.#.###.#.###.###.###.###########.#.#.#.#.#.###.#.###.#.#.#.#.#######.#.###.#.#.#.#.#.#.#.###.#.#.#.###.###.###.#####.#####.#.#.#####.# +#.#.......#...#.......#.#.................#.#.#.#.#...#.#...#.#.#.#.#.....#...#.#...#...#.#.#.#.#.....#.....#.#.#...#...#.#.....#...#.....#.# +#.#.###.###.###########.#.#######.#####.###.#.#.#.#.###.#.###.#.###.#.###.#####.#.#######.#.#.#.#.#.###.###.#.#.#.#.###.#.#####.#.#######.#.# +#.#.........#.........#.#...#...#.#.....#...#.#...#.......#...#.....#.#...#.....#.#.....#...#.#.#.....#...#.#.#.#.....#.#.....#...#.......#.# +#.#.###.#####.#.#####.#.#.#.#.###.#.#####.###.#######.#####.#####.###.#.###.###.#.#.###.#.#.#.#.#######.#.###.#.#.###.#.#.###.###.#.#######.# +#.#.......#...#...#...#...#.#.....#...#.....#.#.......#.....#.#...#...#...#.#...#.#...#...#.#.#.......#.#.....#...#...#.#.#.......#.....#...# +#.#######.#######.#.#####.#.#########.#.###.#.#.###.###.#####.#.###.#####.#.#.#.#.#######.#.#.#######.#.#######.###.###.###.#####.#####.##### +#.......#.........#.#.....#...........#...#.#.#.#.#.#.........#.#...#.....#.#.#.#.#.....#...#.......#.#.....#.....#...#.....#.........#.....# +#.#####.###.#######.#.###.#.#.#######.###.#.#.#.#.#.###########.#.###.#####.#.###.#.###.###.#.###.###.#####.#.###.###.#####.#.###.###.#.###.# +#.#.#...#...#...#.#...#...........#.......#.#.#...#.#.....#.....#...#...#.........#...#.#...#...#.#...#.#...#.#.....#.....#.#.#.....#.#.#...# +#.#.#.###.###.#.#.#####.###.#####.#.#######.#.###.#.#.###.#.#######.###.#.###.#####.#.#.#.#####.###.###.#.###.#.#######.###.#.#.#.###.#.#.#.# +#...#.#...#...#.#.......#.....#...#...#...#...#...#.#...#...#...#...#.#...#.........#...#.........#.#.#...#.....#.....#.....#...............# +###.#.#####.###.#.###.#########.###.###.#.#.#.#####.###.#####.#.#.###.#####.#########.###########.#.#.#.###.#####.###.#.#####.#####.#.###.#.# +#...............#...#.#.........#...#...#.....#.....#...#.....#.#...#.....#...#...#...#.........#.#.#.....#...#...#...#.....#.....#.......#.# +#.###.#.#######.#.#.###.#########.###.#####.#.#.#####.#####.#.#####.#.#.###.#.#.#.#.###.#.#####.#.#.#####.#.###.###.#####.#.#.#.#.#########.# +#...#.#.#...#...#.#.....#...........#.#...#.#.#.#...#.#.....#.#.....#.#.#...#...#.#.#...#.#...#...#...#...#.#...#.#.......#.#.#.#.....#.....# +#.###.#.###.#.#.#####.###############.#.#.###.#.#.#.#.###.#.###.#####.#.#.#######.#.#####.#.#.#######.#.###.#.###.###.#.###.#.#.#.###.####### +#.#...#.#...#.#.#...#.......#.........#.#.....#...#.#.#...#.#.......#.#...#.....#.#...#...#.#.#...#...#.....#...#.....#.....#...#...#...#...# +#.#.#.#.#.###.###.#.#######.#.#######.#.#######.###.#.#.#####.###.#.#.#####.###.#.###.#.#.#.#.#.#.#.#.#.#######.#.#####.#######.#.#.###.#.#.# +#.#.#.#.#...#.....#.....#.....#.......#.#.....#.#.#.....#.....#...#...#.....#...#.#.#...#.#.#.....#.#...#.......#.......#.........#...#...#.# +#.#.###.###.#####.#####.#######.#####.#.#.#####.#.#.###.#.#####.#.#####.#.###.###.#.#####.#.#####.#.#.###.###.###.#######.#.###.#####.#####.# +#.#...#.....#.........#.......#.#...#.#.#.......#.......#.....#.........#...#.#...#.#...#.#...#...#.#.....#...#...#...#...#.#.....#.#.....#.# +#.###.#####.#.###.#####.#####.###.#.###.#.#.#####.#.###.#####.#############.#.#.###.#.#.#.###.#.#.#.#########.#.###.#.#.#.###.###.#.###.###.# +#...#.......................#.#...#...#.#...#...#.#.#.#.#.#...#.......#.....#.#.#...#.#.....#.#.#.....#.....#.#.#...#...#.....#.#.#.....#...# +###.###.#.###.#.###.#.#.###.#.#.###.#.#.###.#.#.###.#.#.#.#.###.#####.#.#####.#.###.#.#######.#.#####.#.###.#.#.#.#############.#.#######.#.# +#.#...#...#.......#...#.#...#...#.#...#...#...#.....#.#...#.....#.#...#.....#.#...#.#.....#...#.......#...#...#.#...#...........#.#.....#.#.# +#.###.#####.#####.#####.#########.#.#####.###########.###.#######.#.#####.#.#.###.#.###.###.###########.#.#####.###.#.#.#######.#.#.###.#.#.# +#...#.#.......#...#...#...#.......#.....#...#.#.........#.......#.#.#...#.#...#...#.#...#...#.........#.#.....#.#...#.#...#.........#.#...#.# +###.#.#.#####.#.###.#.#.#.#.#.#########.###.#.#.#####.#########.#.#.#.#.#######.###.#.###.#######.###.#######.#.#.#.#.#.#.#.###.#.###.#####.# +#...#.#.#...#.#...#.#.#.#...#.#.....#...#...#.......#.#.........#.#...#.......#.#...#...#...#.....#.........#.#...#.#.#.#.#.#.....#.........# +#.###.#.#.#.#.#####.#.#.#####.#.###.#.###.#####.#####.#.#########.#####.#####.#.#.#.###.###.#.#####.#######.#.#####.#.###.#.###.#.#.#######.# +#.#...#.#.#...#.....#.#.#.....#.#.#...#...#.....#.....#.#.........#.........#...#.#.....#.#.#.....#.#...............#.#.......#.#...#.......# +#.#.###.#.#####.#####.###.#.###.#.#####.#.#.###.#.#####.###.#####.#########.#####.#.#.###.#.#####.#.#.#.###########.#.#.#.###.#.#.###.###.#.# +#...#...#.....#.#.......#.#.#...#.....#.#...#...#.....#.....#...#...........#.....#.#.....#.#...#.#.#.#.#.....#.....#...#...#.#.#.#...#.#.#.# +#.###.#######.#.#######.#.#.#.#####.###.#####.###.###.#####.#.#.###.#######.#.###.#######.#.#.#.#.###.#.#.###.#.#####.#####.#.#.#.#.###.#.#.# +#.....#.#.....#.#.........#.#...#...#...#...#...#...#.....#.#.#...#.#...#...#...#.......#.#...#.#.....#.#.#...#.#.......#...#.#.#.#.#...#...# +#######.#.#####.#.###.#####.###.#.#.#.#####.#.#.#####.#.###.#.###.###.#.#####.#####.#.#.#.#####.#####.#.#.#.#####.#.###.#.#.#.#.#.#.#.#####.# +#.......#.#.....#...#...#...#...#.#.#.#.....#.#.....#.#.....#.#.#.....#.......#...#...#...#.....#...#.#.#.#.#.....#.#...#.#.#.#.#.#...#.....# +#.#####.#.#.#######.###.#####.###.###.#.###.#.#####.#########.#.#.#.#.#########.#.###.#####.#####.#.###.#.#.#.#####.#.###.#.#.#.#.#####.###.# +#...#...#.#.......#...#...#...#.......#.#.#...#...#...........#...#.............#...#.#.....#.....#.....#.#.......#.#.#.....#.#.#.......#...# +###.#.###.#.#.#.#.###.###.#.#########.#.#.###.###.#############.#.#########.#.#####.#.#.#####.#######.###.#########.###.#####.#.#.#######.#.# +#.#.#.....#...#.#...#...#...#...........#...#.....#...#.....#...#...#...#...#...#...#...#.......#...#.#...#.........#.....#...#.....#...#.#.# +#.#.#########.#.#######.#####.#####.#.#.#.#####.#.#.#.#.#.#.#.#####.#.#####.###.#.###.#####.###.#.###.#.###.#.#####.#.#####.#####.#.#.###.#.# +#...#.........#.......#.....#.....#.........#...#...#...#.#.#.....#.#.#...#.#.#.#.....#...#...#.#.....#...#.#.#...#.#.#.....#...#.....#...#.# +#.#######.###.#####.#.#.###.#####.#.#####.#.#.###.#######.#.###.#.#.#.#.#.#.#.#.#######.#.#####.#.#######.#.#.#.#.###.#.#####.#.#####.#.###.# +#.......#.....#...#.#.....#.#...#.#.....#.#...#...#...#.......#.#...#...#.#...#.#.......#.......#.......#.#.....#.#...#.......#...#...#.....# +#######.#.###.#.#.###.#####.#.#.#.#####.#.#####.#####.#.#####.#.#.#######.###.#.#.#################.#####.#####.#.#.###########.#.#########.# +#.#.............#.....#...#.#.#.......#.#...#.........#.....#.#.#.......#...#.#.#...#...........#...#.....#...#.#.#.#.......#...#.........#.# +#.#.#######.#.#.#####.#.#.#.#.###.#####.###.###########.###.#.#.#####.#.###.###.#.#.###.#.###.#.#.###.#####.#.###.#.###.###.###.#########.#.# +#.#...#...#.#...#.....#.#...#.#...#.....#.#...#...#...#.#...#.#.#.#...#.#...#...#.#...#.#.#.....#.#...#.#...#.....#...#.#...........#...#...# +#.###.#.#.#.#.#.#######.#####.#.###.#####.###.#.#.#.#.#.#.#.###.#.#.###.#.###.###.###.###.#######.#.###.#.#.#########.#.#######.###.#.#.##### +#...#...#.#.#...#.....#.......#...#.#...........#...#.#.#.#.#...#.#.#...#.....#.....#...#.....#...#.....#.#.#...#...#.#.........#.#.#.#.....# +#.#.#####.#.#.#.#.###.###########.#.#.###############.#.#.###.###.#.#################.#.#.###.#.#######.#.###.#.#.#.#.###.#####.#.#.#.#.###.# +#.#.#.....#...#.#.#.#.............#.#.....#.....#...#.#.#...#.....#.#.................#.#.#.#...#.....#.#.....#...#.#...#...#.#.#...#.#.#...# +#.#.#.#####.#.###.#.#####.#######.#.#######.###.#.#.#.#####.#.###.#.#.#######.#######.#.#.#.#####.#.#.#.###########.###.###.#.#.#.###.#.###.# +#.#.#.#.....#...........#.#.#.....#.#.........#.#.#.#.#...#...#...#.#.#.......#.....#.#.......#...#.#.#.#.........#...#...#...#.#...#.#...#.# +#.###.#.#####.#####.#####.#.#.#####.#.#########.#.#.#.#.#.#.#.#.###.#.#.#.#####.###.#.#.#######.###.###.#.#####.###.#####.###.#.###.#.###.### +#.#...#.#.........#.#.....#...#...#.....#...#...#...#...#.#.#...#.#.#...#.#.............#.........#.#...#...#.#...#.....#.#...#...#.#...#...# +#.#.#####.#######.#.#.#####.###.#########.#.#.###.#.#####.#####.#.#.###.#.###.#########.#.#########.#.#####.#.###.#####.#.#.###.#.#.#######.# +#...............#.#.#...#.#.#.......#.....#...#...#.....#.....#...#.#...#...#...#.....#.#.......#.......#.#.....#.....#.#.#...#.#.#.#.......# +#.#####.###.#.#.#.###.#.#.#.#######.#.#.#######.#.#.#########.#####.#.#####.#####.###.#########.#.#####.#.#####.###.#.#.#.###.#.#.#.#.#####.# +#.....#...#.#...#...#.#.#.#.........#.#.#.....#...#.#.............#.#.#...#.......#.#.......#...#.....#.......#...#...#...#.#...#.#.#.#...#.# +###.#.###.#.###.###.#.#.#.#######.###.#.#.###.#.#.#.#.#####.#####.#.#.#.#####.###.#.#####.###.###.###.#.#.#.#####.#.#######.#.#.#.#.#.#.#.#.# +#...#.#.#...#...#...#.#.#...#.....#...#...#.#...#.#...#.#...#.....#.#.#...........#.#...#...#...#...#.#.#.#.......#.......#...#...#.#.#.#.#.# +#.###.#.#####.#.#.#####.#.###.#####.###.###.#####.#.###.#.###.#####.#.#.#####.###.#.#.#.###.###.#.###.#.#.###.###.###.###.#.###.###.#.#.#.#.# +#...#.#.......#.#...#...#.........#...#...........#.....#...........#.#.#...#.#...#.#.....#.........#...#...#.......#.#...#.#.#.#...#.#.#...# +###.#.#.###.###.#.#.#.###.#######.###.#####.#####.#.#########.#######.#.#.#.#.###.#.#.#.#.#########.#######.#######.#.#.#.#.#.#.#.###.#.##### +#.............#...#.#...#.#...#.#.#.#.......#.....#.#...........#...#.#.#.#.#...#.#...#.#.#.......#...#.......#...#.#...#.....#.#.#...#.#...# +#.###.#####.#.###.#.#.#.#.#.#.#.#.#.#########.#####.#.#########.#.#.#.#.#.#.###.#.#####.###.#.###.###.#.#.#####.#.###.#####.###.#.#.#####.#.# +#.#.#...#...#...#.#.#.#.#.#.#.#...#...#.......#.....#...#.....#.#.#...#.#.#.#...#.....#.....#.#.......#.....#...#...#.#...#.#...#...#.....#.# +#.#.###.#.###.#.#.#.#.#.###.#.#.#####.#.#.#############.#.#####.#.#####.#.#.#.#######.#.#####.#############.#.#####.###.#.#.#.#######.#####.# +#.#.#.....#...#.....#.#.....#.#.#.....#.#.......#.....#.#...#...#.#...#.#.#.#.#...#.#.#.....#...............#.....#.....#.#.#...#.....#...#.# +#.#.#.#.###########.#.#######.#.###.###.###.###.#.#.###.###.#.###.#.#.#.###.#.#.#.#.#.#####.#####################.#######.#.###.#.#####.#.#.# +#.#.....#...........#...#.....#.#...#...#.....#...#...#.....#...#...#.#...#.#.#.#.#.#...#.#...#.......#.........#...#...#.#...#.....#...#...# +#.#####.#.###############.#####.#.#.#.#.#.###########.###.#####.#####.###.#.#.#.#.#.###.#.#.###.#####.#.#######.###.#.#.#.#########.#.#.#.#.# +#.....#.#.#.........#.....#...#.#.#.........#.......#.#...#.......#...#...#.#.#.#.....#.#...#...#...#...#.....#.....#.#.#.....#...#.#.#...#.# +#.###.#.#.#.#######.#.#####.#.#.#.###.###.###.#####.#.#.###.#######.#####.#.#.#.###.###.#.###.#####.#####.###.#########.#####.#.#.#.#.#.#.#.# +#...#.#.#...#...#.#...#.....#.#.#.#.....#...#.#...#...#.#...#.......#...#.#.#.#...#.#...#.#...#.....#...#.#...#.........#...#...#.#...#.....# +#####.#.#####.#.#.#####.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#######.#.#.#.#.###.#.#.#####.###.#.#.#.#.#.#.###.###.#.#.#.#.#####.#.###.#.#.# +#.....#...#...#.#.....#.#...#.#.#...#.#.#.#...#.#.....#.#.#.....#.....#.#...#.#...#.#.......#...#.#.#.#.#.#...#...#.#.....#...#...#.#.....#.# +#.#####.#.###.#.#.#.###.#.#####.#####.#.#.#####.#######.#.#####.#.#####.#.###.#.#####.#.#.#.#####.###.#.#.###.###.#.###.#######.#####.#.#.#.# +#.#...#.......#...#.#...#.......#.....#.#...#.#.#.......#.....#.#...#.#.#.#...#.....#...#.#.....#.....#.......#...#...#.#.......#.....#.#.#.# +#.###.#.#############.###########.#####.###.#.#.#.#########.#.#.###.#.#.###.#.#.###.#####.#####.#.###########.#.#.###.###.#######.#####.#.#.# +#...#...#.....#.....#...#.........#.#...#...#...#.#.......#...#.....#.#.....#.....#.....#...#...#.#...........#.#...#.#...#.......#.....#...# +###.###.#.###.#.###.###.#####.#####.#.###.###.###.###.#.#.#.#####.#.#.#######.#######.#.###.#.#####.#########.#.###.#.#.###.#.#######.#####.# +#...#.......#...#...#...#...#.#.......#...#.....#...#.#.#.#.....#.#.#.#.......#.#.....#...#...#.....#...#.....#...#.#...#...................# +#.#.#.#.#########.#.#.###.#.#.#.#######.#.#########.#.#.#.###.#.#.#.#.#.###.#.#.#.#############.#.#.#.#.#########.#.#########.###.#.#.#.###.# +#.#.#.#...#...#...#.#...#.#...#.#.....#...#...#...#.#.#.#.....#.#...#.#...#...#.#.................#.#.#.........#.#.........#.#...#...#.#...# +#.#.#.#.#.#.#.#.###.###.#.#####.#####.#.###.#.#.#.#.#.#.#.###########.###.#####.#############.#####.#.###.###.#.#.###.#####.#.#.###.###.#.#.# +#.#.#.....#.#...#.....#...#...#.....#.#.....#...#...#.#.#...........#.....#.........#.....#...#...#.#...#.....#.#...#...#.#...#.#...#...#.#.# +#.#######.#.#####.###.#####.#######.#.#################.#########.###.#####.#######.#.###.#.#.#.#.#.###.#.#.###.###.###.#.#####.#.###.###.#.# +#.......#.#.....#.....#...#.......#...#...#...#.........#.....#...#.........#.........#...#.#.#.#.#.#...#.....#...#.....#.......#...#.#...#.# +#.#.###.#.#####.#######.#.#.#.#.#.###.#.#.#.###.###.###.#.###.#.###.#######.#.#######.#####.###.#.###.#######.#.#.#############.###.#.#.###.# +#.#...#.#...#.#.........#...#.#.#.#.#.#.#...#...#.#.#...#...#.#.....#.......#.#.....#.#...#.....#.#...#.......#.#.....#...................#.# +#####.#.###.#.###############.#.#.#.#.#.###.#.###.#.#.#######.#########.#####.#.#.#.###.#.###.#.#.#.###.#####.#.#####.#.#######.#########.#.# +#.....#.#...#.........#...#...#.....#.#.#...#...#.#.#.......#.........#...#.#...#.#.....#...#...#.....#.#...#.#...#.........#...#.......#...# +#.#####.#.###.#.###.#.###.#.#.#######.#.#.#####.#.#.#######.###.###.#.#.#.#.#.###.#########.###.#####.#.#.###.#.#.#.#####.#.#####.#####.#.#.# +#.....#.#.#...#.#.#...#...#.#.#.....#.#...........#.#.....#...#.#...#.#.#.#...#...#.....#...#.......#...#...#.#.#.#.....................#.#.# +#.###.#.#.#.###.#.#.###.###.###.###.#.###.###.#####.###.#####.#.#.###.###.#.###.###.###.#.###.#.###.#####.#.#.#.#.###.#.###########.###.#.#.# +#...#.#.#.#.#...#...#...#...#...#.............................#.#.#.#...#.#.#.#.......#.#...#.....#.#.....#.....#.#.#.#.#.......#...#...#...# +###.#.#.#.###.###.###.#.#.###.###.#####.#.#.###.#.###.#.#.#.#####.#.###.#.#.#.#########.#.#.###.#.#.###########.#.#.#.#.#.#.#####.###.#.###.# +#...#.#.#...#.#.....#.#.#.#...#.........#.......#.....#.#.#...#...#...#...#...#...#.....#.......#.#...........#...#...#.#.#...#...#.......#.# +#####.#.###.#.#####.#.#.#.#.#######.#####.###.#########.#.###.#.###.#########.#.###.#.#.#.#####.#.#.#########.#.#.#####.###.#.#.#####.#.#.#.# +#.....#.#...........................#.....#...#.......#.#...#.#...#.........#.#...#.#...#...#.....#.............#.#...#...#.#.#.....#.#.#.#.# +#.#######.###.#.#.#####.#.###########.###.#.#####.###.#.#.###.###.#####.#.#.#.###.#.#.###.#.#######.#.###.#.###.###.#.###.###.#####.#.#.#.#.# +#.#.............#.....#.#.....#.....#.....#.....#...#.#.#...#.....#...#.#.#.#.#...#.......#...#...#.#.#...#.#...#.................#.#...#.#.# +#.#.###########.#.###.#.###.#.#.###.#.###.#.###.#####.#.###.#######.#.###.#.#.#.#.###.###.###.###.#.#.###.#.#.#.#.###.###.#.#####.#.#.#.###.# +#...#.....#.....#.#.#...#...#.#.#.#.#...#.....#.....#.#.#.#.#.......#.....#.#...#...#.......#...#...#.....#.........#.#...#.#.....#.#.#.....# +#.#####.#.#.#####.#.#####.#####.#.#.###.###########.#.#.#.#.#.###.#.###############.#.###.#.###.#########.#.#.#.###.#.#.###.#.#####.###.##### +#S......#...#...........#.........#.................#.....#.......#...........................#...........#.................#.....#.........# +############################################################################################################################################# diff --git a/resources/2024/day17.txt b/resources/2024/day17.txt new file mode 100644 index 0000000..361464d --- /dev/null +++ b/resources/2024/day17.txt @@ -0,0 +1,5 @@ +Register A: 28066687 +Register B: 0 +Register C: 0 + +Program: 2,4,1,1,7,5,4,6,0,3,1,4,5,5,3,0 diff --git a/resources/2024/day18.txt b/resources/2024/day18.txt new file mode 100644 index 0000000..058ae5e --- /dev/null +++ b/resources/2024/day18.txt @@ -0,0 +1,3450 @@ +26,43 +42,61 +25,43 +7,41 +29,40 +5,21 +21,37 +10,7 +57,55 +5,29 +61,44 +2,15 +26,25 +2,27 +1,49 +17,5 +5,38 +25,41 +3,46 +68,43 +17,13 +25,25 +30,43 +69,49 +57,57 +55,64 +9,20 +23,41 +43,62 +53,54 +1,39 +58,63 +35,57 +21,20 +41,53 +17,1 +29,42 +67,40 +63,41 +13,12 +59,55 +19,41 +3,24 +14,19 +61,48 +53,70 +9,25 +62,67 +43,57 +5,43 +4,45 +23,27 +15,49 +13,18 +20,35 +1,51 +3,62 +16,39 +69,46 +12,29 +33,27 +41,65 +5,48 +24,25 +17,17 +7,23 +60,67 +33,59 +25,37 +64,55 +27,45 +15,7 +47,61 +44,57 +12,1 +13,35 +65,62 +31,31 +43,64 +7,25 +8,51 +45,61 +5,34 +15,25 +34,37 +63,38 +63,46 +5,26 +2,51 +1,29 +31,27 +21,23 +7,8 +31,38 +45,68 +3,18 +27,29 +7,63 +11,12 +17,15 +43,53 +59,65 +17,25 +10,15 +3,31 +12,37 +39,62 +33,69 +69,61 +7,1 +13,33 +19,34 +17,26 +37,66 +9,4 +3,60 +17,7 +50,57 +61,50 +19,22 +8,23 +67,49 +5,45 +45,69 +3,17 +19,38 +25,29 +10,17 +13,51 +9,7 +39,57 +58,61 +47,67 +68,57 +57,59 +5,63 +17,42 +22,47 +67,68 +69,41 +9,53 +22,35 +69,55 +33,68 +63,39 +61,47 +65,41 +61,40 +22,33 +52,57 +5,55 +45,58 +3,32 +59,53 +23,43 +12,39 +1,30 +22,15 +69,67 +51,59 +21,46 +15,44 +5,39 +13,4 +3,54 +56,65 +1,33 +43,61 +25,33 +29,39 +19,39 +70,63 +45,57 +7,15 +61,53 +65,53 +11,29 +9,36 +68,45 +13,1 +17,27 +55,60 +3,35 +5,31 +15,24 +25,47 +13,14 +9,39 +1,44 +7,62 +15,12 +59,37 +2,5 +67,65 +32,27 +17,39 +61,70 +1,27 +55,65 +42,55 +0,31 +27,27 +51,61 +5,30 +40,65 +7,39 +1,21 +39,59 +4,1 +43,70 +2,55 +28,27 +46,63 +22,25 +8,25 +2,21 +5,32 +63,49 +63,37 +23,30 +3,12 +48,59 +1,5 +41,59 +32,9 +13,17 +12,11 +13,23 +63,47 +35,59 +26,13 +23,31 +13,24 +7,4 +65,48 +4,7 +3,38 +21,35 +7,7 +50,59 +5,15 +9,42 +13,13 +10,39 +60,63 +62,63 +37,56 +8,11 +1,13 +5,28 +16,29 +57,65 +23,39 +3,15 +9,21 +43,55 +17,37 +68,61 +9,19 +17,24 +4,37 +40,51 +54,67 +7,21 +5,9 +27,39 +5,33 +36,35 +29,36 +40,63 +15,28 +16,37 +15,27 +19,10 +41,70 +27,24 +3,50 +47,59 +29,43 +57,53 +53,67 +67,63 +7,57 +19,37 +11,13 +23,29 +62,39 +25,34 +35,31 +69,57 +15,52 +37,54 +9,14 +64,61 +27,37 +7,28 +27,43 +35,28 +65,47 +5,1 +3,14 +54,65 +47,60 +7,43 +49,69 +69,52 +13,9 +56,53 +11,51 +6,61 +55,63 +23,19 +11,27 +5,47 +9,13 +28,33 +52,69 +66,51 +66,55 +70,41 +8,5 +4,35 +13,15 +13,30 +43,59 +9,9 +25,36 +14,59 +15,19 +68,39 +25,32 +12,9 +3,21 +3,37 +29,45 +51,62 +49,45 +16,21 +7,5 +66,37 +5,22 +65,61 +33,26 +26,41 +44,65 +39,53 +10,11 +4,21 +41,54 +63,67 +3,9 +32,31 +16,33 +5,23 +2,29 +9,47 +13,19 +30,39 +15,2 +11,39 +15,17 +5,40 +39,27 +58,69 +22,21 +65,65 +66,65 +69,53 +37,57 +19,42 +52,67 +61,60 +67,67 +1,53 +2,41 +52,65 +40,57 +37,59 +21,33 +59,61 +27,25 +19,2 +13,16 +23,33 +2,45 +6,57 +8,41 +39,64 +45,59 +67,59 +41,58 +57,58 +1,48 +51,67 +21,42 +49,65 +65,54 +15,34 +13,22 +19,15 +9,17 +9,30 +17,29 +62,35 +43,63 +51,69 +7,53 +13,5 +33,42 +21,39 +28,43 +5,27 +68,53 +58,59 +11,32 +57,67 +35,67 +2,33 +42,65 +27,36 +62,59 +69,54 +1,9 +17,2 +69,43 +15,3 +9,37 +9,5 +67,58 +67,38 +61,37 +55,49 +14,53 +5,19 +7,9 +1,2 +55,68 +31,43 +63,65 +1,55 +23,65 +15,35 +44,67 +1,20 +49,64 +9,8 +11,17 +18,17 +6,23 +14,43 +29,22 +63,50 +13,40 +25,35 +43,60 +27,13 +45,62 +1,22 +28,41 +35,58 +15,29 +8,13 +3,55 +3,59 +21,45 +59,64 +23,24 +37,29 +1,40 +56,61 +22,37 +65,67 +65,46 +63,61 +38,59 +7,55 +10,35 +7,17 +7,48 +53,45 +3,49 +25,26 +50,69 +42,53 +15,11 +14,9 +19,28 +9,2 +7,33 +65,66 +21,18 +63,56 +5,51 +64,65 +7,47 +7,59 +69,51 +24,43 +3,1 +19,4 +39,55 +15,37 +42,57 +7,44 +65,39 +30,29 +19,25 +47,64 +67,46 +19,32 +43,67 +60,57 +13,53 +2,57 +12,19 +65,57 +15,26 +11,5 +29,31 +1,52 +9,61 +46,55 +55,67 +53,69 +29,33 +7,2 +61,39 +29,65 +1,41 +63,53 +16,47 +17,35 +15,23 +17,31 +9,35 +61,63 +7,51 +15,39 +41,57 +66,61 +13,11 +5,3 +3,48 +33,30 +6,31 +3,47 +67,47 +27,48 +53,61 +5,50 +1,43 +23,34 +55,57 +8,33 +27,31 +69,69 +3,19 +13,7 +25,39 +7,19 +16,19 +63,55 +1,15 +59,69 +5,58 +67,35 +21,12 +19,21 +10,41 +67,37 +35,54 +35,55 +9,27 +60,53 +40,55 +61,43 +8,59 +0,15 +59,57 +3,7 +42,67 +5,59 +9,44 +47,66 +41,61 +33,31 +53,59 +14,37 +69,42 +21,31 +60,39 +29,26 +52,63 +23,23 +1,3 +18,27 +25,28 +67,43 +1,45 +36,5 +11,1 +27,30 +67,45 +1,26 +8,45 +3,10 +18,19 +3,33 +1,36 +1,11 +19,30 +14,1 +21,22 +28,31 +19,29 +3,61 +63,63 +1,31 +49,55 +27,35 +25,40 +1,10 +43,65 +4,19 +12,63 +67,48 +17,11 +57,61 +7,49 +65,43 +25,23 +14,31 +43,69 +6,41 +20,1 +58,41 +21,43 +10,23 +53,65 +22,1 +23,25 +31,39 +10,1 +41,69 +69,59 +64,35 +9,55 +3,39 +15,32 +68,49 +29,27 +3,56 +13,37 +15,36 +53,53 +9,1 +33,58 +57,63 +3,53 +45,67 +15,33 +49,57 +63,68 +29,6 +6,45 +59,59 +19,31 +5,42 +14,39 +63,43 +24,27 +54,57 +21,3 +27,33 +11,9 +23,32 +45,63 +26,29 +11,7 +66,69 +69,56 +21,25 +1,4 +14,21 +10,51 +1,17 +40,67 +5,10 +53,58 +61,42 +19,20 +31,29 +9,38 +5,14 +3,5 +29,63 +5,52 +3,57 +15,41 +2,17 +45,54 +31,19 +23,37 +67,61 +45,60 +1,1 +45,55 +21,41 +51,55 +5,37 +11,58 +3,45 +48,69 +19,33 +22,43 +47,56 +63,48 +1,37 +67,39 +5,54 +49,63 +11,6 +39,67 +69,63 +35,64 +1,47 +27,23 +63,59 +7,22 +15,13 +31,32 +31,33 +22,41 +11,4 +31,57 +49,67 +4,17 +11,28 +47,57 +18,5 +4,3 +13,21 +61,56 +3,4 +38,67 +53,63 +19,3 +27,34 +25,46 +15,21 +29,29 +25,38 +29,37 +53,60 +62,65 +5,13 +3,29 +65,58 +41,63 +12,35 +17,21 +17,40 +62,53 +50,65 +2,9 +37,30 +24,39 +66,43 +15,9 +67,69 +56,63 +64,43 +7,29 +5,5 +61,41 +7,6 +8,17 +18,31 +5,12 +61,65 +12,33 +51,65 +19,27 +64,57 +56,69 +17,6 +50,61 +65,69 +31,30 +65,45 +55,69 +26,31 +0,47 +47,65 +10,9 +0,55 +65,63 +1,19 +38,55 +20,39 +6,35 +1,35 +64,51 +9,11 +12,25 +34,57 +18,43 +5,41 +39,65 +13,31 +34,29 +1,24 +3,34 +67,53 +9,23 +27,41 +49,68 +53,43 +12,43 +11,21 +13,43 +59,67 +52,61 +56,55 +18,35 +11,31 +5,17 +60,61 +9,51 +68,59 +35,26 +5,46 +25,31 +39,61 +11,15 +3,13 +57,66 +3,41 +65,37 +3,11 +11,11 +7,11 +38,69 +7,16 +17,0 +59,50 +19,46 +8,27 +59,63 +63,57 +7,52 +27,44 +65,50 +29,35 +15,15 +65,42 +5,16 +55,59 +5,57 +65,60 +3,0 +69,65 +2,37 +9,28 +18,37 +3,51 +63,42 +7,54 +61,59 +12,21 +19,35 +15,31 +9,3 +10,21 +5,11 +11,19 +7,35 +64,39 +61,36 +3,42 +11,41 +54,51 +55,55 +49,54 +63,69 +49,59 +20,25 +47,69 +67,57 +67,64 +13,41 +11,33 +0,13 +59,46 +57,52 +39,60 +6,19 +68,63 +7,38 +61,45 +65,59 +52,53 +4,25 +7,61 +27,38 +3,3 +7,37 +18,23 +65,68 +59,68 +5,6 +3,27 +46,67 +21,40 +17,19 +61,69 +57,56 +33,29 +62,45 +6,13 +1,6 +8,19 +51,57 +46,59 +59,66 +11,35 +17,33 +67,52 +3,25 +55,58 +3,28 +45,65 +0,39 +67,55 +5,53 +69,66 +21,17 +37,58 +23,35 +20,37 +1,7 +11,37 +21,5 +3,43 +65,49 +49,61 +63,52 +59,51 +59,54 +12,41 +58,49 +65,40 +29,28 +48,57 +5,25 +35,60 +3,23 +24,45 +55,61 +57,40 +7,13 +17,43 +3,8 +21,27 +69,68 +20,9 +5,56 +15,1 +9,41 +7,10 +59,56 +16,3 +10,31 +6,3 +33,66 +32,35 +7,31 +61,51 +57,69 +33,55 +10,25 +9,59 +11,16 +25,27 +17,41 +57,41 +1,23 +39,63 +6,25 +17,23 +5,64 +41,68 +69,70 +11,3 +11,26 +7,27 +7,50 +4,59 +18,11 +61,67 +61,61 +19,23 +51,63 +7,36 +67,41 +5,7 +1,25 +15,22 +19,24 +33,25 +63,62 +9,43 +44,53 +61,58 +11,23 +48,63 +29,41 +70,49 +22,27 +13,34 +13,8 +25,22 +30,33 +69,47 +21,6 +44,13 +15,10 +69,26 +15,47 +45,52 +59,20 +21,53 +42,37 +67,25 +10,67 +47,40 +5,68 +34,11 +54,11 +51,31 +69,5 +41,51 +45,36 +51,47 +51,46 +62,19 +53,10 +55,18 +38,35 +38,7 +55,27 +66,11 +23,48 +47,3 +39,31 +17,47 +33,1 +60,3 +42,35 +29,11 +53,48 +69,21 +35,44 +45,29 +67,27 +65,27 +10,69 +53,47 +39,15 +15,59 +47,15 +42,47 +35,61 +51,53 +31,9 +27,54 +29,3 +57,44 +44,29 +25,67 +19,1 +54,21 +19,63 +1,59 +37,48 +33,9 +57,11 +13,70 +40,25 +52,29 +37,10 +16,17 +19,57 +37,61 +37,3 +43,31 +11,47 +33,37 +47,17 +15,67 +33,53 +35,42 +49,43 +51,49 +43,24 +37,11 +45,13 +57,12 +39,5 +57,22 +30,59 +69,22 +29,1 +47,31 +21,44 +63,29 +20,49 +46,1 +37,17 +65,30 +51,36 +65,8 +47,43 +33,35 +46,11 +45,38 +22,57 +61,31 +31,5 +54,31 +31,41 +55,25 +35,69 +69,23 +30,9 +43,37 +15,50 +39,51 +31,35 +51,10 +34,63 +51,11 +57,36 +69,29 +23,67 +5,61 +22,59 +61,15 +35,4 +1,64 +61,35 +55,4 +57,3 +59,5 +56,17 +47,51 +31,14 +66,25 +48,37 +21,67 +35,27 +35,25 +9,48 +28,61 +29,59 +55,51 +44,35 +50,17 +25,3 +58,35 +18,55 +32,47 +41,23 +21,16 +63,20 +9,57 +43,8 +43,46 +38,51 +51,19 +36,19 +22,63 +57,39 +59,10 +25,9 +19,53 +27,55 +57,5 +65,29 +30,61 +63,27 +13,47 +34,45 +30,11 +48,11 +30,7 +57,35 +33,5 +27,59 +45,32 +13,50 +16,13 +61,13 +60,25 +3,67 +9,64 +1,67 +60,21 +58,15 +37,32 +59,7 +40,3 +10,55 +53,7 +28,21 +55,17 +48,53 +43,27 +55,16 +53,5 +53,23 +15,65 +39,37 +49,13 +9,45 +5,62 +51,2 +37,24 +51,43 +45,14 +63,10 +33,52 +25,55 +39,26 +43,26 +60,43 +47,13 +47,27 +45,3 +35,36 +36,69 +52,5 +49,33 +41,19 +36,41 +16,57 +17,45 +50,3 +69,20 +39,29 +41,42 +33,7 +37,7 +39,14 +53,41 +26,65 +29,53 +45,39 +19,66 +13,29 +45,53 +35,45 +53,55 +63,23 +40,15 +53,17 +46,33 +55,47 +33,20 +59,21 +41,5 +26,63 +43,20 +38,17 +37,35 +53,30 +57,51 +32,63 +67,21 +21,70 +33,41 +37,45 +54,45 +13,3 +23,58 +46,9 +11,53 +33,65 +11,66 +33,39 +33,43 +49,9 +53,18 +39,43 +67,28 +14,61 +27,49 +41,25 +50,7 +16,7 +53,25 +66,19 +47,35 +57,24 +21,59 +31,45 +44,31 +23,3 +41,7 +60,47 +48,25 +69,17 +4,69 +57,20 +3,69 +13,48 +55,20 +42,19 +47,16 +9,31 +24,3 +67,13 +19,65 +53,31 +13,28 +43,23 +11,43 +52,15 +36,61 +36,13 +59,14 +31,25 +31,61 +15,5 +41,55 +29,4 +61,33 +25,6 +65,35 +60,7 +31,69 +46,51 +35,22 +41,6 +69,7 +19,69 +69,28 +20,65 +51,38 +40,41 +23,45 +68,15 +59,6 +43,49 +23,51 +21,29 +57,29 +35,13 +51,25 +41,9 +13,63 +36,51 +57,4 +17,9 +63,25 +43,9 +13,65 +35,51 +11,67 +57,2 +32,55 +40,11 +30,45 +42,43 +11,69 +32,53 +39,9 +12,59 +65,25 +47,25 +13,54 +2,69 +47,20 +9,32 +57,23 +21,13 +59,32 +6,65 +24,69 +13,66 +31,13 +63,51 +29,5 +70,29 +61,30 +65,23 +56,1 +25,59 +13,49 +23,12 +65,7 +36,23 +64,11 +37,6 +65,19 +57,18 +18,67 +45,27 +51,22 +27,63 +54,35 +51,7 +30,15 +24,7 +31,64 +47,55 +41,12 +45,18 +38,23 +21,21 +29,61 +25,56 +31,11 +48,5 +31,36 +39,39 +49,0 +37,43 +23,7 +61,57 +36,37 +48,9 +56,37 +68,11 +20,31 +53,50 +28,59 +49,51 +65,31 +45,44 +43,40 +9,65 +22,51 +41,11 +39,20 +39,33 +25,1 +17,3 +42,31 +27,7 +27,50 +41,49 +29,7 +59,49 +45,20 +55,23 +49,37 +33,67 +37,15 +28,11 +41,27 +47,34 +49,14 +45,4 +48,23 +51,9 +55,8 +21,47 +33,34 +37,9 +62,23 +46,41 +1,69 +63,45 +63,8 +48,33 +23,13 +53,36 +67,8 +47,48 +51,20 +23,11 +8,69 +45,33 +25,15 +35,41 +15,45 +62,15 +56,9 +32,41 +35,15 +3,65 +28,65 +13,25 +15,68 +66,23 +50,51 +25,58 +39,17 +3,63 +37,21 +33,17 +29,64 +25,61 +47,42 +37,13 +66,13 +18,61 +55,13 +25,17 +19,68 +29,49 +60,17 +0,61 +25,14 +69,16 +59,31 +30,67 +49,26 +38,27 +56,47 +16,61 +39,46 +61,4 +55,44 +49,47 +69,15 +33,10 +68,31 +51,48 +24,55 +19,43 +8,65 +40,33 +53,12 +55,45 +37,39 +26,69 +37,18 +43,4 +27,21 +43,25 +45,15 +41,17 +52,23 +53,39 +51,45 +41,16 +33,19 +22,9 +59,29 +15,61 +29,48 +63,26 +39,19 +37,49 +21,61 +33,60 +8,57 +43,11 +49,39 +60,11 +19,7 +36,53 +23,53 +28,17 +55,34 +39,3 +63,24 +63,16 +16,5 +45,2 +67,7 +47,50 +1,57 +59,30 +67,22 +51,44 +57,17 +31,59 +27,19 +41,43 +61,32 +35,37 +51,56 +43,51 +47,30 +41,13 +13,59 +47,2 +63,9 +55,3 +33,54 +64,5 +59,35 +43,33 +34,21 +19,47 +37,51 +65,3 +16,69 +56,29 +59,16 +23,21 +18,13 +51,39 +54,55 +62,31 +30,1 +59,13 +64,27 +55,39 +67,9 +59,33 +32,69 +61,24 +9,46 +49,53 +63,11 +64,3 +35,2 +51,37 +17,67 +21,63 +9,15 +9,29 +31,53 +28,37 +68,3 +12,45 +42,23 +20,59 +26,51 +22,29 +45,7 +44,33 +47,21 +48,43 +55,46 +55,53 +69,0 +45,9 +31,49 +51,23 +13,55 +35,63 +27,53 +51,16 +35,29 +31,21 +25,13 +43,28 +49,27 +53,8 +10,61 +40,45 +51,27 +19,11 +61,8 +49,28 +31,67 +24,61 +59,25 +37,46 +40,35 +38,9 +17,64 +12,3 +41,2 +37,23 +31,22 +47,29 +69,1 +62,13 +21,62 +52,39 +53,34 +26,3 +41,1 +27,57 +53,29 +61,9 +42,17 +33,21 +53,21 +16,53 +57,47 +37,16 +15,63 +41,41 +63,33 +65,21 +25,63 +55,5 +23,63 +23,14 +55,9 +13,69 +29,68 +25,21 +45,23 +35,19 +47,9 +54,1 +22,3 +54,39 +55,37 +49,4 +35,17 +19,45 +27,10 +34,47 +51,17 +33,33 +34,17 +35,66 +65,1 +67,31 +58,33 +26,9 +26,47 +17,14 +44,47 +33,61 +28,51 +47,23 +44,9 +26,5 +61,27 +20,13 +25,57 +37,37 +49,46 +36,21 +16,49 +61,25 +11,64 +4,65 +52,7 +35,5 +23,60 +41,34 +11,65 +51,29 +22,49 +24,49 +67,5 +13,62 +47,33 +57,27 +17,46 +23,4 +47,11 +33,63 +9,62 +31,2 +15,16 +19,19 +41,29 +22,65 +38,41 +41,33 +68,33 +36,47 +66,5 +17,57 +66,27 +39,52 +31,51 +59,45 +59,15 +55,35 +53,28 +5,65 +33,45 +51,15 +67,36 +29,56 +64,33 +31,63 +53,4 +7,67 +26,21 +19,49 +21,15 +56,25 +27,5 +28,47 +63,28 +28,53 +23,47 +59,39 +48,27 +24,19 +51,32 +69,33 +61,49 +21,49 +33,13 +37,55 +51,24 +13,45 +65,5 +29,17 +23,64 +45,25 +44,1 +69,19 +11,60 +65,15 +19,52 +42,25 +9,67 +25,51 +15,42 +49,23 +21,9 +32,61 +45,6 +40,31 +19,9 +35,43 +68,25 +59,3 +21,55 +35,53 +45,11 +33,48 +43,3 +33,44 +33,50 +43,50 +63,7 +49,17 +69,45 +53,35 +43,15 +53,57 +28,67 +55,50 +29,47 +42,39 +23,18 +45,1 +31,37 +37,12 +33,49 +33,11 +30,57 +29,67 +43,29 +48,51 +39,50 +16,65 +47,12 +57,9 +67,18 +1,65 +53,3 +53,37 +59,41 +40,7 +45,45 +33,2 +53,46 +45,49 +61,29 +61,17 +55,41 +59,18 +50,13 +39,13 +65,16 +39,48 +51,5 +65,17 +53,9 +17,63 +39,40 +16,55 +57,19 +19,13 +53,19 +37,1 +36,63 +31,12 +26,59 +61,21 +41,10 +18,57 +21,57 +69,25 +49,5 +27,18 +48,45 +34,1 +57,25 +67,51 +32,19 +62,7 +39,4 +19,55 +45,19 +65,2 +50,53 +31,50 +25,45 +39,45 +43,21 +26,7 +23,10 +63,21 +29,57 +69,27 +35,1 +63,19 +20,51 +21,56 +52,41 +68,9 +39,44 +61,11 +30,17 +65,33 +54,5 +39,21 +69,32 +27,67 +62,3 +56,31 +25,7 +42,51 +43,35 +43,10 +39,35 +41,45 +23,49 +65,51 +30,53 +59,47 +31,55 +45,16 +53,52 +22,53 +49,49 +35,65 +17,65 +55,15 +31,17 +67,3 +30,51 +6,69 +56,11 +53,49 +69,39 +62,1 +12,49 +17,44 +33,24 +69,37 +42,13 +39,41 +65,14 +9,63 +29,46 +54,23 +61,23 +45,31 +62,5 +24,51 +64,23 +7,60 +64,17 +35,39 +31,66 +45,48 +25,66 +21,7 +41,3 +55,42 +41,67 +49,41 +31,1 +42,1 +47,18 +33,47 +27,15 +44,21 +37,65 +15,51 +65,13 +23,15 +28,5 +37,47 +33,15 +56,13 +58,11 +19,67 +11,49 +60,51 +51,41 +65,20 +49,15 +21,51 +13,46 +61,28 +5,67 +39,47 +17,59 +29,20 +47,47 +59,9 +38,3 +47,63 +27,16 +51,1 +45,51 +49,11 +32,7 +25,69 +58,7 +43,45 +29,23 +18,59 +29,62 +38,29 +35,11 +27,1 +59,19 +51,28 +65,9 +49,25 +49,20 +59,28 +11,61 +43,17 +33,6 +67,23 +44,7 +1,68 +23,5 +59,1 +55,32 +57,42 +69,10 +34,33 +31,47 +58,23 +20,17 +59,2 +52,19 +41,21 +27,17 +70,13 +61,5 +69,13 +30,25 +49,6 +27,11 +34,7 +55,11 +27,51 +25,65 +43,44 +13,61 +35,7 +47,22 +58,29 +67,33 +33,40 +50,9 +39,25 +39,18 +22,7 +47,39 +67,30 +69,3 +40,29 +29,21 +41,28 +67,19 +20,5 +65,6 +25,19 +68,23 +37,69 +41,31 +15,66 +37,53 +10,47 +15,43 +43,5 +41,15 +63,34 +57,31 +50,35 +53,24 +53,11 +49,3 +17,55 +23,17 +57,38 +70,35 +50,41 +11,25 +61,7 +57,15 +32,15 +51,50 +1,66 +29,13 +37,25 +40,37 +65,36 +51,0 +63,18 +45,21 +57,1 +63,15 +57,13 +55,7 +25,16 +20,69 +1,63 +57,37 +59,23 +35,21 +64,31 +67,11 +31,15 +63,31 +19,5 +63,3 +33,23 +63,13 +17,69 +53,1 +31,23 +49,1 +53,27 +15,55 +48,49 +37,63 +61,0 +43,14 +20,15 +35,33 +51,33 +23,9 +67,17 +29,19 +43,19 +12,67 +2,63 +24,21 +31,7 +49,29 +11,56 +9,54 +39,11 +53,33 +13,67 +53,14 +5,69 +70,7 +67,29 +37,41 +55,21 +33,4 +20,55 +42,5 +41,30 +3,66 +68,5 +25,5 +35,40 +35,14 +45,35 +41,8 +55,38 +27,56 +38,63 +45,37 +59,26 +45,28 +13,56 +49,19 +35,35 +20,61 +23,69 +53,51 +37,27 +29,9 +51,12 +55,6 +37,33 +15,57 +45,24 +25,11 +18,49 +25,53 +15,14 +11,63 +47,1 +36,27 +49,38 +51,21 +35,3 +7,45 +7,69 +27,2 +29,25 +51,3 +39,23 +35,32 +28,57 +32,57 +60,13 +41,47 +39,49 +16,59 +23,1 +63,17 +34,15 +50,31 +40,19 +27,3 +49,21 +32,23 +31,18 +13,27 +17,53 +38,37 +66,1 +45,47 +29,14 +2,59 +27,12 +11,44 +69,11 +37,19 +57,49 +38,43 +19,51 +49,7 +19,62 +20,53 +37,38 +31,0 +58,53 +26,61 +46,13 +41,35 +25,68 +35,23 +39,69 +53,2 +60,35 +11,50 +7,65 +29,8 +17,49 +63,12 +51,51 +69,35 +51,26 +65,55 +1,61 +43,39 +21,65 +54,27 +45,46 +44,41 +13,39 +27,9 +35,9 +61,55 +13,57 +33,38 +9,69 +31,4 +43,1 +21,11 +35,16 +7,3 +68,13 +22,67 +9,33 +11,45 +17,61 +58,45 +39,7 +32,45 +69,18 +7,66 +49,35 +33,57 +47,53 +43,41 +17,8 +19,59 +24,63 +36,9 +38,13 +69,2 +5,49 +27,61 +55,14 +46,7 +23,55 +33,51 +50,23 +67,34 +39,1 +35,49 +55,33 +47,45 +24,1 +11,59 +36,31 +49,31 +39,22 +57,21 +17,51 +47,19 +57,7 +43,43 +41,48 +31,65 +47,49 +69,38 +59,27 +19,8 +41,39 +23,54 +69,9 +59,17 +56,27 +28,1 +55,19 +55,43 +11,55 +37,44 +57,26 +9,68 +60,33 +47,5 +11,57 +41,37 +47,41 +9,49 +33,12 +59,43 +23,61 +26,19 +49,30 +8,55 +52,43 +55,31 +27,65 +43,47 +41,22 +49,40 +21,1 +57,45 +19,48 +18,51 +29,51 +37,67 +26,53 +61,1 +38,1 +36,1 +17,54 +46,29 +24,17 +46,25 +65,11 +51,13 +27,47 +50,43 +14,5 +23,57 +55,29 +55,1 +69,6 +21,69 +29,69 +37,5 +48,15 +19,17 +23,68 +14,69 +19,61 +27,69 +63,5 +43,7 +31,3 +46,37 +35,50 +29,24 +23,59 +67,1 +45,5 +43,38 +61,22 +57,43 +14,63 +56,49 +29,55 +61,19 +59,38 +47,7 +24,11 +51,35 +35,68 +45,17 +67,16 +58,5 +25,49 +54,41 +14,57 +45,41 +37,31 +21,19 +61,3 +53,13 +45,22 +43,13 +31,70 +59,11 +15,53 +33,3 +46,45 +47,37 +63,1 +45,43 +57,33 +34,25 +53,15 +15,69 +35,47 +49,18 +69,31 +29,15 +63,35 +67,15 +51,34 +5,35 +11,52 +60,2 +39,16 +60,19 +54,2 +52,6 +33,46 +27,68 +2,11 +28,44 +26,66 +56,14 +10,0 +53,68 +1,60 +22,38 +45,12 +70,53 +30,66 +46,70 +38,22 +53,26 +30,10 +47,4 +26,15 +60,48 +21,34 +66,22 +13,44 +14,4 +14,2 +10,18 +37,0 +38,26 +10,60 +30,40 +8,9 +42,45 +69,44 +36,59 +56,68 +14,3 +27,58 +62,24 +43,48 +0,51 +18,1 +9,70 +21,0 +51,8 +10,4 +33,56 +32,13 +22,30 +1,50 +36,54 +40,22 +32,2 +41,44 +9,10 +68,42 +52,52 +29,58 +66,36 +48,44 +22,40 +2,70 +26,10 +30,46 +60,14 +32,49 +55,48 +15,8 +60,0 +4,46 +57,34 +60,18 +48,55 +30,48 +39,0 +70,8 +20,32 +24,42 +23,8 +41,40 +59,44 +50,56 +36,18 +66,3 +4,41 +8,42 +22,13 +54,10 +43,36 +62,8 +64,36 +47,44 +14,16 +38,32 +46,4 +16,9 +66,24 +52,4 +56,30 +0,64 +4,47 +55,0 +20,34 +12,10 +24,38 +38,52 +42,26 +10,19 +17,62 +66,31 +42,2 +19,26 +31,56 +70,6 +70,57 +1,62 +50,11 +13,64 +48,31 +50,16 +18,9 +64,44 +8,52 +64,29 +52,16 +24,54 +51,66 +58,46 +52,48 +2,38 +20,64 +54,54 +11,40 +30,63 +56,28 +50,4 +55,52 +4,40 +11,0 +52,21 +35,30 +64,21 +8,0 +54,52 +20,36 +0,54 +28,60 +33,62 +67,10 +44,38 +46,12 +66,40 +16,58 +52,56 +58,28 +48,19 +28,23 +68,29 +23,22 +58,19 +52,10 +34,19 +23,2 +4,70 +24,47 +48,14 +36,25 +22,11 +34,39 +48,4 +58,14 +8,4 +50,24 +28,2 +60,55 +48,64 +31,16 +61,16 +38,46 +5,0 +32,62 +14,54 +18,2 +64,10 +20,48 +17,50 +64,14 +12,55 +17,56 +28,48 +54,3 +22,31 +64,50 +14,67 +70,33 +56,51 +27,40 +53,66 +36,38 +49,34 +15,56 +52,28 +62,51 +52,55 +41,14 +58,51 +4,0 +52,11 +37,62 +0,63 +66,12 +23,20 +56,32 +2,3 +38,61 +22,2 +48,50 +68,24 +21,28 +0,22 +60,4 +17,12 +6,1 +30,0 +20,14 +4,52 +19,64 +65,56 +27,28 +66,2 +26,4 +24,37 +32,54 +51,54 +66,45 +64,34 +2,44 +46,3 +29,12 +20,45 +68,46 +0,35 +14,15 +14,14 +23,38 +8,16 +8,60 +16,16 +46,32 +14,8 +58,32 +19,14 +70,21 +20,29 +38,39 +70,11 +47,38 +28,58 +68,36 +2,48 +34,38 +22,23 +56,67 +0,26 +30,19 +54,29 +40,32 +28,38 +36,58 +18,18 +46,69 +47,6 +44,20 +55,24 +34,30 +20,56 +26,17 +1,58 +25,42 +58,21 +34,32 +66,47 +15,0 +62,12 +23,52 +62,49 +61,18 +60,23 +30,34 +66,34 +0,58 +40,13 +44,70 +34,46 +12,15 +35,24 +12,16 +24,23 +26,40 +6,21 +29,52 +64,15 +59,52 +33,18 +70,47 +16,34 +66,68 +0,38 +1,38 +44,55 +60,5 +6,10 +58,18 +16,22 +34,48 +34,22 +31,8 +44,3 +24,13 +70,12 +20,70 +56,34 +44,18 +50,27 +14,45 +26,42 +55,12 +24,22 +40,9 +50,39 +67,66 +52,40 +12,66 +30,30 +62,20 +58,31 +20,8 +61,54 +62,33 +24,4 +42,44 +7,70 +21,50 +70,45 +30,44 +16,12 +28,45 +52,30 +0,25 +39,36 +20,46 +50,40 +10,8 +1,56 +36,2 +47,10 +22,44 +70,39 +4,18 +18,58 +50,37 +50,38 +8,12 +12,40 +41,24 +48,34 +42,36 +17,52 +2,12 +62,46 +55,10 +7,42 +18,14 +68,2 +39,6 +33,0 +63,22 +55,56 +60,42 +0,12 +46,43 +57,54 +30,54 +30,62 +64,37 +34,40 +30,52 +28,66 +36,36 +18,36 +39,32 +62,27 +28,7 +52,0 +24,36 +68,48 +1,46 +34,6 +58,36 +68,10 +44,8 +18,4 +14,18 +18,0 +6,12 +40,50 +52,54 +22,10 +21,64 +62,52 +6,14 +35,10 +40,53 +54,47 +57,6 +40,48 +40,38 +47,26 +60,38 +34,0 +32,26 +24,20 +26,44 +58,68 +54,42 +63,4 +44,17 +44,0 +39,30 +24,16 +63,6 +21,54 +63,36 +64,41 +70,4 +55,40 +12,57 +64,38 +23,46 +66,30 +38,54 +10,20 +32,32 +45,8 +2,50 +21,58 +42,69 +28,14 +70,24 +56,12 +30,35 +33,8 +60,49 +62,6 +40,12 +4,58 +59,48 +70,9 +10,6 +18,70 +6,2 +43,54 +35,0 +36,50 +50,21 +29,44 +35,20 +34,43 +46,19 +56,5 +23,0 +38,0 +44,44 +30,13 +24,28 +23,50 +20,30 +37,34 +28,34 +54,48 +70,48 +25,18 +42,33 +67,24 +50,70 +42,22 +26,50 +62,11 +37,4 +35,12 +34,53 +18,6 +30,36 +42,54 +38,5 +30,41 +46,68 +60,26 +10,10 +46,46 +18,29 +24,26 +55,26 +3,44 +10,32 +55,30 +19,12 +56,15 +65,44 +26,16 +52,47 +30,14 +22,64 +35,62 +7,18 +16,28 +57,70 +68,51 +43,2 +49,56 +62,18 +59,22 +0,70 +36,46 +20,33 +38,2 +47,36 +5,44 +35,8 +14,25 +18,66 +50,25 +24,32 +70,1 +7,12 +26,45 +12,53 +1,12 +32,18 +32,46 +30,2 +34,16 +32,1 +32,42 +43,0 +3,40 +35,56 +70,22 +29,18 +58,57 +67,42 +12,7 +38,24 +52,24 +46,53 +32,48 +32,28 +38,40 +68,16 +10,38 +40,5 +60,50 +50,0 +36,10 +68,30 +65,32 +8,2 +57,32 +30,56 +26,48 +4,36 +26,32 +34,13 +70,17 +28,8 +12,30 +37,52 +0,24 +10,30 +31,20 +46,30 +60,60 +56,62 +24,10 +66,64 +1,32 +16,32 +11,20 +23,26 +46,23 +50,32 +31,28 +57,8 +12,46 +33,32 +60,45 +18,46 +38,45 +50,63 +56,57 +45,26 +4,13 +48,60 +30,42 +34,56 +28,35 +2,8 +14,65 +41,38 +34,44 +6,4 +36,17 +64,54 +60,36 +24,29 +18,40 +28,12 +14,68 +57,0 +15,54 +56,24 +34,9 +24,44 +51,42 +24,35 +48,40 +11,18 +57,14 +3,58 +22,69 +4,42 +4,9 +48,17 +27,22 +64,60 +8,47 +52,49 +36,62 +59,24 +10,3 +44,54 +25,24 +70,16 +15,20 +43,32 +2,32 +65,24 +24,0 +20,27 +58,67 +50,64 +45,64 +68,38 +66,9 +4,43 +6,27 +30,6 +48,1 +4,27 +54,69 +26,52 +0,52 +10,52 +40,49 +64,62 +50,58 +21,66 +22,58 +16,18 +49,66 +54,9 +28,16 +44,52 +62,70 +60,65 +9,6 +11,10 +8,66 +62,42 +6,47 +12,31 +3,22 +42,16 +42,60 +16,52 +70,58 +39,8 +42,24 +36,0 +65,12 +54,66 +2,49 +62,69 +28,15 +31,58 +2,39 +4,32 +10,27 +4,20 +44,26 +8,37 +44,63 +32,37 +12,50 +39,56 +27,66 +21,30 +44,5 +52,34 +60,24 +40,36 +10,63 +58,26 +52,51 +20,44 +0,27 +0,4 +8,56 +12,6 +28,30 +42,68 +28,3 +56,22 +58,50 +41,64 +26,68 +10,45 +21,14 +36,49 +7,34 +48,66 +32,14 +50,52 +25,44 +48,6 +14,58 +2,67 +18,25 +26,26 +48,26 +69,24 +13,68 +44,27 +56,20 +65,0 +19,0 +10,65 +34,70 +46,39 +22,18 +18,53 +11,36 +20,21 +13,36 +64,48 +6,29 +40,8 +68,27 +32,51 +16,23 +18,30 +70,46 +26,0 +14,40 +58,8 +11,8 +29,30 +35,48 +40,23 +0,28 +0,40 +17,16 +15,30 +52,32 +0,56 +15,60 +14,17 +52,37 +2,58 +12,68 +27,4 +6,30 +40,39 +47,0 +32,20 +25,50 +15,48 +60,32 +20,62 +58,43 +44,66 +52,35 +26,60 +20,18 +63,44 +52,62 +0,45 +16,24 +40,40 +10,70 +20,28 +43,12 +54,34 +38,62 +42,3 +4,44 +40,66 +65,34 +12,56 +8,62 +29,70 +5,18 +36,33 +58,60 +54,56 +62,28 +10,49 +26,37 +27,46 +27,70 +56,42 +28,46 +21,2 +2,46 +66,54 +16,40 +58,34 +14,34 +55,54 +22,70 +13,32 +22,16 +46,0 +24,18 +40,68 +2,62 +66,28 +4,61 +46,56 +21,48 +66,44 +26,28 +28,40 +24,65 +32,52 +10,53 +15,58 +28,0 +16,2 +6,26 +46,14 +60,15 +56,26 +56,35 +48,52 +52,45 +14,60 +4,8 +60,16 +58,62 +44,60 +44,46 +50,33 +39,68 +28,55 +34,36 +50,36 +38,44 +0,6 +40,42 +30,20 +64,8 +28,52 +58,65 +56,23 +18,68 +38,68 +18,50 +70,65 +18,54 +16,56 +24,68 +64,64 +22,56 +20,19 +16,70 +30,24 +8,14 +68,19 +20,11 +16,63 +70,36 +18,47 +30,38 +66,33 +5,66 +48,56 +14,11 +2,28 +64,18 +2,68 +64,59 +42,46 +40,18 +2,23 +68,22 +46,64 +9,22 +32,29 +17,36 +52,8 +52,9 +21,68 +69,30 +62,54 +35,46 +38,10 +42,34 +19,16 +23,66 +56,45 +54,59 +6,53 +28,24 +46,26 +70,2 +52,66 +46,49 +20,42 +3,2 +62,55 +6,58 +0,62 +65,28 +0,48 +56,46 +54,19 +29,10 +22,19 +40,62 +61,68 +24,46 +59,12 +49,44 +18,45 +44,2 +18,24 +40,27 +20,0 +64,2 +62,66 +32,30 +6,33 +43,66 +58,24 +52,44 +31,46 +12,58 +66,59 +63,40 +4,29 +24,48 +44,36 +50,8 +16,4 +58,25 +54,60 +14,42 +4,31 +55,2 +60,1 +46,18 +26,36 +10,64 +56,33 +4,63 +60,62 +56,56 +22,66 +32,59 +44,30 +53,44 +0,49 +4,68 +55,66 +28,36 +40,16 +4,62 +10,56 +30,69 +10,29 +25,62 +43,16 +8,7 +46,44 +60,59 diff --git a/resources/2024/day22.txt b/resources/2024/day22.txt new file mode 100644 index 0000000..a2cf228 --- /dev/null +++ b/resources/2024/day22.txt @@ -0,0 +1,1691 @@ +2342482 +3480404 +8173893 +6261369 +4915255 +2941439 +9459848 +13971249 +1233112 +7532938 +8419645 +3565851 +11173084 +1225858 +1305245 +1181027 +11588301 +10329003 +1702704 +10770040 +9827241 +14583557 +13119855 +9983401 +12205754 +14759144 +15423059 +15385123 +1493850 +830332 +6748730 +5069235 +865736 +6071288 +13988813 +7194910 +6776200 +4047260 +13009906 +12937280 +12671909 +12399168 +15387664 +999296 +15463674 +14759047 +8214808 +3573250 +11159523 +14809684 +14950688 +16248662 +2964756 +2629140 +6790734 +12468856 +1183716 +2828454 +15012926 +798618 +9589552 +12832071 +4562907 +5366860 +9057279 +16186074 +4933882 +3933057 +16136781 +15120182 +4060133 +10636865 +8483304 +2034601 +6327071 +4992997 +15622365 +10474247 +1704598 +9345851 +8955396 +15452859 +11608190 +991794 +12036133 +4148005 +15085796 +9254255 +261316 +3015022 +15274762 +4727165 +3189750 +8652653 +11224650 +7283273 +10370201 +11859687 +1692499 +16453684 +10977576 +15195495 +12513557 +11952651 +3664043 +993130 +8984253 +9372186 +8589487 +15871307 +7964822 +5281727 +2712544 +6132821 +4081815 +11409388 +9344163 +5659640 +13850603 +4371323 +12850014 +15233971 +10307688 +6909798 +11176988 +8975231 +13096860 +4525706 +11061018 +8878041 +12682120 +3572757 +15186491 +10829184 +3885003 +13192835 +15427220 +13109476 +6667125 +14949019 +8418369 +9954292 +7280684 +2521571 +10815317 +15899549 +7142881 +11124178 +1876483 +2068123 +2979468 +15986206 +3025500 +12440222 +10123006 +7860870 +12411817 +10652855 +15218710 +13589720 +9364738 +3819560 +1038835 +14586904 +4083461 +11822138 +8723748 +10656556 +16527738 +9748638 +13836039 +9062876 +11118183 +14129442 +7940799 +11658151 +14453390 +3544834 +14568053 +3125872 +1886790 +5581083 +8683682 +8139003 +14306734 +2127472 +10408550 +9093097 +8287896 +16126245 +5746156 +2198769 +12592619 +13657331 +6163981 +9358610 +8723518 +506974 +16454217 +15766700 +5175814 +8373682 +8706918 +6828439 +10540630 +3962017 +3167425 +1509576 +1802011 +2705872 +1334412 +7637080 +662225 +2414378 +4154613 +16319843 +9677085 +15845622 +6574375 +9271497 +677166 +4384990 +7329533 +5338003 +10598822 +3845101 +12002285 +4366727 +11147699 +2797427 +8172972 +1862496 +16753999 +16708920 +14174128 +12599318 +7048959 +16330263 +2499179 +16356041 +6024979 +9798939 +9630460 +3890930 +3738447 +15420878 +6636914 +9112544 +7139568 +1767409 +10464439 +7975124 +16757341 +1610531 +7351438 +4405640 +13815892 +12840777 +3174342 +3722611 +5120033 +2985065 +3555911 +7374819 +2430066 +636855 +2453293 +9847169 +646249 +10853678 +12780159 +10517246 +12254249 +5967537 +10729394 +10604866 +2716297 +14628109 +9665899 +10259393 +3098757 +11488643 +11472753 +8743550 +5937180 +10131857 +8393993 +10604722 +14366850 +15298472 +886624 +6459418 +14273812 +10236999 +13675731 +4199835 +15788594 +674952 +14628426 +4425512 +10178321 +9949119 +10370811 +7854746 +8207566 +4845056 +493617 +13843132 +8526147 +284569 +8484307 +6731942 +8169194 +6893213 +6910098 +13084999 +16710084 +3770699 +7504819 +11329303 +11746123 +14990337 +3711382 +15186895 +9405632 +2133204 +7929609 +5686086 +16666257 +5847883 +4042135 +13018320 +10411333 +9807362 +12780509 +11907259 +3659593 +1285891 +3910667 +283146 +4647703 +399482 +10438519 +699917 +3979645 +11190119 +10067513 +13769227 +12559467 +14545447 +12461679 +4268017 +11515498 +9566096 +8020945 +4496326 +16224732 +3258694 +3277019 +6404486 +16298095 +9431885 +11113151 +5096448 +11707003 +3536056 +8352731 +7904885 +10443476 +12495664 +13629790 +4331994 +11715923 +7745214 +5385020 +13967583 +12403846 +13184430 +11007327 +12374349 +1084739 +2780121 +3481974 +11025073 +5338208 +1934784 +16522627 +7253978 +5727108 +7543020 +1126320 +11716458 +6128932 +5202167 +12058503 +6458697 +7634101 +8269139 +2018078 +15046878 +7952059 +3483750 +3991376 +10954665 +5497812 +14460704 +4307035 +3262199 +2556372 +15966546 +14927828 +2826114 +1932787 +1679649 +15161618 +11997203 +7258761 +16653338 +9925031 +10829407 +8317198 +2362330 +13239202 +15647999 +11535901 +15737146 +15812297 +6465431 +15239128 +4688936 +2330627 +14258458 +2338675 +4791761 +12226190 +5521553 +12839906 +2763705 +4649117 +10974387 +10091863 +5296814 +16609338 +12483424 +11673332 +12017909 +14043486 +10583336 +4736314 +13122094 +6581816 +4504552 +10554345 +2850198 +1868472 +1977303 +12446837 +11287286 +1310577 +10210683 +16545542 +13683866 +8049104 +9441896 +4633017 +14667486 +12163010 +12536852 +11048204 +16617896 +7215766 +10350719 +11038656 +12470023 +2495494 +9339429 +7233515 +4830635 +12938238 +2004065 +15862240 +3540864 +2036143 +3279128 +9062266 +4863429 +8790562 +10151322 +5515927 +10516080 +3095927 +10909813 +9358337 +2188099 +2585975 +14145070 +2679726 +10284069 +4921364 +15047912 +5238787 +6401216 +9726434 +2784351 +7935769 +13644535 +5378931 +16584168 +12860939 +7143980 +14167006 +4869273 +11392792 +1087347 +13188737 +6456937 +13524727 +14741204 +15463799 +8016013 +16425939 +5221044 +3995870 +7348805 +9235586 +9387552 +14585933 +5262851 +1807346 +9742930 +1989538 +12750784 +8997751 +4221235 +1996129 +9311614 +3673441 +6882010 +3614601 +10052065 +5892201 +12723480 +6448876 +14001704 +9550540 +6394681 +2366615 +15859197 +7090498 +14365349 +8727535 +12483104 +4055553 +342278 +9413292 +8133681 +10950035 +2230977 +3264711 +1909693 +9381570 +10075923 +8887809 +10715166 +3258101 +5647168 +4356979 +14576055 +4529452 +8882487 +6106638 +6384825 +2572895 +9150968 +7110100 +16008677 +2348623 +7358906 +5892302 +5464937 +5679816 +3013949 +10673056 +364414 +14403863 +11120206 +11921385 +14416980 +994546 +1245810 +9631033 +11448187 +4858128 +9323527 +1093813 +13636380 +14885823 +15627485 +7828530 +4752162 +10785851 +13030193 +15115146 +663762 +15975395 +13029479 +8122815 +9340475 +4745340 +599426 +9384561 +616829 +8115544 +7808366 +14424762 +558097 +9980104 +9079426 +4301468 +6070508 +12808294 +2243687 +15945869 +811958 +3535266 +4489123 +429998 +645174 +7021483 +577891 +7467442 +7874977 +3249178 +303853 +8375103 +11526806 +10860519 +5116220 +757770 +3866160 +1906126 +9603245 +10913460 +8777236 +11863556 +4492164 +616130 +9694740 +15535135 +8269331 +16054467 +6212002 +16646945 +1869289 +4480260 +1322821 +5929008 +6984741 +10544068 +5521432 +5654012 +4654907 +4050490 +11729517 +581819 +11374595 +15435049 +9047233 +13621423 +6752701 +3943431 +8289906 +2649723 +7999190 +13994547 +9911263 +2828539 +6557169 +9591246 +5904671 +5842718 +453978 +15247698 +16008920 +1988884 +2146434 +7494895 +5756272 +7555706 +660604 +2913077 +11004266 +4657731 +5738378 +15706240 +669085 +12659988 +5230057 +13554163 +16681647 +2771510 +6284483 +4777653 +13730918 +7647896 +5977340 +8683626 +14819890 +10759013 +14762998 +11316676 +2444976 +9945684 +13912579 +296751 +11190006 +11108438 +2344488 +6949228 +15547385 +10860393 +556854 +11632668 +15090590 +7184694 +2184155 +7941605 +3162551 +14804408 +12032090 +1049850 +12748965 +4452994 +10131948 +2622591 +15082285 +578601 +8546164 +15679798 +16638669 +5538620 +1834581 +14126483 +16340151 +7390334 +4543096 +7021099 +8587698 +15616118 +3134314 +8539936 +13414183 +14321707 +4300650 +12391668 +11306935 +11981710 +5747151 +16724661 +8578364 +1145204 +5916108 +6726726 +5978656 +1781763 +10435267 +15290613 +11887288 +3848010 +3765716 +2006092 +10286506 +8901936 +7245304 +4469870 +10297893 +7633442 +3745616 +6004226 +11280739 +10504156 +14710683 +15407351 +2890709 +3702603 +10933158 +10108685 +7800601 +2893541 +15582406 +6854748 +11220528 +8921068 +5439440 +10417797 +10466849 +15920623 +10765807 +5705868 +13702351 +7450687 +5926107 +9513656 +4956874 +13744250 +839838 +8968971 +15976821 +4668202 +15378104 +14858070 +7121478 +1097508 +10619648 +9709788 +6569851 +3708369 +15612633 +10630925 +10342484 +16459916 +14939529 +6619560 +6832041 +5512760 +10494345 +16006922 +11594101 +988832 +1704027 +3702871 +8331294 +12337048 +12179045 +5148248 +4682239 +2332862 +6357897 +4125407 +14129469 +14945920 +3030495 +915112 +12324813 +7756410 +2075383 +327288 +14732861 +15267419 +5162816 +1341290 +10856944 +12945007 +15519740 +11031809 +16473434 +12749180 +408592 +2271173 +14458631 +10576876 +11129960 +15131586 +1130817 +13503563 +14114637 +10624856 +15233208 +5158372 +10443815 +14921558 +12743345 +7162795 +9232485 +15470935 +1980397 +13422838 +8043564 +11848684 +9211635 +13219388 +12728149 +15581414 +6447927 +8568299 +8003269 +11537577 +12930336 +10717064 +1556709 +9558339 +16686631 +11636098 +4503315 +9576530 +541137 +14359502 +6021986 +3803056 +2444753 +8995317 +15034049 +11132179 +15226424 +15219307 +15410627 +1931420 +2149476 +12149240 +12645051 +6518927 +4222266 +12733589 +6812852 +6229258 +7305990 +11167915 +10177786 +10704116 +7665294 +12258674 +16405080 +4407463 +13819607 +3265867 +9671461 +11659101 +8103281 +14108725 +14802764 +16239771 +10046297 +5479672 +8399654 +9176876 +3483123 +9875540 +363708 +1971846 +2300428 +471171 +1433699 +13808037 +12616059 +13027189 +5888270 +2846374 +8526995 +665480 +4591051 +13564038 +7006327 +203827 +5421558 +13173673 +12309530 +15921597 +8436317 +4615625 +4639957 +9761870 +10045565 +2442777 +12519008 +5418699 +12982100 +4975202 +10788427 +3517545 +5825732 +2308338 +12682788 +3177628 +1640623 +9832740 +12455675 +9813744 +10737936 +11395144 +750142 +12594016 +7096883 +3938959 +12356731 +1997634 +13403383 +303758 +8506428 +16012863 +2710685 +4043206 +7507667 +4455868 +2214683 +5178472 +10687687 +10510084 +1945641 +12465762 +9798780 +13496507 +1039726 +13019789 +8624537 +8632994 +1538850 +4399718 +5470181 +1574462 +12555604 +14418107 +11292249 +16735219 +8279197 +13942534 +6164629 +10416432 +15746724 +15616040 +8546082 +7199105 +13894932 +10505867 +7489391 +13757715 +4353516 +9249662 +12155144 +731846 +9046028 +16358655 +6884129 +8886789 +4111321 +2881996 +3121752 +5081261 +6943588 +11070701 +9250645 +14621398 +1888582 +13417858 +993783 +15342786 +12477077 +12001512 +15206053 +8387142 +9011404 +3000272 +14230162 +3783131 +7150959 +15785490 +10050787 +11690998 +15440961 +8096905 +4779008 +12310693 +7338905 +13905771 +1535169 +15447363 +2373146 +16313835 +6351508 +9732585 +10125167 +8449306 +8155495 +5460365 +3395609 +5237588 +7961014 +3059688 +16272500 +579182 +9812475 +6356253 +4534824 +11290976 +16514176 +1048483 +15234814 +4516050 +6175405 +7915823 +431588 +8562025 +14744769 +14961275 +14496846 +4196728 +2276442 +4248403 +13005995 +14166500 +13600280 +15724530 +12626871 +889580 +4417857 +14991789 +11573161 +642200 +13850765 +13252343 +1348360 +15647568 +13581029 +654655 +16648907 +16622388 +4926302 +802193 +4119014 +9462656 +14271133 +14693072 +8471812 +15429165 +7865946 +12873033 +258360 +16534226 +7531501 +5085841 +9255380 +12647793 +13284749 +15096367 +10433882 +3841721 +11316511 +257556 +2234736 +10192355 +7112855 +9392596 +16624453 +2939132 +15736891 +10996671 +3884684 +13787683 +1240163 +569107 +4758089 +12368580 +1717216 +11832908 +4815390 +4066445 +8649635 +11552527 +3839386 +3104312 +9701643 +3561071 +3550999 +12674052 +6741962 +6222640 +16400972 +12096493 +13379679 +1256527 +11420012 +5734513 +1821148 +12671891 +8425453 +12100821 +10747626 +5682647 +4533621 +2064249 +9201624 +4699314 +3289973 +14970107 +10651656 +1181329 +7376365 +6014310 +12650763 +8659627 +3538337 +3772094 +14135136 +13010197 +12867742 +10957253 +14819616 +10675208 +11739006 +9189828 +1821582 +1952184 +7072527 +15645345 +3770148 +8078675 +6265150 +1289324 +7051136 +5812611 +8796716 +6997238 +5155686 +15773283 +14149901 +5517810 +13583903 +9152553 +3565907 +16213051 +16714851 +514485 +12949767 +8710916 +14725440 +13329148 +14528167 +1273484 +13004962 +7959980 +1344785 +9644552 +10304115 +9825935 +11254822 +12584564 +15390908 +3477274 +6724254 +9607102 +13220280 +10618910 +8644193 +13295308 +11188832 +14627823 +11497016 +12234908 +6540205 +12338003 +5305158 +13177002 +8970919 +12598360 +12602313 +9926260 +1046065 +14709895 +646382 +7528159 +3169142 +12851274 +14835836 +9203145 +9531419 +12730136 +15132107 +1586695 +4578629 +319154 +13190727 +6564210 +9887241 +1933054 +662839 +269205 +9417746 +3910468 +10261195 +2343640 +15141832 +10914848 +844989 +561643 +10128338 +12556082 +8328392 +305278 +5345145 +4918691 +6367259 +7125742 +13850143 +4016298 +11674814 +1189920 +1923303 +4471479 +11324237 +538126 +12216448 +832640 +6739696 +9504017 +15627563 +2817549 +152500 +4905555 +5378056 +6962393 +5502581 +1197860 +5293084 +8485005 +11469467 +11862096 +7939231 +13653803 +8288894 +11745746 +14615210 +4839267 +3701035 +2659212 +4105160 +11883400 +14983298 +741090 +8413845 +4217099 +2133789 +4593234 +7211036 +10075754 +6291327 +11223874 +5434794 +15578219 +8210218 +4499051 +15790174 +13706757 +11452909 +7045214 +6432765 +6544545 +11713945 +3335353 +9549408 +10799960 +10206630 +933793 +5753388 +7558039 +2199265 +550192 +12178321 +7861999 +16276052 +1995108 +5636684 +11461897 +8619450 +9437229 +13393534 +7882920 +9969840 +9098251 +6385520 +13941508 +6709669 +10027427 +5671436 +15034719 +8807965 +9372544 +6226283 +5260424 +4405304 +9684502 +3660993 +7144655 +7131624 +7247058 +12258252 +9068143 +15226157 +4839660 +7984090 +2744726 +9007814 +9735475 +4927660 +4757021 +5607070 +1841925 +578445 +15551656 +9094337 +10858248 +12602703 +14365998 +6145111 +12377114 +16163631 +843031 +8347978 +2634585 +7882789 +2231474 +9155237 +4859105 +7291290 +6411403 +3415174 +8491333 +14386501 +5746194 +16671386 +1160044 +7052178 +13045822 +9440415 +3993807 +15129559 +9168703 +7361320 +9068230 +14195587 +15900132 +16539940 +8704425 +10824846 +1765193 +4847616 +6142535 +8660824 +13277010 +6163016 +3689035 +8728243 +14202857 +5921964 +8971419 +5697208 +12576575 +15923465 +15470346 +10661582 +217145 +12950461 +5796337 +4811135 +3475721 +6568710 +12397676 +14045050 +7744532 +12610441 +15684707 +2495414 +1356997 +1269282 +13306733 +8381046 +949075 +1065824 +16091381 +16175575 +13809800 +5267870 +14676487 +8234351 +13534067 +8424864 +205637 +10188202 +11927355 +2229224 +14204320 +12719013 +7284179 +5569690 +5051726 +5872012 +13628634 +15889842 +15601831 +3445473 +4940809 +354737 +5817422 +15496544 +8591223 +3695757 +6199328 +5310430 +2476939 +16295838 +1449790 +11005445 +5280735 +12052665 +6252873 +3888021 +4143402 +9396807 +6258402 +9104781 +12405827 +7088955 +13812524 +5103771 +1662102 +2394135 +9640675 +6819862 +11114162 +12292877 +10402633 +6143228 +641901 +1428026 +5985013 +1629811 +14835915 +7401837 +2000917 +2179765 +936714 +5014200 +12545669 +13053332 +1062279 +15892241 +12728211 +16516685 +12205979 +5750986 +772332 +3393241 +15393132 +2852194 +8629182 +11511970 +15591075 +2710883 +16032664 +7420726 +12132614 +16730219 +5812734 +13450861 +16263824 +4442963 +3672895 +9416799 +3859729 +8335270 +12383842 +1983888 +4158561 +8706027 +8872056 +14324952 +16140054 +10175836 +14511850 +3577271 +16574494 +12108443 +12593107 +1930537 +11487479 +14740915 +12691076 +9461589 +11792417 +14349159 +16238812 +8628749 +11725092 +12070957 +10357522 +7872917 +14803676 +4073903 +16307975 +3491039 +10155251 +6821802 +3345695 +14452022 +5039664 +13188644 +12739332 +10910995 +5198307 +13141684 +15694739 +1654775 +10353398 +4424806 +6727292 +1568524 +8599086 +6645542 +8458508 +1345929 +6181587 +11303468 +14426013 +5716499 +15005829 +12735986 +2270255 +2769055 +6142451 +246637 +2680215 +2422985 +16498259 +13948194 +3921822 +4498475 +7534024 +291942 +7578202 +961732 +5726052 +13608903 +8815051 +7109188 +2195821 +1793018 +11415991 +10159054 +808257 +1852671 +1200251 +500691 +15861693 +6644300 +8743241 +1497696 +11238448 +13453505 +7431961 +7434637 +13001419 +6496520 +7995431 +13995218 +12831527 +14054042 +8446632 +9540667 +15253444 +2464827 +5370082 +6915568 +11728777 +16391169 +1591688 +2701292 +15584747 +11760695 +263106 +4360005 +2832673 +14227837 +4257998 +7192347 +7182010 +15993435 +13267653 +14673143 +15602198 +8565559 +10394725 +9152579 +5752009 +9233471 +1559639 +9296996 +8396368 +8178477 +13609659 +1207816 +7648934 +2169374 +8543549 diff --git a/resources/2024/day23.txt b/resources/2024/day23.txt new file mode 100644 index 0000000..1a7189f --- /dev/null +++ b/resources/2024/day23.txt @@ -0,0 +1,3380 @@ +yp-db +ma-sm +jo-yy +vf-jz +yb-md +nk-ts +nf-pc +ln-on +ou-gb +vr-yy +tq-qa +ja-fr +fc-ah +qx-cy +ht-jk +yl-mx +zg-kb +ln-db +yg-lf +on-bt +tw-ic +rs-fz +jn-ka +iq-wb +tg-dn +pr-oo +uo-pe +qt-qe +cn-ts +we-uz +uq-pi +ns-vd +kp-eg +hb-up +rj-ry +ah-uu +op-sn +he-ka +kb-up +tm-vk +jy-on +fv-nt +bk-qv +pp-ds +ge-be +py-hs +tv-vv +dy-ap +yz-xs +in-ob +ld-bz +mo-oa +zg-dn +lu-gc +nv-pt +zp-jv +mj-vx +no-cq +en-mi +ex-br +eo-ht +xe-fu +cf-pa +jv-tx +cr-zh +by-pj +xj-wo +sg-qx +ia-hd +dm-pc +sv-gi +bd-nm +nz-jn +bg-jr +wf-ke +rh-wo +mw-ba +cy-sg +rn-hw +ib-gb +lz-et +mt-qb +vn-iw +sk-gj +fi-wz +bg-xd +ng-xn +vh-zp +jc-bd +nv-kv +sj-rj +ie-up +fp-dv +hh-va +ur-ux +lb-zq +iq-je +aw-ww +bo-ob +jx-cr +wj-ft +kh-pr +nl-rf +lk-rk +yx-kg +do-fe +nn-wq +na-xk +sb-ul +mr-mn +fu-yh +bt-bl +av-yv +bd-nu +gs-pp +kv-fg +eo-jk +gv-ui +rs-cn +ut-nh +ew-bc +sy-vn +zw-yk +ga-hx +ih-fs +ur-ga +xr-lo +il-ch +in-lu +sr-ij +ul-zh +ke-ud +jq-xc +va-da +mz-li +iu-hl +zl-tm +kg-iw +ik-dm +od-ps +tx-xb +co-rp +zl-qp +yh-hm +pw-nh +ra-xd +pe-ko +xo-qc +es-wg +gw-bf +jq-xv +yc-rc +nt-vx +wq-ua +jf-kt +ug-cj +kc-uq +yg-cp +jf-fc +ys-ox +zq-pl +jt-ph +fl-qp +ok-sj +yp-on +zl-fl +my-tt +ss-rk +fe-ls +dz-lh +tq-xp +oa-ng +pr-ei +iq-uu +zm-pk +ui-yu +uo-tg +gg-tm +nn-xs +iq-dr +sz-es +kd-ji +is-ps +kf-bb +cr-va +sd-ep +ol-bo +js-mi +dp-xg +wk-qp +ek-hu +fe-wu +lq-lf +ir-ku +ac-uh +tk-ma +ns-tz +yk-zk +oi-ul +mi-ge +pc-mb +ip-jq +hm-xe +wz-pa +us-gn +ls-ql +gj-li +wn-oz +tz-tx +sz-dy +pu-yi +iu-sj +ux-nf +pk-ff +fq-mp +qy-mf +xj-xv +dt-hj +zs-gp +kj-fw +kf-br +in-fs +ap-xv +gr-je +au-xl +eq-xl +ux-ga +py-ie +oz-pz +db-xk +yy-jv +lb-bz +zg-pe +bq-pd +nj-yh +sx-go +vq-uc +im-vs +yg-wq +me-ew +ig-hh +by-de +cg-wu +sf-aa +qe-rx +ih-rn +cm-fy +xa-tk +zj-zv +ep-ha +hd-jz +jr-wk +tg-pe +mb-im +dc-do +tk-ba +nh-cb +vd-vr +tk-ae +tq-is +tv-ef +tw-ix +ff-fa +vc-ld +ic-yl +ic-pz +dz-ro +ir-ur +kl-xt +jx-yo +qy-np +oq-xl +qy-be +vi-fy +lr-dt +zv-xp +yn-pl +bc-aq +sx-ta +jw-il +fm-zn +ou-qx +nw-so +ps-sv +ss-lk +iw-jh +xm-bk +gs-kj +kc-jw +ne-sg +pf-vg +kf-ya +dz-iv +fl-jr +gw-zg +tb-gs +nq-ba +my-pa +jy-db +kl-xx +uh-ei +tm-jr +vx-jb +nx-jt +fi-sn +jc-eu +aq-sy +gn-we +sr-kp +xo-nf +pq-ih +cq-hw +ev-zl +sz-sx +nk-wh +xf-kc +wh-fg +xx-vq +aa-co +qz-dj +qy-su +mh-sd +aa-yt +rl-ig +zx-ic +qa-zv +xm-qp +gn-ii +lj-eq +ge-js +un-gk +bk-be +yv-go +yf-jy +lq-pa +gl-ka +vr-nq +zl-vt +qf-jn +qy-bk +mt-jo +vc-za +rc-rd +la-yx +xk-bt +rg-iq +zj-nf +fs-hw +vu-de +ry-iu +ph-nk +zj-qm +uy-hj +ke-mx +nv-nk +hg-ff +qr-fu +mw-ma +ry-un +mx-iv +yv-me +nc-ux +hu-ru +qz-qx +dc-eo +rd-vg +ok-un +ey-im +cm-zt +ki-vv +fr-tp +al-af +ey-sv +su-bk +xj-es +sm-ae +bb-wf +ue-lx +ar-ru +na-dr +su-ge +os-cn +qh-yj +lo-af +cy-hz +ih-lu +el-lo +jc-au +zr-vi +zq-mq +ec-eu +pt-fw +gw-ko +pa-sl +aa-yi +bj-ow +af-nh +un-sj +ub-qj +ba-fp +zs-rp +vk-zl +gv-lt +cq-lu +ln-bt +vd-xb +ne-ou +zr-tw +xv-rh +lf-cp +de-yi +gy-yv +dj-pf +jk-oc +sb-va +uu-wb +fe-fh +fo-lb +lm-nw +lj-md +yw-lc +vh-jv +jd-cg +xs-ii +uw-qe +zn-iv +pt-tb +nb-rx +wk-tm +ln-gv +it-dq +uq-xf +fc-rg +ae-or +nt-wr +gu-gh +cl-gr +cd-bg +wl-hg +an-nu +jt-nv +ar-pn +ux-em +fv-ox +po-rj +kp-yj +gu-eb +ql-sm +ey-vs +ln-yp +ja-qb +br-mw +tp-cj +nq-vh +bb-jk +iw-pi +sv-wv +kq-hw +bj-he +do-cg +nx-kv +xe-rk +gh-bh +vl-yx +pq-gc +gj-kh +ng-ph +yt-zs +sd-an +ys-mr +wo-ap +sb-vl +pq-lu +cg-ow +dc-ol +oc-vr +sl-cv +pq-rn +ct-wz +yw-qe +gk-qt +wd-ld +mq-yn +co-mi +uo-ie +ns-vh +uc-rw +nh-ht +eu-nm +tb-kj +rg-ah +wm-lx +wz-sl +wo-es +xs-wq +ds-sr +vl-fb +go-ew +pr-nt +rp-pu +gj-xb +rn-in +ae-fp +un-mn +lo-al +re-fv +lh-np +pd-pw +qu-hs +pj-sf +xk-dr +fh-qb +gi-wv +ok-ry +bb-so +be-fz +ez-ng +gg-wk +zj-ps +sb-ig +pi-jh +es-rh +rp-by +ud-dz +pq-no +ru-ek +xk-gv +hy-sb +yd-ct +he-im +pd-uj +fq-bj +kg-il +op-ta +yr-jz +do-bx +ua-cp +qf-he +ys-xt +sb-jj +jj-hy +tx-ns +jz-jx +bv-no +sr-yj +up-sg +nw-ol +oh-qi +qm-qa +jg-eo +nb-nt +tw-fy +wb-fc +do-zk +zr-oz +iv-ro +bo-jk +si-kv +lc-fv +yd-wz +cg-vy +sf-zs +wy-rh +zx-zt +mv-yu +gr-hf +ah-hf +nc-mp +ka-et +ga-qc +ry-yn +wv-ey +ib-ou +ry-pl +cz-ct +cl-ah +gb-oi +sz-bm +bl-xk +fr-ri +lo-dx +oz-cm +jh-la +uc-qa +at-aw +qu-wl +ox-yu +de-yt +pe-up +ic-zt +ji-hc +vs-mv +rw-is +qz-bh +mh-tf +je-wb +au-oq +el-al +hs-wl +vn-ch +mx-rs +hg-zm +bd-ep +zf-ui +hf-oi +ys-cs +ss-hm +tc-dt +me-yz +ob-bv +we-hu +cm-zx +ri-bz +qe-re +hg-hs +ch-jw +lb-ja +li-ac +gu-qz +pi-xf +ls-fm +jd-zw +ku-nf +pt-qh +cs-mn +ki-aw +ey-pc +ef-dp +gu-yc +ra-tq +ok-mo +yo-bn +ok-iu +gr-fc +ys-xx +uz-pf +lj-cn +bo-nw +vx-nb +wj-ib +fa-qd +il-pa +he-ow +lu-kq +fh-zk +bj-qf +ff-zm +qg-yg +ki-ur +fg-nk +yo-dt +vt-yh +rx-vd +jk-kf +ya-nw +sk-uh +ar-gn +ga-tz +nv-oa +wn-ix +ol-jk +vk-xr +dr-yf +dy-mm +mh-nu +fz-eq +ts-kw +jk-jg +ts-xl +fg-jt +fc-uu +vs-eh +bn-ne +nu-jc +mf-bk +rl-hy +iq-kt +ka-lz +cj-al +cf-ct +zv-qm +lh-ud +xm-mi +he-et +br-dv +tf-jc +ld-fo +pa-cz +ex-fp +fq-ow +em-nf +eb-pf +cn-kw +lk-nj +vk-jr +wq-vf +vk-cx +ec-cs +js-qv +tf-bd +sn-yv +ui-mr +bc-sy +md-os +or-mw +ek-nl +bt-yp +kd-cy +dq-cj +it-ri +cz-wz +eu-ha +ow-ka +gr-wb +jc-ec +db-bh +wl-vl +pr-sk +cr-sb +wk-qw +hb-ct +dj-rc +xa-ql +fa-vf +qv-qy +xo-wc +pn-we +eb-gh +su-en +je-uu +bj-nz +wm-ei +xn-kv +ki-qi +dq-ug +yf-yp +ep-rj +ar-we +ix-zt +ox-xt +yw-wr +vq-kl +zq-po +hf-iq +wh-uw +ng-wh +wy-lv +yu-ys +ez-nv +qe-nt +em-hx +fu-ss +wg-sz +lt-jw +is-uc +yd-vw +fi-yd +oq-cn +ue-oo +ap-es +cx-fl +ek-ar +fh-jd +gb-wj +rw-od +gw-kb +vd-nq +mt-fe +kb-ie +qb-zw +bj-et +yj-tb +zj-rw +qo-yw +od-ra +ls-zn +qe-nb +hb-bf +ub-xg +ki-at +cb-lo +po-sj +ya-ol +ba-br +iv-lh +ou-hz +ge-xm +ue-pr +iu-pl +oc-zp +oc-tz +au-yb +pl-gk +pk-bc +xn-fg +vn-pi +qh-gs +pw-el +xb-oc +jq-on +oi-gr +it-wd +qc-ur +fq-gl +oi-cl +wn-gx +od-xd +sm-xa +pp-qh +zn-wf +fh-wu +yh-xe +ka-mp +fa-pk +fh-zw +mm-es +ls-dz +mr-zf +po-pl +rx-jb +hb-ko +ji-qx +ff-yc +ta-lt +gs-eg +de-sf +zk-fe +yd-my +qd-hs +ol-lm +qd-qu +iv-ke +sz-rh +un-po +fm-vj +nz-lr +nz-fq +yw-vx +vv-ub +dc-ht +dz-wf +gu-rd +cb-af +ei-oo +ey-mb +mn-mv +fz-lj +bx-yk +mb-vs +vg-bh +ol-bb +hx-nf +me-av +mn-yu +dj-rd +rj-zq +xj-qu +kw-yb +zt-oz +lf-wq +cn-cm +mn-ij +hf-cl +wn-vi +fj-mf +oq-kw +vi-cm +uy-lr +au-md +so-ht +tc-jx +rl-cr +ky-vt +lt-dr +rf-ek +ip-nn +no-hw +ua-yg +gu-rm +qi-ub +qa-rw +no-ih +cf-ib +jo-nq +ut-dx +dc-rl +xk-yp +ut-pw +gc-rn +ri-ja +gv-jy +sx-sn +dj-si +ep-jc +wo-hz +eh-gi +li-pr +pt-ds +sk-kh +af-ut +ul-hy +kz-rl +ua-ip +xn-ph +qi-aw +py-ff +zv-ha +ir-qc +gl-qf +lj-xl +fu-kc +pi-il +ru-we +br-ql +po-ry +eb-qz +ip-yz +eu-an +oq-fz +oo-wm +wb-oi +ph-ez +ph-nv +kz-cr +rz-gn +lt-jy +yz-jq +wr-vx +uc-tq +dx-cb +at-fy +br-ae +rc-gu +so-ir +oo-li +ra-uc +pl-rp +wl-py +yg-xs +qw-gl +rn-no +jd-yk +xm-np +mq-rj +pj-yt +ef-xg +qb-yk +fv-wr +eq-yb +uq-jh +kl-yu +ef-ww +ry-zq +cn-yb +vh-oc +lh-fm +iq-ah +zr-zx +cf-wz +iq-jf +qf-sd +yl-iv +ui-kl +ft-jq +bd-ha +ek-bm +sx-da +rg-gr +wu-vy +jt-ez +kz-wg +fb-cr +cv-ct +up-uo +jk-dc +or-xa +dn-gu +tf-sd +ls-ke +jh-xf +vw-ct +oz-zx +hl-gi +fk-hm +tp-ug +hj-vf +xe-qr +tc-hj +kq-no +ic-ix +ds-tb +ae-xa +hj-lr +bl-dr +dr-db +fh-do +de-pj +vj-dz +bl-na +sk-ac +bk-fj +iq-cl +xj-wy +eh-ey +gb-bn +qw-cx +ld-tp +xr-el +tf-an +js-en +py-pk +pd-al +gr-ah +lr-jz +vw-my +sl-fi +bq-ux +pi-bf +md-fz +py-qu +eo-bb +ji-ou +zq-gk +zx-tw +pn-ru +la-xf +wv-hv +yr-hj +tb-fw +qw-vk +tq-zv +da-ta +be-mi +sm-br +ez-uw +kh-wm +vt-ss +pk-sy +dy-wy +ut-cb +ib-cy +sk-ei +zr-zt +rw-ra +uj-af +vi-zt +wf-ud +hd-fn +rs-os +ne-hc +zs-by +go-sn +vd-vh +zh-kz +bm-rh +rm-bh +vr-lk +bx-fh +kz-hy +ei-mz +lh-mx +aw-xg +cj-ld +ds-gs +fy-pz +jv-nq +tv-aw +ok-po +lx-gj +vs-ik +yi-yt +zv-is +rg-jf +md-cn +hg-qd +uy-hd +wr-rx +qa-xd +xn-uw +vn-yx +sn-av +ia-lr +vd-zp +su-be +hx-ir +wd-ri +qo-xe +xb-jv +vc-me +dj-gh +ub-ds +gl-nz +fa-aq +gc-ob +hy-hu +ij-tb +hv-dm +tv-ww +be-en +na-gg +ts-oq +vt-hm +fj-js +nm-oy +ma-ae +dp-ae +rl-zh +rj-iu +rm-qz +mt-bx +cq-ih +ew-op +sb-hh +nb-yw +ud-zn +bq-nc +pd-cb +lt-yp +uu-rg +mm-ch +wj-kd +fu-nj +qf-mp +nk-ng +nz-et +ix-pz +pc-im +cg-zk +eq-yh +nu-eu +ke-ro +nb-fv +rx-mj +dv-ae +de-zs +bf-zg +ry-gk +mb-gi +pa-vw +xg-qj +mn-ox +gs-kp +rd-av +wh-nv +pf-rm +zg-hb +xe-fk +yw-re +da-go +dj-fc +dj-eb +gc-cq +xv-sz +wg-wo +ij-pt +mh-an +zg-te +tw-gx +ev-jr +tg-hb +be-qv +ec-nm +ia-vf +hf-rg +kc-iw +lc-rx +lq-my +lu-ob +hf-fc +ia-hj +qw-tm +pq-ob +mf-si +fz-kw +bh-yc +do-yk +cd-ev +cl-kt +hz-hc +kw-nt +ac-ei +fa-py +bx-qb +yy-zp +ff-qd +bm-ap +ol-jg +yj-fw +sl-yd +mf-qv +nc-ir +nh-dx +uz-ar +zp-gp +is-xp +fz-ts +hy-zh +pu-pj +iq-gr +iu-mq +hh-jj +vj-yl +ro-zn +bf-pe +bc-qu +iu-mo +cb-uj +je-cl +ud-ls +pc-ik +nn-lf +aa-de +lc-jb +tt-wz +we-yd +uq-kg +kp-pp +cq-kq +fv-yw +ww-uw +tc-lr +ng-nm +qc-ux +pd-lo +xc-wq +dq-fr +wz-lq +lm-eo +su-js +in-ye +uw-ph +ig-zh +mj-fv +al-cb +aq-hg +ef-qi +vx-qe +lt-na +wf-fm +vc-op +ua-lf +ff-wl +za-go +hz-ln +md-kw +vq-mv +ta-vc +xc-nn +qi-ww +qm-od +af-ue +me-op +we-us +ru-us +wf-mx +op-za +mh-bd +va-fb +nl-gn +pu-by +pn-ii +su-mf +ex-ql +db-bl +qu-ff +lh-ls +ok-gk +ec-an +ib-hz +ar-rf +yh-rk +mm-yf +ba-ql +zx-yj +wu-do +or-ba +oh-at +af-hv +re-aw +oc-yy +pe-te +vd-tz +ui-ox +in-kq +fj-qy +vi-gx +qp-vk +ut-al +dy-es +jv-vr +kf-jg +kt-gw +lf-ip +qx-gb +ys-vq +cf-fi +sf-lu +ji-bn +mb-sv +fz-yb +gn-uz +pl-ok +pd-xr +oq-yb +jd-bx +ei-kh +nu-oy +qa-zj +xd-zj +dm-im +rx-re +sj-mq +yk-wu +hs-pk +aq-sl +cv-my +rc-qz +vc-sx +mx-dz +hh-bt +hv-vs +pe-hb +gc-hw +vg-rc +bb-dc +ui-mv +xp-od +tv-qj +uc-ps +cl-wb +yz-nn +zw-vy +sy-qu +uj-pw +wd-bz +fb-kz +rf-hu +nw-ht +ba-ae +lq-sl +kd-hc +ra-ps +zf-vq +gu-dj +jo-vh +wg-xv +vu-ma +mp-nz +ky-qr +vt-xe +pj-zn +et-jn +ac-mz +wj-sg +lt-bt +nc-xo +kl-ox +ok-yn +nm-ha +ww-dp +ou-hc +cv-cz +lb-zf +oi-kt +pr-wm +bx-fe +lk-vt +ja-wd +ke-dz +ql-or +dq-lb +ts-lj +sr-kj +yn-oz +fq-he +oa-wh +bt-na +jk-so +zw-cg +tt-cv +hm-lk +zv-xd +cs-yu +wg-xj +kf-eo +em-wc +lx-ei +vj-gl +uy-ia +db-yf +ma-ex +md-ts +zm-qd +ud-fm +vw-cf +lj-os +gl-lz +sx-ew +oc-ns +ux-ku +it-ja +ex-ae +an-oy +bv-hw +iu-yn +wn-ic +fq-qf +lz-ya +bd-oy +pk-aq +rk-nj +xo-ir +ft-cp +so-bo +wu-mt +vy-mt +gp-yi +sv-ik +wl-sy +oo-sk +sb-kz +gr-kt +ux-wc +gj-wm +xl-kw +hb-ie +kh-mz +te-ko +tg-gw +yw-jb +no-in +fn-ia +fm-ke +ua-xs +cz-vw +bd-sd +cx-jr +de-zm +nh-kx +ry-sj +ut-pd +ip-xc +bz-fr +qe-jb +jf-uu +lz-jn +fb-rl +fo-wd +dm-vs +pq-fs +wg-wy +hl-ik +fp-ma +yo-lr +np-js +ta-me +bh-dj +ia-dt +is-qa +dn-hb +no-gc +sg-hz +ux-ir +fg-uc +wq-cp +eb-vg +ko-up +vy-fe +ur-hx +nu-sd +xm-js +oz-mw +up-bf +zq-ok +uw-jt +zj-od +hw-ob +vg-gh +hh-ul +yr-tc +wk-cx +nx-ng +ma-xa +ww-qj +hx-xo +tq-ps +gp-rp +ry-mo +jt-kv +xx-ox +dc-kf +lc-wr +pf-bh +zh-fb +qt-mj +we-ek +na-yp +cp-xs +xm-su +cf-sl +xr-al +ta-ew +yj-eg +ga-nc +ss-fk +yw-mj +kp-rw +jo-tx +cv-pa +oz-vi +yg-ip +si-bh +jt-wd +ia-jz +jd-mt +dr-yp +lq-fi +lc-vx +uy-fn +vw-fi +uw-nv +kg-ch +yi-rp +yt-co +em-an +ua-pw +dx-xr +yr-yo +rc-bh +lk-qo +dx-el +av-za +yv-vc +hh-kz +yb-lj +yh-qo +fg-uw +qo-hm +zj-ra +uz-nl +vi-tw +bf-te +eg-mj +pt-yj +ig-fb +rh-lv +yu-nk +dm-sv +wc-ku +bb-jg +xe-nj +zf-ox +im-wv +ac-co +qp-ev +mj-lc +ez-xn +uh-pr +mz-cd +ki-ef +wy-bm +tf-ec +fc-kt +dt-vf +af-kx +xd-qm +eh-wv +ux-wy +fi-my +pj-zs +xv-dy +wl-fa +rf-pn +cp-cr +nj-hm +na-db +em-nc +zg-yg +bq-wc +cm-wn +bv-fs +je-oi +fw-ij +fk-lk +sr-fw +eu-bd +ub-at +zn-ke +ch-la +bq-nf +vj-lh +oy-jc +ol-qm +jn-bj +gb-kd +yo-jz +kh-li +dn-ie +tf-ep +ji-wj +qe-fv +rn-lu +mf-be +kz-ig +yp-bl +qv-su +wg-lv +oa-nk +he-zp +ub-tv +zx-pz +tw-oz +qi-dp +sn-da +vu-yi +ui-ys +qr-yh +ki-xg +tw-cm +ij-gs +tc-vf +wm-ac +xc-eb +cd-wk +ft-lf +fm-dz +aa-pj +fr-qc +ix-ko +by-sf +ry-mq +ep-eu +hx-bq +zn-dz +xk-ln +dp-ki +ru-rf +jh-ne +wy-es +wy-xv +qj-pc +tx-el +uh-li +xg-ys +mh-fw +wg-dy +qg-lf +je-ah +gy-me +bt-yf +bo-ya +yn-sj +mq-pl +fv-rx +hj-xf +ma-or +wy-sz +fj-qv +aq-qu +cr-jj +mt-fh +ru-nl +ko-zg +wq-yz +qy-oo +oo-gj +mw-sm +zq-sj +cf-yd +oh-tv +jq-ua +xa-ex +qc-wc +re-qt +yw-rx +rg-wb +gv-dr +fl-ev +fn-yr +sg-kd +jy-ln +ft-ua +lv-sz +cj-bz +mq-ge +eh-hl +mp-he +bx-zk +it-cj +tx-vd +nz-qf +eh-sv +vg-dj +yh-ss +rc-eb +ia-yo +na-gv +bg-gg +my-cf +rz-hg +yt-gp +fk-ky +mn-vq +np-en +xc-ua +ij-pp +xl-rs +nw-kf +bm-wo +uh-ue +ki-qj +ok-xl +cv-lq +pp-tb +qi-xg +gi-ik +sb-rl +zk-vy +lx-mz +fs-gc +ia-bl +tm-ev +nq-xb +jy-pk +mo-po +zx-gx +cd-fl +pn-hu +mq-ok +pf-gh +rm-kg +fv-vx +kt-wb +vj-ro +eh-dm +uz-rf +nk-ez +eu-oy +de-gp +qw-ev +wq-ft +oi-iq +jh-il +me-da +ae-mw +ub-is +jd-dx +ft-qg +la-il +zr-ix +si-yc +gj-mz +me-za +vg-ap +qj-vv +ut-el +yp-gv +jf-je +ar-us +ii-rf +xj-bm +mw-dv +tw-pz +rl-va +mo-un +mh-ha +lz-qf +jw-iw +vj-ud +sv-hl +fg-ng +qp-tm +il-yx +qr-nw +pi-kg +uz-hu +aw-qj +za-gy +rd-gh +rs-kw +fc-iq +ul-kz +ga-em +yr-ia +oq-os +qj-ef +va-ul +cv-wz +ev-iv +qm-rw +zf-kl +fp-sm +oy-ec +pe-gw +iv-fm +bq-ur +uy-jx +jz-fn +zr-dq +ae-ql +cr-hy +fi-cz +it-tp +fc-cl +wl-bc +pe-kb +mb-ik +tv-ki +lc-tw +kv-wh +vw-lq +jt-xn +ds-yj +mb-eh +ql-mw +yl-dz +ko-tg +by-qo +lm-bb +oh-ww +vl-ig +ss-xe +fh-cg +hx-qc +ow-lz +da-gy +uz-rz +tq-rw +zg-up +zl-wk +mr-mv +mr-yu +zp-vr +do-jd +ld-lb +mh-jc +at-ef +zx-fy +bn-sg +xl-cn +bj-gl +an-jc +nn-iw +vn-gn +yn-gk +sy-zm +fo-ri +hd-jx +ja-tp +cs-vq +ip-qg +ei-li +oh-xg +lz-bj +te-kb +jb-wr +jr-cd +on-na +vg-gu +ra-zv +ey-ik +cx-zl +je-fc +yc-dj +zn-mx +vn-jw +qf-ow +np-bk +sz-mm +ix-cm +xt-yu +bo-kf +xm-qv +co-sf +he-ye +nw-jg +eo-bo +ys-mn +qo-ky +yi-fq +kx-xr +ug-ja +ki-ww +ul-cr +he-lz +cx-bg +it-bz +jz-uy +yv-da +dm-mb +qm-tq +xt-mv +lt-yf +fc-oi +eg-kj +ns-jv +ei-ue +ga-nf +vl-jj +xg-tv +dm-wv +fs-rn +ou-wj +mt-cg +qo-qr +gp-pj +tp-fo +vk-bg +ww-vv +dv-tk +xb-zp +ps-xd +kd-kj +lq-tt +xs-qg +mm-rh +zg-tg +yw-sm +bv-cq +cy-gb +jw-pi +zj-is +rz-ii +vy-jd +rm-yc +wk-ns +yt-sf +ye-qf +at-xg +ac-pr +vc-go +tv-dp +eh-pc +fs-ob +oy-ha +nn-cp +bn-qx +ie-pe +lu-hw +xp-qm +zr-cm +ur-ku +os-au +ct-pa +zr-wn +ic-vi +zr-pz +jf-cl +sy-rg +sr-qh +ch-iw +hc-cy +ng-jt +lt-bl +mb-hv +ky-xt +vy-qb +mn-kl +re-vx +qj-at +fl-ur +ql-lx +ph-wh +bc-hs +up-tg +fh-yk +fl-wk +mo-zq +lj-kw +qu-pk +dr-jy +bc-fa +za-da +ur-wc +he-jn +ta-go +jz-tt +sk-ke +fi-cv +wh-jt +ln-yf +fl-gg +ud-yl +fu-hm +pq-cq +ka-fq +qu-fa +wu-qb +kd-bn +sy-hg +ow-jn +fr-lb +ge-qy +mr-vq +et-ow +ix-fy +qx-ib +tq-zj +jt-nk +la-kc +jo-vr +bo-lm +mx-ro +ky-hm +jw-kg +oh-ki +tg-bf +dp-ub +dq-bz +nn-jq +ss-ix +rc-yr +qr-fk +jv-oc +wr-qe +jo-jv +fl-bg +os-ts +oh-ub +pw-kx +qj-dp +jo-vd +kw-os +yy-tz +qu-zm +sy-ff +xj-mm +pd-dx +nx-fg +kg-vn +qz-yc +pj-vu +cb-pw +pz-wn +ir-em +wz-my +zs-aa +fn-vf +us-rz +ht-ol +zw-zk +ne-gb +ip-ft +fe-qb +jj-kz +ev-bg +jc-kx +lq-cz +jb-nb +vi-zx +zp-nq +mf-js +mh-nm +su-fj +wg-rh +wv-vs +mz-ue +yl-wf +rs-yb +we-ii +tk-or +de-co +mx-ls +wy-mm +iu-zq +tp-dq +cx-gg +yf-on +fv-jb +oy-mh +sl-cz +yn-rj +xa-dv +vy-fh +bb-ya +gl-et +cj-fo +ft-xc +bf-kb +ew-av +jd-wu +fy-oz +so-dc +bm-xv +pj-yi +gc-ud +ug-eh +gi-vs +me-sn +xx-xt +tc-hd +lz-nz +fq-lz +ku-hx +qm-cb +qy-mi +cr-ig +aa-jg +ah-oi +em-qc +mv-xx +vl-zh +iu-gk +ke-lh +qc-bq +ik-wv +wo-mm +hj-hd +xf-il +fo-fr +kb-dn +cm-gx +xc-qg +hx-wc +cv-vw +re-lc +da-av +gp-sf +mo-yn +xp-zj +xj-sz +sk-ue +jn-uh +al-uj +ef-oh +yj-gs +ey-eu +zm-aq +te-uo +qr-ss +yo-hd +gn-hu +qc-nf +em-xo +ld-dq +mr-cs +nk-kv +la-jw +gv-yf +pz-zt +is-xd +za-yv +ln-dr +mz-wm +ta-gy +mt-yk +vg-yc +qz-rd +fk-qo +sy-hs +gw-te +tz-jo +dm-ey +oh-dp +ye-fq +ky-ss +bj-mp +nn-qg +go-me +tg-ie +sb-fb +gy-op +vk-fl +qx-wj +pt-kp +en-qy +sy-fa +ob-no +jx-hj +sn-ew +gr-uu +ii-nl +xv-lv +rd-si +mx-ud +la-uq +ip-cp +oq-xx +sz-wo +ew-yv +ys-mv +rg-cl +hj-jz +fu-lk +qa-xp +uj-lo +ri-tp +av-sx +mt-zk +ye-bj +rl-jj +rg-kt +xo-ga +mp-ye +cv-dy +rx-qt +hd-ru +ih-rh +ic-zr +qc-ku +qp-gg +fj-en +bt-db +ky-rk +rw-ps +yg-xc +ln-na +uy-ro +ap-wy +ik-im +ru-ii +mi-mf +ku-bq +uo-hb +yy-nq +cj-lb +hh-fb +nx-oa +br-or +wc-ga +uh-mz +sl-tt +qg-ua +ww-at +bb-ht +pt-gs +la-pi +pf-rc +bv-ut +ue-ac +vk-gg +kh-oo +jr-tk +ou-cy +hx-ux +ku-rn +te-up +la-za +uj-kx +pn-ek +qj-oh +uy-dt +ts-rs +wh-js +it-fo +ia-jx +us-pn +gx-zs +xl-md +nj-vt +jj-os +zg-uo +vw-sl +yx-kc +fw-gs +jz-dt +ac-oo +vc-da +hy-fb +sg-ou +sd-nm +yy-tx +sl-ct +lk-ky +bg-qp +ex-mw +mt-zw +gg-ev +nk-nx +ut-lo +nl-us +wf-ls +nt-qt +bz-fo +lf-xs +fp-br +mp-jn +uz-pn +rd-rm +wn-zx +xa-mw +nq-tx +hc-ru +co-pu +qd-qg +vw-zh +jy-yp +uz-ek +hf-jf +cn-eq +pp-kj +av-gy +lo-pw +kb-yp +tw-zt +xr-ut +mq-po +od-zv +tp-bz +gp-pu +cd-qp +qc-nc +nl-gr +gx-ix +gk-rj +sx-gy +gn-ek +pu-sf +ow-ye +nx-ph +jn-fq +cp-yz +ne-cy +jx-uu +ex-sm +tg-kb +on-gv +xk-yf +br-xa +fr-cj +ga-bq +lj-zs +tq-od +mi-fj +ff-hs +mq-un +lx-sk +af-pw +un-gs +vh-xb +kq-ob +xv-wo +ib-hc +es-wb +xx-zf +uq-jv +il-uq +aw-vv +yr-jx +ef-vv +ii-ar +kq-qa +hh-vl +en-qi +eq-rs +wf-vj +zl-cd +ra-qm +in-cq +mq-gk +gg-qw +te-ig +cx-tm +yd-cz +mo-pl +pp-eg +ge-mf +dt-jx +wc-nc +gh-rc +gw-up +ww-py +ic-cm +nn-ft +mf-np +ep-oy +de-pu +ns-xb +oq-md +li-wm +jr-qp +ye-gl +xx-cs +kp-tb +vc-sn +rj-mo +qa-od +hl-dm +mr-kl +cy-wj +va-kz +xk-wz +lx-uh +dy-wo +pf-rd +lv-xj +pd-kx +lm-ht +zr-fy +uo-xv +vc-ew +ky-fu +sl-my +ns-nq +wc-nf +tp-wd +tb-eg +da-op +yz-xc +lj-oq +el-af +pu-nb +vn-il +cg-bx +wb-ah +bl-on +eb-rm +kq-pq +vs-sv +zw-do +vg-rm +jt-oa +cj-wd +vl-kz +sr-lo +hz-bn +fb-ji +uy-yo +tm-bg +uo-bf +si-pf +yx-jh +ss-nj +rp-sf +pn-gn +kf-ol +lv-ap +zt-gx +mw-fp +qw-bg +tk-mw +yt-by +qt-lc +su-kl +tf-nu +si-eb +yt-pu +wh-ez +od-jf +su-mi +lk-yh +zq-ah +fw-kp +ol-eo +vj-mx +nz-ka +kp-ij +pi-yx +lr-hd +dc-lm +hw-ih +ol-so +ul-ig +ek-ii +ex-tk +jk-lm +vn-xf +jx-lr +fn-lv +fi-tt +qw-qp +oy-tf +ef-aw +qh-wc +pq-in +qv-yy +hl-vs +ru-uz +ep-an +pp-wv +ld-it +nc-ku +xm-en +qv-ge +bv-pq +we-rz +rz-hu +qx-hz +ic-gx +at-tv +nb-wr +yx-xf +wo-lv +rw-zv +me-sx +cr-hh +tf-nm +ha-jc +lr-vf +wu-zk +vy-yk +lf-jq +uw-nx +dv-ba +ar-rz +fk-nj +dr-bt +vc-av +xl-yb +xx-mr +no-lu +lx-ac +ug-lb +wr-mj +li-ue +kd-qx +jj-va +uy-yr +gj-pr +bn-hc +xg-vv +nx-uj +ub-aw +ha-an +pz-vi +jy-bt +si-vg +jh-kg +gn-ru +fb-ul +dn-uo +or-fj +oz-gx +la-iw +rp-pj +wr-qt +ht-bo +qv-en +gc-bv +mm-bm +al-pw +dx-et +wr-re +wq-qg +uo-ko +zr-gx +al-nh +vu-yt +nb-qt +ct-my +tk-ql +wm-jg +jd-qb +ye-et +xt-zf +si-rc +xf-iw +dm-lm +pc-hl +tt-vw +jn-ye +ey-hv +va-vl +do-vy +gx-pz +po-hm +cj-ja +iw-uq +so-lm +vh-tx +dv-us +kc-pi +si-gu +rp-vu +rj-un +zl-gg +xo-ur +wf-ro +ft-yg +pa-fi +ox-mr +vy-bx +ex-ry +pc-gi +yf-bl +tz-zp +eu-mh +kv-uw +tt-yd +lv-mm +qd-bc +af-pd +nt-re +ye-nz +in-bv +rp-yt +hh-zh +ln-rf +yj-ij +em-ku +bn-wj +tb-sr +eg-pt +ik-hv +nb-mj +ra-is +ec-mh +kw-au +js-qy +hl-mb +hx-xn +yy-ns +im-hv +at-dp +ie-bf +cz-rm +hz-kd +xa-mr +ur-nc +bf-dn +hg-py +jq-yg +so-eo +vv-dp +pn-ew +zl-bg +mp-lz +nl-ar +ui-wn +zh-sb +yz-lf +wq-jq +fo-ja +zm-py +zp-jo +ht-kf +do-qb +lq-yd +fy-zt +vf-hd +rs-oq +eg-fw +gi-hv +ib-ne +qa-ra +ps-zv +us-ii +ge-nj +wd-fr +rn-cq +bd-ec +qd-pk +ky-xe +uu-kt +it-vv +ft-xs +cx-ev +jk-ya +ie-te +fn-tc +qi-at +kv-ez +dc-nw +lu-bv +yh-fk +bv-kq +tz-jv +vk-wk +or-sm +nh-pd +zn-lh +ke-vj +rj-ok +ik-zg +eg-ds +zs-yi +kl-ys +gy-ew +hs-zm +cn-au +by-yi +xd-tq +cs-zf +uc-xp +ih-bv +ri-ld +nm-an +fz-os +oa-xn +dy-lv +yn-un +go-gy +nu-rz +cy-za +yt-qw +hl-ey +xd-uc +pz-ez +il-iw +fz-cn +mn-xx +yz-ua +oc-tx +sg-hc +fn-lr +qv-mi +yl-ro +ps-xp +cd-cx +ow-gl +fk-vt +uj-ut +li-lx +cz-my +fo-ih +ul-jj +nt-lc +sr-gs +yv-ta +yg-yz +hj-fn +vq-xt +pl-rj +dn-pe +eq-ts +uz-ii +wv-mb +oo-lx +jk-nw +sd-oy +tt-cz +ap-rh +qo-rk +sv-pc +pn-rz +bq-xo +op-sx +kv-oa +py-qd +db-on +ng-kv +rl-hh +ob-cq +oh-bd +nj-qo +pd-el +db-lt +rm-dj +gh-si +fg-ph +qh-kj +ps-qm +ek-rz +hy-va +ri-pp +kf-so +dy-bm +uu-cl +in-hw +fj-ge +bv-rn +cs-kl +vx-bk +ir-nf +ep-mh +hy-vl +ur-em +dn-ko +fs-kq +or-ex +jg-lm +ir-bq +xs-xc +vt-rk +jy-bl +hb-te +wr-fm +qr-hm +af-xr +pp-sr +bj-ka +aa-vu +hu-ar +xj-rh +jo-ns +ql-fp +gc-kq +sj-ef +dt-fn +fw-qh +ro-ud +ko-ie +ya-eo +yd-cv +za-ta +qt-fv +yu-zf +nv-fg +uq-jw +yk-fe +al-dx +kh-pq +sv-hv +fe-cg +vi-ix +gj-ac +rs-md +lu-fs +nh-uj +hg-qu +us-ek +xb-yy +vu-co +rl-ul +vu-by +hu-nl +fg-oa +nh-el +sj-pl +jq-xs +xn-nv +ij-kj +zp-ns +qe-lc +ch-pi +zv-uc +ui-cs +yd-pa +nf-nc +ha-nu +vr-tz +do-mt +yo-tc +qw-zl +hy-ig +kb-uo +pf-gu +eg-ij +ts-ue +xj-ap +ew-da +ib-bn +gh-yc +gw-dn +xv-es +eq-kw +un-pl +jr-qw +jr-gg +kc-jh +yr-vf +ka-ye +cg-yk +vh-tz +eb-bh +xm-qy +hd-dt +ga-ir +bo-dc +xk-lt +ij-ds +nj-qr +kc-kg +vr-xb +be-js +tk-fp +ls-iv +hw-bx +tb-qh +fa-zm +tt-cf +gc-in +js-bk +zh-va +wn-zt +tm-fs +uq-vn +ds-kp +ch-kc +tg-dt +wu-bx +eu-tf +po-yn +iv-ud +xe-lk +xf-kg +op-cl +vv-oh +rp-de +al-kx +vq-yu +qo-ss +lz-ye +au-fp +qt-vx +mq-mo +et-qf +nx-xn +zw-fe +hs-ou +aa-gp +uu-oi +wh-nx +rf-us +su-np +bb-nw +od-uc +gi-ey +jy-xk +lt-on +wg-mm +mz-oo +kb-ko +aq-wl +lm-ya +go-av +iu-po +jq-cp +ku-xo +ri-ug +yr-dt +iv-wf +ep-nu +vn-la +ev-wk +fy-wn +xf-ch +vk-ev +kx-dx +pz-cm +nt-rx +ra-ka +bm-es +cd-tm +sd-eu +nh-xr +tx-vj +xp-rw +gj-ei +iv-vj +sm-tk +jg-bo +ba-ex +wb-jf +ig-jj +wd-ug +op-av +nl-rz +gh-qz +xt-mn +mv-ox +ne-jb +kg-la +lo-nh +vd-jv +yc-eb +yi-co +zn-vj +ub-ef +rw-xd +cs-ox +ma-dv +pp-pt +yl-fm +il-kc +wd-dq +en-mf +ob-vh +uc-zj +fz-xl +qz-si +mz-sk +ui-xx +no-xe +gk-po +yc-pf +fo-dq +go-tc +hs-aq +jw-xf +ji-gb +bd-an +dy-xj +fp-xa +be-fj +ct-fi +rz-rf +ji-ne +cp-xc +yi-sf +he-nz +sg-ji +qe-mj +jg-ya +fu-vt +pw-dx +mj-re +lf-xc +yb-os +nu-nm +ug-ld +vq-ox +ib-ji +qi-qj +sd-jc +bb-bo +ac-kh +rl-vl +hx-nc +gp-co +pt-kj +ug-it +bc-hg +vn-jh +uo-gw +lo-kx +uu-hf +rn-kq +ez-oa +lj-rs +zq-yn +jb-qt +uy-vf +qi-tv +vr-tx +hw-pq +zt-nm +dy-rh +ct-lq +lj-au +jb-re +fe-fw +qz-vg +mp-gl +et-fq +ph-kv +cv-cf +np-mi +qz-pf +va-ig +fw-ds +pu-vu +cf-lq +fp-or +hc-wj +eg-sr +ah-jf +mv-kl +fo-ug +fu-li +yr-hd +bj-bz +wh-xn +vq-ui +rd-bh +ih-kq +vv-qi +wl-zm +kf-lm +nq-tz +pr-lx +hf-kt +yl-ls +uj-xr +cz-cf +tg-te +wb-hf +nk-xn +yx-iw +np-fj +ge-bk +oy-zk +jo-xb +uw-ng +mx-fm +np-qv +hl-im +kc-jf +xt-ui +hg-fa +bg-wk +aq-qd +zw-tq +hz-wj +oc-jo +ar-ie +xl-os +ap-wg +jh-jw +dn-up +tw-wn +jn-gl +vd-oc +em-bq +hv-hl +tp-lb +tz-xb +cq-vs +zs-pu +qm-is +im-gi +yu-xx +wm-ue +hj-yo +is-od +uj-dx +oq-eq +kx-el +xt-cs +nu-ec +fa-hs +ul-vl +sr-pt +sf-vu +ka-qf +sx-yv +ch-uq +hb-kb +ug-fr +nq-oc +xr-cb +rf-gn +fy-ic +lc-nb +fj-xm +uh-gj +no-fs +vd-yy +rk-fk +hz-gb +gb-hc +ip-xs +rd-yc +rp-aa +qb-cg +gp-by +nl-we +oi-rg +gk-mo +ub-ki +au-eq +wj-ne +nx-nv +hf-ip +mo-sj +wm-sk +sg-ib +dc-ya +xp-xd +rk-fu +zf-mv +bc-zm +by-co +ph-gi +hv-pc +ue-kh +yx-ch +nj-ky +nv-ng +pa-tt +bl-ln +bh-gu +np-vi +bm-lv +vc-gy +fn-jx +qr-lk +sz-ap +fu-fk +lb-it +dv-sm +sn-gy +ha-ec +tb-yb +qd-wl +rd-eb +pj-co +yy-vh +hg-pk +qt-yw +kd-ib +sg-gb +be-np +mf-xm +lv-es +rx-vx +sb-gh +hb-gw +jw-yx +cy-bn +te-dn +qr-rk +ji-hz +ex-dv +vw-wz +ns-vr +aa-by +ih-in +cs-mv +ps-qa +kd-ne +eh-hv +tv-md +lx-kh +lb-ri +ou-kd +us-hu +gj-gy +wy-wo +ah-kt +ht-ya +qg-cp +xr-pw +bc-ff +kt-je +ro-ls +qo-vt +jy-na +ta-av +hy-hh +wv-pc +qx-hc +sy-qd +ik-eh +oz-ic +mp-ow +gh-rm +wu-zw +vu-zs +yg-nn +bm-wg +zx-ix +en-ge +ta-sn +iu-un +ro-lh +or-dv +nz-ow +ba-ma +xt-mr +jj-fb +it-fr +ke-yl +kj-kp +ha-sd +ww-xg +jh-ch +my-je +ja-bz +gv-db +nw-eo +sn-za +eg-qh +yb-ts +sk-li +uh-kh +vh-vr +ld-ja +hl-wv +bt-gv +ne-qx +ri-dq +cd-gg +cb-kx +zf-ys +uj-el +yz-qg +nb-re +ob-rn +mj-jb +gp-vu +ma-br +gi-dm +wd-tf +bz-ug +lh-wf +fy-gx +tf-ha +fr-ld +ep-nm +zw-bx +ga-ku +be-xm +tm-fl +hu-ii +hf-je +uy-tc +yf-na +rk-ma +ei-jd +tt-ct +ip-wq +xa-ba +oa-ph +im-sv +ut-kx +sx-za +gk-sj +ie-gw +yo-vf +uq-yx +kp-qh +xp-tp +jd-zk +gr-jf +ft-yz +ux-xo +qr-vt +uz-us +jg-so +rg-je +el-cb +fm-ro +qb-zk +md-eq +on-xk +cq-fs +mn-zf +cd-qw +zn-yl +at-vv +fk-dz +xp-ra +hm-rk +dr-on +os-eq +wl-pk +fl-eo +ec-sd +bk-mi +au-rs +lh-yl +ds-qh +mb-fh +py-aq +cy-ji +nn-ua +go-op +im-eh +yh-ky +bf-ko +nx-ez +en-bk +we-rf +tk-br +bc-py +et-mp +yo-fn +yv-op +aw-dp +uw-oa +gc-ih +bl-gv +vy-cx +rm-rc +tc-ia +uh-oo +sm-ba +mz-pr +fz-au +ir-wc +dq-ja +jb-nt +cd-vk +lr-yr +zl-jr +aa-pu +mm-ap +yj-pp +jj-zh +ij-qh +ds-kj +ht-jg +yk-xo +nt-mj +uh-wm +so-ya +dv-ql +yv-pe +ou-bn +aw-oh +aq-ff +ec-ep +qg-wu +ri-cj +tc-jz +ez-fg +pn-nl +yj-kj +cx-qp diff --git a/resources/2024/day24.txt b/resources/2024/day24.txt new file mode 100644 index 0000000..4fab023 --- /dev/null +++ b/resources/2024/day24.txt @@ -0,0 +1,313 @@ +x00: 1 +x01: 0 +x02: 1 +x03: 1 +x04: 0 +x05: 0 +x06: 1 +x07: 1 +x08: 0 +x09: 1 +x10: 1 +x11: 1 +x12: 1 +x13: 1 +x14: 1 +x15: 0 +x16: 1 +x17: 0 +x18: 1 +x19: 1 +x20: 0 +x21: 0 +x22: 1 +x23: 0 +x24: 1 +x25: 0 +x26: 1 +x27: 0 +x28: 1 +x29: 1 +x30: 0 +x31: 0 +x32: 1 +x33: 1 +x34: 1 +x35: 0 +x36: 1 +x37: 1 +x38: 0 +x39: 0 +x40: 1 +x41: 1 +x42: 0 +x43: 0 +x44: 1 +y00: 1 +y01: 0 +y02: 0 +y03: 1 +y04: 1 +y05: 0 +y06: 0 +y07: 0 +y08: 0 +y09: 0 +y10: 0 +y11: 1 +y12: 0 +y13: 0 +y14: 1 +y15: 1 +y16: 0 +y17: 0 +y18: 1 +y19: 0 +y20: 0 +y21: 0 +y22: 1 +y23: 1 +y24: 0 +y25: 0 +y26: 0 +y27: 1 +y28: 1 +y29: 1 +y30: 0 +y31: 1 +y32: 1 +y33: 0 +y34: 1 +y35: 1 +y36: 0 +y37: 0 +y38: 1 +y39: 1 +y40: 1 +y41: 0 +y42: 0 +y43: 1 +y44: 1 + +njs AND pvb -> fjh +y12 AND x12 -> dcm +srv XOR dfc -> z22 +qwb XOR vmp -> z14 +njs XOR pvb -> z10 +cjn OR dfj -> fgc +kpp XOR tvh -> z34 +tbq OR rdf -> frv +y40 AND x40 -> drs +pqh XOR mmh -> z05 +x26 XOR y26 -> jkt +qqp AND dmw -> kqp +qsh OR wfw -> qcr +hvw AND qnn -> vgk +bkc OR wsq -> ckv +ckv XOR bbh -> z03 +frj XOR hqq -> z02 +qff OR stw -> wsv +qpq XOR vnr -> z30 +pbk XOR kqc -> z15 +mvp OR pbv -> dbj +x15 AND y15 -> qsh +wcs OR cqk -> kpp +bmr XOR fgc -> z32 +y42 XOR x42 -> qjf +srv AND dfc -> rng +rsq AND nts -> brq +fhv AND hjw -> wwg +x06 AND y06 -> phw +vtf AND gdw -> kpc +wvv AND wbf -> qdh +y28 AND x28 -> nhs +y04 AND x04 -> ttv +cts XOR bcd -> qqp +mmh AND pqh -> rkt +hjw XOR fhv -> z37 +jdd AND rbm -> z36 +drt XOR tpt -> z31 +y20 XOR x20 -> gcf +x27 AND y27 -> ptf +qnn XOR hvw -> z41 +x13 AND y13 -> msq +cbr XOR hjd -> z07 +mkv OR hgp -> z45 +y35 XOR x35 -> spp +x08 XOR y08 -> nrk +y03 XOR x03 -> bbh +fhc OR ggh -> fwt +whj AND vrh -> qpj +x34 XOR y34 -> tvh +y43 AND x43 -> mpm +y15 XOR x15 -> pbk +x23 XOR y23 -> bcd +bwv AND tcd -> sgv +bcd AND cts -> jcd +ggs OR qmw -> tpt +gdm XOR jkm -> z09 +y38 XOR x38 -> pgm +x19 AND y19 -> vmc +dtc OR ggg -> kqc +hqq AND frj -> bkc +smv OR wwg -> bhh +y17 AND x17 -> tfq +x14 AND y14 -> dtc +y39 AND x39 -> ggh +jmh AND cjc -> gfp +mgj XOR wsv -> z12 +ftd AND wcw -> hjm +y19 XOR x19 -> whj +nrk AND ksd -> vwf +fgq AND spp -> drp +rsq XOR nts -> z18 +y10 XOR x10 -> njs +frv XOR qdb -> z04 +wbk OR fcv -> fgq +whj XOR vrh -> z19 +tvh AND kpp -> wbk +y39 XOR x39 -> pwt +scg OR gkj -> grv +dfn XOR qcr -> pbv +x27 XOR y27 -> ftd +svg OR tfq -> rsq +fkd XOR fwt -> z40 +x07 AND y07 -> pdq +y13 XOR x13 -> hnt +grv XOR vpm -> z21 +y02 XOR x02 -> frj +jkt XOR dbp -> z26 +wdr OR jcd -> z23 +x21 AND y21 -> wns +y08 AND x08 -> btn +qqp XOR dmw -> z24 +x01 AND y01 -> wqt +frw AND hdp -> hgq +frk AND wpk -> hgp +x07 XOR y07 -> cbr +x29 AND y29 -> jgm +sgv OR wqt -> hqq +tpt AND drt -> dfj +sdn OR rkt -> kqk +frv AND qdb -> vjj +fjh OR thp -> ncw +y26 AND x26 -> vvr +x25 AND y25 -> kcs +ftd XOR wcw -> z27 +tcd XOR bwv -> z01 +brk XOR kqk -> z06 +x10 AND y10 -> thp +frw XOR hdp -> z25 +pgm AND bhh -> hsh +x24 XOR y24 -> dmw +vmc OR qpj -> bkv +x44 AND y44 -> mkv +knh OR vgk -> rps +dfn AND qcr -> mvp +tqj OR rng -> cts +tbb OR wns -> srv +msq OR pjj -> vmp +drs OR ghn -> hvw +hsh OR rrb -> rms +dbj XOR bgt -> z17 +mpm OR kpc -> frk +bgt AND dbj -> svg +x40 XOR y40 -> fkd +x16 AND y16 -> z16 +cbr AND hjd -> dvs +fsb OR drv -> gdw +cjc XOR jmh -> z29 +pdq OR dvs -> ksd +rpw OR fbq -> fhv +y05 XOR x05 -> pqh +x30 AND y30 -> ggs +bmb OR drp -> jdd +hnt XOR fbm -> z13 +y42 AND x42 -> fsb +qpq AND vnr -> qmw +x11 XOR y11 -> qff +gcf AND bkv -> gkj +wvv XOR wbf -> z28 +x05 AND y05 -> sdn +pqp OR phw -> hjd +jdd XOR rbm -> fbq +njt OR kqp -> frw +y00 XOR x00 -> z00 +y31 AND x31 -> cjn +x32 XOR y32 -> bmr +x34 AND y34 -> fcv +y24 AND x24 -> njt +y06 XOR x06 -> brk +x12 XOR y12 -> mgj +ckv AND bbh -> tbq +rps XOR qjf -> z42 +x33 AND y33 -> cqk +y09 AND x09 -> nhk +y33 XOR x33 -> mbp +x04 XOR y04 -> qdb +x22 AND y22 -> tqj +y20 AND x20 -> scg +y01 XOR x01 -> tcd +fgc AND bmr -> shp +mbp XOR pnw -> z33 +frk XOR wpk -> z44 +y43 XOR x43 -> vtf +x37 XOR y37 -> hjw +y03 AND x03 -> rdf +rms XOR pwt -> z39 +bhh XOR pgm -> z38 +spp XOR fgq -> z35 +y22 XOR x22 -> dfc +qjf AND rps -> drv +kcs OR hgq -> dbp +y29 XOR x29 -> cjc +x25 XOR y25 -> hdp +hbq OR dcm -> fbm +brk AND kqk -> pqp +qwb AND vmp -> ggg +gpb OR shp -> pnw +y02 AND x02 -> wsq +ptf OR hjm -> wvv +x18 XOR y18 -> nts +x23 AND y23 -> wdr +x09 XOR y09 -> jkm +x36 AND y36 -> rpw +x32 AND y32 -> gpb +mbp AND pnw -> wcs +jgm OR gfp -> qpq +x11 AND y11 -> qnw +bkv XOR gcf -> z20 +nhk OR ftf -> pvb +gdw XOR vtf -> z43 +vjj OR ttv -> mmh +x41 AND y41 -> knh +ncw XOR qnw -> z11 +y28 XOR x28 -> wbf +y36 XOR x36 -> rbm +mgj AND wsv -> hbq +hnt AND fbm -> pjj +brq OR bfd -> vrh +x17 XOR y17 -> bgt +ksd XOR nrk -> z08 +x38 AND y38 -> rrb +fwt AND fkd -> ghn +ncw AND qnw -> stw +x18 AND y18 -> bfd +y00 AND x00 -> bwv +gdm AND jkm -> ftf +rms AND pwt -> fhc +x16 XOR y16 -> dfn +y37 AND x37 -> smv +x35 AND y35 -> bmb +y30 XOR x30 -> vnr +jkt AND dbp -> dbt +y41 XOR x41 -> qnn +x31 XOR y31 -> drt +qdh OR nhs -> jmh +vwf OR btn -> gdm +y44 XOR x44 -> wpk +x14 XOR y14 -> qwb +x21 XOR y21 -> vpm +pbk AND kqc -> wfw +vvr OR dbt -> wcw +grv AND vpm -> tbb diff --git a/resources/2024/day25.txt b/resources/2024/day25.txt new file mode 100644 index 0000000..1a84692 --- /dev/null +++ b/resources/2024/day25.txt @@ -0,0 +1,3999 @@ +..... +#...# +#.#.# +#.### +#.### +#.### +##### + +##### +#.### +#..## +#..## +#..## +#..#. +..... + +##### +####. +#.##. +#.#.. +#.#.. +#.#.. +..... + +..... +..... +..#.. +..#.. +#.#.# +#.### +##### + +##### +.#### +.##.# +.##.# +.#..# +..... +..... + +##### +##.## +#..#. +...#. +...#. +...#. +..... + +##### +##### +##### +##.#. +.#... +..... +..... + +..... +..... +.#..# +.#.## +##### +##### +##### + +..... +.#... +.#.#. +.#.#. +.#.#. +####. +##### + +##### +##### +###.# +###.# +###.# +.#..# +..... + +..... +.#... +.#... +.##.. +###.. +####. +##### + +##### +.##.# +.##.# +..#.. +..#.. +..... +..... + +##### +.###. +.#.#. +.#.#. +.#.#. +...#. +..... + +##### +.#### +.#.## +.#.## +.#.## +...#. +..... + +##### +#.### +..### +..##. +...#. +...#. +..... + +##### +#.#.# +#.#.# +#.#.# +#.... +#.... +..... + +##### +##### +###.# +.##.# +..#.# +..... +..... + +..... +...#. +.#.#. +.###. +####. +####. +##### + +..... +..#.. +..##. +..##. +.###. +##### +##### + +..... +...#. +#..#. +#..#. +#.##. +#.##. +##### + +..... +....# +..#.# +#.#.# +##### +##### +##### + +..... +..#.. +#.#.. +#.#.# +#.### +#.### +##### + +##### +#.### +#.### +#.##. +#..#. +...#. +..... + +##### +####. +.#.#. +.#.#. +..... +..... +..... + +..... +#.... +#...# +#...# +#..## +#.### +##### + +##### +#.### +#.### +...## +....# +....# +..... + +..... +..... +...#. +#..#. +##.#. +####. +##### + +..... +..... +..... +#.#.# +#.#.# +#.### +##### + +..... +....# +..#.# +#.### +#.### +#.### +##### + +..... +..... +.#... +.##.. +.##.. +###.# +##### + +##### +.#### +.#.## +.#.## +...#. +..... +..... + +..... +..#.. +..#.# +..### +#.### +##### +##### + +..... +..#.# +..#.# +..#.# +..### +.#### +##### + +..... +..... +...#. +.#.#. +.#.#. +.#.#. +##### + +##### +#.### +#.### +..##. +..#.. +..... +..... + +..... +..... +..... +.#... +.#..# +.#.## +##### + +##### +###.# +#.#.# +#.#.# +#.#.# +#.#.# +..... + +..... +....# +..#.# +..#.# +..#.# +#.#.# +##### + +##### +##### +##.#. +.#.#. +.#... +..... +..... + +..... +..#.. +..#.. +.##.. +.###. +##### +##### + +##### +####. +##.#. +##.#. +#.... +#.... +..... + +..... +....# +#...# +##..# +###.# +###.# +##### + +##### +##### +##### +###.# +.##.# +..#.# +..... + +##### +##.## +##.## +##..# +##..# +.#... +..... + +##### +.##.# +.##.# +.##.. +..#.. +..... +..... + +..... +....# +....# +.#..# +###.# +###.# +##### + +##### +##### +##### +.###. +..#.. +..... +..... + +##### +##.## +##.## +.#.## +.#.## +...#. +..... + +..... +..... +...#. +#..#. +##.## +##.## +##### + +##### +##### +#.### +..##. +..#.. +..#.. +..... + +##### +##### +####. +####. +.#.#. +...#. +..... + +..... +.#... +.##.# +###.# +##### +##### +##### + +##### +##### +####. +#.##. +#..#. +#.... +..... + +##### +#.### +...## +...## +....# +..... +..... + +..... +...#. +.#.#. +.#.## +.#.## +.#### +##### + +..... +.#.#. +.#.#. +.#.## +.#### +.#### +##### + +##### +##### +#.### +#.#.# +..#.# +....# +..... + +##### +####. +##.#. +##.#. +#..#. +...#. +..... + +..... +#.#.. +#.##. +#.##. +#.##. +#.##. +##### + +##### +####. +####. +##.#. +##.#. +.#.#. +..... + +##### +#.##. +..#.. +..#.. +..... +..... +..... + +..... +#...# +##.## +##.## +##.## +##### +##### + +##### +##### +.###. +..##. +...#. +...#. +..... + +##### +##### +##### +.#.## +.#.#. +...#. +..... + +##### +##.## +#...# +#...# +#...# +....# +..... + +..... +..... +..... +....# +#.#.# +###.# +##### + +##### +#.### +#.### +#..## +#..## +...#. +..... + +##### +###.# +##..# +##..# +##..# +#.... +..... + +##### +#.#.# +#.#.# +#.#.. +#.#.. +#.#.. +..... + +##### +##.## +#..## +#..#. +...#. +..... +..... + +##### +#.### +#.### +...## +...## +....# +..... + +..... +...#. +..##. +.###. +##### +##### +##### + +##### +##.## +##.## +#...# +#.... +..... +..... + +..... +..... +#.... +#.#.. +#.#.# +###.# +##### + +##### +###.# +.##.# +..#.# +..#.. +..... +..... + +##### +##### +##.## +.#.#. +.#... +..... +..... + +..... +.#... +###.. +###.. +###.. +####. +##### + +..... +.#.#. +.#.#. +.#.#. +##.## +##### +##### + +##### +#.### +#.##. +#..#. +#..#. +#.... +..... + +##### +##.## +.#.## +.#.## +...#. +..... +..... + +..... +#...# +#...# +##..# +###.# +##### +##### + +##### +##### +##### +.###. +..##. +...#. +..... + +..... +.#... +.#... +.#... +##..# +###.# +##### + +##### +##### +##### +#.### +..#.# +....# +..... + +##### +#.### +..### +..##. +..##. +...#. +..... + +..... +..... +...#. +...#. +#..#. +##.#. +##### + +..... +.#... +.#.#. +.###. +.###. +##### +##### + +..... +..#.. +..#.. +..##. +#.##. +#.##. +##### + +..... +...#. +...#. +.#.## +##.## +##### +##### + +##### +##### +#.### +..### +..##. +...#. +..... + +##### +##### +##### +###.# +#.#.. +..... +..... + +..... +.#... +.##.. +.##.. +.##.. +###.# +##### + +##### +####. +.###. +..##. +...#. +..... +..... + +##### +##.#. +#..#. +#..#. +...#. +..... +..... + +##### +####. +#.##. +#.##. +#.##. +#..#. +..... + +..... +..#.. +..#.# +#.#.# +###.# +###.# +##### + +##### +.#.## +.#..# +.#... +..... +..... +..... + +..... +.#... +.#... +.##.# +.#### +.#### +##### + +..... +..#.. +#.#.. +#.#.. +####. +####. +##### + +##### +##### +.#### +.#.#. +.#.#. +..... +..... + +..... +#.... +#.... +##... +###.# +###.# +##### + +..... +..... +..#.. +#.#.. +#.#.# +#.### +##### + +..... +..... +...#. +...## +.#.## +##### +##### + +..... +.#.#. +.#.#. +.#.#. +.#.## +.#.## +##### + +##### +##### +###.# +###.# +#.#.# +#.#.. +..... + +..... +..#.. +..#.. +..##. +#.### +#.### +##### + +##### +##.## +#...# +....# +..... +..... +..... + +..... +..... +...#. +..##. +#.### +#.### +##### + +..... +..#.. +..#.. +..#.. +.###. +.#### +##### + +##### +##### +####. +##.#. +##.#. +.#.#. +..... + +##### +.#.#. +.#.#. +...#. +..... +..... +..... + +..... +...#. +#..#. +#.### +##### +##### +##### + +..... +#.... +#.... +#.#.. +#.#.. +###.# +##### + +..... +..#.. +..##. +..### +.#### +.#### +##### + +..... +..... +..... +#...# +##.## +##.## +##### + +##### +####. +#.##. +#.##. +#..#. +..... +..... + +##### +##### +##### +##### +#.##. +#.#.. +..... + +##### +###.# +###.. +###.. +###.. +#.#.. +..... + +##### +##.#. +##.#. +##.#. +##.#. +.#.#. +..... + +..... +..... +...#. +..##. +.###. +.###. +##### + +..... +..... +..... +.#.#. +##.#. +####. +##### + +..... +#..#. +#..#. +##.#. +##.## +##### +##### + +..... +.#... +.##.. +.##.# +###.# +##### +##### + +..... +..... +#..#. +#..#. +#.##. +#.##. +##### + +..... +.#..# +.#.## +.#.## +.#.## +##### +##### + +##### +.###. +..##. +..#.. +..... +..... +..... + +..... +.#... +.#... +.##.# +.##.# +.#### +##### + +##### +.#### +.##.# +.##.# +.##.. +..#.. +..... + +##### +.###. +.###. +.#.#. +...#. +...#. +..... + +##### +##.## +#...# +#...# +#...# +..... +..... + +..... +..... +..#.# +..#.# +.##.# +###.# +##### + +##### +#.##. +#..#. +...#. +...#. +...#. +..... + +##### +###.# +.#..# +.#... +.#... +.#... +..... + +##### +##.## +##.## +#..## +#...# +#.... +..... + +##### +##### +###.# +###.. +#.#.. +..#.. +..... + +##### +##### +####. +#.##. +...#. +...#. +..... + +..... +#..#. +#..#. +#..#. +##.#. +####. +##### + +##### +.##.# +..#.# +..#.# +....# +....# +..... + +##### +.###. +.#.#. +.#.#. +...#. +...#. +..... + +##### +###.# +#.#.# +..#.. +..... +..... +..... + +..... +..... +..#.# +#.### +#.### +##### +##### + +##### +##### +##.## +.#.## +.#.#. +..... +..... + +..... +...#. +#..#. +#..#. +#..#. +##.#. +##### + +..... +..#.. +..#.. +.##.# +###.# +##### +##### + +..... +#.... +#.... +#.... +#...# +##.## +##### + +..... +..#.. +..#.. +..##. +#.### +##### +##### + +..... +...#. +#..#. +#..## +#.### +##### +##### + +..... +#.... +#..#. +#.##. +#.##. +##### +##### + +##### +##.## +##.#. +.#... +.#... +..... +..... + +##### +##### +####. +####. +.##.. +..#.. +..... + +..... +..#.# +.##.# +.##.# +##### +##### +##### + +..... +...#. +...## +..### +.#### +.#### +##### + +..... +..... +#.... +#.... +#.#.# +###.# +##### + +..... +..... +#...# +#.#.# +#.### +##### +##### + +..... +#.#.. +#.##. +##### +##### +##### +##### + +##### +##### +##### +.#.## +.#.## +.#..# +..... + +..... +....# +#..## +#..## +#..## +##.## +##### + +..... +....# +....# +.#.## +.#### +.#### +##### + +..... +..#.. +..#.. +..##. +.#### +##### +##### + +##### +#.### +#.### +#.#.# +#.#.# +..... +..... + +..... +...#. +..##. +#.##. +#.### +##### +##### + +##### +#.### +..### +..#.# +..#.. +..... +..... + +..... +#...# +#...# +#..## +#.### +#.### +##### + +..... +#.... +##.#. +##.#. +####. +####. +##### + +##### +.##.# +.##.# +.#..# +....# +..... +..... + +##### +##### +.###. +.#.#. +.#... +.#... +..... + +##### +##### +##### +.#.## +.#.#. +.#... +..... + +##### +##### +##.## +##.## +.#..# +.#... +..... + +##### +#.### +#.### +#.### +...## +....# +..... + +..... +..... +.#... +###.. +####. +####. +##### + +##### +##### +##### +##.## +.#.## +.#.#. +..... + +##### +##.## +##..# +##..# +#...# +#.... +..... + +..... +#.... +#.... +#.#.. +###.# +###.# +##### + +##### +.#### +.#### +.#.## +...## +...#. +..... + +..... +..... +..#.# +#.#.# +#.### +##### +##### + +..... +....# +.#..# +.#..# +.##.# +###.# +##### + +##### +####. +.###. +.##.. +..#.. +..#.. +..... + +..... +..... +...#. +...#. +.#.#. +##.## +##### + +##### +##.## +##.## +#...# +..... +..... +..... + +..... +....# +....# +..#.# +..### +.#### +##### + +..... +.#... +.#.#. +##.#. +##.## +##.## +##### + +##### +##### +#.### +#.### +..##. +...#. +..... + +..... +#..#. +#..#. +#.##. +#.##. +##### +##### + +##### +##### +##.## +##.#. +#..#. +...#. +..... + +##### +##### +##### +#.#.# +#.#.# +#.... +..... + +..... +..... +#.... +#..#. +#..#. +##.## +##### + +##### +##### +##.## +.#.## +...## +....# +..... + +##### +.#### +.#### +.#### +..### +...#. +..... + +..... +...#. +..##. +..##. +.###. +.#### +##### + +..... +...#. +.#.#. +.#.#. +##.## +##### +##### + +##### +##### +####. +#.#.. +#.... +#.... +..... + +..... +...#. +#..#. +#.##. +####. +##### +##### + +##### +####. +##.#. +##.#. +##.#. +.#... +..... + +..... +..#.# +.##.# +###.# +###.# +##### +##### + +##### +####. +####. +#.##. +..##. +...#. +..... + +##### +#.### +#..#. +#..#. +...#. +..... +..... + +##### +##.## +#..## +#...# +....# +..... +..... + +..... +....# +....# +....# +..#.# +#.### +##### + +##### +##.## +##.#. +.#.#. +...#. +..... +..... + +..... +...#. +#..#. +##.## +##.## +##### +##### + +##### +#.##. +#.##. +...#. +...#. +...#. +..... + +..... +....# +....# +..#.# +#.#.# +#.#.# +##### + +##### +##.## +##.## +##.## +.#..# +.#..# +..... + +..... +.#... +##... +##..# +##.## +##### +##### + +..... +#.... +#.... +#.... +##... +##.#. +##### + +##### +###.# +#.#.# +#.#.. +#.... +#.... +..... + +##### +##### +##### +##### +##.#. +#.... +..... + +##### +###.# +###.# +.#... +..... +..... +..... + +..... +.#... +.#... +.#.#. +.#.#. +####. +##### + +..... +.#... +.##.# +###.# +###.# +##### +##### + +##### +###.# +#.#.# +#...# +#...# +....# +..... + +##### +#.##. +..#.. +..#.. +..#.. +..... +..... + +##### +####. +####. +.##.. +.#... +..... +..... + +##### +##### +###.# +###.# +.##.# +.#... +..... + +..... +..#.. +#.##. +#.##. +#.### +#.### +##### + +##### +##### +###.# +##..# +##..# +#...# +..... + +..... +..... +.#... +.#..# +.##.# +###.# +##### + +..... +...#. +...#. +...## +...## +.#.## +##### + +..... +..#.. +..#.. +#.#.. +#.#.# +###.# +##### + +##### +##### +###.# +##..# +##... +.#... +..... + +..... +#.... +#..#. +#..## +##.## +##### +##### + +..... +..#.. +.##.. +.##.. +###.# +###.# +##### + +..... +..#.. +#.##. +#.##. +####. +####. +##### + +..... +.#..# +.#.## +.#### +.#### +##### +##### + +##### +#.### +#..## +#..## +...#. +...#. +..... + +##### +##### +##### +#.### +#.#.# +....# +..... + +..... +..... +....# +....# +..#.# +#.#.# +##### + +##### +#.#.# +#.#.# +#.#.. +#.#.. +#.... +..... + +..... +..... +..#.# +#.#.# +###.# +###.# +##### + +##### +###.# +###.# +.##.# +..#.. +..#.. +..... + +##### +##### +.###. +..#.. +..#.. +..#.. +..... + +##### +###.# +###.. +##... +##... +#.... +..... + +##### +#.### +#.##. +#..#. +#..#. +#..#. +..... + +##### +##.## +.#..# +.#..# +.#..# +..... +..... + +##### +##### +.#### +.#### +..### +..#.# +..... + +..... +..... +..... +#.... +##..# +###.# +##### + +..... +....# +....# +..#.# +.#### +.#### +##### + +..... +...#. +...#. +...#. +..##. +.###. +##### + +..... +..... +#.... +#.#.# +#.### +##### +##### + +..... +#.... +#..#. +#..## +##.## +##.## +##### + +##### +.###. +.###. +.###. +.#.#. +.#.#. +..... + +..... +..... +....# +..#.# +.##.# +###.# +##### + +..... +#.#.# +#.#.# +#.#.# +#.#.# +###.# +##### + +..... +..... +..... +.#... +##..# +###.# +##### + +..... +..#.. +.##.. +.##.# +.#### +##### +##### + +..... +.#..# +##.## +##.## +##.## +##.## +##### + +##### +.#### +.#### +.###. +.###. +..#.. +..... + +##### +##### +.#.## +.#.## +....# +....# +..... + +##### +####. +#.##. +#.##. +...#. +...#. +..... + +##### +##### +.#### +.#### +.##.# +..#.. +..... + +##### +.#### +.#.#. +.#.#. +.#.#. +.#... +..... + +##### +###.# +##..# +#.... +..... +..... +..... + +##### +##### +###.# +.##.# +.##.# +.#..# +..... + +..... +..... +...#. +.#.#. +.#.#. +##### +##### + +..... +....# +..#.# +..#.# +.##.# +.##.# +##### + +..... +#...# +#.#.# +#.#.# +###.# +##### +##### + +..... +...#. +#.##. +#.### +#.### +##### +##### + +..... +..#.. +..#.. +.##.. +.###. +####. +##### + +##### +##### +###.# +#.#.# +..#.. +..... +..... + +##### +##### +.#### +.#### +..#.# +..... +..... + +##### +##### +###.# +###.# +###.. +.#... +..... + +##### +##### +#.### +#.### +#.#.# +#.#.. +..... + +..... +.#..# +##.## +##### +##### +##### +##### + +##### +###.# +###.. +.##.. +..#.. +..#.. +..... + +##### +##### +.#### +..### +...#. +...#. +..... + +##### +##### +#.#.# +#.#.# +#.#.# +..#.# +..... + +##### +##### +.#### +..##. +..##. +...#. +..... + +##### +.#### +.#.## +.#.## +...#. +...#. +..... + +..... +...#. +.#.#. +.#.## +##### +##### +##### + +##### +.#### +.#.#. +.#.#. +.#.#. +..... +..... + +..... +.#..# +.#..# +.##.# +.##.# +###.# +##### + +##### +####. +.###. +.##.. +.#... +.#... +..... + +..... +..... +#.... +#.... +##.#. +##.## +##### + +..... +#.#.# +#.#.# +#.#.# +##### +##### +##### + +..... +#.... +#.... +#.... +##..# +###.# +##### + +..... +.#... +###.. +###.# +##### +##### +##### + +##### +.#.## +.#..# +.#..# +....# +....# +..... + +##### +###.# +.##.. +.##.. +.##.. +.#... +..... + +##### +##.## +##.## +##..# +.#... +.#... +..... + +##### +#.### +...## +...## +....# +....# +..... + +##### +#.### +#.### +#.### +..### +...#. +..... + +..... +.#... +.##.. +.##.. +.###. +##### +##### + +..... +.#..# +.#..# +.#..# +.#.## +##.## +##### + +..... +...#. +...#. +...#. +#..#. +#.### +##### + +..... +.#... +##... +##..# +##..# +###.# +##### + +##### +#.### +#..## +...#. +..... +..... +..... + +##### +###.# +###.# +###.# +.##.. +..#.. +..... + +##### +##### +.##.# +..#.# +..#.# +..#.. +..... + +..... +..... +.#.#. +.#.#. +##.#. +##.#. +##### + +..... +..... +.#... +.#... +.#.#. +.#.#. +##### + +##### +.##.# +.##.# +.##.. +..#.. +..#.. +..... + +##### +.##.# +.##.. +..#.. +..#.. +..#.. +..... + +..... +....# +....# +.#.## +##### +##### +##### + +##### +#.### +#.### +..#.# +..#.# +..#.. +..... + +..... +..... +.#... +.#..# +###.# +###.# +##### + +##### +###.# +###.# +.##.# +.##.# +.#... +..... + +..... +.#.#. +.#.#. +.#.#. +.#.#. +.#.#. +##### + +..... +..... +...#. +...#. +..##. +#.##. +##### + +..... +..#.. +..##. +..##. +.#### +.#### +##### + +##### +###.# +.##.# +.#..# +.#..# +..... +..... + +##### +#.### +#.#.# +#.#.# +#.#.# +#...# +..... + +##### +##.## +.#..# +.#... +..... +..... +..... + +##### +##.## +##.## +.#.## +.#.#. +.#.#. +..... + +##### +##### +.#### +.##.# +.##.# +.#..# +..... + +##### +####. +####. +##.#. +#..#. +...#. +..... + +##### +##### +.#### +.#.## +.#.#. +...#. +..... + +..... +..... +..... +..#.# +#.#.# +##### +##### + +..... +..... +#...# +##..# +###.# +###.# +##### + +..... +....# +...## +#..## +#..## +#.### +##### + +..... +#..#. +#..#. +##.#. +##### +##### +##### + +..... +.#... +.##.. +.##.. +.##.. +####. +##### + +..... +...#. +...#. +#..#. +#..#. +#.##. +##### + +##### +#.### +#..## +#...# +#...# +..... +..... + +..... +..... +#...# +##..# +##..# +###.# +##### + +##### +##.## +.#.## +.#.#. +.#... +.#... +..... + +..... +#..#. +#..#. +#..#. +#..## +##.## +##### + +..... +#.... +#.... +#.... +#.#.. +#.#.# +##### + +..... +..... +...#. +#.### +#.### +##### +##### + +##### +####. +.###. +..##. +...#. +...#. +..... + +..... +#...# +#...# +#...# +#..## +#.### +##### + +##### +#.### +#.### +#.#.# +#...# +..... +..... + +##### +#.##. +#.#.. +#.... +#.... +#.... +..... + +##### +.###. +.###. +.###. +.##.. +.#... +..... + +##### +###.# +##..# +##..# +.#... +..... +..... + +..... +..#.. +.###. +##### +##### +##### +##### + +##### +##.## +#..## +#..## +...#. +..... +..... + +##### +##### +.###. +.###. +.##.. +.#... +..... + +##### +##.## +##.## +##.#. +#.... +..... +..... + +##### +##### +###.# +.#... +.#... +..... +..... + +..... +..... +..... +#.... +#.#.# +#.### +##### + +##### +####. +#.#.. +#.#.. +..#.. +..#.. +..... + +..... +..... +#.... +#...# +#..## +#.### +##### + +##### +###.# +#.#.# +#.#.# +#.#.# +#...# +..... + +..... +..... +..... +.#... +.#... +.#.#. +##### + +..... +..... +.#.#. +.#.#. +##.## +##### +##### + +##### +#.### +..### +...#. +..... +..... +..... + +..... +...#. +.#.#. +.#.#. +.###. +.###. +##### + +..... +#.... +##.#. +##.#. +##.#. +####. +##### + +..... +..... +..... +..#.. +..#.. +#.#.# +##### + +##### +#.#.# +#.#.# +#.#.# +..#.. +..#.. +..... + +##### +##### +.##.# +.##.# +.#..# +.#... +..... + +..... +..... +#...# +#..## +##.## +##.## +##### + +..... +..... +.#... +##.#. +##.#. +##.## +##### + +..... +..#.. +..#.. +.##.# +.#### +##### +##### + +##### +####. +##.#. +.#.#. +...#. +...#. +..... + +##### +##.## +##..# +##... +#.... +..... +..... + +##### +##### +.##.# +.##.. +.#... +..... +..... + +..... +....# +....# +..#.# +..#.# +#.#.# +##### + +..... +.#.#. +.#.#. +.#.#. +.#.## +.#### +##### + +##### +##.## +##.## +##..# +.#... +..... +..... + +##### +##### +###.# +##... +.#... +..... +..... + +##### +##.## +#..## +#..## +#...# +..... +..... + +..... +...#. +#..## +#..## +#.### +#.### +##### + +..... +.#..# +.#..# +##..# +##.## +##.## +##### + +..... +..... +..... +.#..# +###.# +###.# +##### + +..... +..... +..... +....# +..#.# +.#### +##### + +##### +#.##. +#.##. +#.##. +#.#.. +#.#.. +..... + +..... +..... +..... +#..#. +#.### +##### +##### + +..... +..#.. +#.#.. +#.#.. +#.#.. +###.# +##### + +##### +####. +####. +##.#. +##.#. +.#... +..... + +##### +#.### +#..## +#..## +#..## +#...# +..... + +##### +#.##. +#.#.. +#.#.. +#.#.. +..#.. +..... + +..... +..#.. +.###. +.###. +.#### +##### +##### + +##### +.###. +..#.. +..#.. +..... +..... +..... + +..... +....# +.#..# +.#..# +.#.## +.#.## +##### + +..... +.#.#. +.#.## +.#.## +.#.## +##### +##### + +..... +..#.. +#.#.. +###.. +###.# +##### +##### + +..... +#.... +#.#.. +#.#.. +#.#.# +#.### +##### + +..... +..... +..... +#..#. +#..#. +#.##. +##### + +##### +##### +.#.## +.#.#. +.#... +.#... +..... + +##### +##### +###.# +##..# +.#... +..... +..... + +..... +.#... +.#... +###.. +####. +####. +##### + +..... +...#. +...#. +#..#. +#..## +##.## +##### + +##### +#.### +#.### +#.##. +...#. +...#. +..... + +..... +..... +..#.. +.##.. +.##.. +###.# +##### + +..... +..... +..#.. +.##.. +.##.# +.#### +##### + +..... +.#... +.#... +##..# +##..# +###.# +##### + +..... +..... +..... +.#... +.#.#. +.#### +##### + +..... +..... +#..#. +##.#. +##.## +##.## +##### + +..... +#.... +#.#.. +#.#.. +###.. +###.# +##### + +..... +..... +..#.. +.###. +.#### +##### +##### + +##### +###.# +#.#.# +#.#.. +..#.. +..... +..... + +##### +.#### +.##.# +.#..# +.#..# +..... +..... + +..... +...#. +...#. +..##. +#.### +##### +##### + +##### +##### +##### +.#.#. +.#... +.#... +..... + +..... +..... +..#.. +.##.. +.##.. +####. +##### + +..... +..#.. +.##.. +.###. +.###. +##### +##### + +##### +##### +#.### +#.### +#.### +#.#.# +..... + +..... +..... +...#. +...#. +...#. +#.### +##### + +##### +##### +##.## +##.## +#..## +...#. +..... + +..... +..#.. +#.#.# +#.#.# +###.# +##### +##### + +##### +##.#. +#..#. +...#. +...#. +...#. +..... + +..... +.#... +##... +##.#. +##.#. +##### +##### + +..... +..... +..#.. +..#.. +#.##. +##### +##### + +..... +#...# +#...# +#.#.# +###.# +##### +##### + +..... +..... +....# +...## +#..## +##.## +##### + +..... +.#..# +.#..# +.#..# +.#..# +.##.# +##### + +##### +##### +#.### +#..## +#..## +#...# +..... + +..... +#.... +##..# +##..# +##.## +##### +##### + +##### +##### +##.## +#..## +#...# +....# +..... + +##### +##### +##### +.#.#. +.#.#. +.#.#. +..... + +##### +###.# +.##.# +.##.# +..#.# +....# +..... + +##### +##.## +#..#. +#..#. +#.... +..... +..... + +##### +##.## +##.## +#..#. +..... +..... +..... + +..... +..#.. +..#.. +..##. +..##. +#.##. +##### + +..... +#.#.. +#.#.# +#.#.# +#.#.# +#.### +##### + +..... +....# +.#.## +.#.## +.#.## +##.## +##### + +##### +##### +##### +####. +##.#. +#.... +..... + +##### +#.### +#.#.# +#...# +#.... +..... +..... + +##### +##### +#.#.# +#.#.# +#.#.# +#.#.# +..... + +..... +..... +.#... +.#.#. +.###. +##### +##### + +..... +..... +...#. +#.### +##### +##### +##### + +..... +.#... +##... +###.. +####. +##### +##### + +##### +#.##. +..##. +..##. +..#.. +..#.. +..... + +..... +#...# +##..# +##.## +##.## +##### +##### + +##### +##.## +.#.#. +.#.#. +...#. +...#. +..... + +##### +##.## +##..# +#...# +#...# +..... +..... + +..... +..... +.#... +.#... +##..# +###.# +##### + +##### +####. +#.##. +#..#. +#..#. +...#. +..... + +..... +..... +..#.. +#.##. +#.##. +####. +##### + +##### +##### +##.## +##.## +#..#. +#.... +..... + +..... +..... +..#.. +.##.# +##### +##### +##### + +..... +..... +#.#.# +#.#.# +#.#.# +#.### +##### + +..... +#...# +#...# +#...# +#.#.# +#.### +##### + +##### +##.#. +##.#. +##.#. +##.#. +#.... +..... + +..... +#.... +#...# +#.#.# +#.#.# +##### +##### + +##### +#.#.# +#.#.. +#.#.. +..#.. +..... +..... + +##### +#.##. +#.##. +#.#.. +#.#.. +..#.. +..... + +..... +.#... +.#..# +.#.## +.#.## +.#### +##### + +..... +.#... +.##.. +.##.# +###.# +###.# +##### + +..... +..... +..... +.#... +.#.#. +.###. +##### + +..... +..#.# +..### +.#### +##### +##### +##### + +..... +#..#. +##.#. +##.## +##### +##### +##### + +##### +.#### +.#### +.#.## +.#.#. +.#... +..... + +..... +.#... +.#... +.#.#. +.#.#. +##.## +##### + +##### +###.# +###.# +###.# +##..# +#.... +..... + +..... +....# +.#..# +.#..# +##..# +###.# +##### + +##### +##### +.#.## +.#..# +.#..# +....# +..... + +##### +#.### +#.### +#.#.# +#.#.# +#...# +..... + +##### +##.## +#..## +#..## +#...# +....# +..... + +..... +..... +.#... +.#... +##.#. +####. +##### + +##### +##### +#.### +#.#.# +#...# +....# +..... + +##### +####. +###.. +.##.. +.##.. +..#.. +..... + +..... +..... +#.... +#.#.# +#.### +#.### +##### + +##### +.#### +.#### +.#### +.#### +.#.#. +..... + +..... +....# +..#.# +..#.# +#.#.# +#.### +##### + +..... +..#.# +.##.# +###.# +###.# +###.# +##### + +##### +.#### +..#.# +..#.# +..#.# +..#.# +..... + +##### +####. +.##.. +.##.. +.##.. +.#... +..... + +##### +#.### +#.### +#..#. +#..#. +#.... +..... + +..... +..... +#.#.. +#.#.# +#.### +#.### +##### + +##### +.###. +.###. +.##.. +.##.. +.#... +..... + +..... +....# +#...# +#...# +##.## +##.## +##### + +..... +..... +..#.. +#.#.. +####. +####. +##### + +..... +.#..# +.##.# +.##.# +###.# +###.# +##### + +..... +....# +#...# +#..## +#.### +##### +##### + +..... +.#... +.#... +.#.#. +.###. +####. +##### + +..... +#.#.. +#.#.. +#.#.. +###.# +##### +##### + +##### +.##.# +.##.# +..#.. +..... +..... +..... + +##### +.#### +..##. +..#.. +..#.. +..... +..... + +##### +##.## +##.## +.#.## +....# +....# +..... + +##### +###.# +.##.# +.##.# +..#.# +..#.# +..... + +..... +...#. +...#. +#..#. +#.##. +#.### +##### + +##### +##### +#.#.# +#.#.# +..#.. +..... +..... + +##### +####. +###.. +#.#.. +..... +..... +..... + +..... +..... +.#... +.#... +.##.. +.###. +##### + +..... +.#..# +.#.## +.#.## +.#.## +##.## +##### + +##### +##.## +##.## +##..# +#.... +#.... +..... + +##### +#.##. +#..#. +...#. +...#. +..... +..... + +..... +..... +..... +..#.. +#.#.. +#.##. +##### + +..... +..... +..... +...#. +.#.## +.#### +##### + +##### +.##.# +.##.# +..#.# +....# +..... +..... + +..... +..... +..... +....# +..#.# +.##.# +##### + +##### +##.## +.#..# +.#..# +.#..# +.#..# +..... + +..... +..... +.#..# +.#..# +.##.# +.#### +##### + +..... +..... +#..#. +#.##. +#.##. +##### +##### + +..... +...#. +#..## +##.## +##.## +##.## +##### + +..... +..... +.#... +##..# +##..# +##.## +##### + +##### +#.### +#.##. +#.#.. +..... +..... +..... + +##### +##### +####. +##.#. +##... +#.... +..... + +##### +#.### +#.##. +#.#.. +#.#.. +#.#.. +..... + +..... +.#... +.##.# +.##.# +.##.# +.##.# +##### + +##### +###.# +.##.# +.##.# +.##.# +.#..# +..... + +..... +#.... +#.#.. +#.#.. +####. +####. +##### + +##### +.###. +.#.#. +.#.#. +.#... +.#... +..... + +##### +##### +.#### +.##.# +.#... +..... +..... + +..... +..#.. +.###. +.###. +.###. +.###. +##### + +..... +..#.. +..#.. +.###. +.#### +##### +##### + +##### +##.## +.#.## +.#..# +.#... +.#... +..... + +..... +...#. +...## +#..## +##.## +##### +##### + +##### +##### +##### +#.#.# +#.#.# +..... +..... + +..... +#.#.. +#.##. +#.##. +#.##. +##### +##### + +##### +##.#. +##... +#.... +#.... +..... +..... + +..... +..#.. +..##. +#.### +##### +##### +##### + +##### +##.## +##.## +##.## +.#.#. +.#... +..... + +##### +#.### +#.#.# +#.#.# +..#.. +..#.. +..... + +##### +.#.## +.#.#. +.#.#. +.#.#. +.#.#. +..... + +##### +####. +.#.#. +.#... +.#... +.#... +..... + +..... +.#..# +.#..# +##..# +###.# +###.# +##### + +##### +##### +####. +####. +.#.#. +.#.#. +..... diff --git a/run.py b/run.py index 431d07a..167eeeb 100644 --- a/run.py +++ b/run.py @@ -86,13 +86,20 @@ def generate_commands_z80(problem: Problem, flags:Optional[list[str]]=None): run_compile_command(f"cat {preamble_location} {problem.build_location} > {problem.build_location + "0"}", shell=True) run_run_command(f"echo q | {simulator_location} -x{problem.build_location}0", shell=True) + + +def generate_commands_c(problem: Problem, flags): + + run_compile_command(["gcc", problem.source_location, "-o", problem.build_location]) + run_run_command(" ".join(["cat", problem.resource_location, "|", "./" + problem.build_location]), shell=True) languages = { "pladcl": Language("pladcl", "pdl", generate_commands_pladcl, build_extension="dc"), "pascal": Language("pascal", "pas", generate_commands_pascal), "python": Language("python", "py", lambda problem, flags: run_run_command(["python3", problem.source_location] + (flags if flags else []))), - "z80": Language("z80", "z80", generate_commands_z80, build_extension="bin") + "z80": Language("z80", "z80", generate_commands_z80, build_extension="bin"), + "c": Language("c", "c", generate_commands_c, build_extension="out") } diff --git a/src/c/2024/day18/part1.c b/src/c/2024/day18/part1.c new file mode 100644 index 0000000..4158c52 --- /dev/null +++ b/src/c/2024/day18/part1.c @@ -0,0 +1,146 @@ +#include +#include + +#define BOARD_SIZE 71 +#define NUM_BYTES 1024 + +#define WALL 10005 + +#define IN_BOUND(x, y) (x < BOARD_SIZE && x >= 0 && y < BOARD_SIZE && y >= 0) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +struct coordinate { + + int x, y; + +}; + + +struct coordinate queue[10000]; +int queue_len; +int queue_start; + +char map[BOARD_SIZE][BOARD_SIZE]; +int values[BOARD_SIZE][BOARD_SIZE]; + + +int queue_pop(struct coordinate *coord) { + + if (queue_len == 0) { + return -1; + } + + memcpy(coord, &queue[queue_start], sizeof(struct coordinate)); + + queue_start++; + queue_len--; + + return 0; + +} + + +void queue_push(struct coordinate *coord) { + + + //printf("%d, %da\n", coord->x, coord->y); + + memcpy(&queue[queue_start + queue_len], coord, sizeof(struct coordinate)); + queue_len++; + +} + + +void check_and_push(struct coordinate *coord, int depth) { + + //printf("%d\n", depth); + + if (!IN_BOUND(coord->x, coord->y) || values[coord->x][coord->y] == WALL) { + return; + } + + if (values[coord->x][coord->y] == 100000) { + //printf("%d\n", depth); + values[coord->x][coord->y] = depth + 1; + queue_push(coord); + + } + + +} + +int dfs(struct coordinate coord) { + + queue_push(&coord); + values[coord.x][coord.y] = 0; + + while (!queue_pop(&coord)) { + + int value = values[coord.x][coord.y]; + + //printf("%d, %d: %d\n", coord.x, coord.y, values[coord.x][coord.y]); + + if (coord.x == BOARD_SIZE - 1 && coord.y == BOARD_SIZE - 1) { + break; + } + + coord.x++; + check_and_push(&coord, value); + coord.x -= 2; + check_and_push(&coord, value); + coord.x++; + + coord.y++; + check_and_push(&coord, value); + coord.y -= 2; + check_and_push(&coord, value); + coord.y++; + + + } + + return values[BOARD_SIZE - 1][BOARD_SIZE - 1]; +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 100; + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + map[i][j] = '.'; + values[i][j] = 100000; + } + } + + struct coordinate coords[10000]; + int num_cords = 0; + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + + sscanf(line_buf, "%d,%d\n", &coords[num_cords].x, &coords[num_cords].y); + num_cords++; + + } + + for (int i = 0; i < NUM_BYTES; i++) { + + struct coordinate coord = coords[i]; + + values[coords[i].x][coords[i].y] = WALL; + + //printf("%d, %dwa\n", coords[i].x, coords[i].y); + //values[coord.x][coord.y] = 10000; + + } + + struct coordinate start; + + start.x = 0; + start.y = 0; + + printf("res: %d\n", dfs(start)); +} diff --git a/src/c/2024/day18/part2.c b/src/c/2024/day18/part2.c new file mode 100644 index 0000000..ec183d9 --- /dev/null +++ b/src/c/2024/day18/part2.c @@ -0,0 +1,170 @@ +#include +#include + +#define BOARD_SIZE 71 + +#define WALL 10005 + +#define IN_BOUND(x, y) (x < BOARD_SIZE && x >= 0 && y < BOARD_SIZE && y >= 0) +#define MIN(a,b) (((a)<(b))?(a):(b)) + +struct coordinate { + + int x, y; + +}; + + +struct coordinate queue[10000]; +int queue_len; +int queue_start; + +char map[BOARD_SIZE][BOARD_SIZE]; +int values[BOARD_SIZE][BOARD_SIZE]; + + +void queue_empty() { + + queue_start = 0; + queue_len = 0; + +} + +int queue_pop(struct coordinate *coord) { + + if (queue_len == 0) { + return -1; + } + + memcpy(coord, &queue[queue_start], sizeof(struct coordinate)); + + queue_start++; + queue_len--; + + return 0; + +} + + +void queue_push(struct coordinate *coord) { + + + //printf("%d, %da\n", coord->x, coord->y); + + memcpy(&queue[queue_start + queue_len], coord, sizeof(struct coordinate)); + queue_len++; + +} + + +void check_and_push(struct coordinate *coord, int depth) { + + //printf("%d\n", depth); + + if (!IN_BOUND(coord->x, coord->y) || values[coord->x][coord->y] == WALL) { + return; + } + + if (values[coord->x][coord->y] == 100000) { + //printf("%d\n", depth); + values[coord->x][coord->y] = depth + 1; + queue_push(coord); + + } + + +} + +int dfs(struct coordinate coord) { + + queue_push(&coord); + values[coord.x][coord.y] = 0; + + while (!queue_pop(&coord)) { + + int value = values[coord.x][coord.y]; + + //printf("%d, %d: %d\n", coord.x, coord.y, values[coord.x][coord.y]); + + if (coord.x == BOARD_SIZE - 1 && coord.y == BOARD_SIZE - 1) { + break; + } + + coord.x++; + check_and_push(&coord, value); + coord.x -= 2; + check_and_push(&coord, value); + coord.x++; + + coord.y++; + check_and_push(&coord, value); + coord.y -= 2; + check_and_push(&coord, value); + coord.y++; + + + } + + return values[BOARD_SIZE - 1][BOARD_SIZE - 1]; +} + + + +int main() { + + char *line_buf = NULL; + size_t buffer_size = 100; + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + map[i][j] = '.'; + values[i][j] = 100000; + } + } + + struct coordinate coords[10000]; + int num_cords = 0; + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + + sscanf(line_buf, "%d,%d\n", &coords[num_cords].x, &coords[num_cords].y); + num_cords++; + + } + + for (int c = 0; c < num_cords; c++) { + + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + values[i][j] = 100000; + } + } + + + for (int i = 0; i < c; i++) { + + struct coordinate coord = coords[i]; + + values[coords[i].x][coords[i].y] = WALL; + + } + + struct coordinate start; + + start.x = 0; + start.y = 0; + + int res = dfs(start); + + printf("%d: %d\n", c, res); + + if (res == 100000) { + printf("res: %d,%d\n", coords[c - 1].x, coords[c - 1].y); + break; + } + + queue_empty(); + //printf("res: %d\n", dfs(start)); + + } +} diff --git a/src/c/2024/day24/part1.c b/src/c/2024/day24/part1.c new file mode 100644 index 0000000..b09ba0f --- /dev/null +++ b/src/c/2024/day24/part1.c @@ -0,0 +1,235 @@ +#include +#include +#include + +int numeric_id(char* string) { + + return string[0] * 65536 + string[1] * 256 + string[2]; + +} + +int number(char* string) { + + return (string[1] - 48) * 10 + string[2] - 48; + +} + + +int number_from_id(int id) { + + return ((id / 256 % 256) - 48) * 10 + (id % 256 - 48); + +} + +int operator_to_id(char* str){ + + if (strcmp(str, "AND") == 0) { + return 1; + } else if (strcmp(str, "OR") == 0) { + return 2; + } else if (strcmp(str, "XOR") == 0) { + return 3; + } + + printf("Bad operator: %s\n", str); + exit(-1); + +} + +int zvalue_to_id(int znum) { + + return 'z' * 65536 + (znum / 10 + 48) * 256 + znum % 10 + 48; + +} + +int apply_operator(int v1, int op, int v2) { + + if (op == 1) { + + return v1 & v2; + + } else if (op == 2) { + + return v1 | v2; + + } else if (op == 3) { + + return v1 ^ v2; + + } + + printf("Bad operator id: %d\n", op); + exit(-1); + +} + +struct rule { + int op1; + int op2; + int operator; + int result; +}; + +struct value { + int key; + int value; +}; + + +struct value values[1000]; +struct rule rules[1000]; + +int num_values = 0; +int num_rules = 0; + + +int add_value(int key, int value) { + + values[num_values].value = value; + values[num_values].key = key; + + num_values++; + +} + +int get_value(int id) { + + for (int i = 0; i < num_values; i++) { + + if (values[i].key == id) { + return values[i].value; + } + } + + return -1; + +} + + + +int main() { + + int max_z = 0; + + + // reading junk + size_t buffer_size = 100; + char *line_buf = NULL; + char buffer[buffer_size]; + char op1[buffer_size]; + char op2[buffer_size]; + char operator[buffer_size]; + char end_goal[buffer_size]; + + int value; + + while (getline(&line_buf, &buffer_size, stdin) > 1) { + + sscanf(line_buf, "%3s: %d\n", buffer, &value); + + add_value(numeric_id(buffer), value); + } + + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + sscanf(line_buf, "%3s %3s %3s -> %3s", op1, operator, op2, end_goal); + + if (end_goal[0] == 'z') { + if (number(end_goal) > max_z) { + max_z = number(end_goal); + } + } + + rules[num_rules].op1 = numeric_id(op1); + rules[num_rules].op2 = numeric_id(op2); + rules[num_rules].operator = operator_to_id(operator); + rules[num_rules].result = numeric_id(end_goal); + + num_rules++; + } + + int found_zs[max_z]; + max_z++; + int rule_applied[num_rules]; + + for (int i = 0; i < num_rules; i++) { + + rule_applied[i] = 0; + + } + + for (int i = 0; i < max_z; i++) { + + found_zs[i] = 0; + + } + + printf("Read %d values and %d rules, trying to find %d zs\n", num_values, num_rules, max_z); + + for (;;) { + + for (int i = 0; i < num_rules; i++) { + + int v1, v2; + + if (rule_applied[i]) { + continue; + } + + if ((v1 = get_value(rules[i].op1)) >= 0 && (v2 = get_value(rules[i].op2)) >= 0) { + + int res = apply_operator(v1, rules[i].operator, v2); + + //printf("%d: %d\n", rules[i].result, res); + + add_value(rules[i].result, res); + + if (rules[i].result / 65536 == 'z') { + + found_zs[number_from_id(rules[i].result)] = 1; + printf("Found z%d\n", number_from_id(rules[i].result)); + //printf("%x", rules[i].result); + + } + + rule_applied[i] = 1; + + } + + //printf("%d, %d\n", v1, v2); + + } + + int finished = 1; + for (int i = 0; i < max_z; i++) { + + if (found_zs[i] == 0) { + + finished = 0; + break; + + } + + } + + if (finished) { + + break; + + } + + } + + long out = 0; + for (int i = max_z - 1; i >= 0; i--) { + + out *= 2; + int n = get_value(zvalue_to_id(i)); + printf("%d", n); + out += n; + + //printf("%x\n", zvalue_to_id(i)); + } + + printf("\nres: %ld\n", out); +} diff --git a/src/c/2024/day24/part2.c b/src/c/2024/day24/part2.c new file mode 100644 index 0000000..b09ba0f --- /dev/null +++ b/src/c/2024/day24/part2.c @@ -0,0 +1,235 @@ +#include +#include +#include + +int numeric_id(char* string) { + + return string[0] * 65536 + string[1] * 256 + string[2]; + +} + +int number(char* string) { + + return (string[1] - 48) * 10 + string[2] - 48; + +} + + +int number_from_id(int id) { + + return ((id / 256 % 256) - 48) * 10 + (id % 256 - 48); + +} + +int operator_to_id(char* str){ + + if (strcmp(str, "AND") == 0) { + return 1; + } else if (strcmp(str, "OR") == 0) { + return 2; + } else if (strcmp(str, "XOR") == 0) { + return 3; + } + + printf("Bad operator: %s\n", str); + exit(-1); + +} + +int zvalue_to_id(int znum) { + + return 'z' * 65536 + (znum / 10 + 48) * 256 + znum % 10 + 48; + +} + +int apply_operator(int v1, int op, int v2) { + + if (op == 1) { + + return v1 & v2; + + } else if (op == 2) { + + return v1 | v2; + + } else if (op == 3) { + + return v1 ^ v2; + + } + + printf("Bad operator id: %d\n", op); + exit(-1); + +} + +struct rule { + int op1; + int op2; + int operator; + int result; +}; + +struct value { + int key; + int value; +}; + + +struct value values[1000]; +struct rule rules[1000]; + +int num_values = 0; +int num_rules = 0; + + +int add_value(int key, int value) { + + values[num_values].value = value; + values[num_values].key = key; + + num_values++; + +} + +int get_value(int id) { + + for (int i = 0; i < num_values; i++) { + + if (values[i].key == id) { + return values[i].value; + } + } + + return -1; + +} + + + +int main() { + + int max_z = 0; + + + // reading junk + size_t buffer_size = 100; + char *line_buf = NULL; + char buffer[buffer_size]; + char op1[buffer_size]; + char op2[buffer_size]; + char operator[buffer_size]; + char end_goal[buffer_size]; + + int value; + + while (getline(&line_buf, &buffer_size, stdin) > 1) { + + sscanf(line_buf, "%3s: %d\n", buffer, &value); + + add_value(numeric_id(buffer), value); + } + + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + sscanf(line_buf, "%3s %3s %3s -> %3s", op1, operator, op2, end_goal); + + if (end_goal[0] == 'z') { + if (number(end_goal) > max_z) { + max_z = number(end_goal); + } + } + + rules[num_rules].op1 = numeric_id(op1); + rules[num_rules].op2 = numeric_id(op2); + rules[num_rules].operator = operator_to_id(operator); + rules[num_rules].result = numeric_id(end_goal); + + num_rules++; + } + + int found_zs[max_z]; + max_z++; + int rule_applied[num_rules]; + + for (int i = 0; i < num_rules; i++) { + + rule_applied[i] = 0; + + } + + for (int i = 0; i < max_z; i++) { + + found_zs[i] = 0; + + } + + printf("Read %d values and %d rules, trying to find %d zs\n", num_values, num_rules, max_z); + + for (;;) { + + for (int i = 0; i < num_rules; i++) { + + int v1, v2; + + if (rule_applied[i]) { + continue; + } + + if ((v1 = get_value(rules[i].op1)) >= 0 && (v2 = get_value(rules[i].op2)) >= 0) { + + int res = apply_operator(v1, rules[i].operator, v2); + + //printf("%d: %d\n", rules[i].result, res); + + add_value(rules[i].result, res); + + if (rules[i].result / 65536 == 'z') { + + found_zs[number_from_id(rules[i].result)] = 1; + printf("Found z%d\n", number_from_id(rules[i].result)); + //printf("%x", rules[i].result); + + } + + rule_applied[i] = 1; + + } + + //printf("%d, %d\n", v1, v2); + + } + + int finished = 1; + for (int i = 0; i < max_z; i++) { + + if (found_zs[i] == 0) { + + finished = 0; + break; + + } + + } + + if (finished) { + + break; + + } + + } + + long out = 0; + for (int i = max_z - 1; i >= 0; i--) { + + out *= 2; + int n = get_value(zvalue_to_id(i)); + printf("%d", n); + out += n; + + //printf("%x\n", zvalue_to_id(i)); + } + + printf("\nres: %ld\n", out); +} diff --git a/src/c/2024/day25/part1.c b/src/c/2024/day25/part1.c new file mode 100644 index 0000000..4767ecc --- /dev/null +++ b/src/c/2024/day25/part1.c @@ -0,0 +1,83 @@ +#include + +struct lockkey { + + int positions[5]; + +}; + + +int main() { + + + + + size_t buffer_size = 100; + char* line_buf = NULL; + + struct lockkey locks[1000]; + struct lockkey keys[1000]; + + int num_locks, num_keys; + + int is_key; + + while (getline(&line_buf, &buffer_size, stdin) > 0) { + + struct lockkey *current; + + if (line_buf[0] == '.') { + current = &keys[num_keys]; + num_keys++; + printf("Read key: "); + } else { + current = &locks[num_locks]; + num_locks++; + printf("Read lock: "); + } + + for (int i = 0; i < 5; i++) { + + current->positions[i] = 0; + + } + + for (int i = 0; i < 5; i++) { + getline(&line_buf, &buffer_size, stdin); + for (int j = 0; j < 5; j++) { + if (line_buf[j] == '#') { + current->positions[j]++; + } + } + } + + + printf("%d,%d,%d,%d,%d\n", current->positions[0], current->positions[1], current->positions[2], current->positions[3], current->positions[4]); + + getline(&line_buf, &buffer_size, stdin); + getline(&line_buf, &buffer_size, stdin); + } + + long out = 0; + for (int i = 0; i < num_locks; i++) { + for (int j = 0; j < num_keys; j++) { + + int ok = 1; + for (int k = 0; k < 5; k++) { + + if (locks[i].positions[k] + keys[j].positions[k] > 5) { + ok = 0; + break; + } + + } + + if (ok) { + out++; + } + } + } + + printf("res: %ld\n", out); + +} diff --git a/src/pladcl/2024/day16/part1.pdl b/src/pladcl/2024/day16/part1.pdl new file mode 100644 index 0000000..5090a55 --- /dev/null +++ b/src/pladcl/2024/day16/part1.pdl @@ -0,0 +1,243 @@ +interrupt program_start + + `1 0:X` # 1 + heap size + # X is heap + + # Y is values of heap + + +end + +state start + + if `ln` == 'E' then + `lisE` + end + if `ln` == 'S' then + # set for iterate heap + array_set('I', `li`, '.') + `lisS` + end + + if `lw` == 0 and `ln` == 10 then + `li1+sw` + `0lw-0:V` # up + `1 1:V` # right + `lw2:V` # down + `_1 3:V` # left + end + + +end + +interrupt program_end + + `[starting]n10an` + + # 0123 = NESW + `1` # start facing east + `lS10*+` # add in start position + + `sv` # value for heap + `0sp` # priority starts at 0 + heap_add() # add into heap + + while iterate_heap() != 1 do + + end + + `lpn` + +end + +function iterate_heap + + heap_pop() + + `lv` + `10~` + `sdsi` # get direction and index + + # if we've already been here + if array_get('L', `lv`) == 1 then + return 0 + end + # finish + array_set('L', `lv`, 1) + + + + + `lin[ ]nlpn10an` + + + if `li` == `lE` then + #`[done]n` + return 1 + end + + if `li;I` != '.' then + #`[bad]n10an` + return 0 + end + + # inc cost + `lp1+sp` + + # forward + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + # inc cost again + `lp1000+sp` + + # right + `ld1+4%sd` + + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + # left + `ld2+4%sd` + + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + 0 + +end + +function calculate_vecs + # 0 = forward + # 1 = right + # 2 = down + # 3 = left + + if `ld` == 0 then + `lw-` + end + +end + + +function heap_add + + # priority in p, value in v + + array_set('X', `0;X`, `lp`) + array_set('Y', `0;X`, `lv`) + + # up heap + `0;X` + up_heap() + + # inc heap size + #`[wow]n10an` + array_set('X', 0, `0;X1+`) + +end + + +function heap_pop + + if `0;X` == 1 then + `[nothing to pop]n10an` + `5Q` + end + + # returns priority in p, value in v + + # get return values + array_get('X', 1) + `sp` + array_get('Y', 1) + `sv` + + # dec heap size + array_set('X', 0, `0;X1-`) + + # move new things down + array_set('X', 1, array_get('X', `0;X`)) + array_set('Y', 1, array_get('Y', `0;X`)) + + 1 + down_heap() + # down heap + + +end + +function up_heap + # position is on the stack + `s.` + + # if we're at the top of heap + return_if(`l.` == 1) + + #`l.nl.2/dsn[|]n` + # if we need to swap + if array_get('X', `l.`) < array_get('X', `l.2/ds,`) then + + # swap + array_swap('X', `l.`, `l,`) + array_swap('Y', `l.`, `l,`) + + `l,` + up_heap() + # up heap another one + + end +end + +function down_heap + + # position is on the stack + `dSPs,` + + # check left + `lP2*s.` + if `l.` < array_get('X', 0) and array_get('X', `l.`) < array_get('X', `l,`) then + `l.s,` + end + + # check right + inc('.') + if `l.` < array_get('X', 0) and array_get('X', `l.`) < array_get('X', `l,`) then + `l.s,` + end + + # swap and more heap + if `l,` != `lP` then + + array_swap('X', `l,`, `lP`) + array_swap('Y', `l,`, `lP`) + + `l,` + down_heap() + + end + + `LPst` + + + +end + + +function print_heap + + `[size: ]n0;X1-n10an` + + for '!' in 1 to `0;X` do + + `[priority: ]l!;Xn[ value: ]nl!;Yn10an` + + end + +end diff --git a/src/pladcl/2024/day16/part2.pdl b/src/pladcl/2024/day16/part2.pdl new file mode 100644 index 0000000..564acdc --- /dev/null +++ b/src/pladcl/2024/day16/part2.pdl @@ -0,0 +1,268 @@ +interrupt program_start + + `1 0:X` # 1 + heap size + # X is heap + + # Y is values of heap + + +end + +state start + + if `ln` == 'E' then + `lisE` + end + if `ln` == 'S' then + # set for iterate heap + array_set('I', `li`, '.') + `lisS` + end + + if `lw` == 0 and `ln` == 10 then + `li1+sw` + `0lw-0:V` # up + `1 1:V` # right + `lw2:V` # down + `_1 3:V` # left + end + + +end + +interrupt program_end + + `[starting]n10an` + + # 0123 = NESW + `1` # start facing east + `lS10*+` # add in start position + + + array_set('O', `lE`, `2 32^`) + + `sv` # value for heap + `0sp` # priority starts at 0 + heap_add() # add into heap + + while iterate_heap() != 1 do + + end + + `[backing up]n10an` + + `0so` + + `lE10*l++` + backtrack() + + + `lon` + +end + +function backtrack + +end + +function iterate_heap + + heap_pop() + + `lv` + `10~` + `sdsi` # get direction and index + + #if we've already been here + if array_get('L', `lv`) == 1 and array_get('O', `li`) <= `lp` then + return 0 + end + array_set('L', `lv`, 1) + + `lin[ ]nlpn10an` + + + # finish + if `li` == `lE` then + #`[done]n` + # set this location as this value + + if array_get('O', `li`) < `lp` then + return 1 + end + + `lds+` + array_set('O', `li`, `lp`) + + return 0 + end + + if `li;I` != '.' then + #`[bad]n10an` + return 0 + end + + # set this location as this value + array_set('O', `li`, `lp`) + + + # inc cost + `lp1+sp` + + # forward + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + # inc cost again + `lp1000+sp` + + # right + `ld1+4%sd` + + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + # left + `ld2+4%sd` + + `li` + `ld;V+` # add in vector + `10*ld+sv` # and direction + heap_add() + + 0 + +end + +function calculate_vecs + # 0 = forward + # 1 = right + # 2 = down + # 3 = left + + if `ld` == 0 then + `lw-` + end + +end + + +function heap_add + + # priority in p, value in v + + array_set('X', `0;X`, `lp`) + array_set('Y', `0;X`, `lv`) + + # up heap + `0;X` + up_heap() + + # inc heap size + #`[wow]n10an` + array_set('X', 0, `0;X1+`) + +end + + +function heap_pop + + if `0;X` == 1 then + `[nothing to pop]n10an` + `5Q` + end + + # returns priority in p, value in v + + # get return values + array_get('X', 1) + `sp` + array_get('Y', 1) + `sv` + + # dec heap size + array_set('X', 0, `0;X1-`) + + # move new things down + array_set('X', 1, array_get('X', `0;X`)) + array_set('Y', 1, array_get('Y', `0;X`)) + + 1 + down_heap() + # down heap + + +end + +function up_heap + # position is on the stack + `s.` + + # if we're at the top of heap + return_if(`l.` == 1) + + #`l.nl.2/dsn[|]n` + # if we need to swap + if array_get('X', `l.`) < array_get('X', `l.2/ds,`) then + + # swap + array_swap('X', `l.`, `l,`) + array_swap('Y', `l.`, `l,`) + + `l,` + up_heap() + # up heap another one + + end +end + +function down_heap + + # position is on the stack + `dSPs,` + + # check left + `lP2*s.` + if `l.` < array_get('X', 0) and array_get('X', `l.`) < array_get('X', `l,`) then + `l.s,` + end + + # check right + inc('.') + if `l.` < array_get('X', 0) and array_get('X', `l.`) < array_get('X', `l,`) then + `l.s,` + end + + # swap and more heap + if `l,` != `lP` then + + array_swap('X', `l,`, `lP`) + array_swap('Y', `l,`, `lP`) + + `l,` + down_heap() + + end + + `LPst` + + + +end + + +function print_heap + + `[size: ]n0;X1-n10an` + + for '!' in 1 to `0;X` do + + `[priority: ]l!;Xn[ value: ]nl!;Yn10an` + + end + +end diff --git a/src/pladcl/2024/day17/part1.pdl b/src/pladcl/2024/day17/part1.pdl new file mode 100644 index 0000000..8f76c84 --- /dev/null +++ b/src/pladcl/2024/day17/part1.pdl @@ -0,0 +1,217 @@ +interrupt program_start + + `_1Sb` # bits ender + + + # combo operands + + `[0]0:C` + `[1]1:C` + `[2]2:C` + `[3]3:C` + `[lA]4:C` + `[lB]5:C` + `[lC]6:C` + `[[7 combo operand]p20Q]7:C` + + # opcodes + `[` # adv + `lA` + 2 + read_combo_operand() + `^/` + `sA` + `]0:O` + + `[` # bxl + `lB` + fetch() + xor() + `sB` + `]1:O` + + `[` #bst + read_combo_operand() + `8%` + `sB` + `]2:O` + + `[` # jnz + return_if(`lA` == 0) + fetch() + `sp` + `]3:O` + + `[` # bxc + fetch() + `st` + `lBlC` + xor() + `sB` + `]4:O` + + `[` # out + if `l,` == 1 then + `[,]n` + end + read_combo_operand() + `8%n` + `1s,` + `]5:O` + + `[` # bdv + `lA` + 2 + read_combo_operand() + `^/` + `sB` + `]6:O` + + `[` # cdv + `lA` + 2 + read_combo_operand() + `^/` + `sC` + `]7:O` + +end + + + +state read_A + adjust_index(12) + + read_number() + + `sA` + + set_state(read_B) + +end + +state read_B + + adjust_index(12) + + read_number() + + `sB` + + set_state(read_C) + +end + +state read_C + + adjust_index(12) + read_number() + `sC` + set_state(read_program) + + + `0sc` + adjust_index(10) + +end + + +state read_program + array_set('P', `lc`, `ln48-`) + inc('c') + adjust_index(1) +end + + +interrupt program_end + + + `[A:]nlAn[ B:]nlBn[ C:]nlCn[ p:]nlpn10an` + + + `0s,` # have commaed + `0sp` # program counter + + `10an` + + while `lp` < `lc` do + + cpu_cycle() + + #`[A:]nlAn[ B:]nlBn[ C:]nlCn[ p:]nlpn10an` + + end + +end + +function fetch + array_get('P', `lp`) + inc('p') +end + +function cpu_cycle + + array_get('O', fetch()) + `x` + +end + + +function read_combo_operand + array_get('C', fetch()) + `x` +end + + +# takes shit on the stack, leaves shit on the stack +function xor + + `s1s2` + `_1Sb` + + while `l1` != 0 or `l2` != 0 do + + `l1 2~s3s1` + `l2 2~s4s2` + + 0 # this bit + if (`l3` == 0 and `l4` == 1) or (`l3` == 1 and `l4` == 0) then + `1+` # make it 1 + end + + `Sb` + + end + + 0 # start at 0 + for '1' in stack 'b' do + `2*` # double existing + `l1+` # add in + end + +end + + + +function read_number + # does no error checking + `1` # sign + if `ln` == '-' then + `2-` # negative + adjust_index(1) + end + + `0` # c num + while `ln` >= '0' and `ln` <= '9' do + + `10*` + `ln48-+` # add in number + adjust_index(1) + + end + + #adjust_index(-1) + + `*` + +end diff --git a/src/pladcl/2024/day17/part2.pdl b/src/pladcl/2024/day17/part2.pdl new file mode 100644 index 0000000..9cdbf50 --- /dev/null +++ b/src/pladcl/2024/day17/part2.pdl @@ -0,0 +1,264 @@ +interrupt program_start + + `[this program brute forces. it probably works after 90 hours though. i solved the actual thing in a spreadsheet by hand though]n10an` + + `_1Sb` # bits ender + + + # combo operands + + `[0]0:C` + `[1]1:C` + `[2]2:C` + `[3]3:C` + `[lA]4:C` + `[lB]5:C` + `[lC]6:C` + `[[7 combo operand]p20Q]7:C` + + # opcodes + `[` # adv + `lA` + 2 + read_combo_operand() + `^/` + `sA` + `]0:O` + + `[` # bxl + `lB` + fetch() + xor() + `sB` + `]1:O` + + `[` #bst + read_combo_operand() + `8%` + `sB` + `]2:O` + + `[` # jnz + return_if(`lA` == 0) + fetch() + `sp` + `]3:O` + + `[` # bxc + fetch() + `st` + `lBlC` + xor() + `sB` + `]4:O` + + `[` # out + read_combo_operand() + `8%` + `l,` + `:U` + + if array_get('U', `l,`) != array_get('P', `l,`) then + + `10000sp` # break early + + end + inc(',') + #`[hi]n` + `]5:O` + 1 + `[` # bdv + `lA` + 2 + read_combo_operand() + `^/` + `sB` + `]6:O` + + `[` # cdv + `lA` + 2 + read_combo_operand() + `^/` + `sC` + `]7:O` + +end + + + +state read_A + adjust_index(12) + + read_number() + + `sA` + + set_state(read_B) + +end + +state read_B + + adjust_index(12) + + read_number() + + `sB` + + set_state(read_C) + +end + +state read_C + + adjust_index(12) + read_number() + `sC` + set_state(read_program) + + + `0sc` + adjust_index(10) + +end + + +state read_program + array_set('P', `lc`, `ln48-`) + inc('c') + adjust_index(1) +end + + +interrupt program_end + + + #`[A:]nlAn[ B:]nlBn[ C:]nlCn[ p:]nlpn10an` + `10an` + + `0s!` + + while 0 == 0 do + + `l!sA` + `0sB` + `0sC` + + run_program() + + if `l!1000%` == 0 then + `[.]n` + #`l,n[ ]nlcn10an` + end + + + #`[A:]nlAn[ B:]nlBn[ C:]nlCn[ p:]nlpn10an` + + # + if `l,` == `lc` then + 0 + for '?' in 0 to `l,` do + if array_get('U', `l?`) != array_get('P', `l?`) then + `1-` + break + end + end + + `s.` + if `l.` == 0 then + `10anl!p` + break + end + end + + inc('!') + + end + +end + + +function run_program + + `0sp` + `0s,` + while `lp` < `lc` do + + cpu_cycle() + + end + +end + +function fetch + array_get('P', `lp`) + inc('p') +end + +function cpu_cycle + + array_get('O', fetch()) + `x` + +end + + +function read_combo_operand + array_get('C', fetch()) + `x` +end + + +# takes shit on the stack, leaves shit on the stack +function xor + + `s1s2` + `_1Sb` + + while `l1` != 0 or `l2` != 0 do + + `l1 2~s3s1` + `l2 2~s4s2` + + 0 # this bit + if (`l3` == 0 and `l4` == 1) or (`l3` == 1 and `l4` == 0) then + `1+` # make it 1 + end + + `Sb` + + end + + 0 # start at 0 + for '1' in stack 'b' do + `2*` # double existing + `l1+` # add in + end + +end + + + +function read_number + # does no error checking + `1` # sign + if `ln` == '-' then + `2-` # negative + adjust_index(1) + end + + `0` # c num + while `ln` >= '0' and `ln` <= '9' do + + `10*` + `ln48-+` # add in number + adjust_index(1) + + end + + #adjust_index(-1) + + `*` + +end diff --git a/src/pladcl/2024/day22/part1.pdl b/src/pladcl/2024/day22/part1.pdl new file mode 100644 index 0000000..08b4205 --- /dev/null +++ b/src/pladcl/2024/day22/part1.pdl @@ -0,0 +1,99 @@ +state start + + read_number() + + `sm` + secret_number() + `lmlo+so` + `[.]n` + +end + + +interrupt program_end + + `10an` + `lop` + +end + +# thing on stack +function secret_number + + for '!' in 0 to 2000 do + + `lm64*` + mix_and_prune() + `lm32/` + mix_and_prune() + `lm2048*` + mix_and_prune() + + #`lmn10an` + end +end + + +# thing on stack, number in m +function mix_and_prune + + # mix + `lm` + xor() + + # prune + `16777216%` + `sm` + +end + +# takes shit on the stack, leaves shit on the stack +function xor + + `s1s2` + `_1Sb` + + while `l1` != 0 or `l2` != 0 do + + `l1 2~s3s1` + `l2 2~s4s2` + + 0 # this bit + if `l3l4+` == 1 then + `1+` # make it 1 + end + + `Sb` + + end + + 0 # start at 0 + for '1' in stack 'b' do + `2*` # double existing + `l1+` # add in + end + +end + +function read_number + # does no error checking + `1` # sign + if `ln` == '-' then + `2-` # negative + adjust_index(1) + end + + `0` # c num + while `ln` >= '0' and `ln` <= '9' do + + `10*` + `ln48-+` # add in number + adjust_index(1) + + end + + #adjust_index(-1) + + `*` + +end diff --git a/src/pladcl/2024/day22/part2.pdl b/src/pladcl/2024/day22/part2.pdl new file mode 100644 index 0000000..a0c9fdf --- /dev/null +++ b/src/pladcl/2024/day22/part2.pdl @@ -0,0 +1,106 @@ +state start + + read_number() + + `sm` + secret_number() + `lmlo+so` + `[.]n` + +end + + +interrupt program_end + + `10an` + `lop` + +end + +# thing on stack +function secret_number + + for '!' in 0 to 10 do + + `lm10%sp` # previous + + `lm64*` + mix_and_prune() + `lm32/` + mix_and_prune() + `lm2048*` + mix_and_prune() + + # offset + `lm10%lp-p` + + + + #`lmn10an` + end +end + + +# thing on stack, number in m +function mix_and_prune + + # mix + `lm` + xor() + + # prune + `16777216%` + `sm` + +end + +# takes shit on the stack, leaves shit on the stack +function xor + + `s1s2` + `_1Sb` + + while `l1` != 0 or `l2` != 0 do + + `l1 2~s3s1` + `l2 2~s4s2` + + 0 # this bit + if `l3l4+` == 1 then + `1+` # make it 1 + end + + `Sb` + + end + + 0 # start at 0 + for '1' in stack 'b' do + `2*` # double existing + `l1+` # add in + end + +end + +function read_number + # does no error checking + `1` # sign + if `ln` == '-' then + `2-` # negative + adjust_index(1) + end + + `0` # c num + while `ln` >= '0' and `ln` <= '9' do + + `10*` + `ln48-+` # add in number + adjust_index(1) + + end + + #adjust_index(-1) + + `*` + +end diff --git a/src/pladcl/2024/day23/part1.pdl b/src/pladcl/2024/day23/part1.pdl new file mode 100644 index 0000000..0200335 --- /dev/null +++ b/src/pladcl/2024/day23/part1.pdl @@ -0,0 +1,88 @@ +state start + + `ln` + 'a' + `-` + `26*` + adjust_index(1) + `ln` + 'a' + `-+` + + `s1` + + # past the '-' + adjust_index(2) + + `ln` + 'a' + `-` + `26*` + adjust_index(1) + `ln` + 'a' + `-+` + + `s2` + + + array_set('X', `l1676*l2+`, 1) + array_set('X', `l2676*l1+`, 1) + + #`l1n[ ]nl2n10an` + + adjust_index(1) + +end + + +interrupt program_end + + for '!' in 494 to 520 do + + #for '!' in 495 to 496 do + #`l!26%` + #'a' + #`+an` + for '?' in 0 to 675 do + + #`l?n` + #`[ ]n` + #array_get('X', `l?676*l!+`) + #`n` + #`10an` + + if not (`l?` >= 494 and `l?` <= `l!`) and array_get('X', `l!676*l?+`) == 1 then + + #`l?n[ ]n` + + for '@' in `l?1+` to 676 do + + if not (`l@` >= 494 and `l@` <= `l!`) then + if array_get('X', `l!676*l@+`) == 1 and array_get('X', `l?676*l@+`) == 1 then + #`[wow]n` + inc('o') + end + end + end + + end + + end + + end + + `lop` + +end + + +# on stack +function print_node + `26~r` + 'a' + `+an` + 'a' + `+an` + `[ ]n` +end diff --git a/src/pladcl/2024/day23/part2.pdl b/src/pladcl/2024/day23/part2.pdl new file mode 100644 index 0000000..8a62244 --- /dev/null +++ b/src/pladcl/2024/day23/part2.pdl @@ -0,0 +1,117 @@ +state start + + `ln` + 'a' + `-` + `26*` + adjust_index(1) + `ln` + 'a' + `-+` + + `s1` + + # past the '-' + adjust_index(2) + + `ln` + 'a' + `-` + `26*` + adjust_index(1) + `ln` + 'a' + `-+` + + `s2` + + array_get('X', `l1`) + `2l2^+` + `l1:X` + + array_get('X', `l2`) + `2;1^+` + `l2:X` + + array_set('Y', `l1`, 1) + array_set('Y', `l2`, 1) + + #`l1n[ ]nl2n10an` + + adjust_index(1) + +end + + +interrupt program_end + + 0 + for '!' in 0 to 676 do + if array_get('Y', `l!`) == 1 then + `2l!^+` # bitmap + end + end + + `SP` + `0SR` + `0SX` + +end + +function bit_and + + `s1s2` + 0 + for '.' in 0 to 676 do + if `l12l!^/2%` == 1 and `l22l!^/2%` == 1 then + `2l!^+` + end + end + +end + +function bit_or + + `s1s2` + 0 + for '.' in 0 to 676 do + if `l12l!^/2%` == 1 or `l22l!^/2%` == 1 then + `2l!^+` + end + end + + +end + + +# R P X stacks +function bron_kerbosch + + if `lP` == 0 and `lX` == 0 then + `LRSO` + `LPstLXst` + return + end + + `0S!` + + while `l!` < 676 do + + if `lP` + + `L!1+S!` + end + + `LPstLXstLRstL!st` +end + + +# on stack +function print_node + `26~r` + 'a' + `+an` + 'a' + `+an` + `[ ]n` +end