From 5773eee5073388b96d2731ae18701998ffac03ca Mon Sep 17 00:00:00 2001 From: dobiadi Date: Sat, 14 Dec 2024 03:12:16 +0100 Subject: [PATCH] Day13 --- day13/c/day13 | Bin 0 -> 16176 bytes day13/c/day13.c | 149 ++++++ day13/input.txt | 1279 ++++++++++++++++++++++++++++++++++++++++++++++ day13/sample.txt | 15 + 4 files changed, 1443 insertions(+) create mode 100755 day13/c/day13 create mode 100644 day13/c/day13.c create mode 100644 day13/input.txt create mode 100644 day13/sample.txt diff --git a/day13/c/day13 b/day13/c/day13 new file mode 100755 index 0000000000000000000000000000000000000000..0a18f68f795d33e18e4608c4a87b659b90f51ecb GIT binary patch literal 16176 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 literal 0 HcmV?d00001 diff --git a/day13/c/day13.c b/day13/c/day13.c new file mode 100644 index 0000000..dadc2cf --- /dev/null +++ b/day13/c/day13.c @@ -0,0 +1,149 @@ +#include +#include +#include +#include +#include +#include + +#define CHARS_MAX 64 +#define MAX_MACHINES 1024 +#define max(a,b) ((a) > (b) ? (a) : (b)) +#define min(a,b) ((a) < (b) ? (a) : (b)) + +typedef struct button { + uint64_t x; + uint64_t y; +} button_t; + +typedef struct machine { + button_t button_A; + button_t button_B; + uint64_t x; + uint64_t y; +} machine_t; + +int64_t extended_euclidian(int64_t a, int64_t b, int64_t *x, int64_t *y); + +int main() { + char *p, *buf, c; + + buf = calloc(CHARS_MAX, sizeof(char)); + p = buf; + + int step = 0; + + machine_t *machines = calloc(MAX_MACHINES, sizeof(machines[0])); + int machine_count = 0; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c != '\n') { + continue; + } + + switch (step) { + case 0: + p = buf; + while (*p != '+') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].button_A.x); + while (*p != '+') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].button_A.y); + break; + case 1: + p = buf; + while (*p != '+') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].button_B.x); + while (*p != '+') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].button_B.y); + break; + case 2: + p = buf; + while (*p != '=') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].x); + while (*p != '=') p++; + p++; + sscanf(p, "%lu", &machines[machine_count].y); + machine_count++; + break; + case 3: + break; + } + step++; + if (step == 4) { + step = 0; + } + memset(buf, 0, CHARS_MAX); + p = buf; + } + + free(buf); + + uint64_t tokens = 0; +#pragma omp parallel for + for (int i = 0; i < machine_count; i++) { + uint64_t least_tokens = 0; + for (int j = 0; j <= 100; j++) { + for (int k = 0; k <= 100; k++) { + int x = machines[i].button_A.x * j + machines[i].button_B.x * k; + int y = machines[i].button_A.y * j + machines[i].button_B.y * k; + if (x == machines[i].x && y == machines[i].y) { + uint64_t current_tokens = 3 * j + k; + if (least_tokens == 0 || least_tokens > current_tokens) { + least_tokens = current_tokens; + } + } + } + } +#pragma omp critical + { + tokens += least_tokens; + } + } + printf("%lu\n", tokens); + + double ttokens = 0.0; + for (int i = 0; i < machine_count; i++) { + machines[i].x += 10000000000000; + machines[i].y += 10000000000000; + //printf("%i %lu %lu %lu %lu %lu %lu\n", i, machines[i].x, machines[i].y, machines[i].button_A.x, machines[i].button_A.y, machines[i].button_B.x, machines[i].button_B.y); + int64_t x, y; + double a = (double)machines[i].button_A.x - (double)machines[i].button_A.y; + double b = (int64_t)machines[i].button_B.x - (double)machines[i].button_B.y; + double c = (double)machines[i].x - (double)machines[i].y; + double k2 = ((double)machines[i].x - (double)machines[i].button_A.x * c / a) / ((double)machines[i].button_B.x - (double)machines[i].button_A.x * b / a); + double k1 = (c - b * k2) / a; + double tmp; + double r1 = modf(k1, &tmp); + double r2 = modf(k2, &tmp); + + if ((r1 < 0.001 || r1 > 0.999) && (r2 < 0.001 || r2 > 0.999)) { + ttokens += k1 * 3.0 + k2; + } + } + printf("%0.0f\n", ttokens); + + + free(machines); + +} + +int64_t extended_euclidian(int64_t a, int64_t b, int64_t *x, int64_t *y) { + if (a == 0) { + *x = 0; + *y = 1; + return b; + } + + int64_t x1, y1; + int64_t gcd = extended_euclidian(b % a, a, &x1, &y1); + + *x = y1 - (b / a) * x1; + *y = x1; + + return gcd; +} diff --git a/day13/input.txt b/day13/input.txt new file mode 100644 index 0000000..5a703f8 --- /dev/null +++ b/day13/input.txt @@ -0,0 +1,1279 @@ +Button A: X+27, Y+65 +Button B: X+58, Y+17 +Prize: X=2211, Y=4587 + +Button A: X+87, Y+22 +Button B: X+25, Y+77 +Prize: X=7656, Y=8085 + +Button A: X+99, Y+92 +Button B: X+15, Y+64 +Prize: X=9099, Y=8756 + +Button A: X+50, Y+26 +Button B: X+34, Y+59 +Prize: X=11084, Y=7900 + +Button A: X+24, Y+87 +Button B: X+90, Y+57 +Prize: X=6354, Y=5532 + +Button A: X+14, Y+64 +Button B: X+78, Y+26 +Prize: X=16652, Y=3842 + +Button A: X+69, Y+16 +Button B: X+24, Y+72 +Prize: X=16322, Y=12832 + +Button A: X+20, Y+47 +Button B: X+64, Y+31 +Prize: X=12000, Y=9474 + +Button A: X+50, Y+11 +Button B: X+25, Y+48 +Prize: X=5775, Y=6808 + +Button A: X+99, Y+94 +Button B: X+58, Y+12 +Prize: X=12605, Y=9298 + +Button A: X+63, Y+71 +Button B: X+82, Y+17 +Prize: X=3940, Y=2555 + +Button A: X+27, Y+23 +Button B: X+18, Y+86 +Prize: X=1665, Y=4669 + +Button A: X+85, Y+22 +Button B: X+28, Y+96 +Prize: X=2909, Y=3238 + +Button A: X+41, Y+14 +Button B: X+18, Y+68 +Prize: X=4228, Y=12416 + +Button A: X+12, Y+35 +Button B: X+66, Y+12 +Prize: X=12434, Y=2314 + +Button A: X+37, Y+12 +Button B: X+15, Y+28 +Prize: X=2161, Y=1580 + +Button A: X+11, Y+59 +Button B: X+83, Y+22 +Prize: X=18275, Y=2635 + +Button A: X+29, Y+59 +Button B: X+68, Y+37 +Prize: X=8698, Y=8632 + +Button A: X+96, Y+13 +Button B: X+58, Y+61 +Prize: X=9524, Y=3947 + +Button A: X+38, Y+97 +Button B: X+80, Y+28 +Prize: X=3102, Y=6861 + +Button A: X+54, Y+26 +Button B: X+42, Y+89 +Prize: X=6330, Y=7931 + +Button A: X+12, Y+35 +Button B: X+58, Y+14 +Prize: X=10190, Y=10931 + +Button A: X+76, Y+28 +Button B: X+23, Y+70 +Prize: X=19054, Y=7956 + +Button A: X+23, Y+50 +Button B: X+46, Y+14 +Prize: X=353, Y=13712 + +Button A: X+97, Y+22 +Button B: X+49, Y+91 +Prize: X=7826, Y=4571 + +Button A: X+27, Y+57 +Button B: X+42, Y+18 +Prize: X=5241, Y=5835 + +Button A: X+66, Y+20 +Button B: X+21, Y+51 +Prize: X=9767, Y=18953 + +Button A: X+73, Y+39 +Button B: X+17, Y+55 +Prize: X=9040, Y=13328 + +Button A: X+95, Y+34 +Button B: X+15, Y+18 +Prize: X=9150, Y=4500 + +Button A: X+29, Y+53 +Button B: X+71, Y+14 +Prize: X=5737, Y=2266 + +Button A: X+12, Y+44 +Button B: X+63, Y+13 +Prize: X=7307, Y=18161 + +Button A: X+46, Y+15 +Button B: X+19, Y+33 +Prize: X=6646, Y=8327 + +Button A: X+62, Y+26 +Button B: X+26, Y+56 +Prize: X=3774, Y=14802 + +Button A: X+17, Y+63 +Button B: X+49, Y+42 +Prize: X=3801, Y=5292 + +Button A: X+14, Y+64 +Button B: X+83, Y+26 +Prize: X=1869, Y=6070 + +Button A: X+22, Y+69 +Button B: X+42, Y+11 +Prize: X=10104, Y=12772 + +Button A: X+31, Y+47 +Button B: X+43, Y+16 +Prize: X=8826, Y=8112 + +Button A: X+31, Y+58 +Button B: X+41, Y+13 +Prize: X=17723, Y=4139 + +Button A: X+85, Y+14 +Button B: X+18, Y+28 +Prize: X=3152, Y=1120 + +Button A: X+23, Y+45 +Button B: X+61, Y+25 +Prize: X=11409, Y=15365 + +Button A: X+70, Y+33 +Button B: X+11, Y+46 +Prize: X=11210, Y=10845 + +Button A: X+57, Y+38 +Button B: X+11, Y+36 +Prize: X=19514, Y=11248 + +Button A: X+45, Y+14 +Button B: X+45, Y+82 +Prize: X=1925, Y=2062 + +Button A: X+22, Y+49 +Button B: X+61, Y+29 +Prize: X=19547, Y=2416 + +Button A: X+77, Y+44 +Button B: X+25, Y+80 +Prize: X=2360, Y=6540 + +Button A: X+18, Y+87 +Button B: X+75, Y+19 +Prize: X=5721, Y=3263 + +Button A: X+52, Y+28 +Button B: X+12, Y+41 +Prize: X=16460, Y=7575 + +Button A: X+57, Y+20 +Button B: X+12, Y+63 +Prize: X=13184, Y=2170 + +Button A: X+61, Y+17 +Button B: X+49, Y+63 +Prize: X=4704, Y=3038 + +Button A: X+49, Y+11 +Button B: X+73, Y+89 +Prize: X=10054, Y=8066 + +Button A: X+85, Y+86 +Button B: X+17, Y+74 +Prize: X=3961, Y=5314 + +Button A: X+25, Y+48 +Button B: X+69, Y+41 +Prize: X=1850, Y=15717 + +Button A: X+16, Y+68 +Button B: X+76, Y+12 +Prize: X=3608, Y=5084 + +Button A: X+60, Y+80 +Button B: X+28, Y+11 +Prize: X=18676, Y=12367 + +Button A: X+87, Y+18 +Button B: X+38, Y+54 +Prize: X=8670, Y=3870 + +Button A: X+81, Y+12 +Button B: X+71, Y+85 +Prize: X=10212, Y=5088 + +Button A: X+17, Y+27 +Button B: X+45, Y+19 +Prize: X=6991, Y=577 + +Button A: X+52, Y+31 +Button B: X+14, Y+90 +Prize: X=5328, Y=9382 + +Button A: X+40, Y+30 +Button B: X+32, Y+76 +Prize: X=4976, Y=5708 + +Button A: X+29, Y+57 +Button B: X+80, Y+35 +Prize: X=2809, Y=3932 + +Button A: X+38, Y+11 +Button B: X+25, Y+68 +Prize: X=18956, Y=1433 + +Button A: X+26, Y+46 +Button B: X+47, Y+27 +Prize: X=13190, Y=9290 + +Button A: X+97, Y+22 +Button B: X+60, Y+86 +Prize: X=7042, Y=4710 + +Button A: X+55, Y+88 +Button B: X+95, Y+43 +Prize: X=9760, Y=8204 + +Button A: X+16, Y+63 +Button B: X+64, Y+21 +Prize: X=18400, Y=18281 + +Button A: X+40, Y+35 +Button B: X+25, Y+77 +Prize: X=2580, Y=4683 + +Button A: X+71, Y+74 +Button B: X+82, Y+12 +Prize: X=8649, Y=5782 + +Button A: X+77, Y+14 +Button B: X+27, Y+94 +Prize: X=4708, Y=6736 + +Button A: X+66, Y+42 +Button B: X+20, Y+92 +Prize: X=7206, Y=11958 + +Button A: X+24, Y+75 +Button B: X+55, Y+14 +Prize: X=3433, Y=5834 + +Button A: X+34, Y+73 +Button B: X+88, Y+23 +Prize: X=6872, Y=5130 + +Button A: X+23, Y+63 +Button B: X+37, Y+13 +Prize: X=4745, Y=10593 + +Button A: X+40, Y+59 +Button B: X+73, Y+33 +Prize: X=10217, Y=8424 + +Button A: X+14, Y+51 +Button B: X+47, Y+16 +Prize: X=12481, Y=8354 + +Button A: X+48, Y+99 +Button B: X+95, Y+20 +Prize: X=4597, Y=7546 + +Button A: X+13, Y+41 +Button B: X+29, Y+12 +Prize: X=263, Y=1388 + +Button A: X+19, Y+50 +Button B: X+41, Y+24 +Prize: X=11548, Y=7664 + +Button A: X+97, Y+43 +Button B: X+27, Y+73 +Prize: X=7998, Y=4522 + +Button A: X+21, Y+43 +Button B: X+62, Y+12 +Prize: X=4390, Y=4276 + +Button A: X+14, Y+44 +Button B: X+77, Y+48 +Prize: X=18113, Y=19392 + +Button A: X+14, Y+43 +Button B: X+33, Y+18 +Prize: X=1207, Y=18546 + +Button A: X+11, Y+39 +Button B: X+50, Y+25 +Prize: X=9397, Y=14203 + +Button A: X+35, Y+60 +Button B: X+92, Y+27 +Prize: X=8135, Y=2835 + +Button A: X+15, Y+47 +Button B: X+33, Y+17 +Prize: X=3491, Y=11363 + +Button A: X+20, Y+78 +Button B: X+68, Y+31 +Prize: X=2560, Y=6471 + +Button A: X+36, Y+16 +Button B: X+46, Y+79 +Prize: X=4098, Y=6213 + +Button A: X+22, Y+73 +Button B: X+93, Y+13 +Prize: X=3155, Y=6035 + +Button A: X+91, Y+80 +Button B: X+14, Y+87 +Prize: X=7973, Y=11192 + +Button A: X+45, Y+17 +Button B: X+25, Y+71 +Prize: X=9440, Y=16002 + +Button A: X+71, Y+21 +Button B: X+22, Y+68 +Prize: X=4637, Y=4017 + +Button A: X+97, Y+29 +Button B: X+48, Y+97 +Prize: X=10461, Y=5607 + +Button A: X+66, Y+25 +Button B: X+11, Y+31 +Prize: X=16809, Y=9722 + +Button A: X+12, Y+30 +Button B: X+57, Y+28 +Prize: X=8939, Y=1420 + +Button A: X+44, Y+12 +Button B: X+47, Y+74 +Prize: X=9821, Y=17594 + +Button A: X+46, Y+31 +Button B: X+16, Y+34 +Prize: X=18700, Y=18424 + +Button A: X+66, Y+86 +Button B: X+81, Y+30 +Prize: X=10791, Y=9906 + +Button A: X+13, Y+65 +Button B: X+77, Y+76 +Prize: X=2910, Y=5898 + +Button A: X+55, Y+20 +Button B: X+29, Y+68 +Prize: X=10013, Y=18356 + +Button A: X+26, Y+13 +Button B: X+44, Y+68 +Prize: X=18626, Y=3889 + +Button A: X+13, Y+74 +Button B: X+97, Y+18 +Prize: X=3977, Y=7682 + +Button A: X+34, Y+11 +Button B: X+13, Y+67 +Prize: X=4243, Y=3537 + +Button A: X+21, Y+67 +Button B: X+74, Y+21 +Prize: X=17831, Y=14155 + +Button A: X+84, Y+13 +Button B: X+48, Y+45 +Prize: X=3924, Y=1246 + +Button A: X+17, Y+42 +Button B: X+49, Y+21 +Prize: X=11445, Y=18029 + +Button A: X+49, Y+74 +Button B: X+88, Y+22 +Prize: X=3289, Y=2860 + +Button A: X+49, Y+13 +Button B: X+30, Y+66 +Prize: X=17781, Y=16557 + +Button A: X+79, Y+86 +Button B: X+99, Y+13 +Prize: X=12460, Y=6930 + +Button A: X+30, Y+67 +Button B: X+32, Y+14 +Prize: X=13872, Y=10152 + +Button A: X+21, Y+47 +Button B: X+73, Y+31 +Prize: X=6722, Y=4454 + +Button A: X+46, Y+65 +Button B: X+63, Y+20 +Prize: X=3443, Y=4520 + +Button A: X+61, Y+11 +Button B: X+18, Y+79 +Prize: X=6665, Y=1404 + +Button A: X+63, Y+11 +Button B: X+19, Y+78 +Prize: X=13512, Y=14869 + +Button A: X+32, Y+67 +Button B: X+34, Y+15 +Prize: X=9010, Y=663 + +Button A: X+24, Y+47 +Button B: X+46, Y+22 +Prize: X=17534, Y=15547 + +Button A: X+19, Y+12 +Button B: X+11, Y+32 +Prize: X=354, Y=1516 + +Button A: X+66, Y+26 +Button B: X+14, Y+94 +Prize: X=2244, Y=6724 + +Button A: X+27, Y+99 +Button B: X+91, Y+24 +Prize: X=3358, Y=3642 + +Button A: X+69, Y+53 +Button B: X+12, Y+78 +Prize: X=4548, Y=4250 + +Button A: X+23, Y+26 +Button B: X+82, Y+24 +Prize: X=9646, Y=4172 + +Button A: X+74, Y+41 +Button B: X+15, Y+39 +Prize: X=11784, Y=18519 + +Button A: X+81, Y+14 +Button B: X+68, Y+95 +Prize: X=7383, Y=3274 + +Button A: X+29, Y+58 +Button B: X+41, Y+11 +Prize: X=2365, Y=4058 + +Button A: X+35, Y+22 +Button B: X+30, Y+60 +Prize: X=2025, Y=3618 + +Button A: X+56, Y+14 +Button B: X+13, Y+76 +Prize: X=19427, Y=8192 + +Button A: X+18, Y+38 +Button B: X+31, Y+11 +Prize: X=4677, Y=3017 + +Button A: X+76, Y+25 +Button B: X+30, Y+43 +Prize: X=798, Y=892 + +Button A: X+30, Y+53 +Button B: X+35, Y+12 +Prize: X=14085, Y=17167 + +Button A: X+55, Y+65 +Button B: X+74, Y+25 +Prize: X=4732, Y=1970 + +Button A: X+13, Y+87 +Button B: X+91, Y+24 +Prize: X=8138, Y=2982 + +Button A: X+86, Y+63 +Button B: X+32, Y+93 +Prize: X=4654, Y=3618 + +Button A: X+79, Y+34 +Button B: X+19, Y+73 +Prize: X=3384, Y=5994 + +Button A: X+13, Y+60 +Button B: X+56, Y+22 +Prize: X=15079, Y=15910 + +Button A: X+29, Y+91 +Button B: X+58, Y+16 +Prize: X=4031, Y=8167 + +Button A: X+30, Y+58 +Button B: X+46, Y+25 +Prize: X=11614, Y=4607 + +Button A: X+25, Y+40 +Button B: X+36, Y+12 +Prize: X=15112, Y=4864 + +Button A: X+74, Y+70 +Button B: X+11, Y+62 +Prize: X=2977, Y=3590 + +Button A: X+75, Y+73 +Button B: X+15, Y+90 +Prize: X=7170, Y=9844 + +Button A: X+11, Y+45 +Button B: X+34, Y+16 +Prize: X=6530, Y=598 + +Button A: X+84, Y+21 +Button B: X+57, Y+87 +Prize: X=9606, Y=6621 + +Button A: X+97, Y+65 +Button B: X+22, Y+54 +Prize: X=2949, Y=2565 + +Button A: X+34, Y+11 +Button B: X+36, Y+51 +Prize: X=5464, Y=4916 + +Button A: X+53, Y+13 +Button B: X+30, Y+65 +Prize: X=12915, Y=7010 + +Button A: X+55, Y+14 +Button B: X+13, Y+62 +Prize: X=13741, Y=18810 + +Button A: X+73, Y+47 +Button B: X+12, Y+32 +Prize: X=7667, Y=6381 + +Button A: X+79, Y+38 +Button B: X+15, Y+47 +Prize: X=1663, Y=17231 + +Button A: X+16, Y+45 +Button B: X+82, Y+53 +Prize: X=9494, Y=11698 + +Button A: X+26, Y+53 +Button B: X+21, Y+11 +Prize: X=2743, Y=2697 + +Button A: X+76, Y+82 +Button B: X+62, Y+16 +Prize: X=6114, Y=4510 + +Button A: X+52, Y+56 +Button B: X+17, Y+84 +Prize: X=939, Y=3836 + +Button A: X+65, Y+15 +Button B: X+14, Y+36 +Prize: X=6941, Y=10169 + +Button A: X+44, Y+84 +Button B: X+80, Y+12 +Prize: X=3120, Y=2016 + +Button A: X+19, Y+48 +Button B: X+62, Y+21 +Prize: X=18113, Y=18134 + +Button A: X+43, Y+17 +Button B: X+11, Y+35 +Prize: X=6850, Y=19080 + +Button A: X+42, Y+13 +Button B: X+23, Y+60 +Prize: X=7937, Y=11818 + +Button A: X+11, Y+29 +Button B: X+78, Y+62 +Prize: X=2096, Y=5944 + +Button A: X+99, Y+78 +Button B: X+19, Y+58 +Prize: X=986, Y=992 + +Button A: X+63, Y+89 +Button B: X+50, Y+14 +Prize: X=8427, Y=7997 + +Button A: X+75, Y+21 +Button B: X+19, Y+65 +Prize: X=7070, Y=1658 + +Button A: X+77, Y+16 +Button B: X+80, Y+77 +Prize: X=10226, Y=6472 + +Button A: X+42, Y+26 +Button B: X+14, Y+37 +Prize: X=14396, Y=10963 + +Button A: X+61, Y+38 +Button B: X+20, Y+44 +Prize: X=18781, Y=4678 + +Button A: X+41, Y+23 +Button B: X+19, Y+36 +Prize: X=16818, Y=7290 + +Button A: X+14, Y+75 +Button B: X+21, Y+13 +Prize: X=1673, Y=7072 + +Button A: X+12, Y+28 +Button B: X+76, Y+19 +Prize: X=8220, Y=4455 + +Button A: X+56, Y+13 +Button B: X+24, Y+76 +Prize: X=5416, Y=8768 + +Button A: X+13, Y+54 +Button B: X+33, Y+13 +Prize: X=12445, Y=11874 + +Button A: X+26, Y+82 +Button B: X+65, Y+57 +Prize: X=4641, Y=9161 + +Button A: X+25, Y+58 +Button B: X+65, Y+23 +Prize: X=9410, Y=11930 + +Button A: X+77, Y+93 +Button B: X+71, Y+20 +Prize: X=2645, Y=959 + +Button A: X+29, Y+26 +Button B: X+89, Y+17 +Prize: X=3223, Y=943 + +Button A: X+58, Y+18 +Button B: X+27, Y+65 +Prize: X=3127, Y=1933 + +Button A: X+67, Y+48 +Button B: X+12, Y+36 +Prize: X=13551, Y=776 + +Button A: X+26, Y+45 +Button B: X+56, Y+26 +Prize: X=15224, Y=2714 + +Button A: X+42, Y+12 +Button B: X+14, Y+35 +Prize: X=9132, Y=6708 + +Button A: X+68, Y+27 +Button B: X+23, Y+67 +Prize: X=3977, Y=7308 + +Button A: X+18, Y+47 +Button B: X+52, Y+21 +Prize: X=9882, Y=13544 + +Button A: X+16, Y+70 +Button B: X+58, Y+13 +Prize: X=13098, Y=6951 + +Button A: X+49, Y+24 +Button B: X+18, Y+45 +Prize: X=19509, Y=13154 + +Button A: X+53, Y+59 +Button B: X+86, Y+18 +Prize: X=7733, Y=5499 + +Button A: X+81, Y+17 +Button B: X+27, Y+90 +Prize: X=1593, Y=4045 + +Button A: X+69, Y+22 +Button B: X+22, Y+64 +Prize: X=2925, Y=1962 + +Button A: X+25, Y+57 +Button B: X+92, Y+49 +Prize: X=3909, Y=4572 + +Button A: X+52, Y+98 +Button B: X+78, Y+47 +Prize: X=8554, Y=6821 + +Button A: X+11, Y+83 +Button B: X+63, Y+30 +Prize: X=3466, Y=3439 + +Button A: X+16, Y+64 +Button B: X+58, Y+19 +Prize: X=18736, Y=4768 + +Button A: X+93, Y+11 +Button B: X+69, Y+58 +Prize: X=14382, Y=5439 + +Button A: X+57, Y+14 +Button B: X+15, Y+37 +Prize: X=269, Y=12944 + +Button A: X+21, Y+29 +Button B: X+88, Y+34 +Prize: X=8709, Y=3887 + +Button A: X+15, Y+41 +Button B: X+42, Y+22 +Prize: X=5837, Y=7547 + +Button A: X+36, Y+70 +Button B: X+60, Y+24 +Prize: X=13640, Y=7416 + +Button A: X+38, Y+90 +Button B: X+75, Y+16 +Prize: X=10317, Y=9080 + +Button A: X+36, Y+53 +Button B: X+24, Y+11 +Prize: X=8924, Y=5732 + +Button A: X+82, Y+11 +Button B: X+15, Y+82 +Prize: X=10504, Y=6178 + +Button A: X+30, Y+73 +Button B: X+43, Y+14 +Prize: X=7059, Y=14604 + +Button A: X+16, Y+92 +Button B: X+73, Y+58 +Prize: X=6760, Y=12824 + +Button A: X+86, Y+31 +Button B: X+52, Y+98 +Prize: X=2618, Y=1657 + +Button A: X+49, Y+13 +Button B: X+18, Y+45 +Prize: X=14508, Y=1215 + +Button A: X+94, Y+34 +Button B: X+37, Y+83 +Prize: X=10087, Y=9009 + +Button A: X+24, Y+58 +Button B: X+69, Y+38 +Prize: X=9839, Y=18698 + +Button A: X+51, Y+18 +Button B: X+16, Y+29 +Prize: X=19247, Y=17528 + +Button A: X+71, Y+42 +Button B: X+26, Y+51 +Prize: X=7232, Y=7377 + +Button A: X+78, Y+69 +Button B: X+84, Y+13 +Prize: X=9156, Y=2214 + +Button A: X+28, Y+11 +Button B: X+18, Y+44 +Prize: X=10000, Y=19768 + +Button A: X+63, Y+17 +Button B: X+39, Y+64 +Prize: X=5511, Y=2824 + +Button A: X+86, Y+30 +Button B: X+34, Y+79 +Prize: X=4208, Y=5362 + +Button A: X+14, Y+87 +Button B: X+78, Y+73 +Prize: X=2820, Y=6408 + +Button A: X+53, Y+26 +Button B: X+12, Y+25 +Prize: X=18982, Y=4199 + +Button A: X+50, Y+20 +Button B: X+32, Y+66 +Prize: X=16348, Y=17274 + +Button A: X+16, Y+53 +Button B: X+51, Y+17 +Prize: X=5062, Y=12215 + +Button A: X+77, Y+45 +Button B: X+12, Y+48 +Prize: X=3828, Y=3908 + +Button A: X+78, Y+19 +Button B: X+17, Y+76 +Prize: X=15074, Y=1032 + +Button A: X+24, Y+61 +Button B: X+56, Y+18 +Prize: X=1528, Y=490 + +Button A: X+46, Y+47 +Button B: X+14, Y+84 +Prize: X=3018, Y=9635 + +Button A: X+84, Y+44 +Button B: X+34, Y+77 +Prize: X=7864, Y=6842 + +Button A: X+56, Y+41 +Button B: X+16, Y+67 +Prize: X=5240, Y=8204 + +Button A: X+11, Y+42 +Button B: X+49, Y+12 +Prize: X=19454, Y=782 + +Button A: X+20, Y+60 +Button B: X+35, Y+16 +Prize: X=9760, Y=18208 + +Button A: X+68, Y+15 +Button B: X+61, Y+60 +Prize: X=7245, Y=4065 + +Button A: X+89, Y+22 +Button B: X+15, Y+88 +Prize: X=7530, Y=6666 + +Button A: X+42, Y+17 +Button B: X+30, Y+47 +Prize: X=5618, Y=13205 + +Button A: X+22, Y+57 +Button B: X+78, Y+13 +Prize: X=6576, Y=4936 + +Button A: X+11, Y+48 +Button B: X+74, Y+59 +Prize: X=5060, Y=7565 + +Button A: X+97, Y+11 +Button B: X+58, Y+66 +Prize: X=9112, Y=2816 + +Button A: X+80, Y+25 +Button B: X+15, Y+61 +Prize: X=3950, Y=18621 + +Button A: X+49, Y+33 +Button B: X+19, Y+39 +Prize: X=14357, Y=1721 + +Button A: X+20, Y+51 +Button B: X+58, Y+35 +Prize: X=13354, Y=9640 + +Button A: X+39, Y+37 +Button B: X+24, Y+98 +Prize: X=2613, Y=3457 + +Button A: X+36, Y+50 +Button B: X+89, Y+35 +Prize: X=7991, Y=6225 + +Button A: X+32, Y+97 +Button B: X+94, Y+81 +Prize: X=7664, Y=8548 + +Button A: X+49, Y+11 +Button B: X+23, Y+82 +Prize: X=262, Y=9138 + +Button A: X+47, Y+15 +Button B: X+22, Y+43 +Prize: X=8222, Y=10349 + +Button A: X+96, Y+89 +Button B: X+12, Y+54 +Prize: X=7572, Y=7663 + +Button A: X+62, Y+30 +Button B: X+32, Y+62 +Prize: X=1100, Y=10678 + +Button A: X+29, Y+70 +Button B: X+97, Y+14 +Prize: X=8685, Y=5334 + +Button A: X+64, Y+36 +Button B: X+12, Y+30 +Prize: X=7672, Y=17876 + +Button A: X+64, Y+95 +Button B: X+56, Y+16 +Prize: X=9656, Y=7822 + +Button A: X+41, Y+66 +Button B: X+47, Y+18 +Prize: X=19713, Y=3014 + +Button A: X+77, Y+20 +Button B: X+12, Y+45 +Prize: X=10253, Y=10055 + +Button A: X+20, Y+52 +Button B: X+71, Y+28 +Prize: X=3183, Y=17812 + +Button A: X+38, Y+12 +Button B: X+11, Y+16 +Prize: X=14518, Y=17124 + +Button A: X+71, Y+20 +Button B: X+76, Y+95 +Prize: X=9726, Y=8995 + +Button A: X+82, Y+20 +Button B: X+31, Y+96 +Prize: X=7453, Y=2260 + +Button A: X+85, Y+59 +Button B: X+29, Y+83 +Prize: X=7467, Y=6629 + +Button A: X+17, Y+30 +Button B: X+35, Y+20 +Prize: X=11302, Y=14110 + +Button A: X+39, Y+81 +Button B: X+54, Y+20 +Prize: X=3093, Y=2277 + +Button A: X+76, Y+14 +Button B: X+45, Y+71 +Prize: X=3328, Y=3874 + +Button A: X+19, Y+91 +Button B: X+68, Y+60 +Prize: X=4259, Y=4723 + +Button A: X+15, Y+53 +Button B: X+78, Y+33 +Prize: X=6851, Y=8685 + +Button A: X+20, Y+59 +Button B: X+36, Y+12 +Prize: X=1208, Y=18047 + +Button A: X+52, Y+17 +Button B: X+31, Y+70 +Prize: X=758, Y=17044 + +Button A: X+13, Y+26 +Button B: X+62, Y+26 +Prize: X=7073, Y=380 + +Button A: X+33, Y+23 +Button B: X+11, Y+28 +Prize: X=13454, Y=7460 + +Button A: X+51, Y+40 +Button B: X+20, Y+57 +Prize: X=4943, Y=6397 + +Button A: X+90, Y+21 +Button B: X+18, Y+68 +Prize: X=4680, Y=1730 + +Button A: X+55, Y+50 +Button B: X+19, Y+84 +Prize: X=2015, Y=7170 + +Button A: X+19, Y+55 +Button B: X+69, Y+17 +Prize: X=19115, Y=15807 + +Button A: X+42, Y+81 +Button B: X+49, Y+18 +Prize: X=7336, Y=6957 + +Button A: X+37, Y+77 +Button B: X+82, Y+25 +Prize: X=3724, Y=7313 + +Button A: X+41, Y+18 +Button B: X+42, Y+67 +Prize: X=18780, Y=12045 + +Button A: X+13, Y+36 +Button B: X+70, Y+42 +Prize: X=15942, Y=5696 + +Button A: X+45, Y+67 +Button B: X+33, Y+12 +Prize: X=14717, Y=15673 + +Button A: X+31, Y+57 +Button B: X+68, Y+29 +Prize: X=8718, Y=7483 + +Button A: X+16, Y+72 +Button B: X+50, Y+36 +Prize: X=4454, Y=5868 + +Button A: X+97, Y+19 +Button B: X+58, Y+55 +Prize: X=7379, Y=4151 + +Button A: X+53, Y+38 +Button B: X+19, Y+96 +Prize: X=4772, Y=10094 + +Button A: X+54, Y+16 +Button B: X+12, Y+27 +Prize: X=13058, Y=7571 + +Button A: X+18, Y+59 +Button B: X+73, Y+50 +Prize: X=5266, Y=5147 + +Button A: X+73, Y+19 +Button B: X+18, Y+62 +Prize: X=1721, Y=3371 + +Button A: X+13, Y+62 +Button B: X+75, Y+12 +Prize: X=16285, Y=10524 + +Button A: X+44, Y+14 +Button B: X+25, Y+55 +Prize: X=10918, Y=12418 + +Button A: X+54, Y+38 +Button B: X+17, Y+47 +Prize: X=2549, Y=2039 + +Button A: X+47, Y+16 +Button B: X+70, Y+90 +Prize: X=4111, Y=1598 + +Button A: X+40, Y+38 +Button B: X+93, Y+22 +Prize: X=10108, Y=4560 + +Button A: X+70, Y+15 +Button B: X+16, Y+48 +Prize: X=730, Y=825 + +Button A: X+43, Y+80 +Button B: X+53, Y+31 +Prize: X=3837, Y=4164 + +Button A: X+49, Y+68 +Button B: X+36, Y+12 +Prize: X=1627, Y=11004 + +Button A: X+70, Y+26 +Button B: X+15, Y+63 +Prize: X=5645, Y=1901 + +Button A: X+76, Y+58 +Button B: X+27, Y+99 +Prize: X=6694, Y=7774 + +Button A: X+20, Y+72 +Button B: X+66, Y+21 +Prize: X=17662, Y=10379 + +Button A: X+41, Y+69 +Button B: X+50, Y+24 +Prize: X=17575, Y=4523 + +Button A: X+70, Y+21 +Button B: X+56, Y+63 +Prize: X=9030, Y=6405 + +Button A: X+96, Y+82 +Button B: X+26, Y+79 +Prize: X=6758, Y=7533 + +Button A: X+72, Y+49 +Button B: X+16, Y+35 +Prize: X=17192, Y=14963 + +Button A: X+18, Y+60 +Button B: X+75, Y+18 +Prize: X=6144, Y=6096 + +Button A: X+77, Y+40 +Button B: X+12, Y+45 +Prize: X=7417, Y=13410 + +Button A: X+31, Y+13 +Button B: X+26, Y+59 +Prize: X=19602, Y=4158 + +Button A: X+72, Y+11 +Button B: X+92, Y+90 +Prize: X=7488, Y=3878 + +Button A: X+51, Y+96 +Button B: X+66, Y+25 +Prize: X=3675, Y=2849 + +Button A: X+29, Y+70 +Button B: X+47, Y+14 +Prize: X=12636, Y=15796 + +Button A: X+13, Y+34 +Button B: X+91, Y+11 +Prize: X=8164, Y=1376 + +Button A: X+35, Y+67 +Button B: X+56, Y+17 +Prize: X=10805, Y=4589 + +Button A: X+39, Y+16 +Button B: X+19, Y+28 +Prize: X=6368, Y=16416 + +Button A: X+24, Y+64 +Button B: X+79, Y+46 +Prize: X=5664, Y=7200 + +Button A: X+62, Y+25 +Button B: X+16, Y+38 +Prize: X=4952, Y=2470 + +Button A: X+51, Y+31 +Button B: X+37, Y+71 +Prize: X=1394, Y=1672 + +Button A: X+13, Y+63 +Button B: X+37, Y+12 +Prize: X=1966, Y=3716 + +Button A: X+17, Y+77 +Button B: X+62, Y+13 +Prize: X=12283, Y=15031 + +Button A: X+17, Y+50 +Button B: X+39, Y+21 +Prize: X=4196, Y=15923 + +Button A: X+58, Y+30 +Button B: X+33, Y+64 +Prize: X=5343, Y=3186 + +Button A: X+46, Y+21 +Button B: X+49, Y+73 +Prize: X=13427, Y=10951 + +Button A: X+21, Y+58 +Button B: X+66, Y+47 +Prize: X=7536, Y=9585 + +Button A: X+88, Y+51 +Button B: X+26, Y+72 +Prize: X=7596, Y=5427 + +Button A: X+55, Y+48 +Button B: X+94, Y+15 +Prize: X=10975, Y=5556 + +Button A: X+12, Y+26 +Button B: X+60, Y+39 +Prize: X=924, Y=1092 + +Button A: X+49, Y+23 +Button B: X+35, Y+60 +Prize: X=15285, Y=7315 + +Button A: X+11, Y+82 +Button B: X+78, Y+15 +Prize: X=4905, Y=5989 + +Button A: X+19, Y+61 +Button B: X+74, Y+56 +Prize: X=2004, Y=5526 + +Button A: X+11, Y+12 +Button B: X+94, Y+23 +Prize: X=1709, Y=1228 + +Button A: X+30, Y+63 +Button B: X+99, Y+56 +Prize: X=6276, Y=6496 + +Button A: X+13, Y+51 +Button B: X+60, Y+29 +Prize: X=17520, Y=789 + +Button A: X+72, Y+27 +Button B: X+16, Y+42 +Prize: X=1552, Y=2778 + +Button A: X+68, Y+87 +Button B: X+61, Y+14 +Prize: X=5879, Y=6561 + +Button A: X+34, Y+94 +Button B: X+67, Y+33 +Prize: X=8854, Y=11082 + +Button A: X+14, Y+73 +Button B: X+89, Y+64 +Prize: X=4490, Y=5809 + +Button A: X+74, Y+14 +Button B: X+26, Y+88 +Prize: X=4150, Y=2696 + +Button A: X+53, Y+19 +Button B: X+18, Y+68 +Prize: X=15211, Y=12095 + +Button A: X+13, Y+83 +Button B: X+57, Y+56 +Prize: X=895, Y=2635 + +Button A: X+72, Y+76 +Button B: X+93, Y+24 +Prize: X=10377, Y=5836 + +Button A: X+29, Y+86 +Button B: X+19, Y+16 +Prize: X=2240, Y=2810 + +Button A: X+24, Y+14 +Button B: X+11, Y+47 +Prize: X=1676, Y=4062 diff --git a/day13/sample.txt b/day13/sample.txt new file mode 100644 index 0000000..912f482 --- /dev/null +++ b/day13/sample.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