diff --git a/2024/day-13/day13.test.ts b/2024/day-13/day13.test.ts new file mode 100644 index 0000000..c42aad1 --- /dev/null +++ b/2024/day-13/day13.test.ts @@ -0,0 +1,40 @@ +import { expect, test } from "bun:test"; +import * as path from "node:path"; +import { part1, part2 } from "./day13.ts"; + +test("day 13, part 1", async () => { + const testInput = await Bun.file( + path.resolve(__dirname, "test-input.txt"), + ).text(); + const input = await Bun.file(path.resolve(__dirname, "input.txt")).text(); + + console.log("\n\n"); + + const testResult = part1(testInput); + console.log("Test data:", testResult); + expect(testResult).toEqual(480); + + const finalResult = part1(input); + console.log("Full data:", finalResult); + expect(finalResult).toEqual(27105); + + console.log("\n\n"); +}); + +test("day 13, part 2", async () => { + const testInput = await Bun.file( + path.resolve(__dirname, "test-input.txt"), + ).text(); + const input = await Bun.file(path.resolve(__dirname, "input.txt")).text(); + + const testResult = part2(testInput); + console.log("\n\n"); + console.log("Test data:", testResult); + expect(testResult).toEqual(875318608908); + + const finalResult = part2(input); + console.log("Full data:", finalResult); + expect(finalResult).toEqual(101726882250942); + + console.log("\n\n"); +}); diff --git a/2024/day-13/day13.ts b/2024/day-13/day13.ts new file mode 100644 index 0000000..7b95ea1 --- /dev/null +++ b/2024/day-13/day13.ts @@ -0,0 +1,69 @@ +const TOKENS_PER_PUSH_A = 3; +const TOKENS_PER_PUSH_B = 1; + +export function part1(input: string) { + const configs = parseInput(input); + return solve(configs); +} + +export function part2(input: string) { + const configs = parseInput(input).map((o) => { + return { + ...o, + prize: o.prize.map((x) => x + 10000000000000), + }; + }); + return solve(configs); +} + +function solve(parsed: ReturnType) { + let final = 0; + parsed.forEach((config) => { + const options = findOptions(config); + if (options.length === 0) { + return; + } + final += options[0] * TOKENS_PER_PUSH_A + options[1] * TOKENS_PER_PUSH_B; + }); + return final; +} + +function findOptions(config: ReturnType[number]) { + const [ax, ay] = config.buttonA; + const [bx, by] = config.buttonB; + const [gx, gy] = config.prize; + const ca = (gx * by - gy * bx) / (ax * by - ay * bx); + if (!isInt(ca)) return []; + return [ca, (gx - ca * ax) / bx]; +} + +function parseInput(input: string) { + const parts = input.split("\n\n"); + + return parts.map((part) => { + const [partA, partB, partResult] = part.split("\n"); + const buttonA = partA + .replace("Button A: ", "") + .replace("X+", "") + .replace(" Y+", "") + .split(",") + .map(Number); + const buttonB = partB + .replace("Button B: ", "") + .replace("X+", "") + .replace(" Y+", "") + .split(",") + .map(Number); + const prize = partResult + .replace("Prize: ", "") + .replace("X=", "") + .replace(" Y=", "") + .split(",") + .map(Number); + return { buttonA, buttonB, prize }; + }); +} + +function isInt(number: number) { + return number % 1 === 0; +} diff --git a/2024/day-13/input.txt b/2024/day-13/input.txt new file mode 100644 index 0000000..ad39ae5 --- /dev/null +++ b/2024/day-13/input.txt @@ -0,0 +1,1279 @@ +Button A: X+54, Y+22 +Button B: X+36, Y+62 +Prize: X=19754, Y=14184 + +Button A: X+20, Y+68 +Button B: X+34, Y+13 +Prize: X=15660, Y=15792 + +Button A: X+63, Y+17 +Button B: X+11, Y+28 +Prize: X=2658, Y=11605 + +Button A: X+15, Y+56 +Button B: X+74, Y+29 +Prize: X=9393, Y=11622 + +Button A: X+34, Y+97 +Button B: X+83, Y+35 +Prize: X=3876, Y=4197 + +Button A: X+14, Y+62 +Button B: X+75, Y+27 +Prize: X=12989, Y=4061 + +Button A: X+46, Y+17 +Button B: X+15, Y+54 +Prize: X=15841, Y=336 + +Button A: X+19, Y+61 +Button B: X+69, Y+12 +Prize: X=204, Y=7413 + +Button A: X+34, Y+14 +Button B: X+29, Y+40 +Prize: X=2353, Y=10368 + +Button A: X+64, Y+32 +Button B: X+25, Y+48 +Prize: X=3273, Y=304 + +Button A: X+18, Y+60 +Button B: X+66, Y+30 +Prize: X=11594, Y=2330 + +Button A: X+65, Y+47 +Button B: X+11, Y+29 +Prize: X=4677, Y=195 + +Button A: X+13, Y+23 +Button B: X+42, Y+14 +Prize: X=7115, Y=12417 + +Button A: X+81, Y+55 +Button B: X+26, Y+93 +Prize: X=2703, Y=5678 + +Button A: X+50, Y+96 +Button B: X+74, Y+20 +Prize: X=8694, Y=9856 + +Button A: X+19, Y+54 +Button B: X+74, Y+36 +Prize: X=6145, Y=9170 + +Button A: X+45, Y+76 +Button B: X+43, Y+15 +Prize: X=4194, Y=5627 + +Button A: X+28, Y+91 +Button B: X+94, Y+48 +Prize: X=2282, Y=2009 + +Button A: X+70, Y+35 +Button B: X+33, Y+83 +Prize: X=4786, Y=3856 + +Button A: X+14, Y+89 +Button B: X+38, Y+40 +Prize: X=2186, Y=3415 + +Button A: X+55, Y+19 +Button B: X+43, Y+79 +Prize: X=4737, Y=2757 + +Button A: X+32, Y+76 +Button B: X+60, Y+17 +Prize: X=11124, Y=5467 + +Button A: X+33, Y+62 +Button B: X+50, Y+21 +Prize: X=4940, Y=12625 + +Button A: X+56, Y+14 +Button B: X+48, Y+92 +Prize: X=2888, Y=962 + +Button A: X+14, Y+58 +Button B: X+83, Y+30 +Prize: X=6249, Y=5488 + +Button A: X+47, Y+83 +Button B: X+47, Y+11 +Prize: X=7153, Y=15685 + +Button A: X+35, Y+68 +Button B: X+52, Y+16 +Prize: X=12241, Y=14956 + +Button A: X+46, Y+72 +Button B: X+56, Y+25 +Prize: X=6054, Y=4401 + +Button A: X+35, Y+57 +Button B: X+43, Y+14 +Prize: X=10516, Y=12390 + +Button A: X+29, Y+56 +Button B: X+41, Y+25 +Prize: X=6288, Y=2319 + +Button A: X+73, Y+19 +Button B: X+59, Y+86 +Prize: X=9965, Y=8669 + +Button A: X+13, Y+43 +Button B: X+49, Y+13 +Prize: X=12137, Y=19559 + +Button A: X+17, Y+65 +Button B: X+67, Y+22 +Prize: X=1910, Y=15266 + +Button A: X+55, Y+27 +Button B: X+11, Y+43 +Prize: X=7767, Y=5007 + +Button A: X+26, Y+18 +Button B: X+35, Y+94 +Prize: X=4719, Y=9616 + +Button A: X+37, Y+81 +Button B: X+58, Y+13 +Prize: X=11010, Y=1876 + +Button A: X+66, Y+43 +Button B: X+17, Y+88 +Prize: X=6227, Y=5057 + +Button A: X+36, Y+66 +Button B: X+61, Y+31 +Prize: X=1642, Y=10702 + +Button A: X+54, Y+17 +Button B: X+15, Y+50 +Prize: X=17444, Y=2332 + +Button A: X+33, Y+74 +Button B: X+47, Y+16 +Prize: X=1127, Y=13206 + +Button A: X+45, Y+93 +Button B: X+84, Y+43 +Prize: X=9867, Y=10858 + +Button A: X+35, Y+99 +Button B: X+64, Y+33 +Prize: X=3780, Y=5511 + +Button A: X+29, Y+62 +Button B: X+46, Y+24 +Prize: X=14412, Y=6932 + +Button A: X+91, Y+18 +Button B: X+21, Y+20 +Prize: X=9303, Y=2474 + +Button A: X+61, Y+34 +Button B: X+30, Y+75 +Prize: X=6835, Y=7015 + +Button A: X+32, Y+82 +Button B: X+46, Y+12 +Prize: X=7126, Y=14580 + +Button A: X+30, Y+47 +Button B: X+36, Y+11 +Prize: X=13922, Y=14563 + +Button A: X+79, Y+39 +Button B: X+12, Y+43 +Prize: X=15040, Y=13839 + +Button A: X+15, Y+14 +Button B: X+20, Y+81 +Prize: X=1075, Y=1502 + +Button A: X+35, Y+80 +Button B: X+45, Y+11 +Prize: X=10380, Y=11870 + +Button A: X+50, Y+36 +Button B: X+21, Y+58 +Prize: X=4389, Y=3546 + +Button A: X+31, Y+95 +Button B: X+60, Y+14 +Prize: X=5432, Y=4076 + +Button A: X+96, Y+20 +Button B: X+64, Y+77 +Prize: X=3424, Y=2687 + +Button A: X+15, Y+51 +Button B: X+60, Y+26 +Prize: X=1505, Y=19741 + +Button A: X+37, Y+12 +Button B: X+33, Y+78 +Prize: X=10344, Y=13604 + +Button A: X+70, Y+93 +Button B: X+84, Y+21 +Prize: X=9184, Y=8034 + +Button A: X+33, Y+85 +Button B: X+99, Y+59 +Prize: X=4356, Y=2988 + +Button A: X+26, Y+27 +Button B: X+13, Y+60 +Prize: X=1105, Y=3240 + +Button A: X+55, Y+31 +Button B: X+21, Y+46 +Prize: X=7181, Y=11070 + +Button A: X+20, Y+54 +Button B: X+41, Y+32 +Prize: X=2979, Y=3400 + +Button A: X+35, Y+19 +Button B: X+33, Y+60 +Prize: X=10334, Y=11024 + +Button A: X+84, Y+21 +Button B: X+29, Y+79 +Prize: X=9575, Y=6340 + +Button A: X+58, Y+24 +Button B: X+15, Y+64 +Prize: X=10518, Y=6264 + +Button A: X+41, Y+12 +Button B: X+45, Y+69 +Prize: X=10120, Y=8966 + +Button A: X+87, Y+28 +Button B: X+14, Y+67 +Prize: X=6242, Y=6571 + +Button A: X+12, Y+28 +Button B: X+65, Y+24 +Prize: X=1515, Y=12044 + +Button A: X+85, Y+24 +Button B: X+29, Y+37 +Prize: X=7600, Y=2434 + +Button A: X+34, Y+92 +Button B: X+94, Y+69 +Prize: X=9882, Y=12282 + +Button A: X+11, Y+37 +Button B: X+23, Y+12 +Prize: X=848, Y=8448 + +Button A: X+52, Y+28 +Button B: X+33, Y+63 +Prize: X=3429, Y=6843 + +Button A: X+57, Y+13 +Button B: X+56, Y+55 +Prize: X=4314, Y=1744 + +Button A: X+81, Y+24 +Button B: X+12, Y+59 +Prize: X=13487, Y=6933 + +Button A: X+72, Y+50 +Button B: X+15, Y+40 +Prize: X=8927, Y=9290 + +Button A: X+68, Y+27 +Button B: X+16, Y+30 +Prize: X=2728, Y=2904 + +Button A: X+66, Y+13 +Button B: X+54, Y+65 +Prize: X=6060, Y=1846 + +Button A: X+56, Y+86 +Button B: X+88, Y+44 +Prize: X=5840, Y=4138 + +Button A: X+44, Y+80 +Button B: X+46, Y+15 +Prize: X=15084, Y=8430 + +Button A: X+50, Y+18 +Button B: X+13, Y+60 +Prize: X=6386, Y=6944 + +Button A: X+15, Y+63 +Button B: X+67, Y+14 +Prize: X=12210, Y=802 + +Button A: X+22, Y+65 +Button B: X+65, Y+33 +Prize: X=2817, Y=4983 + +Button A: X+23, Y+37 +Button B: X+51, Y+11 +Prize: X=4351, Y=1387 + +Button A: X+58, Y+39 +Button B: X+14, Y+50 +Prize: X=2678, Y=3343 + +Button A: X+13, Y+80 +Button B: X+65, Y+68 +Prize: X=4784, Y=5536 + +Button A: X+47, Y+93 +Button B: X+84, Y+33 +Prize: X=5496, Y=3948 + +Button A: X+51, Y+13 +Button B: X+21, Y+58 +Prize: X=13064, Y=14007 + +Button A: X+38, Y+22 +Button B: X+12, Y+26 +Prize: X=1962, Y=11422 + +Button A: X+51, Y+13 +Button B: X+34, Y+62 +Prize: X=13062, Y=2106 + +Button A: X+31, Y+11 +Button B: X+44, Y+78 +Prize: X=4550, Y=7654 + +Button A: X+97, Y+27 +Button B: X+48, Y+63 +Prize: X=10321, Y=3816 + +Button A: X+59, Y+17 +Button B: X+27, Y+78 +Prize: X=978, Y=18744 + +Button A: X+68, Y+27 +Button B: X+25, Y+64 +Prize: X=2115, Y=1002 + +Button A: X+19, Y+33 +Button B: X+91, Y+19 +Prize: X=7873, Y=2689 + +Button A: X+39, Y+96 +Button B: X+47, Y+16 +Prize: X=5548, Y=8672 + +Button A: X+58, Y+11 +Button B: X+20, Y+80 +Prize: X=4668, Y=4086 + +Button A: X+13, Y+33 +Button B: X+56, Y+14 +Prize: X=3696, Y=1396 + +Button A: X+21, Y+45 +Button B: X+34, Y+13 +Prize: X=15420, Y=12003 + +Button A: X+12, Y+22 +Button B: X+77, Y+27 +Prize: X=2487, Y=1477 + +Button A: X+58, Y+89 +Button B: X+70, Y+19 +Prize: X=5774, Y=1787 + +Button A: X+25, Y+63 +Button B: X+53, Y+13 +Prize: X=13823, Y=19135 + +Button A: X+45, Y+36 +Button B: X+34, Y+99 +Prize: X=6416, Y=9369 + +Button A: X+81, Y+35 +Button B: X+18, Y+50 +Prize: X=4203, Y=5025 + +Button A: X+81, Y+28 +Button B: X+12, Y+58 +Prize: X=2592, Y=5258 + +Button A: X+57, Y+21 +Button B: X+19, Y+67 +Prize: X=19310, Y=9410 + +Button A: X+62, Y+48 +Button B: X+25, Y+84 +Prize: X=1505, Y=2652 + +Button A: X+98, Y+18 +Button B: X+20, Y+26 +Prize: X=9334, Y=1960 + +Button A: X+23, Y+42 +Button B: X+33, Y+13 +Prize: X=11779, Y=4858 + +Button A: X+12, Y+36 +Button B: X+75, Y+39 +Prize: X=4355, Y=8495 + +Button A: X+20, Y+34 +Button B: X+37, Y+18 +Prize: X=10274, Y=2754 + +Button A: X+89, Y+26 +Button B: X+18, Y+44 +Prize: X=4524, Y=1864 + +Button A: X+11, Y+36 +Button B: X+53, Y+21 +Prize: X=18093, Y=17453 + +Button A: X+48, Y+22 +Button B: X+47, Y+74 +Prize: X=8784, Y=8868 + +Button A: X+29, Y+53 +Button B: X+45, Y+16 +Prize: X=12465, Y=10268 + +Button A: X+47, Y+82 +Button B: X+65, Y+19 +Prize: X=4989, Y=3984 + +Button A: X+98, Y+36 +Button B: X+52, Y+96 +Prize: X=1610, Y=1668 + +Button A: X+31, Y+75 +Button B: X+63, Y+26 +Prize: X=1468, Y=2161 + +Button A: X+14, Y+66 +Button B: X+47, Y+14 +Prize: X=5961, Y=12456 + +Button A: X+20, Y+87 +Button B: X+70, Y+44 +Prize: X=1740, Y=3922 + +Button A: X+52, Y+21 +Button B: X+16, Y+43 +Prize: X=3884, Y=7457 + +Button A: X+93, Y+97 +Button B: X+91, Y+20 +Prize: X=2827, Y=851 + +Button A: X+68, Y+15 +Button B: X+23, Y+63 +Prize: X=10422, Y=7157 + +Button A: X+84, Y+68 +Button B: X+22, Y+86 +Prize: X=2696, Y=2728 + +Button A: X+67, Y+34 +Button B: X+40, Y+83 +Prize: X=5256, Y=5865 + +Button A: X+34, Y+49 +Button B: X+97, Y+12 +Prize: X=3687, Y=1352 + +Button A: X+15, Y+90 +Button B: X+89, Y+21 +Prize: X=7432, Y=2013 + +Button A: X+41, Y+13 +Button B: X+12, Y+50 +Prize: X=7134, Y=14486 + +Button A: X+20, Y+28 +Button B: X+32, Y+13 +Prize: X=10032, Y=19165 + +Button A: X+27, Y+77 +Button B: X+69, Y+13 +Prize: X=9554, Y=15260 + +Button A: X+47, Y+23 +Button B: X+32, Y+54 +Prize: X=6409, Y=355 + +Button A: X+56, Y+81 +Button B: X+64, Y+16 +Prize: X=7600, Y=5786 + +Button A: X+46, Y+17 +Button B: X+37, Y+66 +Prize: X=7509, Y=14295 + +Button A: X+18, Y+33 +Button B: X+64, Y+36 +Prize: X=16814, Y=12887 + +Button A: X+22, Y+79 +Button B: X+92, Y+31 +Prize: X=3856, Y=5165 + +Button A: X+43, Y+12 +Button B: X+30, Y+74 +Prize: X=1825, Y=17414 + +Button A: X+74, Y+49 +Button B: X+28, Y+70 +Prize: X=6646, Y=9135 + +Button A: X+85, Y+14 +Button B: X+12, Y+79 +Prize: X=1124, Y=3340 + +Button A: X+60, Y+31 +Button B: X+11, Y+44 +Prize: X=14996, Y=12846 + +Button A: X+62, Y+17 +Button B: X+12, Y+54 +Prize: X=17176, Y=5908 + +Button A: X+73, Y+54 +Button B: X+21, Y+91 +Prize: X=4258, Y=4810 + +Button A: X+32, Y+57 +Button B: X+36, Y+11 +Prize: X=412, Y=2137 + +Button A: X+80, Y+65 +Button B: X+12, Y+63 +Prize: X=2060, Y=5135 + +Button A: X+38, Y+19 +Button B: X+11, Y+30 +Prize: X=2771, Y=8832 + +Button A: X+12, Y+63 +Button B: X+89, Y+94 +Prize: X=2441, Y=3484 + +Button A: X+64, Y+42 +Button B: X+19, Y+44 +Prize: X=10186, Y=11248 + +Button A: X+21, Y+47 +Button B: X+81, Y+42 +Prize: X=6363, Y=4491 + +Button A: X+55, Y+70 +Button B: X+90, Y+13 +Prize: X=7855, Y=6037 + +Button A: X+39, Y+78 +Button B: X+53, Y+19 +Prize: X=19180, Y=483 + +Button A: X+11, Y+77 +Button B: X+74, Y+17 +Prize: X=6027, Y=1608 + +Button A: X+71, Y+34 +Button B: X+20, Y+54 +Prize: X=1962, Y=12986 + +Button A: X+19, Y+50 +Button B: X+57, Y+25 +Prize: X=19082, Y=12150 + +Button A: X+54, Y+19 +Button B: X+13, Y+31 +Prize: X=1754, Y=19209 + +Button A: X+77, Y+15 +Button B: X+17, Y+98 +Prize: X=7856, Y=7117 + +Button A: X+86, Y+35 +Button B: X+18, Y+85 +Prize: X=6694, Y=6375 + +Button A: X+14, Y+62 +Button B: X+63, Y+41 +Prize: X=1330, Y=4938 + +Button A: X+92, Y+51 +Button B: X+38, Y+74 +Prize: X=6240, Y=8435 + +Button A: X+14, Y+20 +Button B: X+86, Y+27 +Prize: X=4106, Y=2319 + +Button A: X+54, Y+17 +Button B: X+36, Y+69 +Prize: X=6488, Y=2762 + +Button A: X+82, Y+96 +Button B: X+82, Y+15 +Prize: X=4592, Y=2460 + +Button A: X+14, Y+65 +Button B: X+71, Y+24 +Prize: X=9947, Y=3249 + +Button A: X+33, Y+54 +Button B: X+23, Y+11 +Prize: X=7043, Y=12653 + +Button A: X+35, Y+12 +Button B: X+16, Y+47 +Prize: X=7136, Y=7027 + +Button A: X+11, Y+26 +Button B: X+39, Y+20 +Prize: X=8298, Y=1518 + +Button A: X+50, Y+12 +Button B: X+13, Y+23 +Prize: X=1816, Y=2066 + +Button A: X+17, Y+38 +Button B: X+63, Y+40 +Prize: X=9007, Y=7834 + +Button A: X+55, Y+19 +Button B: X+11, Y+28 +Prize: X=14257, Y=9219 + +Button A: X+55, Y+18 +Button B: X+11, Y+69 +Prize: X=1343, Y=5285 + +Button A: X+19, Y+53 +Button B: X+74, Y+28 +Prize: X=2560, Y=1920 + +Button A: X+12, Y+59 +Button B: X+39, Y+14 +Prize: X=5354, Y=317 + +Button A: X+72, Y+14 +Button B: X+91, Y+86 +Prize: X=9387, Y=7358 + +Button A: X+18, Y+84 +Button B: X+54, Y+48 +Prize: X=3852, Y=6960 + +Button A: X+12, Y+69 +Button B: X+57, Y+12 +Prize: X=6488, Y=7169 + +Button A: X+15, Y+30 +Button B: X+42, Y+15 +Prize: X=12671, Y=10775 + +Button A: X+25, Y+12 +Button B: X+34, Y+96 +Prize: X=2435, Y=6348 + +Button A: X+29, Y+12 +Button B: X+40, Y+66 +Prize: X=1315, Y=17804 + +Button A: X+69, Y+26 +Button B: X+22, Y+56 +Prize: X=6670, Y=4708 + +Button A: X+19, Y+42 +Button B: X+62, Y+21 +Prize: X=2458, Y=16769 + +Button A: X+45, Y+17 +Button B: X+23, Y+38 +Prize: X=5151, Y=19084 + +Button A: X+17, Y+33 +Button B: X+35, Y+14 +Prize: X=14888, Y=18170 + +Button A: X+74, Y+36 +Button B: X+14, Y+57 +Prize: X=14816, Y=15158 + +Button A: X+36, Y+14 +Button B: X+32, Y+60 +Prize: X=3368, Y=15472 + +Button A: X+85, Y+19 +Button B: X+83, Y+89 +Prize: X=10387, Y=4717 + +Button A: X+55, Y+18 +Button B: X+37, Y+68 +Prize: X=16050, Y=14820 + +Button A: X+52, Y+21 +Button B: X+15, Y+49 +Prize: X=4037, Y=6619 + +Button A: X+75, Y+11 +Button B: X+11, Y+51 +Prize: X=19531, Y=6083 + +Button A: X+90, Y+21 +Button B: X+29, Y+38 +Prize: X=10125, Y=3768 + +Button A: X+33, Y+70 +Button B: X+45, Y+20 +Prize: X=4805, Y=17590 + +Button A: X+11, Y+28 +Button B: X+58, Y+33 +Prize: X=4190, Y=18722 + +Button A: X+95, Y+50 +Button B: X+16, Y+70 +Prize: X=3754, Y=2530 + +Button A: X+88, Y+19 +Button B: X+35, Y+84 +Prize: X=7511, Y=3227 + +Button A: X+48, Y+12 +Button B: X+11, Y+31 +Prize: X=9355, Y=19551 + +Button A: X+71, Y+40 +Button B: X+39, Y+96 +Prize: X=9850, Y=12656 + +Button A: X+18, Y+46 +Button B: X+69, Y+53 +Prize: X=1584, Y=3308 + +Button A: X+65, Y+26 +Button B: X+62, Y+89 +Prize: X=7671, Y=5829 + +Button A: X+92, Y+51 +Button B: X+19, Y+41 +Prize: X=4806, Y=5650 + +Button A: X+26, Y+98 +Button B: X+50, Y+39 +Prize: X=6268, Y=10174 + +Button A: X+16, Y+64 +Button B: X+34, Y+12 +Prize: X=16854, Y=11364 + +Button A: X+20, Y+69 +Button B: X+61, Y+23 +Prize: X=408, Y=12175 + +Button A: X+49, Y+16 +Button B: X+11, Y+45 +Prize: X=17005, Y=1724 + +Button A: X+82, Y+15 +Button B: X+92, Y+80 +Prize: X=15178, Y=8525 + +Button A: X+98, Y+17 +Button B: X+32, Y+95 +Prize: X=4930, Y=5596 + +Button A: X+74, Y+24 +Button B: X+63, Y+72 +Prize: X=4818, Y=1872 + +Button A: X+63, Y+23 +Button B: X+29, Y+74 +Prize: X=4610, Y=2155 + +Button A: X+14, Y+69 +Button B: X+46, Y+16 +Prize: X=5686, Y=14981 + +Button A: X+12, Y+44 +Button B: X+73, Y+32 +Prize: X=1404, Y=2320 + +Button A: X+16, Y+61 +Button B: X+36, Y+16 +Prize: X=19784, Y=1294 + +Button A: X+79, Y+17 +Button B: X+11, Y+57 +Prize: X=18419, Y=19769 + +Button A: X+27, Y+61 +Button B: X+32, Y+16 +Prize: X=11215, Y=8185 + +Button A: X+80, Y+14 +Button B: X+55, Y+94 +Prize: X=6715, Y=3622 + +Button A: X+13, Y+99 +Button B: X+67, Y+60 +Prize: X=1132, Y=5469 + +Button A: X+11, Y+64 +Button B: X+68, Y+52 +Prize: X=1359, Y=3096 + +Button A: X+16, Y+40 +Button B: X+60, Y+34 +Prize: X=4712, Y=2220 + +Button A: X+50, Y+11 +Button B: X+12, Y+60 +Prize: X=15794, Y=4259 + +Button A: X+38, Y+17 +Button B: X+29, Y+54 +Prize: X=1335, Y=6160 + +Button A: X+36, Y+59 +Button B: X+93, Y+32 +Prize: X=6990, Y=6880 + +Button A: X+29, Y+97 +Button B: X+62, Y+55 +Prize: X=3255, Y=5097 + +Button A: X+25, Y+21 +Button B: X+22, Y+73 +Prize: X=3307, Y=5831 + +Button A: X+15, Y+75 +Button B: X+87, Y+82 +Prize: X=2655, Y=6215 + +Button A: X+22, Y+82 +Button B: X+74, Y+39 +Prize: X=4198, Y=6648 + +Button A: X+41, Y+61 +Button B: X+36, Y+11 +Prize: X=7347, Y=17092 + +Button A: X+82, Y+51 +Button B: X+19, Y+60 +Prize: X=1729, Y=1509 + +Button A: X+43, Y+13 +Button B: X+49, Y+76 +Prize: X=8520, Y=7788 + +Button A: X+97, Y+24 +Button B: X+46, Y+51 +Prize: X=1349, Y=1245 + +Button A: X+84, Y+38 +Button B: X+13, Y+51 +Prize: X=10408, Y=4606 + +Button A: X+48, Y+97 +Button B: X+80, Y+28 +Prize: X=9584, Y=8808 + +Button A: X+13, Y+32 +Button B: X+76, Y+43 +Prize: X=16226, Y=18495 + +Button A: X+14, Y+33 +Button B: X+78, Y+54 +Prize: X=1852, Y=2028 + +Button A: X+11, Y+30 +Button B: X+73, Y+37 +Prize: X=7433, Y=18454 + +Button A: X+23, Y+56 +Button B: X+31, Y+16 +Prize: X=12525, Y=3816 + +Button A: X+55, Y+16 +Button B: X+21, Y+68 +Prize: X=16009, Y=16852 + +Button A: X+17, Y+47 +Button B: X+76, Y+37 +Prize: X=6637, Y=12724 + +Button A: X+74, Y+88 +Button B: X+59, Y+12 +Prize: X=9928, Y=6688 + +Button A: X+26, Y+87 +Button B: X+32, Y+21 +Prize: X=1790, Y=3063 + +Button A: X+25, Y+71 +Button B: X+56, Y+19 +Prize: X=1849, Y=5946 + +Button A: X+51, Y+76 +Button B: X+59, Y+28 +Prize: X=7997, Y=6644 + +Button A: X+53, Y+28 +Button B: X+32, Y+62 +Prize: X=5323, Y=6228 + +Button A: X+33, Y+69 +Button B: X+39, Y+18 +Prize: X=575, Y=13307 + +Button A: X+93, Y+15 +Button B: X+56, Y+55 +Prize: X=7024, Y=3845 + +Button A: X+21, Y+53 +Button B: X+68, Y+24 +Prize: X=5268, Y=7924 + +Button A: X+13, Y+51 +Button B: X+78, Y+27 +Prize: X=15733, Y=10982 + +Button A: X+12, Y+79 +Button B: X+50, Y+11 +Prize: X=7094, Y=2854 + +Button A: X+21, Y+83 +Button B: X+90, Y+69 +Prize: X=2607, Y=5143 + +Button A: X+94, Y+16 +Button B: X+25, Y+54 +Prize: X=10271, Y=6474 + +Button A: X+80, Y+14 +Button B: X+12, Y+69 +Prize: X=15888, Y=10392 + +Button A: X+58, Y+37 +Button B: X+15, Y+54 +Prize: X=1422, Y=3573 + +Button A: X+13, Y+28 +Button B: X+59, Y+29 +Prize: X=2235, Y=12810 + +Button A: X+11, Y+32 +Button B: X+58, Y+13 +Prize: X=438, Y=6564 + +Button A: X+14, Y+72 +Button B: X+93, Y+84 +Prize: X=4137, Y=7476 + +Button A: X+63, Y+29 +Button B: X+27, Y+54 +Prize: X=4319, Y=1669 + +Button A: X+86, Y+28 +Button B: X+30, Y+60 +Prize: X=5710, Y=2060 + +Button A: X+15, Y+54 +Button B: X+52, Y+19 +Prize: X=9815, Y=1199 + +Button A: X+24, Y+63 +Button B: X+57, Y+20 +Prize: X=16160, Y=12588 + +Button A: X+19, Y+37 +Button B: X+57, Y+33 +Prize: X=2324, Y=15332 + +Button A: X+25, Y+14 +Button B: X+31, Y+56 +Prize: X=7136, Y=17336 + +Button A: X+66, Y+29 +Button B: X+25, Y+57 +Prize: X=13681, Y=16936 + +Button A: X+36, Y+93 +Button B: X+84, Y+56 +Prize: X=6720, Y=11242 + +Button A: X+92, Y+41 +Button B: X+18, Y+96 +Prize: X=1396, Y=1150 + +Button A: X+12, Y+38 +Button B: X+63, Y+28 +Prize: X=19403, Y=12776 + +Button A: X+72, Y+28 +Button B: X+13, Y+37 +Prize: X=5137, Y=3113 + +Button A: X+90, Y+72 +Button B: X+91, Y+13 +Prize: X=5795, Y=2543 + +Button A: X+28, Y+13 +Button B: X+31, Y+49 +Prize: X=16418, Y=9287 + +Button A: X+17, Y+33 +Button B: X+64, Y+32 +Prize: X=11422, Y=2206 + +Button A: X+71, Y+22 +Button B: X+16, Y+45 +Prize: X=2918, Y=7791 + +Button A: X+15, Y+36 +Button B: X+55, Y+35 +Prize: X=7930, Y=7704 + +Button A: X+57, Y+65 +Button B: X+95, Y+17 +Prize: X=11818, Y=4800 + +Button A: X+22, Y+46 +Button B: X+33, Y+21 +Prize: X=1232, Y=1040 + +Button A: X+34, Y+98 +Button B: X+85, Y+39 +Prize: X=7582, Y=9494 + +Button A: X+63, Y+15 +Button B: X+15, Y+47 +Prize: X=13439, Y=17391 + +Button A: X+20, Y+41 +Button B: X+38, Y+23 +Prize: X=2052, Y=10086 + +Button A: X+14, Y+66 +Button B: X+84, Y+28 +Prize: X=16902, Y=10730 + +Button A: X+27, Y+12 +Button B: X+17, Y+43 +Prize: X=9367, Y=12201 + +Button A: X+30, Y+49 +Button B: X+40, Y+20 +Prize: X=8430, Y=10049 + +Button A: X+82, Y+22 +Button B: X+46, Y+97 +Prize: X=3798, Y=4236 + +Button A: X+56, Y+55 +Button B: X+94, Y+13 +Prize: X=6522, Y=5533 + +Button A: X+39, Y+41 +Button B: X+59, Y+16 +Prize: X=4261, Y=3559 + +Button A: X+59, Y+18 +Button B: X+11, Y+63 +Prize: X=15316, Y=10169 + +Button A: X+59, Y+55 +Button B: X+20, Y+98 +Prize: X=375, Y=667 + +Button A: X+11, Y+93 +Button B: X+64, Y+67 +Prize: X=6699, Y=14917 + +Button A: X+13, Y+46 +Button B: X+48, Y+15 +Prize: X=1661, Y=1232 + +Button A: X+36, Y+99 +Button B: X+85, Y+42 +Prize: X=2224, Y=3048 + +Button A: X+11, Y+75 +Button B: X+28, Y+22 +Prize: X=2614, Y=6168 + +Button A: X+21, Y+97 +Button B: X+94, Y+81 +Prize: X=7763, Y=8662 + +Button A: X+34, Y+13 +Button B: X+26, Y+42 +Prize: X=8612, Y=15869 + +Button A: X+39, Y+71 +Button B: X+31, Y+13 +Prize: X=19737, Y=5345 + +Button A: X+21, Y+60 +Button B: X+75, Y+30 +Prize: X=10448, Y=18140 + +Button A: X+24, Y+49 +Button B: X+47, Y+17 +Prize: X=7371, Y=12446 + +Button A: X+56, Y+86 +Button B: X+94, Y+41 +Prize: X=3570, Y=4759 + +Button A: X+14, Y+50 +Button B: X+54, Y+28 +Prize: X=19392, Y=1330 + +Button A: X+20, Y+67 +Button B: X+52, Y+13 +Prize: X=1000, Y=3692 + +Button A: X+14, Y+26 +Button B: X+50, Y+21 +Prize: X=7114, Y=9374 + +Button A: X+19, Y+55 +Button B: X+39, Y+16 +Prize: X=15710, Y=8361 + +Button A: X+56, Y+14 +Button B: X+63, Y+96 +Prize: X=4851, Y=3540 + +Button A: X+33, Y+67 +Button B: X+54, Y+24 +Prize: X=5447, Y=1189 + +Button A: X+39, Y+84 +Button B: X+89, Y+24 +Prize: X=10312, Y=8292 + +Button A: X+51, Y+19 +Button B: X+53, Y+74 +Prize: X=4001, Y=3498 + +Button A: X+67, Y+43 +Button B: X+11, Y+36 +Prize: X=4764, Y=9202 + +Button A: X+21, Y+62 +Button B: X+54, Y+22 +Prize: X=4434, Y=2234 + +Button A: X+89, Y+87 +Button B: X+24, Y+88 +Prize: X=6501, Y=7323 + +Button A: X+54, Y+29 +Button B: X+28, Y+51 +Prize: X=13224, Y=17258 + +Button A: X+62, Y+45 +Button B: X+39, Y+94 +Prize: X=4796, Y=9262 + +Button A: X+45, Y+23 +Button B: X+12, Y+52 +Prize: X=11084, Y=11636 + +Button A: X+22, Y+37 +Button B: X+48, Y+25 +Prize: X=5514, Y=11182 + +Button A: X+15, Y+38 +Button B: X+75, Y+39 +Prize: X=16520, Y=17711 + +Button A: X+78, Y+11 +Button B: X+49, Y+92 +Prize: X=9365, Y=6341 + +Button A: X+98, Y+14 +Button B: X+13, Y+64 +Prize: X=5741, Y=2498 + +Button A: X+13, Y+63 +Button B: X+61, Y+20 +Prize: X=13770, Y=14824 + +Button A: X+21, Y+38 +Button B: X+62, Y+37 +Prize: X=17864, Y=15513 + +Button A: X+24, Y+21 +Button B: X+15, Y+62 +Prize: X=1476, Y=4224 + +Button A: X+16, Y+75 +Button B: X+52, Y+12 +Prize: X=468, Y=8849 + +Button A: X+14, Y+41 +Button B: X+46, Y+22 +Prize: X=2040, Y=1353 + +Button A: X+49, Y+16 +Button B: X+29, Y+54 +Prize: X=10446, Y=18614 + +Button A: X+11, Y+69 +Button B: X+75, Y+18 +Prize: X=10963, Y=2327 + +Button A: X+37, Y+64 +Button B: X+47, Y+20 +Prize: X=18201, Y=3324 + +Button A: X+99, Y+14 +Button B: X+87, Y+75 +Prize: X=14862, Y=6177 + +Button A: X+12, Y+58 +Button B: X+82, Y+33 +Prize: X=7438, Y=6507 + +Button A: X+72, Y+13 +Button B: X+13, Y+79 +Prize: X=14160, Y=11952 + +Button A: X+24, Y+55 +Button B: X+73, Y+39 +Prize: X=12196, Y=4761 + +Button A: X+47, Y+28 +Button B: X+21, Y+52 +Prize: X=969, Y=9732 + +Button A: X+57, Y+29 +Button B: X+15, Y+30 +Prize: X=17750, Y=13700 + +Button A: X+40, Y+23 +Button B: X+13, Y+26 +Prize: X=13248, Y=14881 + +Button A: X+68, Y+13 +Button B: X+85, Y+90 +Prize: X=9707, Y=6207 + +Button A: X+47, Y+23 +Button B: X+19, Y+57 +Prize: X=2226, Y=13254 \ No newline at end of file diff --git a/2024/day-13/test-input.txt b/2024/day-13/test-input.txt new file mode 100644 index 0000000..444a287 --- /dev/null +++ b/2024/day-13/test-input.txt @@ -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