diff --git a/2017/08/input.txt b/2017/08/input.txt new file mode 100644 index 0000000..6ed1001 --- /dev/null +++ b/2017/08/input.txt @@ -0,0 +1,1000 @@ +b inc 580 if bkd > -1 +v inc 491 if z >= -1 +ehd inc 994 if b < 588 +oso inc -941 if kfn <= -9 +o inc 933 if uly < 8 +xn dec 416 if a != -10 +uly dec 328 if qur != -6 +xn dec 515 if jf > -1 +oso dec -542 if hnb > -8 +ehd dec -241 if fw != 6 +xn dec -416 if a > -2 +a dec 92 if b <= 581 +he dec -918 if fz <= 1 +bkd dec -976 if uly <= -338 +z inc 182 if he > 909 +dl inc 357 if jf == 0 +q dec 531 if kfn != 0 +cp inc -475 if rny != 0 +hnb dec 800 if fw > -8 +hnb dec 950 if he <= 917 +he dec 292 if xn == -525 +eje dec 818 if yk == 0 +v inc -115 if v != 491 +a dec -463 if qur == 0 +he dec 75 if qur >= 5 +a inc 731 if ehd > 1233 +a dec -202 if oxv > -7 +qur inc 816 if qur > -5 +cp inc -636 if bkd < 1 +b dec -650 if a != 1303 +b inc -337 if xn >= -524 +yk dec 200 if bkd <= 5 +uly dec -214 if eje <= -825 +fw inc 583 if oso == 542 +oxv dec 77 if oso >= 536 +fz dec 145 if hnb != -792 +dl dec -548 if ehd < 1242 +qur dec 573 if fz >= -149 +o dec 901 if oxv >= -78 +qur inc -466 if oxv > -69 +q inc 240 if z != 188 +uly inc 232 if dl > 899 +v dec 760 if uly < -89 +eje inc 462 if uly < -90 +rny dec -750 if ehd > 1230 +ehd inc -858 if ehd < 1226 +jf dec 374 if jf >= -6 +fz inc -120 if fz == -145 +z dec -938 if fw <= 584 +o inc 48 if jf != -365 +xn inc 793 if v == -269 +fw inc -58 if uly > -104 +b dec 158 if xn != 284 +dl dec 222 if kfn != -7 +cp dec -781 if eje == -356 +bkd dec -131 if ehd == 1235 +dl dec 461 if mf > -9 +o inc 971 if fz != -262 +fw dec 786 if ehd < 1245 +xn dec 221 if eje != -349 +cp dec 369 if eje == -356 +fz dec -710 if a <= 1310 +fw inc -159 if oxv == -77 +fw inc -328 if fz != 445 +mf dec -356 if mf == 0 +bkd dec 750 if ehd > 1229 +kfn inc -637 if cp < -228 +eje dec 491 if o <= 1053 +xn dec 139 if v >= -276 +cp dec -316 if he != 918 +o inc 430 if fz < 436 +oxv dec 257 if yk != -206 +fw dec 9 if b != 737 +v dec 317 if cp == -224 +dl inc -37 if xn < -83 +oso dec -65 if uly < -88 +q inc -606 if fz == 445 +ehd dec 627 if b != 735 +xn dec -81 if q == -371 +oso inc -576 if oxv >= -336 +oxv dec 624 if bkd == -619 +xn inc -668 if fw <= -421 +he dec -365 if b != 728 +ehd inc -73 if b > 734 +v inc 338 if uly >= -88 +fz dec 342 if v < -578 +oso inc -77 if b >= 734 +a inc -927 if z < 1126 +oso inc 898 if hnb != -803 +v dec 208 if qur > 251 +qur dec -153 if uly < -87 +he dec 678 if dl != 222 +fz inc 718 if a > 375 +oxv dec 462 if bkd == -619 +fw inc 899 if qur >= 394 +xn inc 547 if rny <= 744 +v dec -863 if fw <= 478 +qur inc 676 if jf >= -383 +fw dec 964 if he > 1274 +bkd dec -63 if v != 277 +v inc -313 if qur < 1077 +eje inc -576 if kfn != 9 +bkd dec 823 if bkd != -616 +fw dec -748 if uly > -103 +cp inc -962 if fw < 264 +q dec -406 if jf == -374 +fw dec 871 if rny > 741 +oxv dec -654 if fz < 829 +rny dec -660 if b < 737 +kfn inc -309 if fz != 813 +v inc -882 if fw <= -617 +b dec -300 if q <= 44 +xn inc 462 if z != 1117 +o dec 555 if q != 40 +z dec -586 if kfn == -309 +bkd dec 487 if ehd < 1164 +rny dec -795 if xn <= -287 +jf inc 511 if cp != -1195 +z inc 595 if z == 1706 +mf dec 153 if dl == 222 +fz inc -297 if yk < -205 +uly dec -323 if kfn <= -303 +ehd inc 437 if hnb < -790 +b inc 101 if oso <= 852 +q dec -994 if mf > 203 +z inc 504 if oxv == -775 +dl dec -298 if o < 1055 +he dec -338 if mf < 199 +kfn inc -340 if mf < 213 +kfn dec 979 if fw >= -620 +q dec 258 if rny < 2213 +kfn inc -946 if kfn == -1628 +yk inc 191 if cp == -1186 +q dec 570 if b >= 1133 +v inc -223 if jf >= 129 +fz dec -858 if yk >= -12 +qur inc -872 if v > -1147 +bkd inc -333 if uly != 227 +yk dec -358 if o <= 1057 +a dec -765 if oso <= 855 +ehd dec 317 if a <= 1142 +yk dec -189 if b == 1136 +yk inc 714 if v <= -1133 +xn inc -857 if cp < -1180 +v dec 724 if ehd > 1275 +he dec 41 if oxv == -766 +b inc -969 if q >= -788 +fz dec 36 if ehd == 1282 +oso dec -369 if bkd < -1922 +rny dec -958 if xn < -1140 +a inc 112 if he == 1248 +hnb inc -769 if v == -1865 +qur dec -163 if dl < 526 +eje dec -753 if jf == 137 +ehd inc 6 if a != 1137 +bkd inc -529 if v < -1872 +he inc -931 if yk != 1246 +xn dec 901 if z != 2305 +xn inc 739 if xn <= -2044 +b inc -859 if ehd > 1278 +z inc 518 if b > -690 +a dec 662 if qur == 363 +oso dec 679 if oso <= 1212 +z dec 657 if qur >= 364 +o dec 335 if uly <= 236 +a dec -213 if fz != 1634 +yk inc -57 if rny > 3155 +mf dec 622 if eje != -660 +oxv dec 854 if z == 2301 +o dec 409 if qur > 355 +fw dec -50 if mf > -423 +v dec -655 if uly <= 235 +yk inc -785 if rny > 3162 +dl inc 888 if cp != -1190 +xn inc 799 if fz != 1652 +hnb inc 309 if fw < -565 +q dec -731 if kfn == -2574 +o dec -407 if dl < 1411 +b dec -505 if dl > 1402 +v inc -755 if rny < 3165 +oxv inc 991 if kfn == -2574 +oso inc 408 if v != -1958 +b inc 719 if z <= 2303 +jf inc -872 if bkd <= -1925 +ehd inc 691 if dl >= 1409 +qur dec 285 if oxv > -633 +fz inc -744 if he >= 313 +he dec -490 if hnb <= -1256 +eje dec -102 if qur >= 83 +o inc -592 if cp > -1183 +bkd dec 185 if uly > 218 +oso inc -670 if v <= -1969 +v inc 163 if oxv >= -620 +ehd inc 448 if rny > 3154 +fz dec 936 if uly != 217 +rny inc 570 if mf == -419 +dl dec -644 if xn >= -513 +yk dec -132 if o <= 722 +uly dec -425 if a >= 685 +kfn dec 703 if eje <= -662 +uly inc 518 if dl < 2053 +o dec -956 if yk <= 532 +b inc -46 if kfn != -3273 +z dec -194 if fw != -565 +b inc 255 if cp == -1186 +yk inc 842 if fw >= -574 +z inc 662 if eje >= -672 +jf inc 907 if z >= 3151 +jf dec -499 if bkd == -2114 +qur dec 775 if kfn == -3277 +kfn dec 212 if mf == -419 +yk inc 928 if q > -63 +xn inc 56 if fz != 717 +oxv inc 939 if o > 713 +ehd inc 463 if b < 749 +eje inc -707 if xn != -451 +cp dec -924 if eje > -1377 +qur dec -143 if hnb >= -1267 +fz dec 993 if b <= 741 +oxv dec 146 if fw <= -563 +qur dec 430 if cp == -1189 +he inc -438 if rny < 3743 +v inc 638 if hnb == -1260 +hnb inc 35 if hnb != -1270 +dl inc 905 if qur == -554 +ehd dec 701 if ehd >= 2194 +he dec -330 if dl < 2958 +b dec -456 if v > -1323 +hnb dec -228 if jf == 671 +jf dec -232 if v < -1319 +b dec -254 if kfn == -3489 +jf inc 591 if o < 715 +jf inc 348 if hnb < -1004 +z inc -92 if fz != -288 +fw inc 573 if mf >= -428 +bkd dec -692 if uly > 1163 +q inc 898 if uly <= 1172 +a dec -469 if qur == -554 +ehd inc -903 if eje >= -1379 +kfn dec -64 if mf != -425 +oxv inc -435 if a == 1162 +bkd dec -822 if ehd != 593 +hnb dec 757 if cp == -1186 +uly dec -939 if fz > -289 +fz inc -463 if yk > 2311 +o inc -146 if xn < -448 +yk dec -17 if rny < 3742 +dl inc -899 if fw >= 2 +fz dec -982 if fz < -742 +he inc 956 if bkd != -605 +xn inc 448 if hnb >= -1757 +b dec -410 if oxv <= -275 +mf dec -752 if kfn < -3420 +jf dec 41 if xn >= -4 +yk inc 354 if z == 3065 +a dec 102 if ehd == 595 +he dec -882 if fw < 16 +hnb inc 273 if a > 1050 +eje dec 259 if ehd != 592 +qur dec -339 if v < -1319 +oso dec 872 if ehd != 602 +bkd dec 812 if q == 851 +b inc -936 if eje >= -1633 +uly dec 785 if z == 3071 +b dec -136 if b <= 1004 +fz inc 494 if eje < -1634 +uly inc -851 if kfn == -3425 +z dec -452 if o <= 569 +q inc -942 if fz != 729 +kfn dec 877 if xn > 3 +hnb dec -748 if he == 2531 +b inc 808 if kfn != -3425 +dl inc 588 if jf < 1454 +he inc -844 if hnb < -733 +qur dec -497 if uly != 1265 +jf inc 674 if hnb == -733 +a dec 560 if v == -1327 +fw inc -402 if v > -1333 +qur inc -339 if eje == -1636 +jf inc 403 if jf == 2127 +he dec -575 if b > 1138 +v inc -770 if fw >= -397 +ehd inc -839 if uly <= 1263 +uly dec 606 if cp != -1191 +v dec 933 if v >= -2103 +dl dec 304 if qur <= -48 +b inc 979 if bkd == -600 +xn inc 503 if a > 497 +mf dec 374 if yk >= 2676 +mf dec -153 if a == 500 +oso dec 486 if oso <= 756 +z dec -962 if rny <= 3724 +fz inc 285 if oxv >= -280 +oxv inc 380 if v >= -3024 +dl inc 214 if z >= 3516 +b dec 538 if ehd >= -251 +he dec -280 if mf < 105 +ehd inc -733 if ehd <= -242 +mf inc 592 if yk < 2687 +oxv inc -616 if cp == -1186 +dl inc 431 if eje > -1632 +z inc -582 if qur < -52 +oxv dec -56 if qur <= -48 +jf dec -615 if bkd > -609 +rny inc 394 if eje > -1639 +uly inc 888 if qur >= -64 +a inc 911 if z < 2927 +fz inc -453 if fw >= -399 +uly dec -396 if jf > 3144 +kfn inc -679 if hnb >= -736 +hnb inc 131 if fz == 559 +xn inc 957 if qur != -56 +bkd dec 793 if q > -99 +a inc 533 if cp != -1180 +yk inc -231 if q != -96 +bkd inc -866 if oxv <= -823 +a inc -851 if yk != 2452 +z dec 614 if cp > -1189 +a dec 444 if bkd != -1460 +uly inc -413 if fz > 556 +eje inc 245 if rny < 4137 +fw dec -254 if oso >= 754 +fz inc -772 if yk != 2452 +fz dec -621 if oso < 766 +ehd dec -277 if q == -101 +cp inc 319 if oso < 748 +kfn inc 758 if a != 592 +z dec 459 if eje < -1400 +oxv dec -425 if rny <= 4136 +kfn inc 880 if dl != 2550 +ehd inc -35 if xn < 1453 +uly dec -935 if jf <= 3147 +dl dec 969 if oso >= 761 +b inc -458 if a == 589 +mf inc 471 if oxv < -410 +v inc -82 if oso >= 749 +mf inc -87 if q >= -102 +z dec -814 if hnb == -600 +jf dec 735 if qur <= -56 +cp inc 565 if v != -3115 +fz dec 771 if hnb == -602 +fz dec -215 if mf <= 618 +ehd dec -941 if mf > 617 +dl dec 677 if a <= 591 +rny inc 124 if eje == -1391 +qur inc 683 if rny != 4251 +rny inc 435 if eje == -1391 +fw dec -641 if z < 2331 +rny dec -70 if cp < -616 +hnb dec -153 if xn >= 1456 +kfn dec 829 if ehd != -692 +rny dec 208 if fw < 505 +xn inc -410 if qur != -57 +eje inc 255 if ehd != -690 +mf dec -103 if v < -3109 +dl inc -552 if eje > -1134 +rny inc 73 if z >= 2323 +ehd inc -770 if rny > 4540 +uly dec -937 if z >= 2314 +eje dec -227 if he == 2531 +z dec -32 if eje > -917 +b dec 956 if oxv <= -400 +o inc 924 if jf >= 2410 +dl dec 162 if ehd != -1477 +fw dec -901 if z != 2354 +qur dec 724 if oso <= 763 +oxv dec -778 if a < 598 +eje dec -603 if qur < -777 +oxv inc 473 if fz == 624 +kfn dec -990 if a == 589 +eje dec -38 if fz < 625 +z inc 915 if qur == -788 +fw dec -233 if fz > 624 +uly dec -132 if dl != 1710 +uly inc -333 if xn == 1456 +z dec -342 if z == 2353 +bkd dec 695 if oxv == 846 +oso dec 198 if z < 2694 +b dec -985 if a == 589 +eje inc 581 if rny > 4542 +eje inc 705 if cp != -621 +a dec -249 if eje == 317 +eje dec -814 if bkd < -1461 +jf dec -361 if xn < 1451 +oxv inc 982 if he <= 2534 +cp inc 630 if v <= -3105 +z inc -818 if eje <= 1130 +z inc -363 if dl == 1710 +fz dec -165 if eje >= 1119 +bkd inc 860 if rny == 4549 +ehd dec -385 if xn < 1452 +bkd inc 52 if oxv < 1829 +uly dec 726 if dl != 1724 +oso dec -244 if a <= 596 +uly inc -662 if kfn < -2314 +z dec -84 if ehd < -1461 +b inc -98 if kfn == -2305 +eje dec 803 if dl >= 1710 +fz inc 721 if o <= 1497 +o dec 377 if a < 599 +ehd inc -556 if o < 1107 +dl inc -456 if yk != 2451 +bkd dec 98 if uly > 2458 +jf inc -375 if fz >= 1510 +fz inc 27 if yk != 2452 +fw inc 582 if yk == 2452 +he inc 743 if rny == 4555 +ehd dec -926 if xn >= 1448 +ehd dec -486 if hnb >= -452 +rny inc 515 if qur != -779 +bkd inc 220 if bkd < -1504 +eje inc 996 if oso < 1009 +bkd dec 610 if uly != 2467 +eje inc -136 if v < -3102 +oxv inc -97 if ehd == -56 +he inc -525 if bkd >= -1906 +rny inc -470 if yk <= 2452 +he inc 81 if dl > 1265 +dl dec -535 if kfn == -2305 +qur inc -147 if a < 585 +mf dec 729 if b > 1038 +yk inc 548 if b != 1053 +he inc -515 if ehd < -48 +oxv inc -593 if b > 1042 +rny dec -973 if fz > 1500 +jf inc -920 if a < 590 +cp dec -102 if kfn <= -2296 +he dec -849 if uly > 2459 +kfn inc 831 if he >= 2339 +xn dec -524 if mf != -9 +z dec -503 if ehd <= -61 +eje inc 60 if yk <= 3003 +yk inc -576 if yk > 3007 +cp dec 704 if yk <= 3006 +bkd dec 364 if v <= -3104 +a inc 166 if uly >= 2476 +z inc 313 if a != 591 +rny inc 914 if mf == -9 +a inc 897 if rny <= 6486 +cp inc 644 if qur >= -789 +a dec 659 if v >= -3112 +v inc -95 if ehd <= -68 +fw dec -172 if bkd >= -2270 +yk dec -692 if mf == -9 +o inc -722 if yk == 3701 +q inc 640 if cp == 51 +hnb dec 886 if dl == 1796 +yk inc 563 if q == 547 +oxv inc -20 if jf >= 1113 +oxv dec 650 if he < 2347 +oso dec 123 if z <= 2277 +dl dec 442 if q < 539 +oso inc -190 if cp > 41 +eje dec -89 if oso >= 696 +z inc -840 if bkd <= -2257 +oxv dec 367 if qur < -777 +fw dec 924 if eje >= 1244 +b inc 567 if yk >= 3686 +oso inc -512 if bkd >= -2258 +dl dec -615 if v < -3102 +he dec -129 if b <= 1616 +uly inc -214 if cp >= 49 +v dec -131 if oso < 696 +he inc -440 if jf < 1118 +bkd dec 16 if fz >= 1510 +xn inc -235 if oso <= 697 +a inc 808 if uly <= 2261 +jf dec 578 if fw < 1239 +cp dec -673 if oso >= 680 +fz inc -542 if oso < 696 +dl inc 411 if mf != -17 +b dec -915 if cp >= 724 +qur inc 460 if oxv <= 205 +fz dec 643 if bkd < -2287 +oxv dec 187 if eje > 1240 +qur inc 583 if uly > 2245 +kfn inc -504 if z <= 1428 +dl inc -794 if mf <= -2 +eje inc 225 if v < -2979 +oso inc -138 if dl >= 2022 +he dec 978 if xn <= 1230 +o inc 652 if a <= 1634 +o inc 699 if v > -2987 +fz inc -433 if b != 2527 +z inc -915 if bkd == -2272 +b inc -74 if b < 2531 +qur dec -889 if eje == 1469 +rny inc -672 if hnb > -1334 +cp inc -508 if fz > 961 +uly dec -766 if bkd >= -2282 +uly dec 206 if uly < 3028 +b inc -5 if fz == 968 +b dec -612 if qur < 1154 +eje inc 719 if he > 1059 +eje dec -705 if yk <= 3695 +q dec -764 if z > 1443 +rny dec 512 if oso <= 552 +rny inc 50 if fw <= 1236 +he dec 3 if uly != 2815 +rny inc -73 if dl >= 2019 +fw dec -474 if rny >= 5940 +he dec 226 if rny == 5945 +rny inc 674 if uly == 2814 +z inc 522 if yk < 3699 +mf inc -278 if yk > 3686 +oxv dec -916 if dl == 2020 +mf dec -560 if rny > 6613 +bkd dec 966 if qur <= 1151 +xn dec -808 if oso != 555 +oxv inc 86 if b > 3061 +fw dec -140 if oso < 544 +he dec 299 if q <= 540 +he dec 236 if oso <= 553 +oxv dec 117 if z > 1961 +fz inc -244 if cp <= 218 +v dec -451 if b != 3056 +qur dec -532 if uly > 2805 +mf dec 882 if cp == 216 +b dec -863 if cp < 220 +q dec 702 if z > 1946 +rny dec 447 if rny == 6619 +uly inc 198 if mf <= -608 +q dec 242 if yk > 3682 +mf inc -682 if yk > 3701 +z dec 255 if q < -414 +jf inc -571 if oxv >= 3 +rny dec 891 if he >= 283 +cp dec -355 if yk != 3692 +kfn inc 119 if fz > 717 +jf inc -102 if jf != -40 +he dec -728 if oxv >= 7 +kfn dec -119 if mf < -604 +mf dec -567 if uly < 3018 +z inc -618 if jf <= -132 +a inc -977 if he == 1015 +q inc 817 if z >= 1332 +a inc 333 if fw > 1710 +v dec 36 if fz != 717 +eje inc -93 if jf < -127 +oxv dec -699 if a < 659 +kfn inc 390 if oso != 540 +v inc 704 if q > 409 +ehd dec 390 if oxv != 709 +o dec -382 if v < -1858 +xn dec -907 if uly >= 3005 +jf dec 56 if a >= 649 +oso dec -6 if a < 662 +bkd inc 383 if fw == 1695 +oxv dec -112 if oso != 552 +mf dec -906 if rny > 5279 +fz inc 3 if qur > 1687 +bkd inc 705 if fw == 1704 +z dec 964 if oso >= 547 +o dec 292 if eje == 2081 +uly dec 77 if o < 1911 +eje inc 152 if dl < 2032 +o inc 179 if b == 3923 +dl dec 364 if fz == 724 +ehd inc 776 if z != 374 +yk inc -533 if uly < 2943 +q inc -248 if rny == 5281 +kfn dec -416 if fz >= 724 +cp inc -695 if bkd >= -2551 +q dec 405 if v == -1862 +z inc -715 if kfn <= -427 +yk dec 427 if z != -345 +xn dec 374 if oxv > 828 +a dec -920 if oxv <= 825 +xn dec -532 if a != 1581 +rny dec 308 if b <= 3932 +eje dec -335 if v == -1862 +oso inc 890 if jf >= -197 +mf dec 390 if o >= 2083 +o inc 558 if qur != 1691 +oxv inc 707 if dl == 1664 +xn dec -319 if fw <= 1711 +uly dec -19 if ehd <= -64 +o inc 283 if mf != 468 +bkd inc -192 if fz < 733 +bkd dec -73 if a < 1585 +mf dec 935 if fw <= 1708 +cp dec -972 if xn >= 3782 +mf inc 639 if hnb == -1335 +mf inc 416 if eje >= 2571 +rny dec 446 if kfn < -421 +hnb inc -103 if yk <= 2733 +bkd dec -766 if qur <= 1677 +oso dec -820 if jf == -192 +a inc -628 if dl > 1671 +ehd dec -982 if v <= -1870 +q dec -615 if hnb > -1437 +a dec -201 if kfn == -430 +jf inc 806 if fz >= 721 +he dec 129 if yk == 2732 +bkd dec 574 if kfn < -424 +fz dec -655 if eje < 2578 +a inc -618 if q > -249 +qur dec -382 if z <= -334 +z inc -433 if uly < 2941 +v dec 83 if qur <= 2057 +jf dec 435 if jf != 621 +kfn dec 516 if q >= -246 +q inc -799 if z < -780 +yk dec 422 if uly == 2935 +fw inc 192 if yk <= 2311 +eje dec -318 if fz <= 1381 +yk inc -731 if z != -774 +kfn inc 88 if yk == 2310 +a inc -450 if uly <= 2935 +fz dec 108 if kfn <= -868 +uly inc -324 if v <= -1856 +eje inc -131 if yk >= 2312 +b dec 212 if rny < 4533 +qur dec -754 if qur >= 2065 +qur dec 416 if xn != 3790 +he inc -327 if bkd <= -3243 +fz inc -695 if bkd < -3234 +b inc 121 if z > -773 +rny inc 747 if oxv == 1528 +bkd dec 860 if rny == 5274 +xn dec -666 if cp != 484 +xn inc -259 if qur < 2402 +oxv inc 275 if fz <= 678 +yk inc 540 if v >= -1871 +kfn inc 515 if uly < 2615 +dl dec 848 if b != 3717 +z dec 613 if mf < 184 +v dec -222 if q == -241 +cp inc 49 if he >= 878 +v inc -528 if xn > 4443 +he inc -720 if oso == 2266 +o inc -3 if he > 162 +kfn inc -986 if jf <= 175 +yk inc -299 if o < 2927 +cp dec 983 if fz <= 689 +eje dec 843 if eje <= 2888 +v inc 129 if cp < -434 +qur inc 868 if xn < 4459 +eje dec 847 if rny >= 5273 +o inc 936 if hnb > -1436 +bkd dec 895 if bkd >= -4098 +jf dec 101 if a != 711 +b inc 817 if xn < 4461 +oso dec 513 if eje > 1189 +uly dec 474 if qur != 3271 +rny inc -173 if hnb >= -1430 +b dec 864 if q <= -234 +mf inc -162 if hnb == -1438 +eje inc 770 if rny < 5267 +cp dec 430 if oso < 1759 +jf inc 770 if jf > 177 +qur inc -699 if v > -2045 +hnb dec 810 if ehd != -51 +cp inc -97 if z <= -1382 +oso dec -955 if kfn <= -341 +oxv dec -38 if fz >= 684 +b inc 195 if fz <= 691 +ehd inc 662 if o == 2921 +bkd dec -983 if cp <= -978 +rny inc 280 if fz == 681 +v dec 488 if xn < 4457 +qur dec 549 if oxv != 1562 +he dec -128 if fz <= 693 +jf dec -14 if qur == 2023 +cp inc -208 if o <= 2923 +dl inc -20 if kfn >= -345 +hnb inc -812 if qur != 2022 +oxv inc -903 if a == 711 +xn dec 383 if ehd >= 599 +oso inc -858 if hnb >= -3063 +eje inc -742 if eje > 1200 +qur dec -870 if v < -2524 +yk dec -290 if v < -2533 +eje inc -212 if oso <= 1844 +uly inc -85 if uly < 2619 +dl dec -555 if cp != -1174 +fz dec -516 if eje <= 1198 +z dec -338 if oso >= 1854 +b inc -175 if fz <= 1207 +v dec -571 if he != 292 +o dec -84 if jf != 959 +jf dec 63 if jf > 962 +cp inc -772 if dl == 1351 +z inc 93 if v <= -1954 +kfn inc 984 if ehd > 594 +dl inc 410 if he >= 288 +uly dec 203 if v < -1956 +qur inc 334 if a == 711 +q inc 749 if eje > 1205 +q dec 874 if ehd > 605 +mf inc -842 if cp == -1948 +rny dec 789 if xn >= 4070 +cp dec 7 if ehd < 600 +bkd inc 491 if a >= 715 +yk inc -399 if ehd <= 604 +ehd dec 579 if he == 294 +yk inc 957 if he >= 294 +he dec 456 if uly > 2529 +jf inc 944 if uly >= 2521 +rny dec 51 if rny >= 4481 +z inc 890 if fw == 1896 +v inc -773 if cp >= -1950 +z dec 156 if xn == 4076 +v inc -466 if a < 720 +mf inc -888 if a >= 705 +b inc -636 if kfn >= 637 +oso dec 430 if rny > 4433 +uly inc 661 if v == -3195 +qur dec 278 if xn == 4070 +oxv dec -487 if o >= 2997 +mf dec -930 if cp > -1951 +mf dec 712 if rny > 4432 +oxv inc -287 if he >= 290 +eje inc -84 if xn == 4070 +fz dec -637 if yk <= 3117 +a inc 762 if jf <= 1847 +a dec 849 if o != 2995 +oxv inc -946 if fw <= 1897 +qur inc 870 if mf <= -1491 +xn inc -65 if yk > 3110 +he inc 96 if qur > 3823 +kfn inc -701 if z == -404 +bkd inc 973 if yk > 3100 +yk inc -632 if rny != 4441 +fw inc 616 if jf < 1846 +v dec -57 if xn == 4070 +dl inc 913 if ehd == 25 +oso inc -901 if ehd < 24 +qur dec -690 if o == 3005 +jf dec 24 if eje <= 1102 +fw inc 119 if b <= 3043 +kfn inc 319 if a > 631 +fz dec 527 if kfn < -52 +yk dec 691 if mf != -1487 +qur dec -798 if ehd >= 17 +yk inc -191 if q == -241 +ehd dec 270 if mf > -1506 +oxv dec 633 if mf < -1495 +mf inc -893 if q > -248 +v dec 774 if he >= 298 +a inc -972 if dl > 2673 +z inc 533 if z == -404 +rny inc -80 if ehd != -252 +hnb dec -189 if b >= 3040 +xn dec -197 if fw != 2512 +uly inc 579 if xn >= 4068 +uly dec 407 if uly <= 3767 +fw inc 953 if fw > 2504 +yk dec 412 if qur != 5304 +jf inc -40 if rny <= 4358 +oxv dec -794 if he == 303 +oxv dec 598 if eje <= 1115 +dl inc -216 if z == 129 +kfn dec 615 if uly != 3359 +z dec -32 if a < -341 +v dec 281 if z > 156 +b inc -903 if a >= -356 +he inc -801 if z <= 163 +oso inc 138 if kfn > -58 +a dec 313 if he < -497 +fz inc 11 if kfn < -55 +cp dec 412 if oxv <= -1305 +qur dec -811 if xn != 4078 +o inc -322 if b <= 2143 +jf inc 275 if bkd > -4020 +b inc -847 if ehd != -240 +cp dec 205 if q > -248 +bkd inc 579 if fw != 3470 +oso inc 934 if uly < 3368 +z inc -740 if he <= -503 +hnb inc -339 if o != 3005 +yk inc 574 if rny < 4358 +he dec -579 if oxv < -1310 +a inc -29 if yk <= 1765 +q dec -147 if eje < 1105 +uly dec 987 if a >= -694 +a dec 40 if eje < 1110 +q inc -426 if ehd <= -244 +cp dec -4 if hnb == -2871 +fw inc -258 if fz >= 1316 +he dec -792 if xn <= 4070 +kfn inc -616 if ehd > -250 +cp inc 332 if z == -582 +fz inc -556 if rny >= 4350 +rny inc -219 if oso >= 2347 +xn inc 205 if rny == 4135 +fz dec 793 if dl < 2468 +ehd dec 856 if hnb >= -2879 +bkd inc -659 if cp > -2569 +dl dec 697 if oxv != -1314 +xn dec -609 if z <= -572 +he dec 988 if rny > 4127 +dl inc 942 if xn >= 4883 +mf dec 401 if fz == -28 +o dec -818 if o >= 2997 +fz inc 731 if oso != 2354 +fw inc 722 if uly <= 2380 +kfn inc 577 if v != -3411 +mf inc -469 if dl > 3393 +oso dec -742 if he != -124 +hnb inc 74 if jf <= 2073 +z dec 532 if rny < 4145 +kfn dec 398 if he < -115 +q inc 725 if cp > -2557 +b inc 733 if o != 3831 +hnb inc 869 if eje < 1120 +xn dec -254 if uly > 2362 +hnb dec -117 if eje != 1107 +v dec 220 if fw < 3930 +fw dec 801 if dl <= 3404 +rny inc 122 if mf < -3254 +yk dec -405 if q > -675 +fz dec -992 if oso != 2361 +v inc -524 if dl != 3400 +mf inc -233 if q > -674 +rny inc 957 if a > -685 +oso inc 803 if z != -1104 +eje inc 254 if mf < -3486 +kfn inc -242 if fw >= 3119 +b inc 805 if q != -667 +xn dec -243 if oso >= 3156 +yk dec 950 if o <= 3828 +ehd dec -132 if qur < 6125 +jf inc -908 if jf > 2070 +ehd dec 858 if kfn > -736 +mf dec 933 if bkd > -4103 +fw dec 25 if hnb <= -1882 +fz inc -16 if o != 3827 +v inc 950 if he <= -116 +v inc -547 if he >= -128 +oxv inc 341 if mf > -4425 +z dec 532 if fw < 3105 +kfn dec 521 if dl > 3394 +dl inc -301 if eje >= 1364 +dl inc 510 if fz > 951 +o dec 120 if oso == 3167 +yk dec -333 if q > -666 +fz dec -909 if o != 3825 +fz dec 802 if bkd > -4103 +bkd dec -791 if q < -666 +oso inc -33 if kfn <= -1257 +jf inc 194 if fz != 1058 +z dec 490 if a < -682 +a inc -813 if v > -3244 +a inc 759 if hnb != -1881 +b inc -208 if qur == 6118 +qur dec 290 if he != -131 +a dec -326 if z != -2133 +rny dec 311 if qur != 5838 +uly dec -692 if qur < 5835 +mf dec 443 if uly != 3060 +uly inc -455 if hnb != -1891 +bkd inc 504 if eje != 1364 +fw dec 233 if he < -119 +dl dec -222 if uly > 2607 +yk inc 39 if q >= -669 +he inc -814 if oxv > -1322 +dl dec -131 if a != -746 +ehd inc 808 if rny < 3950 +qur inc -110 if xn == 5381 +dl inc -749 if cp < -2554 +jf dec -887 if xn < 5382 +fw inc 62 if fz <= 1058 +fw dec -213 if dl >= 2694 +o inc 797 if jf <= 2257 +eje inc -100 if dl < 2711 +rny inc 223 if a != -744 +q inc -262 if uly != 2605 +oso inc 336 if fz != 1056 +kfn inc -847 if a != -750 +fw inc 943 if o > 4612 +jf dec 823 if mf <= -4867 +oxv dec -189 if he <= -937 +he dec 85 if hnb != -1894 +jf dec 522 if he == -1023 +ehd dec -995 if he > -1029 +rny dec -315 if yk <= 1245 +xn inc -424 if z == -2134 +eje inc 421 if cp >= -2567 +xn dec -187 if he != -1028 +eje inc 539 if dl <= 2710 +jf inc 34 if oxv >= -1117 +v inc -787 if qur == 5718 +cp inc -927 if mf < -4859 +oxv inc -366 if xn > 5559 +mf dec 0 if yk <= 1247 +z dec -963 if hnb >= -1886 +mf inc 173 if q < -938 +a dec 294 if dl >= 2698 +kfn dec 910 if cp <= -3481 +rny dec 529 if eje <= 2216 +fw dec -621 if a > -1048 +rny inc 235 if hnb < -1880 +q dec -303 if cp == -3488 +cp dec 882 if oxv > -1499 +uly inc -941 if fz >= 1046 +z inc -595 if eje <= 2228 +eje inc 131 if bkd == -2803 +oxv inc -201 if z < -1756 +kfn inc -775 if a != -1031 +mf inc 724 if z <= -1765 +o inc 178 if rny == 4181 +z dec -365 if fw <= 4714 +mf inc 273 if yk < 1253 +z inc 516 if ehd < 830 +he dec 519 if b < 1818 +dl dec -131 if fz > 1061 +eje inc -335 if dl > 2700 +v inc -945 if fz == 1055 +ehd dec -550 if oxv >= -1701 +hnb inc 803 if mf < -3865 +v dec 321 if rny == 4181 +z inc 770 if dl <= 2705 +cp dec -667 if fz > 1061 +jf inc 629 if he == -1019 +z inc 304 if eje >= 2018 +a dec 793 if he <= -1014 +bkd dec 507 if yk < 1257 +dl inc -628 if dl >= 2700 +xn inc -488 if fz < 1063 +rny dec 607 if fw < 4719 +z dec -202 if o > 4806 +bkd inc -93 if kfn < -3790 +jf dec 813 if kfn == -3786 +he inc 749 if ehd >= 1381 +rny inc 447 if hnb != -1081 +yk dec 298 if a >= -1840 +cp dec 377 if xn <= 5084 +eje dec 625 if rny < 4024 +jf inc -15 if jf != 907 +qur inc 893 if z > -329 +oxv inc 941 if dl <= 2075 +ehd dec 994 if yk != 953 +yk inc 941 if z > -329 +rny dec -661 if bkd > -3394 +fz dec 374 if z > -325 +oxv dec -606 if bkd < -3393 +cp dec -671 if qur >= 6619 +oxv inc -794 if oso <= 3467 +oso dec -315 if b == 1823 +eje dec 550 if rny > 4029 +fw inc 7 if z >= -334 +kfn dec 101 if uly >= 1661 +oso inc 322 if mf != -3862 +qur dec -4 if bkd == -3410 +jf inc 763 if cp < -4746 +v inc 758 if bkd == -3403 +v inc 860 if bkd != -3403 +q dec -107 if oso > 4088 +dl dec -840 if oso <= 4095 +xn inc -296 if ehd != 1376 +mf dec -986 if v == -4531 +fz inc 861 if o == 4798 +v dec 977 if ehd != 1386 +mf inc -508 if ehd == 1384 +o dec 48 if cp < -4738 +a dec 586 if ehd >= 1379 +z dec 605 if oso >= 4088 +oxv dec 168 if hnb >= -1091 +uly dec 142 if qur != 6614 +eje inc -853 if oso != 4099 +xn inc 897 if mf != -3389 +kfn dec 79 if yk >= 1894 +a inc -562 if hnb == -1082 +uly dec -923 if fw <= 4715 +ehd dec 104 if fz == 1916 +oxv dec -794 if oxv != -1107 +hnb inc 786 if qur >= 6609 +xn dec -181 if cp >= -4748 +oso inc -334 if q > -524 +ehd dec 241 if oso == 3763 +uly inc -488 if z == -934 +kfn inc 873 if fz < 1919 +xn inc -999 if hnb == -296 +o inc 72 if uly < 1529 +oxv dec 727 if q != -512 +uly inc -546 if hnb > -302 +dl dec 579 if cp != -4756 +jf inc -636 if cp < -4743 +z inc -116 if mf >= -3395 +q dec 339 if kfn > -3093 +v inc -273 if oxv == -1831 +a dec -410 if qur <= 6618 +jf inc 76 if he < -264 +oxv inc 689 if oso > 3754 +eje dec 163 if q == -525 +v inc -613 if v != -5508 +xn dec 447 if bkd > -3413 +mf inc -128 if o != 4817 +ehd dec 690 if b >= 1817 +mf dec 737 if b <= 1826 +ehd dec -687 if jf == 1110 +rny dec -701 if oso >= 3759 +a inc 779 if oxv == -1148 +dl inc -837 if jf != 1110 +dl dec -519 if hnb < -291 +dl inc -824 if qur < 6611 +fz inc 61 if b <= 1818 +cp dec 331 if fz < 1909 +fw dec -971 if fz < 1922 diff --git a/2017/08/solve.py b/2017/08/solve.py new file mode 100644 index 0000000..7db4242 --- /dev/null +++ b/2017/08/solve.py @@ -0,0 +1,96 @@ +import collections +import re +import sys + +# PART 1 + +class Instruction: + INSTRUCTION_RE = r"(\S+) (inc|dec) (-?\d+) if (\S+) (<|<=|>|>=|==|!=) (-?\d+)\n" + + def __init__(self, register, mode, amount, c_register, c_operator, c_amount): + self.register = register + self.mode = mode + self.amount = amount + self.c_register = c_register + self.c_operator = c_operator + self.c_amount = c_amount + + @classmethod + def from_line(cls, line): + match = re.fullmatch(cls.INSTRUCTION_RE, line) + + register = match.group(1) + mode = match.group(2) + amount = int(match.group(3)) + c_register = match.group(4) + c_operator = match.group(5) + c_amount = int(match.group(6)) + + return cls(register, mode, amount, c_register, c_operator, c_amount) + + def compare_to(self, n): + if self.c_operator == "<": + return n < self.c_amount + elif self.c_operator == "<=": + return n <= self.c_amount + elif self.c_operator == ">": + return n > self.c_amount + elif self.c_operator == ">=": + return n >= self.c_amount + elif self.c_operator == "==": + return n == self.c_amount + elif self.c_operator == "!=": + return n != self.c_amount + + def total(self): + if self.mode == "inc": + return self.amount + elif self.mode == "dec": + return -self.amount + +class Machine: + def __init__(self, instructions): + self.instructions = instructions + self.reset() + + def reset(self): + self.registers = collections.defaultdict(lambda: 0) + self.max_all_time = 0 + + @classmethod + def from_file(cls, filename): + instructions = [] + + with open(filename, "r") as f: + for line in f: + instructions.append(Instruction.from_line(line)) + + return cls(instructions) + + def execute_instruction(self, i): + c_amount = self.registers.get(i.c_register, 0) + if i.compare_to(c_amount): + self.registers[i.register] += i.total() + self.max_all_time = max(self.max_all_time, self.registers[i.register]) + + def execute(self): + for i in self.instructions: + self.execute_instruction(i) + + def max_register(self): + return max(self.registers.values()) + +# PART 2 + +def main(filename): + print(f"Solutions for {filename}") + machine = Machine.from_file(filename) + machine.reset() + machine.execute() + max_register = machine.max_register() + print(f"Part 1: {max_register}") + print(f"Part 2: {machine.max_all_time}") + +if __name__ == "__main__": + for filename in sys.argv[1:]: + main(filename) diff --git a/2017/08/test_input.txt b/2017/08/test_input.txt new file mode 100644 index 0000000..1fb12cf --- /dev/null +++ b/2017/08/test_input.txt @@ -0,0 +1,4 @@ +b inc 5 if a > 1 +a inc 1 if b < 5 +c dec -10 if a >= 1 +c inc -20 if c == 10