From 0c31308c6c2142200235b2c9c31d5b724e354627 Mon Sep 17 00:00:00 2001 From: Tobias Kessels Date: Fri, 13 Dec 2024 10:28:53 +0100 Subject: [PATCH] Add Solve for 13 a --- 13/13.ipynb | 146 ++++++ 13/input | 1279 ++++++++++++++++++++++++++++++++++++++++++++++++++ 13/testinput | 16 + 3 files changed, 1441 insertions(+) create mode 100644 13/13.ipynb create mode 100644 13/input create mode 100644 13/testinput diff --git a/13/13.ipynb b/13/13.ipynb new file mode 100644 index 0000000..ce9733f --- /dev/null +++ b/13/13.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import re\n", + "\n", + "def readfile(infilename='testinput',offset=0):\n", + " pattern= re.compile(r'''[XY][+=](\\d+)''') #Pattern to Extract Values\n", + " A=np.zeros((2,2),dtype=int) #Empty 2x2 Matrix\n", + " B=None #Placeholder for PrizePosition\n", + "\n", + " with open(infilename,'r') as infile:\n", + " for idx,line in enumerate(infile.readlines()):\n", + " line = line.strip()\n", + " # on empty line yield result and reset\n", + " if line =='':\n", + " if B is not None:\n", + " solution = np.linalg.solve(A.astype(int),B.astype(int))\n", + " # remove non integer Solutions\n", + " solution = solution.astype(int) if np.allclose(solution, np.round(solution)) else None\n", + " yield A,B,solution\n", + " A=np.zeros((2,2))\n", + " B=None\n", + " continue\n", + " # grep X/Y Values from Line\n", + " matches = pattern.findall(line)\n", + " if \"Button A\" in line: #A Button Presses are X in my equation > first column of A\n", + " A[:,0]=matches\n", + " if \"Button B\" in line: #B Button Presses are Y in my equation > second column of A\n", + " A[:,1]=matches\n", + " if \"Prize:\" in line:\n", + " B=np.array(matches,dtype=int)+[offset,offset] #offset added for part 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Part 1" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "28714" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(a*3 + b for a,b in [x[2] for x in readfile('input') if x[2] is not None ])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Part 2" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(array([[69., 27.],\n", + " [23., 71.]]),\n", + " array([10000000018641, 10000000010279]),\n", + " array([102851800151, 107526881786]))]" + ] + }, + "execution_count": 225, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[x for x in readfile(offset=10000000000000) if x[2] is not None ]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 226, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "416082282239" + ] + }, + "execution_count": 226, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum(a*3 + b for a,b in [x[2] for x in readfile(offset=10000000000000) if x[2] is not None ])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/13/input b/13/input new file mode 100644 index 0000000..5050753 --- /dev/null +++ b/13/input @@ -0,0 +1,1279 @@ +Button A: X+23, Y+57 +Button B: X+58, Y+28 +Prize: X=11852, Y=17598 + +Button A: X+41, Y+97 +Button B: X+88, Y+65 +Prize: X=8250, Y=10497 + +Button A: X+15, Y+81 +Button B: X+78, Y+15 +Prize: X=12134, Y=9893 + +Button A: X+26, Y+64 +Button B: X+58, Y+26 +Prize: X=4312, Y=2090 + +Button A: X+47, Y+24 +Button B: X+20, Y+57 +Prize: X=17244, Y=6806 + +Button A: X+46, Y+15 +Button B: X+16, Y+54 +Prize: X=14366, Y=19469 + +Button A: X+39, Y+15 +Button B: X+11, Y+30 +Prize: X=9918, Y=19115 + +Button A: X+54, Y+82 +Button B: X+39, Y+11 +Prize: X=4058, Y=5122 + +Button A: X+63, Y+26 +Button B: X+15, Y+20 +Prize: X=3699, Y=1858 + +Button A: X+18, Y+70 +Button B: X+54, Y+11 +Prize: X=11060, Y=3025 + +Button A: X+46, Y+16 +Button B: X+34, Y+53 +Prize: X=4182, Y=12687 + +Button A: X+14, Y+42 +Button B: X+36, Y+22 +Prize: X=3044, Y=3016 + +Button A: X+18, Y+38 +Button B: X+38, Y+19 +Prize: X=8482, Y=13363 + +Button A: X+39, Y+11 +Button B: X+20, Y+68 +Prize: X=15100, Y=18828 + +Button A: X+60, Y+66 +Button B: X+79, Y+12 +Prize: X=8663, Y=3762 + +Button A: X+53, Y+16 +Button B: X+17, Y+74 +Prize: X=16149, Y=9028 + +Button A: X+58, Y+26 +Button B: X+23, Y+63 +Prize: X=10386, Y=1346 + +Button A: X+14, Y+56 +Button B: X+73, Y+18 +Prize: X=5653, Y=3706 + +Button A: X+27, Y+13 +Button B: X+24, Y+47 +Prize: X=10319, Y=19746 + +Button A: X+81, Y+12 +Button B: X+96, Y+84 +Prize: X=9696, Y=4716 + +Button A: X+56, Y+16 +Button B: X+14, Y+67 +Prize: X=3308, Y=6410 + +Button A: X+40, Y+20 +Button B: X+27, Y+69 +Prize: X=4167, Y=5469 + +Button A: X+34, Y+12 +Button B: X+41, Y+57 +Prize: X=15440, Y=3242 + +Button A: X+59, Y+98 +Button B: X+80, Y+20 +Prize: X=3573, Y=4806 + +Button A: X+85, Y+15 +Button B: X+70, Y+67 +Prize: X=11835, Y=5422 + +Button A: X+19, Y+98 +Button B: X+69, Y+56 +Prize: X=6034, Y=10430 + +Button A: X+24, Y+94 +Button B: X+64, Y+32 +Prize: X=2576, Y=2436 + +Button A: X+11, Y+54 +Button B: X+77, Y+36 +Prize: X=12376, Y=14444 + +Button A: X+88, Y+84 +Button B: X+13, Y+63 +Prize: X=1679, Y=5397 + +Button A: X+27, Y+78 +Button B: X+67, Y+14 +Prize: X=16479, Y=8998 + +Button A: X+44, Y+46 +Button B: X+45, Y+11 +Prize: X=5666, Y=3112 + +Button A: X+61, Y+42 +Button B: X+15, Y+41 +Prize: X=14303, Y=1986 + +Button A: X+46, Y+21 +Button B: X+27, Y+62 +Prize: X=16414, Y=15839 + +Button A: X+43, Y+17 +Button B: X+20, Y+43 +Prize: X=9593, Y=998 + +Button A: X+22, Y+56 +Button B: X+47, Y+21 +Prize: X=11425, Y=1145 + +Button A: X+66, Y+14 +Button B: X+13, Y+43 +Prize: X=2441, Y=3375 + +Button A: X+65, Y+36 +Button B: X+19, Y+45 +Prize: X=12899, Y=10844 + +Button A: X+23, Y+55 +Button B: X+64, Y+26 +Prize: X=16837, Y=3837 + +Button A: X+97, Y+37 +Button B: X+18, Y+26 +Prize: X=3635, Y=2879 + +Button A: X+54, Y+19 +Button B: X+27, Y+62 +Prize: X=16946, Y=4731 + +Button A: X+63, Y+14 +Button B: X+24, Y+76 +Prize: X=6194, Y=4432 + +Button A: X+58, Y+36 +Button B: X+17, Y+63 +Prize: X=6356, Y=7092 + +Button A: X+28, Y+62 +Button B: X+43, Y+20 +Prize: X=18969, Y=11152 + +Button A: X+53, Y+79 +Button B: X+35, Y+12 +Prize: X=5083, Y=15315 + +Button A: X+11, Y+54 +Button B: X+58, Y+25 +Prize: X=18973, Y=16071 + +Button A: X+84, Y+34 +Button B: X+22, Y+73 +Prize: X=8454, Y=5537 + +Button A: X+48, Y+22 +Button B: X+15, Y+42 +Prize: X=4695, Y=4716 + +Button A: X+78, Y+22 +Button B: X+18, Y+71 +Prize: X=10940, Y=17046 + +Button A: X+73, Y+12 +Button B: X+80, Y+73 +Prize: X=9390, Y=6930 + +Button A: X+64, Y+16 +Button B: X+13, Y+46 +Prize: X=6726, Y=13428 + +Button A: X+27, Y+25 +Button B: X+88, Y+19 +Prize: X=7337, Y=3482 + +Button A: X+84, Y+15 +Button B: X+55, Y+75 +Prize: X=4550, Y=1725 + +Button A: X+75, Y+40 +Button B: X+14, Y+43 +Prize: X=10844, Y=1143 + +Button A: X+32, Y+92 +Button B: X+89, Y+76 +Prize: X=8356, Y=11792 + +Button A: X+63, Y+32 +Button B: X+19, Y+82 +Prize: X=5129, Y=3184 + +Button A: X+19, Y+67 +Button B: X+32, Y+11 +Prize: X=5477, Y=7691 + +Button A: X+30, Y+83 +Button B: X+98, Y+68 +Prize: X=11514, Y=12964 + +Button A: X+27, Y+57 +Button B: X+27, Y+12 +Prize: X=476, Y=5996 + +Button A: X+11, Y+36 +Button B: X+81, Y+40 +Prize: X=14202, Y=17708 + +Button A: X+35, Y+80 +Button B: X+59, Y+35 +Prize: X=1648, Y=1570 + +Button A: X+17, Y+91 +Button B: X+92, Y+70 +Prize: X=4351, Y=3857 + +Button A: X+19, Y+33 +Button B: X+29, Y+14 +Prize: X=16416, Y=1607 + +Button A: X+50, Y+27 +Button B: X+27, Y+57 +Prize: X=13566, Y=11054 + +Button A: X+36, Y+86 +Button B: X+60, Y+29 +Prize: X=5112, Y=8096 + +Button A: X+16, Y+62 +Button B: X+67, Y+16 +Prize: X=18162, Y=2988 + +Button A: X+79, Y+77 +Button B: X+65, Y+11 +Prize: X=4802, Y=1958 + +Button A: X+59, Y+14 +Button B: X+17, Y+56 +Prize: X=2891, Y=998 + +Button A: X+19, Y+37 +Button B: X+48, Y+30 +Prize: X=12759, Y=13947 + +Button A: X+93, Y+78 +Button B: X+12, Y+46 +Prize: X=690, Y=974 + +Button A: X+33, Y+31 +Button B: X+22, Y+90 +Prize: X=1584, Y=6064 + +Button A: X+68, Y+26 +Button B: X+13, Y+33 +Prize: X=18241, Y=367 + +Button A: X+42, Y+76 +Button B: X+76, Y+35 +Prize: X=4018, Y=2247 + +Button A: X+45, Y+23 +Button B: X+25, Y+56 +Prize: X=4035, Y=2894 + +Button A: X+55, Y+16 +Button B: X+24, Y+53 +Prize: X=492, Y=5359 + +Button A: X+24, Y+46 +Button B: X+57, Y+25 +Prize: X=19118, Y=10440 + +Button A: X+73, Y+42 +Button B: X+19, Y+41 +Prize: X=1841, Y=9264 + +Button A: X+65, Y+16 +Button B: X+29, Y+71 +Prize: X=15670, Y=9818 + +Button A: X+78, Y+22 +Button B: X+70, Y+90 +Prize: X=7136, Y=2364 + +Button A: X+23, Y+12 +Button B: X+45, Y+74 +Prize: X=3141, Y=4468 + +Button A: X+15, Y+32 +Button B: X+48, Y+24 +Prize: X=18866, Y=5536 + +Button A: X+14, Y+98 +Button B: X+81, Y+32 +Prize: X=7764, Y=8338 + +Button A: X+44, Y+14 +Button B: X+27, Y+74 +Prize: X=3488, Y=13980 + +Button A: X+25, Y+66 +Button B: X+47, Y+17 +Prize: X=8141, Y=14837 + +Button A: X+48, Y+22 +Button B: X+20, Y+52 +Prize: X=8896, Y=9180 + +Button A: X+26, Y+11 +Button B: X+34, Y+56 +Prize: X=9746, Y=5133 + +Button A: X+52, Y+11 +Button B: X+23, Y+74 +Prize: X=1342, Y=12876 + +Button A: X+86, Y+22 +Button B: X+67, Y+84 +Prize: X=7503, Y=3056 + +Button A: X+13, Y+27 +Button B: X+60, Y+19 +Prize: X=18113, Y=2714 + +Button A: X+47, Y+15 +Button B: X+20, Y+34 +Prize: X=12235, Y=3047 + +Button A: X+40, Y+12 +Button B: X+11, Y+65 +Prize: X=10907, Y=13793 + +Button A: X+67, Y+40 +Button B: X+13, Y+59 +Prize: X=6155, Y=6544 + +Button A: X+11, Y+47 +Button B: X+41, Y+23 +Prize: X=13259, Y=6563 + +Button A: X+20, Y+49 +Button B: X+66, Y+41 +Prize: X=7654, Y=5147 + +Button A: X+14, Y+89 +Button B: X+85, Y+62 +Prize: X=8082, Y=9283 + +Button A: X+53, Y+20 +Button B: X+17, Y+49 +Prize: X=16011, Y=16899 + +Button A: X+74, Y+32 +Button B: X+16, Y+42 +Prize: X=8598, Y=19638 + +Button A: X+87, Y+45 +Button B: X+33, Y+94 +Prize: X=11124, Y=12216 + +Button A: X+69, Y+30 +Button B: X+25, Y+57 +Prize: X=2718, Y=5177 + +Button A: X+17, Y+43 +Button B: X+69, Y+27 +Prize: X=17472, Y=10852 + +Button A: X+86, Y+26 +Button B: X+23, Y+48 +Prize: X=5652, Y=4582 + +Button A: X+46, Y+21 +Button B: X+13, Y+28 +Prize: X=599, Y=6094 + +Button A: X+39, Y+18 +Button B: X+41, Y+59 +Prize: X=309, Y=7791 + +Button A: X+13, Y+57 +Button B: X+79, Y+47 +Prize: X=8315, Y=6819 + +Button A: X+55, Y+33 +Button B: X+14, Y+32 +Prize: X=5856, Y=13904 + +Button A: X+34, Y+18 +Button B: X+17, Y+78 +Prize: X=3349, Y=5016 + +Button A: X+12, Y+57 +Button B: X+50, Y+16 +Prize: X=12838, Y=873 + +Button A: X+95, Y+17 +Button B: X+13, Y+78 +Prize: X=4257, Y=6740 + +Button A: X+78, Y+36 +Button B: X+17, Y+53 +Prize: X=9451, Y=14053 + +Button A: X+20, Y+67 +Button B: X+88, Y+65 +Prize: X=4844, Y=4048 + +Button A: X+11, Y+98 +Button B: X+42, Y+37 +Prize: X=485, Y=2635 + +Button A: X+38, Y+71 +Button B: X+38, Y+15 +Prize: X=11976, Y=12740 + +Button A: X+62, Y+21 +Button B: X+17, Y+38 +Prize: X=6782, Y=5533 + +Button A: X+95, Y+20 +Button B: X+34, Y+61 +Prize: X=4860, Y=2100 + +Button A: X+76, Y+31 +Button B: X+23, Y+88 +Prize: X=7593, Y=3333 + +Button A: X+24, Y+49 +Button B: X+46, Y+18 +Prize: X=16826, Y=13801 + +Button A: X+68, Y+34 +Button B: X+24, Y+54 +Prize: X=3484, Y=14232 + +Button A: X+41, Y+17 +Button B: X+39, Y+57 +Prize: X=11455, Y=8047 + +Button A: X+62, Y+39 +Button B: X+14, Y+40 +Prize: X=12594, Y=8762 + +Button A: X+32, Y+45 +Button B: X+95, Y+39 +Prize: X=1806, Y=837 + +Button A: X+16, Y+49 +Button B: X+48, Y+11 +Prize: X=14288, Y=3733 + +Button A: X+23, Y+89 +Button B: X+97, Y+86 +Prize: X=4215, Y=5315 + +Button A: X+16, Y+54 +Button B: X+36, Y+16 +Prize: X=18636, Y=1846 + +Button A: X+11, Y+51 +Button B: X+73, Y+17 +Prize: X=1795, Y=3179 + +Button A: X+72, Y+18 +Button B: X+16, Y+77 +Prize: X=1040, Y=17678 + +Button A: X+48, Y+21 +Button B: X+13, Y+42 +Prize: X=1313, Y=7865 + +Button A: X+87, Y+51 +Button B: X+12, Y+37 +Prize: X=1815, Y=2772 + +Button A: X+25, Y+63 +Button B: X+57, Y+16 +Prize: X=12411, Y=3498 + +Button A: X+31, Y+87 +Button B: X+61, Y+11 +Prize: X=8289, Y=7643 + +Button A: X+48, Y+20 +Button B: X+17, Y+74 +Prize: X=4652, Y=3812 + +Button A: X+17, Y+89 +Button B: X+74, Y+67 +Prize: X=5121, Y=6624 + +Button A: X+19, Y+65 +Button B: X+87, Y+47 +Prize: X=8530, Y=7126 + +Button A: X+54, Y+18 +Button B: X+21, Y+61 +Prize: X=8612, Y=16724 + +Button A: X+19, Y+39 +Button B: X+33, Y+15 +Prize: X=11696, Y=5138 + +Button A: X+13, Y+69 +Button B: X+66, Y+34 +Prize: X=4217, Y=4353 + +Button A: X+21, Y+53 +Button B: X+60, Y+26 +Prize: X=10742, Y=14648 + +Button A: X+96, Y+25 +Button B: X+20, Y+98 +Prize: X=6892, Y=6156 + +Button A: X+33, Y+84 +Button B: X+71, Y+17 +Prize: X=8439, Y=7728 + +Button A: X+13, Y+63 +Button B: X+81, Y+29 +Prize: X=7591, Y=6977 + +Button A: X+16, Y+37 +Button B: X+65, Y+24 +Prize: X=17131, Y=19329 + +Button A: X+20, Y+70 +Button B: X+73, Y+14 +Prize: X=1737, Y=12856 + +Button A: X+36, Y+63 +Button B: X+54, Y+24 +Prize: X=2546, Y=11957 + +Button A: X+21, Y+98 +Button B: X+35, Y+12 +Prize: X=3332, Y=6772 + +Button A: X+28, Y+60 +Button B: X+54, Y+14 +Prize: X=8436, Y=8292 + +Button A: X+11, Y+39 +Button B: X+25, Y+11 +Prize: X=6436, Y=3566 + +Button A: X+77, Y+25 +Button B: X+13, Y+48 +Prize: X=17471, Y=4526 + +Button A: X+92, Y+40 +Button B: X+19, Y+74 +Prize: X=3771, Y=3546 + +Button A: X+30, Y+70 +Button B: X+22, Y+11 +Prize: X=2472, Y=5526 + +Button A: X+13, Y+24 +Button B: X+28, Y+11 +Prize: X=359, Y=403 + +Button A: X+83, Y+48 +Button B: X+32, Y+80 +Prize: X=9252, Y=11008 + +Button A: X+34, Y+21 +Button B: X+18, Y+37 +Prize: X=7912, Y=18908 + +Button A: X+30, Y+43 +Button B: X+34, Y+13 +Prize: X=11192, Y=8660 + +Button A: X+81, Y+12 +Button B: X+26, Y+23 +Prize: X=3628, Y=1897 + +Button A: X+51, Y+16 +Button B: X+31, Y+73 +Prize: X=19107, Y=8642 + +Button A: X+43, Y+47 +Button B: X+14, Y+67 +Prize: X=4351, Y=5738 + +Button A: X+15, Y+62 +Button B: X+32, Y+11 +Prize: X=7458, Y=8235 + +Button A: X+38, Y+69 +Button B: X+52, Y+12 +Prize: X=3098, Y=4389 + +Button A: X+27, Y+91 +Button B: X+61, Y+57 +Prize: X=5581, Y=11529 + +Button A: X+48, Y+11 +Button B: X+26, Y+74 +Prize: X=852, Y=6766 + +Button A: X+60, Y+32 +Button B: X+32, Y+61 +Prize: X=7144, Y=17970 + +Button A: X+72, Y+26 +Button B: X+12, Y+61 +Prize: X=7484, Y=14817 + +Button A: X+51, Y+48 +Button B: X+84, Y+12 +Prize: X=3549, Y=1932 + +Button A: X+19, Y+60 +Button B: X+29, Y+14 +Prize: X=6382, Y=18428 + +Button A: X+27, Y+54 +Button B: X+85, Y+52 +Prize: X=4952, Y=4004 + +Button A: X+12, Y+52 +Button B: X+79, Y+16 +Prize: X=7587, Y=15996 + +Button A: X+51, Y+97 +Button B: X+89, Y+29 +Prize: X=7929, Y=7085 + +Button A: X+24, Y+77 +Button B: X+72, Y+21 +Prize: X=3992, Y=13591 + +Button A: X+19, Y+72 +Button B: X+79, Y+43 +Prize: X=7335, Y=9850 + +Button A: X+13, Y+52 +Button B: X+58, Y+28 +Prize: X=12621, Y=4872 + +Button A: X+12, Y+47 +Button B: X+42, Y+22 +Prize: X=3846, Y=5231 + +Button A: X+67, Y+38 +Button B: X+19, Y+48 +Prize: X=1538, Y=1654 + +Button A: X+72, Y+40 +Button B: X+20, Y+54 +Prize: X=6680, Y=8464 + +Button A: X+16, Y+41 +Button B: X+71, Y+26 +Prize: X=15567, Y=1312 + +Button A: X+54, Y+12 +Button B: X+15, Y+63 +Prize: X=10076, Y=13298 + +Button A: X+30, Y+50 +Button B: X+49, Y+25 +Prize: X=3371, Y=9275 + +Button A: X+14, Y+53 +Button B: X+48, Y+16 +Prize: X=14006, Y=3617 + +Button A: X+36, Y+15 +Button B: X+25, Y+66 +Prize: X=18087, Y=4319 + +Button A: X+18, Y+55 +Button B: X+25, Y+14 +Prize: X=3103, Y=6050 + +Button A: X+53, Y+21 +Button B: X+28, Y+58 +Prize: X=11541, Y=12151 + +Button A: X+20, Y+42 +Button B: X+56, Y+35 +Prize: X=7500, Y=6906 + +Button A: X+64, Y+28 +Button B: X+17, Y+93 +Prize: X=1832, Y=4224 + +Button A: X+22, Y+80 +Button B: X+61, Y+14 +Prize: X=3750, Y=9724 + +Button A: X+51, Y+12 +Button B: X+19, Y+41 +Prize: X=2350, Y=17460 + +Button A: X+39, Y+92 +Button B: X+91, Y+45 +Prize: X=7579, Y=10583 + +Button A: X+20, Y+80 +Button B: X+83, Y+19 +Prize: X=6579, Y=3467 + +Button A: X+53, Y+97 +Button B: X+89, Y+50 +Prize: X=3667, Y=5018 + +Button A: X+62, Y+18 +Button B: X+11, Y+45 +Prize: X=3026, Y=638 + +Button A: X+23, Y+47 +Button B: X+72, Y+44 +Prize: X=1491, Y=17131 + +Button A: X+18, Y+37 +Button B: X+39, Y+21 +Prize: X=15797, Y=16588 + +Button A: X+33, Y+11 +Button B: X+43, Y+70 +Prize: X=10210, Y=569 + +Button A: X+34, Y+56 +Button B: X+38, Y+18 +Prize: X=16032, Y=16250 + +Button A: X+16, Y+68 +Button B: X+46, Y+17 +Prize: X=14172, Y=17686 + +Button A: X+26, Y+78 +Button B: X+80, Y+48 +Prize: X=4556, Y=3108 + +Button A: X+33, Y+61 +Button B: X+33, Y+19 +Prize: X=4257, Y=6063 + +Button A: X+29, Y+96 +Button B: X+80, Y+71 +Prize: X=9252, Y=12989 + +Button A: X+91, Y+20 +Button B: X+13, Y+62 +Prize: X=4589, Y=6568 + +Button A: X+47, Y+16 +Button B: X+28, Y+70 +Prize: X=15125, Y=7010 + +Button A: X+17, Y+38 +Button B: X+24, Y+12 +Prize: X=934, Y=9148 + +Button A: X+54, Y+87 +Button B: X+70, Y+31 +Prize: X=9970, Y=10093 + +Button A: X+25, Y+50 +Button B: X+37, Y+12 +Prize: X=8479, Y=8504 + +Button A: X+15, Y+64 +Button B: X+50, Y+14 +Prize: X=7360, Y=6328 + +Button A: X+67, Y+15 +Button B: X+68, Y+86 +Prize: X=5369, Y=1839 + +Button A: X+34, Y+14 +Button B: X+26, Y+45 +Prize: X=7616, Y=17302 + +Button A: X+35, Y+12 +Button B: X+29, Y+66 +Prize: X=6540, Y=17816 + +Button A: X+13, Y+39 +Button B: X+96, Y+61 +Prize: X=8763, Y=6767 + +Button A: X+66, Y+39 +Button B: X+19, Y+44 +Prize: X=7645, Y=17430 + +Button A: X+88, Y+77 +Button B: X+23, Y+80 +Prize: X=7889, Y=11633 + +Button A: X+14, Y+72 +Button B: X+85, Y+26 +Prize: X=2802, Y=12736 + +Button A: X+81, Y+88 +Button B: X+17, Y+79 +Prize: X=1851, Y=6006 + +Button A: X+22, Y+50 +Button B: X+41, Y+16 +Prize: X=11343, Y=2422 + +Button A: X+14, Y+39 +Button B: X+54, Y+15 +Prize: X=2440, Y=16736 + +Button A: X+36, Y+64 +Button B: X+75, Y+41 +Prize: X=9039, Y=8221 + +Button A: X+51, Y+54 +Button B: X+89, Y+23 +Prize: X=4048, Y=2434 + +Button A: X+61, Y+11 +Button B: X+32, Y+87 +Prize: X=3472, Y=2977 + +Button A: X+55, Y+29 +Button B: X+29, Y+62 +Prize: X=13412, Y=8513 + +Button A: X+36, Y+16 +Button B: X+56, Y+78 +Prize: X=6632, Y=16212 + +Button A: X+81, Y+43 +Button B: X+50, Y+90 +Prize: X=8195, Y=4985 + +Button A: X+35, Y+13 +Button B: X+13, Y+26 +Prize: X=5712, Y=14914 + +Button A: X+58, Y+91 +Button B: X+54, Y+25 +Prize: X=8134, Y=6909 + +Button A: X+97, Y+19 +Button B: X+40, Y+59 +Prize: X=1718, Y=797 + +Button A: X+25, Y+67 +Button B: X+60, Y+26 +Prize: X=4765, Y=17447 + +Button A: X+84, Y+75 +Button B: X+14, Y+71 +Prize: X=4634, Y=7355 + +Button A: X+14, Y+30 +Button B: X+44, Y+25 +Prize: X=5738, Y=5800 + +Button A: X+61, Y+28 +Button B: X+29, Y+66 +Prize: X=7310, Y=7992 + +Button A: X+73, Y+81 +Button B: X+65, Y+19 +Prize: X=8427, Y=5685 + +Button A: X+53, Y+15 +Button B: X+40, Y+82 +Prize: X=294, Y=18944 + +Button A: X+15, Y+70 +Button B: X+24, Y+19 +Prize: X=1962, Y=5622 + +Button A: X+80, Y+12 +Button B: X+14, Y+72 +Prize: X=4548, Y=11708 + +Button A: X+43, Y+51 +Button B: X+97, Y+32 +Prize: X=8994, Y=4771 + +Button A: X+14, Y+56 +Button B: X+70, Y+17 +Prize: X=1974, Y=3951 + +Button A: X+13, Y+32 +Button B: X+37, Y+26 +Prize: X=2628, Y=11680 + +Button A: X+39, Y+53 +Button B: X+28, Y+11 +Prize: X=8359, Y=7003 + +Button A: X+31, Y+45 +Button B: X+65, Y+17 +Prize: X=4350, Y=4458 + +Button A: X+53, Y+18 +Button B: X+21, Y+48 +Prize: X=5316, Y=1856 + +Button A: X+98, Y+18 +Button B: X+40, Y+51 +Prize: X=2034, Y=1203 + +Button A: X+82, Y+16 +Button B: X+14, Y+72 +Prize: X=6456, Y=12648 + +Button A: X+35, Y+61 +Button B: X+50, Y+23 +Prize: X=14705, Y=17268 + +Button A: X+52, Y+28 +Button B: X+14, Y+48 +Prize: X=7506, Y=12796 + +Button A: X+58, Y+13 +Button B: X+32, Y+68 +Prize: X=14032, Y=10252 + +Button A: X+15, Y+74 +Button B: X+58, Y+13 +Prize: X=11021, Y=15071 + +Button A: X+11, Y+61 +Button B: X+34, Y+12 +Prize: X=3323, Y=10339 + +Button A: X+46, Y+85 +Button B: X+76, Y+36 +Prize: X=8134, Y=8973 + +Button A: X+21, Y+65 +Button B: X+65, Y+38 +Prize: X=4433, Y=3277 + +Button A: X+36, Y+18 +Button B: X+26, Y+56 +Prize: X=1890, Y=14514 + +Button A: X+86, Y+40 +Button B: X+35, Y+98 +Prize: X=3788, Y=6992 + +Button A: X+13, Y+46 +Button B: X+81, Y+62 +Prize: X=2074, Y=4868 + +Button A: X+11, Y+33 +Button B: X+51, Y+26 +Prize: X=19564, Y=11909 + +Button A: X+12, Y+69 +Button B: X+51, Y+16 +Prize: X=9242, Y=18519 + +Button A: X+59, Y+72 +Button B: X+66, Y+18 +Prize: X=6394, Y=2862 + +Button A: X+35, Y+16 +Button B: X+23, Y+33 +Prize: X=2614, Y=1169 + +Button A: X+38, Y+90 +Button B: X+76, Y+54 +Prize: X=9424, Y=12366 + +Button A: X+17, Y+63 +Button B: X+49, Y+15 +Prize: X=13592, Y=13400 + +Button A: X+82, Y+63 +Button B: X+36, Y+88 +Prize: X=6188, Y=5780 + +Button A: X+34, Y+22 +Button B: X+11, Y+24 +Prize: X=8201, Y=16846 + +Button A: X+68, Y+18 +Button B: X+13, Y+61 +Prize: X=13949, Y=2649 + +Button A: X+55, Y+87 +Button B: X+70, Y+30 +Prize: X=6260, Y=6996 + +Button A: X+30, Y+55 +Button B: X+83, Y+25 +Prize: X=5030, Y=4135 + +Button A: X+68, Y+21 +Button B: X+53, Y+86 +Prize: X=8804, Y=8568 + +Button A: X+72, Y+23 +Button B: X+12, Y+71 +Prize: X=19100, Y=5294 + +Button A: X+45, Y+30 +Button B: X+28, Y+92 +Prize: X=4659, Y=5526 + +Button A: X+75, Y+33 +Button B: X+22, Y+96 +Prize: X=3846, Y=9720 + +Button A: X+63, Y+27 +Button B: X+23, Y+49 +Prize: X=14605, Y=19143 + +Button A: X+21, Y+41 +Button B: X+34, Y+16 +Prize: X=16799, Y=1471 + +Button A: X+14, Y+44 +Button B: X+61, Y+25 +Prize: X=1021, Y=1375 + +Button A: X+18, Y+67 +Button B: X+47, Y+11 +Prize: X=18923, Y=15540 + +Button A: X+21, Y+48 +Button B: X+79, Y+43 +Prize: X=8375, Y=6899 + +Button A: X+14, Y+30 +Button B: X+41, Y+28 +Prize: X=5771, Y=4974 + +Button A: X+51, Y+72 +Button B: X+96, Y+38 +Prize: X=7491, Y=5504 + +Button A: X+50, Y+73 +Button B: X+27, Y+12 +Prize: X=5807, Y=6542 + +Button A: X+24, Y+56 +Button B: X+29, Y+15 +Prize: X=8703, Y=15621 + +Button A: X+23, Y+82 +Button B: X+66, Y+64 +Prize: X=5165, Y=8650 + +Button A: X+15, Y+34 +Button B: X+49, Y+29 +Prize: X=18811, Y=3224 + +Button A: X+16, Y+68 +Button B: X+75, Y+51 +Prize: X=4858, Y=8330 + +Button A: X+63, Y+37 +Button B: X+21, Y+53 +Prize: X=19058, Y=13376 + +Button A: X+40, Y+51 +Button B: X+47, Y+18 +Prize: X=2428, Y=2928 + +Button A: X+35, Y+60 +Button B: X+34, Y+13 +Prize: X=12875, Y=11185 + +Button A: X+71, Y+28 +Button B: X+20, Y+38 +Prize: X=2353, Y=2012 + +Button A: X+36, Y+71 +Button B: X+78, Y+19 +Prize: X=1464, Y=730 + +Button A: X+13, Y+38 +Button B: X+54, Y+14 +Prize: X=4406, Y=6146 + +Button A: X+20, Y+70 +Button B: X+64, Y+13 +Prize: X=13152, Y=10009 + +Button A: X+14, Y+76 +Button B: X+53, Y+27 +Prize: X=2005, Y=7495 + +Button A: X+60, Y+29 +Button B: X+28, Y+64 +Prize: X=2404, Y=12748 + +Button A: X+12, Y+31 +Button B: X+69, Y+25 +Prize: X=16160, Y=6136 + +Button A: X+36, Y+14 +Button B: X+11, Y+57 +Prize: X=6244, Y=1242 + +Button A: X+40, Y+44 +Button B: X+65, Y+14 +Prize: X=6680, Y=1828 + +Button A: X+51, Y+14 +Button B: X+14, Y+63 +Prize: X=8060, Y=7704 + +Button A: X+68, Y+49 +Button B: X+30, Y+72 +Prize: X=5414, Y=8083 + +Button A: X+63, Y+22 +Button B: X+24, Y+62 +Prize: X=4842, Y=4908 + +Button A: X+81, Y+34 +Button B: X+13, Y+60 +Prize: X=18869, Y=1244 + +Button A: X+44, Y+37 +Button B: X+22, Y+70 +Prize: X=3762, Y=6820 + +Button A: X+32, Y+59 +Button B: X+22, Y+13 +Prize: X=828, Y=8847 + +Button A: X+45, Y+35 +Button B: X+13, Y+35 +Prize: X=1400, Y=3080 + +Button A: X+17, Y+46 +Button B: X+40, Y+11 +Prize: X=7459, Y=7662 + +Button A: X+48, Y+16 +Button B: X+14, Y+59 +Prize: X=15488, Y=4344 + +Button A: X+12, Y+30 +Button B: X+68, Y+52 +Prize: X=14804, Y=13268 + +Button A: X+25, Y+70 +Button B: X+45, Y+12 +Prize: X=10225, Y=3220 + +Button A: X+73, Y+37 +Button B: X+14, Y+40 +Prize: X=18129, Y=2281 + +Button A: X+37, Y+78 +Button B: X+89, Y+48 +Prize: X=6238, Y=8124 + +Button A: X+36, Y+77 +Button B: X+39, Y+25 +Prize: X=6630, Y=8456 + +Button A: X+17, Y+52 +Button B: X+42, Y+28 +Prize: X=1610, Y=2212 + +Button A: X+77, Y+39 +Button B: X+28, Y+73 +Prize: X=6496, Y=6584 + +Button A: X+13, Y+96 +Button B: X+86, Y+31 +Prize: X=1294, Y=4119 + +Button A: X+64, Y+21 +Button B: X+13, Y+41 +Prize: X=15407, Y=16446 + +Button A: X+99, Y+57 +Button B: X+28, Y+79 +Prize: X=4992, Y=6081 + +Button A: X+36, Y+11 +Button B: X+30, Y+52 +Prize: X=17516, Y=1994 + +Button A: X+68, Y+11 +Button B: X+17, Y+59 +Prize: X=13113, Y=3576 + +Button A: X+69, Y+63 +Button B: X+12, Y+50 +Prize: X=5934, Y=6316 + +Button A: X+11, Y+35 +Button B: X+70, Y+34 +Prize: X=4430, Y=12998 + +Button A: X+68, Y+37 +Button B: X+27, Y+87 +Prize: X=3120, Y=4590 + +Button A: X+42, Y+22 +Button B: X+26, Y+56 +Prize: X=11322, Y=2252 + +Button A: X+69, Y+44 +Button B: X+19, Y+47 +Prize: X=8320, Y=5054 + +Button A: X+88, Y+25 +Button B: X+17, Y+60 +Prize: X=3272, Y=2695 + +Button A: X+94, Y+66 +Button B: X+30, Y+83 +Prize: X=3106, Y=4906 + +Button A: X+34, Y+81 +Button B: X+42, Y+26 +Prize: X=4804, Y=7890 + +Button A: X+21, Y+99 +Button B: X+64, Y+29 +Prize: X=6823, Y=9803 + +Button A: X+39, Y+74 +Button B: X+93, Y+55 +Prize: X=5511, Y=4991 + +Button A: X+12, Y+65 +Button B: X+67, Y+46 +Prize: X=3698, Y=7988 + +Button A: X+28, Y+12 +Button B: X+11, Y+35 +Prize: X=10466, Y=14146 + +Button A: X+12, Y+80 +Button B: X+42, Y+45 +Prize: X=3858, Y=4335 + +Button A: X+67, Y+25 +Button B: X+12, Y+59 +Prize: X=13506, Y=13733 + +Button A: X+80, Y+52 +Button B: X+17, Y+42 +Prize: X=7298, Y=11648 diff --git a/13/testinput b/13/testinput new file mode 100644 index 0000000..007306c --- /dev/null +++ b/13/testinput @@ -0,0 +1,16 @@ +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 +