From 9db475e3913e41032f025516faad6b307453ae76 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Fri, 13 Dec 2024 09:01:00 +0100 Subject: [PATCH] day13 - try to naively implement the equation solver instead of relying on external libraries; can't be *that* hard, right? RIGHT? --- day13.py | 111 ++++ inputs/input13 | 1279 +++++++++++++++++++++++++++++++++++++++++++ inputs/input13_test | 15 + 3 files changed, 1405 insertions(+) create mode 100644 day13.py create mode 100644 inputs/input13 create mode 100644 inputs/input13_test diff --git a/day13.py b/day13.py new file mode 100644 index 0000000..6ffca8a --- /dev/null +++ b/day13.py @@ -0,0 +1,111 @@ +# from sympy import solve +# from sympy.abc import x, y +from math import lcm +from tools.aoc import AOCDay +from typing import Any + +BLOWUP_FACTOR = 10_000_000_000_000 + + +def solve(machine: tuple[tuple[int, int], tuple[int, int], tuple[int, int]], part2: bool = False) -> tuple[int, int]: + # ax + by = c + # y = (c - ax) / b + lcm_a = lcm(machine[0][0], machine[1][0]) + tmb_one = lcm_a / machine[0][0] + tmb_two = lcm_a / machine[1][0] + a1 = machine[0][0] * tmb_one + a2 = machine[1][0] * tmb_two + b1 = machine[0][1] * tmb_one + b2 = machine[1][1] * tmb_two + if not part2: + c1 = machine[2][0] * tmb_one + c2 = machine[2][1] * tmb_two + else: + c1 = (machine[2][0] + BLOWUP_FACTOR) * tmb_one + c2 = (machine[2][1] + BLOWUP_FACTOR) * tmb_two + + ratio_a = a1 / a2 + ratio_b = b1 / b2 + ratio_c = c1 / c2 + + if ratio_a == ratio_b == ratio_c: + return -1, -1 # infinite many solutions + elif ratio_a == ratio_b and ratio_b != ratio_c: + return -1, -1 # no solutions + else: + y = (c1 - c2) / (b1 - b2) + x = (c1 - (b1 * y)) / a1 + return x, y + + pass + + +class Day(AOCDay): + inputs = [ + [ + (480, "input13_test"), + (33427, "input13"), + ], + [ + (91649162972270, "input13"), + ], + ] + + def parse_input(self) -> list[tuple[tuple[int, int], tuple[int, int], tuple[int, int]]]: + machines = [] + for machine in self.getMultiLineInputAsArray(): + button_a = machine[0].split(": ")[1] + button_a_x, button_a_y = (int(x[2:]) for x in button_a.split(", ")) + button_b = machine[1].split(": ")[1] + button_b_x, button_b_y = (int(x[2:]) for x in button_b.split(", ")) + prize = machine[2].split(": ")[1] + prize_x, prize_y = (int(x[2:]) for x in prize.split(", ")) + + machines.append(((button_a_x, button_a_y), (button_b_x, button_b_y), (prize_x, prize_y))) + + return machines + + def part1(self) -> Any: + tokens = 0 + for machine in self.parse_input(): + x, y = solve(machine) + if x > 0 and y > 0: + print(machine, x, y, 3 * x + y) + tokens += 3 * x + y + return tokens + # found = False + # for ba_press in range(100): + # for bb_press in range(100): + # if ( + # ba_press * machine[0][0] + bb_press * machine[1][0] == machine[2][0] + # and ba_press * machine[0][1] + bb_press * machine[1][1] == machine[2][1] + # ): + # tokens += 3 * ba_press + bb_press + # found = True + # break + + # if found: + # break + + # return tokens + + def part2(self) -> Any: + tokens = 0 + # for machine in self.parse_input(): + # ans = solve( + # [ + # machine[0][0] * x + machine[1][0] * y - (machine[2][0] + BLOWUP_FACTOR), + # machine[0][1] * x + machine[1][1] * y - (machine[2][1] + BLOWUP_FACTOR), + # ], + # [x, y], + # dict=True, + # ) + # if len(ans) == 1 and ans[0][x] == int(ans[0][x]) and ans[0][y] == int(ans[0][y]): + # tokens += 3 * ans[0][x] + ans[0][y] + + return tokens + + +if __name__ == "__main__": + day = Day(2024, 13) + day.run(verbose=True) diff --git a/inputs/input13 b/inputs/input13 new file mode 100644 index 0000000..f2c9db8 --- /dev/null +++ b/inputs/input13 @@ -0,0 +1,1279 @@ +Button A: X+85, Y+71 +Button B: X+21, Y+84 +Prize: X=9947, Y=13426 + +Button A: X+20, Y+62 +Button B: X+62, Y+27 +Prize: X=6092, Y=7618 + +Button A: X+64, Y+14 +Button B: X+20, Y+48 +Prize: X=9128, Y=5754 + +Button A: X+56, Y+12 +Button B: X+13, Y+49 +Prize: X=1136, Y=2092 + +Button A: X+76, Y+51 +Button B: X+37, Y+97 +Prize: X=5111, Y=10286 + +Button A: X+86, Y+24 +Button B: X+20, Y+22 +Prize: X=2154, Y=1734 + +Button A: X+87, Y+96 +Button B: X+89, Y+13 +Prize: X=10425, Y=8436 + +Button A: X+36, Y+35 +Button B: X+15, Y+88 +Prize: X=3270, Y=8612 + +Button A: X+46, Y+82 +Button B: X+93, Y+24 +Prize: X=8545, Y=3748 + +Button A: X+72, Y+21 +Button B: X+18, Y+60 +Prize: X=9494, Y=9626 + +Button A: X+81, Y+25 +Button B: X+80, Y+91 +Prize: X=10929, Y=9142 + +Button A: X+81, Y+18 +Button B: X+46, Y+67 +Prize: X=5003, Y=2588 + +Button A: X+71, Y+34 +Button B: X+22, Y+35 +Prize: X=7247, Y=5134 + +Button A: X+71, Y+12 +Button B: X+88, Y+86 +Prize: X=3459, Y=798 + +Button A: X+96, Y+50 +Button B: X+54, Y+86 +Prize: X=9456, Y=6314 + +Button A: X+49, Y+27 +Button B: X+13, Y+27 +Prize: X=4994, Y=2970 + +Button A: X+44, Y+15 +Button B: X+27, Y+40 +Prize: X=5928, Y=4115 + +Button A: X+25, Y+59 +Button B: X+60, Y+25 +Prize: X=16730, Y=332 + +Button A: X+65, Y+15 +Button B: X+12, Y+33 +Prize: X=12944, Y=2786 + +Button A: X+59, Y+57 +Button B: X+80, Y+15 +Prize: X=9585, Y=3405 + +Button A: X+66, Y+22 +Button B: X+13, Y+66 +Prize: X=1717, Y=4334 + +Button A: X+80, Y+81 +Button B: X+23, Y+96 +Prize: X=3227, Y=5376 + +Button A: X+15, Y+39 +Button B: X+73, Y+39 +Prize: X=15440, Y=7868 + +Button A: X+59, Y+22 +Button B: X+17, Y+44 +Prize: X=5609, Y=3146 + +Button A: X+46, Y+21 +Button B: X+11, Y+32 +Prize: X=4973, Y=14627 + +Button A: X+32, Y+64 +Button B: X+45, Y+14 +Prize: X=6683, Y=6178 + +Button A: X+28, Y+42 +Button B: X+88, Y+29 +Prize: X=9068, Y=5774 + +Button A: X+84, Y+63 +Button B: X+13, Y+31 +Prize: X=15406, Y=13732 + +Button A: X+32, Y+60 +Button B: X+47, Y+17 +Prize: X=12321, Y=19487 + +Button A: X+36, Y+19 +Button B: X+17, Y+34 +Prize: X=4005, Y=7269 + +Button A: X+46, Y+17 +Button B: X+54, Y+77 +Prize: X=2284, Y=2042 + +Button A: X+63, Y+26 +Button B: X+13, Y+38 +Prize: X=5021, Y=14566 + +Button A: X+27, Y+77 +Button B: X+68, Y+18 +Prize: X=6392, Y=6442 + +Button A: X+13, Y+52 +Button B: X+67, Y+31 +Prize: X=5103, Y=2637 + +Button A: X+55, Y+73 +Button B: X+80, Y+13 +Prize: X=8415, Y=1944 + +Button A: X+31, Y+62 +Button B: X+54, Y+29 +Prize: X=17003, Y=19155 + +Button A: X+53, Y+22 +Button B: X+46, Y+66 +Prize: X=3732, Y=4598 + +Button A: X+26, Y+57 +Button B: X+65, Y+31 +Prize: X=16058, Y=4996 + +Button A: X+19, Y+50 +Button B: X+96, Y+18 +Prize: X=1105, Y=2204 + +Button A: X+36, Y+83 +Button B: X+39, Y+16 +Prize: X=3477, Y=3951 + +Button A: X+48, Y+31 +Button B: X+14, Y+43 +Prize: X=18770, Y=10200 + +Button A: X+44, Y+12 +Button B: X+35, Y+81 +Prize: X=15232, Y=2192 + +Button A: X+24, Y+51 +Button B: X+57, Y+25 +Prize: X=18914, Y=8198 + +Button A: X+99, Y+18 +Button B: X+78, Y+85 +Prize: X=5712, Y=2809 + +Button A: X+48, Y+30 +Button B: X+24, Y+49 +Prize: X=5048, Y=9409 + +Button A: X+34, Y+85 +Button B: X+90, Y+14 +Prize: X=10194, Y=9238 + +Button A: X+25, Y+72 +Button B: X+26, Y+18 +Prize: X=2107, Y=5670 + +Button A: X+36, Y+53 +Button B: X+35, Y+14 +Prize: X=19164, Y=15240 + +Button A: X+62, Y+42 +Button B: X+16, Y+77 +Prize: X=2350, Y=6951 + +Button A: X+52, Y+26 +Button B: X+11, Y+20 +Prize: X=16911, Y=16316 + +Button A: X+23, Y+57 +Button B: X+65, Y+24 +Prize: X=7618, Y=14318 + +Button A: X+81, Y+19 +Button B: X+35, Y+56 +Prize: X=8572, Y=3540 + +Button A: X+27, Y+61 +Button B: X+63, Y+22 +Prize: X=4238, Y=4516 + +Button A: X+35, Y+15 +Button B: X+64, Y+99 +Prize: X=4489, Y=5574 + +Button A: X+37, Y+56 +Button B: X+95, Y+30 +Prize: X=5412, Y=3526 + +Button A: X+43, Y+77 +Button B: X+70, Y+33 +Prize: X=5902, Y=6413 + +Button A: X+63, Y+24 +Button B: X+14, Y+63 +Prize: X=14599, Y=13073 + +Button A: X+17, Y+44 +Button B: X+55, Y+26 +Prize: X=3109, Y=1126 + +Button A: X+56, Y+99 +Button B: X+75, Y+16 +Prize: X=6353, Y=2487 + +Button A: X+56, Y+81 +Button B: X+88, Y+28 +Prize: X=8328, Y=4103 + +Button A: X+99, Y+59 +Button B: X+43, Y+95 +Prize: X=7598, Y=10078 + +Button A: X+22, Y+62 +Button B: X+62, Y+13 +Prize: X=7828, Y=14184 + +Button A: X+95, Y+14 +Button B: X+42, Y+94 +Prize: X=6248, Y=9614 + +Button A: X+68, Y+50 +Button B: X+14, Y+69 +Prize: X=3108, Y=3342 + +Button A: X+23, Y+13 +Button B: X+12, Y+30 +Prize: X=16675, Y=1299 + +Button A: X+97, Y+39 +Button B: X+13, Y+95 +Prize: X=5860, Y=3972 + +Button A: X+99, Y+21 +Button B: X+57, Y+87 +Prize: X=6249, Y=8367 + +Button A: X+32, Y+68 +Button B: X+55, Y+19 +Prize: X=5915, Y=15959 + +Button A: X+71, Y+41 +Button B: X+25, Y+56 +Prize: X=11725, Y=9873 + +Button A: X+31, Y+48 +Button B: X+36, Y+17 +Prize: X=337, Y=5629 + +Button A: X+84, Y+23 +Button B: X+11, Y+99 +Prize: X=5261, Y=5568 + +Button A: X+90, Y+11 +Button B: X+65, Y+89 +Prize: X=8745, Y=1312 + +Button A: X+25, Y+56 +Button B: X+53, Y+17 +Prize: X=7354, Y=10734 + +Button A: X+73, Y+19 +Button B: X+47, Y+89 +Prize: X=668, Y=788 + +Button A: X+22, Y+78 +Button B: X+62, Y+16 +Prize: X=2988, Y=5906 + +Button A: X+16, Y+72 +Button B: X+39, Y+11 +Prize: X=17067, Y=7351 + +Button A: X+15, Y+48 +Button B: X+48, Y+19 +Prize: X=11726, Y=1506 + +Button A: X+68, Y+44 +Button B: X+34, Y+73 +Prize: X=7854, Y=6867 + +Button A: X+64, Y+75 +Button B: X+77, Y+17 +Prize: X=11321, Y=6456 + +Button A: X+65, Y+27 +Button B: X+13, Y+76 +Prize: X=1612, Y=4482 + +Button A: X+12, Y+66 +Button B: X+16, Y+18 +Prize: X=2572, Y=7356 + +Button A: X+58, Y+47 +Button B: X+16, Y+93 +Prize: X=1410, Y=4424 + +Button A: X+39, Y+67 +Button B: X+37, Y+15 +Prize: X=11379, Y=11117 + +Button A: X+11, Y+62 +Button B: X+58, Y+20 +Prize: X=14896, Y=12112 + +Button A: X+59, Y+19 +Button B: X+22, Y+65 +Prize: X=2559, Y=8749 + +Button A: X+25, Y+29 +Button B: X+93, Y+15 +Prize: X=10571, Y=3253 + +Button A: X+38, Y+14 +Button B: X+11, Y+69 +Prize: X=2599, Y=2841 + +Button A: X+61, Y+35 +Button B: X+29, Y+59 +Prize: X=16543, Y=13201 + +Button A: X+92, Y+44 +Button B: X+32, Y+91 +Prize: X=9344, Y=10903 + +Button A: X+21, Y+56 +Button B: X+40, Y+11 +Prize: X=9942, Y=5041 + +Button A: X+15, Y+42 +Button B: X+44, Y+25 +Prize: X=9768, Y=12133 + +Button A: X+67, Y+12 +Button B: X+37, Y+35 +Prize: X=4653, Y=2706 + +Button A: X+21, Y+85 +Button B: X+85, Y+48 +Prize: X=8306, Y=5495 + +Button A: X+20, Y+45 +Button B: X+64, Y+26 +Prize: X=12772, Y=15383 + +Button A: X+65, Y+12 +Button B: X+22, Y+85 +Prize: X=6724, Y=3458 + +Button A: X+19, Y+41 +Button B: X+30, Y+14 +Prize: X=16402, Y=10018 + +Button A: X+17, Y+48 +Button B: X+48, Y+20 +Prize: X=13777, Y=12736 + +Button A: X+71, Y+18 +Button B: X+52, Y+83 +Prize: X=10961, Y=9202 + +Button A: X+36, Y+14 +Button B: X+19, Y+61 +Prize: X=10809, Y=12851 + +Button A: X+19, Y+15 +Button B: X+15, Y+68 +Prize: X=2004, Y=6524 + +Button A: X+69, Y+36 +Button B: X+30, Y+95 +Prize: X=5961, Y=9934 + +Button A: X+30, Y+53 +Button B: X+54, Y+29 +Prize: X=14246, Y=18565 + +Button A: X+25, Y+74 +Button B: X+63, Y+27 +Prize: X=5952, Y=5019 + +Button A: X+18, Y+52 +Button B: X+63, Y+36 +Prize: X=15371, Y=14440 + +Button A: X+17, Y+56 +Button B: X+68, Y+34 +Prize: X=17346, Y=5408 + +Button A: X+11, Y+35 +Button B: X+62, Y+33 +Prize: X=890, Y=4689 + +Button A: X+46, Y+24 +Button B: X+20, Y+37 +Prize: X=9402, Y=10611 + +Button A: X+92, Y+12 +Button B: X+36, Y+64 +Prize: X=9708, Y=4528 + +Button A: X+97, Y+75 +Button B: X+22, Y+63 +Prize: X=4335, Y=6939 + +Button A: X+28, Y+48 +Button B: X+36, Y+17 +Prize: X=2640, Y=2916 + +Button A: X+24, Y+65 +Button B: X+50, Y+16 +Prize: X=10692, Y=15010 + +Button A: X+28, Y+58 +Button B: X+25, Y+13 +Prize: X=18299, Y=9035 + +Button A: X+45, Y+15 +Button B: X+43, Y+79 +Prize: X=4024, Y=2182 + +Button A: X+48, Y+92 +Button B: X+90, Y+13 +Prize: X=9336, Y=9600 + +Button A: X+11, Y+85 +Button B: X+62, Y+14 +Prize: X=4059, Y=5785 + +Button A: X+12, Y+41 +Button B: X+23, Y+13 +Prize: X=11105, Y=1262 + +Button A: X+73, Y+29 +Button B: X+16, Y+65 +Prize: X=9268, Y=15090 + +Button A: X+55, Y+12 +Button B: X+43, Y+86 +Prize: X=9944, Y=14158 + +Button A: X+47, Y+67 +Button B: X+79, Y+36 +Prize: X=7070, Y=4179 + +Button A: X+57, Y+14 +Button B: X+25, Y+80 +Prize: X=5581, Y=6622 + +Button A: X+57, Y+37 +Button B: X+24, Y+94 +Prize: X=3456, Y=6086 + +Button A: X+87, Y+20 +Button B: X+39, Y+60 +Prize: X=4485, Y=5420 + +Button A: X+75, Y+16 +Button B: X+23, Y+83 +Prize: X=10499, Y=13180 + +Button A: X+37, Y+50 +Button B: X+48, Y+17 +Prize: X=6090, Y=4592 + +Button A: X+66, Y+36 +Button B: X+24, Y+49 +Prize: X=18632, Y=15872 + +Button A: X+45, Y+26 +Button B: X+20, Y+35 +Prize: X=12485, Y=17298 + +Button A: X+70, Y+13 +Button B: X+92, Y+99 +Prize: X=3000, Y=2605 + +Button A: X+56, Y+16 +Button B: X+12, Y+64 +Prize: X=2036, Y=15792 + +Button A: X+20, Y+12 +Button B: X+16, Y+35 +Prize: X=1412, Y=19297 + +Button A: X+58, Y+20 +Button B: X+22, Y+56 +Prize: X=7762, Y=11796 + +Button A: X+60, Y+41 +Button B: X+39, Y+86 +Prize: X=2973, Y=4821 + +Button A: X+16, Y+69 +Button B: X+44, Y+11 +Prize: X=16120, Y=18160 + +Button A: X+28, Y+65 +Button B: X+54, Y+21 +Prize: X=5684, Y=13076 + +Button A: X+77, Y+21 +Button B: X+12, Y+55 +Prize: X=13594, Y=9291 + +Button A: X+79, Y+76 +Button B: X+14, Y+72 +Prize: X=2314, Y=6616 + +Button A: X+17, Y+38 +Button B: X+56, Y+19 +Prize: X=5724, Y=2571 + +Button A: X+93, Y+15 +Button B: X+28, Y+40 +Prize: X=10183, Y=4765 + +Button A: X+46, Y+22 +Button B: X+14, Y+37 +Prize: X=11324, Y=4821 + +Button A: X+59, Y+60 +Button B: X+16, Y+88 +Prize: X=4381, Y=9548 + +Button A: X+28, Y+49 +Button B: X+53, Y+19 +Prize: X=9050, Y=12610 + +Button A: X+57, Y+19 +Button B: X+31, Y+61 +Prize: X=8787, Y=3921 + +Button A: X+98, Y+35 +Button B: X+29, Y+43 +Prize: X=11035, Y=6324 + +Button A: X+68, Y+14 +Button B: X+21, Y+66 +Prize: X=2087, Y=1178 + +Button A: X+34, Y+94 +Button B: X+29, Y+17 +Prize: X=5335, Y=9127 + +Button A: X+25, Y+90 +Button B: X+84, Y+54 +Prize: X=7831, Y=7326 + +Button A: X+38, Y+85 +Button B: X+57, Y+12 +Prize: X=6352, Y=16470 + +Button A: X+12, Y+37 +Button B: X+81, Y+57 +Prize: X=18107, Y=14954 + +Button A: X+13, Y+78 +Button B: X+89, Y+24 +Prize: X=1935, Y=4470 + +Button A: X+65, Y+37 +Button B: X+23, Y+46 +Prize: X=3654, Y=3495 + +Button A: X+17, Y+20 +Button B: X+93, Y+20 +Prize: X=8090, Y=3080 + +Button A: X+93, Y+30 +Button B: X+20, Y+28 +Prize: X=2432, Y=1000 + +Button A: X+71, Y+84 +Button B: X+52, Y+15 +Prize: X=7516, Y=5217 + +Button A: X+21, Y+54 +Button B: X+52, Y+16 +Prize: X=2147, Y=18242 + +Button A: X+39, Y+16 +Button B: X+18, Y+46 +Prize: X=1902, Y=3020 + +Button A: X+86, Y+33 +Button B: X+22, Y+35 +Prize: X=1794, Y=2335 + +Button A: X+11, Y+30 +Button B: X+37, Y+20 +Prize: X=7470, Y=260 + +Button A: X+16, Y+62 +Button B: X+58, Y+16 +Prize: X=18140, Y=7710 + +Button A: X+82, Y+33 +Button B: X+15, Y+80 +Prize: X=8467, Y=8363 + +Button A: X+69, Y+34 +Button B: X+20, Y+43 +Prize: X=3144, Y=18421 + +Button A: X+62, Y+49 +Button B: X+28, Y+71 +Prize: X=4712, Y=5239 + +Button A: X+62, Y+19 +Button B: X+15, Y+77 +Prize: X=6321, Y=9105 + +Button A: X+26, Y+60 +Button B: X+38, Y+18 +Prize: X=12474, Y=14912 + +Button A: X+70, Y+28 +Button B: X+33, Y+95 +Prize: X=4823, Y=9373 + +Button A: X+64, Y+30 +Button B: X+12, Y+49 +Prize: X=5508, Y=2749 + +Button A: X+18, Y+71 +Button B: X+37, Y+21 +Prize: X=1617, Y=4504 + +Button A: X+79, Y+21 +Button B: X+17, Y+69 +Prize: X=19369, Y=5513 + +Button A: X+30, Y+15 +Button B: X+20, Y+39 +Prize: X=16260, Y=9683 + +Button A: X+97, Y+55 +Button B: X+27, Y+65 +Prize: X=5856, Y=6600 + +Button A: X+11, Y+18 +Button B: X+93, Y+26 +Prize: X=9880, Y=4180 + +Button A: X+18, Y+47 +Button B: X+63, Y+22 +Prize: X=5318, Y=10167 + +Button A: X+12, Y+37 +Button B: X+71, Y+39 +Prize: X=15472, Y=8080 + +Button A: X+52, Y+11 +Button B: X+12, Y+43 +Prize: X=9524, Y=7797 + +Button A: X+14, Y+59 +Button B: X+68, Y+15 +Prize: X=9658, Y=2446 + +Button A: X+34, Y+63 +Button B: X+49, Y+27 +Prize: X=15893, Y=881 + +Button A: X+97, Y+52 +Button B: X+54, Y+89 +Prize: X=13925, Y=13350 + +Button A: X+13, Y+58 +Button B: X+85, Y+15 +Prize: X=6564, Y=6339 + +Button A: X+17, Y+35 +Button B: X+66, Y+31 +Prize: X=8789, Y=10213 + +Button A: X+78, Y+32 +Button B: X+25, Y+80 +Prize: X=7141, Y=7184 + +Button A: X+34, Y+13 +Button B: X+14, Y+61 +Prize: X=10584, Y=1026 + +Button A: X+38, Y+65 +Button B: X+39, Y+13 +Prize: X=5996, Y=16032 + +Button A: X+21, Y+11 +Button B: X+19, Y+52 +Prize: X=16972, Y=16513 + +Button A: X+29, Y+63 +Button B: X+30, Y+15 +Prize: X=4874, Y=8783 + +Button A: X+56, Y+21 +Button B: X+12, Y+63 +Prize: X=14744, Y=872 + +Button A: X+25, Y+93 +Button B: X+21, Y+19 +Prize: X=1514, Y=5100 + +Button A: X+66, Y+11 +Button B: X+16, Y+74 +Prize: X=8246, Y=18099 + +Button A: X+45, Y+96 +Button B: X+88, Y+29 +Prize: X=8599, Y=4376 + +Button A: X+40, Y+19 +Button B: X+26, Y+60 +Prize: X=4006, Y=15275 + +Button A: X+50, Y+15 +Button B: X+39, Y+78 +Prize: X=12516, Y=8927 + +Button A: X+29, Y+12 +Button B: X+12, Y+28 +Prize: X=8787, Y=4740 + +Button A: X+54, Y+11 +Button B: X+15, Y+50 +Prize: X=15656, Y=6554 + +Button A: X+78, Y+99 +Button B: X+97, Y+27 +Prize: X=10526, Y=5094 + +Button A: X+32, Y+76 +Button B: X+91, Y+24 +Prize: X=3316, Y=2496 + +Button A: X+31, Y+95 +Button B: X+94, Y+34 +Prize: X=2968, Y=3252 + +Button A: X+50, Y+80 +Button B: X+54, Y+21 +Prize: X=5372, Y=2513 + +Button A: X+85, Y+12 +Button B: X+47, Y+82 +Prize: X=8783, Y=4556 + +Button A: X+12, Y+53 +Button B: X+85, Y+35 +Prize: X=18387, Y=7483 + +Button A: X+14, Y+44 +Button B: X+94, Y+44 +Prize: X=5970, Y=5940 + +Button A: X+38, Y+26 +Button B: X+13, Y+41 +Prize: X=4108, Y=5636 + +Button A: X+51, Y+79 +Button B: X+77, Y+34 +Prize: X=6236, Y=2923 + +Button A: X+82, Y+95 +Button B: X+89, Y+17 +Prize: X=10900, Y=8667 + +Button A: X+14, Y+54 +Button B: X+76, Y+50 +Prize: X=3624, Y=4982 + +Button A: X+67, Y+12 +Button B: X+23, Y+83 +Prize: X=10446, Y=4541 + +Button A: X+24, Y+60 +Button B: X+63, Y+33 +Prize: X=17069, Y=15263 + +Button A: X+20, Y+95 +Button B: X+43, Y+28 +Prize: X=1916, Y=6986 + +Button A: X+50, Y+21 +Button B: X+25, Y+67 +Prize: X=14100, Y=18316 + +Button A: X+40, Y+13 +Button B: X+39, Y+59 +Prize: X=13034, Y=11426 + +Button A: X+38, Y+54 +Button B: X+33, Y+13 +Prize: X=8021, Y=11177 + +Button A: X+13, Y+54 +Button B: X+77, Y+13 +Prize: X=9827, Y=10690 + +Button A: X+50, Y+22 +Button B: X+16, Y+26 +Prize: X=11924, Y=7616 + +Button A: X+23, Y+58 +Button B: X+60, Y+27 +Prize: X=5109, Y=2442 + +Button A: X+38, Y+63 +Button B: X+44, Y+20 +Prize: X=7734, Y=12771 + +Button A: X+52, Y+76 +Button B: X+47, Y+20 +Prize: X=5926, Y=6616 + +Button A: X+24, Y+98 +Button B: X+73, Y+11 +Prize: X=5449, Y=8183 + +Button A: X+56, Y+85 +Button B: X+68, Y+12 +Prize: X=4252, Y=3079 + +Button A: X+19, Y+34 +Button B: X+47, Y+23 +Prize: X=839, Y=479 + +Button A: X+20, Y+39 +Button B: X+43, Y+12 +Prize: X=6796, Y=3395 + +Button A: X+65, Y+25 +Button B: X+23, Y+58 +Prize: X=11974, Y=11469 + +Button A: X+17, Y+52 +Button B: X+57, Y+17 +Prize: X=461, Y=2091 + +Button A: X+27, Y+53 +Button B: X+55, Y+29 +Prize: X=1810, Y=1342 + +Button A: X+24, Y+78 +Button B: X+68, Y+11 +Prize: X=7508, Y=1271 + +Button A: X+34, Y+94 +Button B: X+99, Y+25 +Prize: X=9055, Y=3397 + +Button A: X+43, Y+20 +Button B: X+49, Y+76 +Prize: X=17870, Y=4136 + +Button A: X+49, Y+16 +Button B: X+17, Y+29 +Prize: X=7755, Y=14760 + +Button A: X+55, Y+25 +Button B: X+14, Y+66 +Prize: X=2621, Y=6499 + +Button A: X+51, Y+58 +Button B: X+89, Y+24 +Prize: X=7560, Y=4428 + +Button A: X+34, Y+95 +Button B: X+52, Y+30 +Prize: X=4234, Y=7795 + +Button A: X+95, Y+11 +Button B: X+25, Y+99 +Prize: X=8155, Y=8921 + +Button A: X+66, Y+59 +Button B: X+13, Y+57 +Prize: X=7405, Y=9660 + +Button A: X+37, Y+54 +Button B: X+92, Y+18 +Prize: X=8410, Y=1926 + +Button A: X+14, Y+33 +Button B: X+56, Y+23 +Prize: X=8152, Y=4602 + +Button A: X+14, Y+34 +Button B: X+65, Y+20 +Prize: X=13444, Y=554 + +Button A: X+21, Y+54 +Button B: X+78, Y+20 +Prize: X=6282, Y=4236 + +Button A: X+40, Y+21 +Button B: X+13, Y+31 +Prize: X=3100, Y=5871 + +Button A: X+37, Y+80 +Button B: X+43, Y+11 +Prize: X=7602, Y=14473 + +Button A: X+86, Y+50 +Button B: X+20, Y+92 +Prize: X=5016, Y=7176 + +Button A: X+38, Y+18 +Button B: X+13, Y+36 +Prize: X=2274, Y=2808 + +Button A: X+21, Y+65 +Button B: X+44, Y+15 +Prize: X=3749, Y=2030 + +Button A: X+53, Y+15 +Button B: X+22, Y+53 +Prize: X=15552, Y=2522 + +Button A: X+72, Y+24 +Button B: X+25, Y+73 +Prize: X=15680, Y=2048 + +Button A: X+37, Y+24 +Button B: X+12, Y+40 +Prize: X=4607, Y=5920 + +Button A: X+73, Y+42 +Button B: X+26, Y+56 +Prize: X=16573, Y=14662 + +Button A: X+68, Y+21 +Button B: X+18, Y+58 +Prize: X=5818, Y=3239 + +Button A: X+16, Y+35 +Button B: X+72, Y+43 +Prize: X=6664, Y=6106 + +Button A: X+84, Y+81 +Button B: X+16, Y+81 +Prize: X=5316, Y=11421 + +Button A: X+29, Y+15 +Button B: X+27, Y+74 +Prize: X=2469, Y=2898 + +Button A: X+15, Y+86 +Button B: X+75, Y+38 +Prize: X=2955, Y=5574 + +Button A: X+74, Y+22 +Button B: X+19, Y+71 +Prize: X=8711, Y=2627 + +Button A: X+16, Y+30 +Button B: X+48, Y+29 +Prize: X=5232, Y=13215 + +Button A: X+12, Y+41 +Button B: X+79, Y+47 +Prize: X=8121, Y=5678 + +Button A: X+20, Y+37 +Button B: X+38, Y+21 +Prize: X=14746, Y=1962 + +Button A: X+35, Y+58 +Button B: X+80, Y+20 +Prize: X=3555, Y=1726 + +Button A: X+59, Y+16 +Button B: X+13, Y+71 +Prize: X=8034, Y=5167 + +Button A: X+22, Y+56 +Button B: X+73, Y+21 +Prize: X=8784, Y=7196 + +Button A: X+73, Y+12 +Button B: X+25, Y+31 +Prize: X=3979, Y=3128 + +Button A: X+72, Y+70 +Button B: X+11, Y+40 +Prize: X=7193, Y=9660 + +Button A: X+41, Y+18 +Button B: X+30, Y+49 +Prize: X=16627, Y=2420 + +Button A: X+51, Y+15 +Button B: X+11, Y+24 +Prize: X=4579, Y=1301 + +Button A: X+50, Y+37 +Button B: X+24, Y+56 +Prize: X=3574, Y=3639 + +Button A: X+17, Y+34 +Button B: X+52, Y+18 +Prize: X=2105, Y=15858 + +Button A: X+40, Y+74 +Button B: X+98, Y+38 +Prize: X=1540, Y=1416 + +Button A: X+80, Y+13 +Button B: X+41, Y+76 +Prize: X=5729, Y=7102 + +Button A: X+18, Y+53 +Button B: X+64, Y+12 +Prize: X=18926, Y=2619 + +Button A: X+28, Y+82 +Button B: X+72, Y+12 +Prize: X=7592, Y=3740 + +Button A: X+46, Y+17 +Button B: X+39, Y+61 +Prize: X=11153, Y=7031 + +Button A: X+88, Y+46 +Button B: X+43, Y+88 +Prize: X=7711, Y=9076 + +Button A: X+97, Y+60 +Button B: X+33, Y+99 +Prize: X=6934, Y=6018 + +Button A: X+30, Y+13 +Button B: X+51, Y+70 +Prize: X=5096, Y=903 + +Button A: X+80, Y+40 +Button B: X+13, Y+48 +Prize: X=5087, Y=3712 + +Button A: X+81, Y+43 +Button B: X+38, Y+79 +Prize: X=4714, Y=4032 + +Button A: X+43, Y+17 +Button B: X+22, Y+34 +Prize: X=10335, Y=2029 + +Button A: X+35, Y+15 +Button B: X+37, Y+60 +Prize: X=18072, Y=16940 + +Button A: X+56, Y+17 +Button B: X+17, Y+47 +Prize: X=5477, Y=17402 + +Button A: X+49, Y+24 +Button B: X+11, Y+32 +Prize: X=16331, Y=13400 + +Button A: X+78, Y+82 +Button B: X+88, Y+19 +Prize: X=4818, Y=1757 + +Button A: X+51, Y+11 +Button B: X+17, Y+39 +Prize: X=16088, Y=11070 + +Button A: X+43, Y+25 +Button B: X+29, Y+56 +Prize: X=11532, Y=3270 + +Button A: X+97, Y+23 +Button B: X+94, Y+92 +Prize: X=16932, Y=9522 + +Button A: X+61, Y+24 +Button B: X+11, Y+30 +Prize: X=18123, Y=18320 + +Button A: X+20, Y+38 +Button B: X+32, Y+14 +Prize: X=17300, Y=7256 + +Button A: X+22, Y+80 +Button B: X+82, Y+16 +Prize: X=444, Y=768 + +Button A: X+12, Y+61 +Button B: X+77, Y+23 +Prize: X=18198, Y=3897 + +Button A: X+13, Y+93 +Button B: X+72, Y+50 +Prize: X=2887, Y=7631 + +Button A: X+57, Y+20 +Button B: X+19, Y+44 +Prize: X=11615, Y=3772 + +Button A: X+29, Y+55 +Button B: X+47, Y+20 +Prize: X=13874, Y=2240 + +Button A: X+56, Y+32 +Button B: X+16, Y+30 +Prize: X=5560, Y=3782 + +Button A: X+47, Y+15 +Button B: X+18, Y+41 +Prize: X=15886, Y=6408 + +Button A: X+31, Y+67 +Button B: X+46, Y+17 +Prize: X=3716, Y=4817 + +Button A: X+38, Y+13 +Button B: X+54, Y+76 +Prize: X=6854, Y=9010 + +Button A: X+19, Y+60 +Button B: X+49, Y+12 +Prize: X=7644, Y=5576 + +Button A: X+61, Y+18 +Button B: X+14, Y+54 +Prize: X=11432, Y=9926 + +Button A: X+14, Y+56 +Button B: X+36, Y+17 +Prize: X=14644, Y=14881 + +Button A: X+60, Y+21 +Button B: X+19, Y+47 +Prize: X=959, Y=13763 + +Button A: X+64, Y+15 +Button B: X+16, Y+69 +Prize: X=11312, Y=8135 + +Button A: X+13, Y+55 +Button B: X+81, Y+31 +Prize: X=4965, Y=10539 + +Button A: X+12, Y+57 +Button B: X+79, Y+12 +Prize: X=13806, Y=19367 + +Button A: X+31, Y+21 +Button B: X+16, Y+47 +Prize: X=3046, Y=4884 + +Button A: X+69, Y+34 +Button B: X+18, Y+90 +Prize: X=2625, Y=9082 + +Button A: X+11, Y+91 +Button B: X+94, Y+43 +Prize: X=6738, Y=6521 + +Button A: X+42, Y+64 +Button B: X+41, Y+17 +Prize: X=14992, Y=19084 + +Button A: X+26, Y+56 +Button B: X+55, Y+14 +Prize: X=9439, Y=19758 + +Button A: X+31, Y+11 +Button B: X+12, Y+49 +Prize: X=12096, Y=439 + +Button A: X+36, Y+13 +Button B: X+15, Y+94 +Prize: X=1818, Y=1188 + +Button A: X+64, Y+13 +Button B: X+43, Y+97 +Prize: X=5574, Y=2721 + +Button A: X+49, Y+35 +Button B: X+39, Y+97 +Prize: X=6430, Y=7566 + +Button A: X+18, Y+78 +Button B: X+36, Y+18 +Prize: X=3078, Y=6714 + +Button A: X+12, Y+30 +Button B: X+56, Y+33 +Prize: X=18052, Y=7343 + +Button A: X+22, Y+70 +Button B: X+39, Y+11 +Prize: X=2986, Y=12450 + +Button A: X+14, Y+59 +Button B: X+73, Y+16 +Prize: X=5132, Y=5489 + +Button A: X+49, Y+16 +Button B: X+41, Y+68 +Prize: X=2601, Y=564 + +Button A: X+63, Y+90 +Button B: X+84, Y+11 +Prize: X=12810, Y=8054 + +Button A: X+41, Y+14 +Button B: X+27, Y+52 +Prize: X=2989, Y=18458 + +Button A: X+20, Y+96 +Button B: X+78, Y+22 +Prize: X=3298, Y=8430 + +Button A: X+33, Y+80 +Button B: X+56, Y+15 +Prize: X=4260, Y=5980 + +Button A: X+76, Y+16 +Button B: X+14, Y+81 +Prize: X=4602, Y=7135 + +Button A: X+49, Y+20 +Button B: X+18, Y+73 +Prize: X=3478, Y=2667 + +Button A: X+42, Y+44 +Button B: X+17, Y+96 +Prize: X=3420, Y=4052 + +Button A: X+11, Y+59 +Button B: X+58, Y+26 +Prize: X=7683, Y=7795 + +Button A: X+85, Y+48 +Button B: X+13, Y+86 +Prize: X=8681, Y=7026 + +Button A: X+18, Y+61 +Button B: X+43, Y+14 +Prize: X=9307, Y=14925 + +Button A: X+31, Y+54 +Button B: X+33, Y+16 +Prize: X=11353, Y=508 diff --git a/inputs/input13_test b/inputs/input13_test new file mode 100644 index 0000000..444a287 --- /dev/null +++ b/inputs/input13_test @@ -0,0 +1,15 @@ +Button A: X+94, Y+34 +Button B: X+22, Y+67 +Prize: X=8400, Y=5400 + +Button A: X+26, Y+66 +Button B: X+67, Y+21 +Prize: X=12748, Y=12176 + +Button A: X+17, Y+86 +Button B: X+84, Y+37 +Prize: X=7870, Y=6450 + +Button A: X+69, Y+23 +Button B: X+27, Y+71 +Prize: X=18641, Y=10279 \ No newline at end of file