From 262ebfc6199becd86e53d130f867e355a04d33df Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Tue, 24 Sep 2024 11:59:44 +0200 Subject: [PATCH] first 13 stars --- 1/input.txt | 2249 +++++++++++++++++++++++++++++++++++++++++++++ 1/onestar.py | 11 + 1/twostar.py | 19 + 2/input.txt | 2500 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2/onestar.py | 29 + 2/twostar.py | 31 + 3/input.txt | 300 ++++++ 3/onestar.py | 24 + 3/twostar.py | 22 + 4/input.txt | 1000 ++++++++++++++++++++ 4/onestar.py | 16 + 4/twostar.py | 26 + 5/input.txt | 511 +++++++++++ 5/onestar.py | 53 ++ 5/twostar.py | 54 ++ 6/input.txt | 1 + 6/onestar.py | 20 + 6/twostar.py | 20 + 7/input.txt | 980 ++++++++++++++++++++ 7/onestar.py | 29 + 20 files changed, 7895 insertions(+) create mode 100644 1/input.txt create mode 100644 1/onestar.py create mode 100644 1/twostar.py create mode 100644 2/input.txt create mode 100644 2/onestar.py create mode 100644 2/twostar.py create mode 100644 3/input.txt create mode 100644 3/onestar.py create mode 100644 3/twostar.py create mode 100644 4/input.txt create mode 100644 4/onestar.py create mode 100644 4/twostar.py create mode 100644 5/input.txt create mode 100644 5/onestar.py create mode 100644 5/twostar.py create mode 100644 6/input.txt create mode 100644 6/onestar.py create mode 100644 6/twostar.py create mode 100644 7/input.txt create mode 100644 7/onestar.py diff --git a/1/input.txt b/1/input.txt new file mode 100644 index 0000000..113b5ca --- /dev/null +++ b/1/input.txt @@ -0,0 +1,2249 @@ +4887 +9307 +8895 +8136 +6292 +10177 +4077 +8228 + +5533 +7981 +5396 +4909 +5657 +7587 +9651 +1583 +8058 + +5201 +4782 +5956 +5327 +2029 +3455 +6148 +5468 +2177 +5352 +5373 +5442 +4888 + +36630 +9196 + +28629 + +9252 +1098 +9842 +7347 +3616 +5157 +8546 + +8031 +7718 +6690 +7819 +10921 +12059 +10334 + +3455 +1687 +3740 +2666 +6672 +3264 +4330 +4673 +5550 +1754 +4161 +2764 +6355 + +2711 +3232 +1429 +2381 +5990 +4482 +3091 +2745 +1886 +5648 +4776 +2696 +2846 +4177 +5781 + +6379 +12826 +3706 +12650 +5875 +11396 + +10381 +2204 +5950 +11465 +11501 +13306 + +4006 +6635 +5139 +5290 +4562 +5558 +2788 +1242 +5308 +6704 +6858 +3751 + +3574 +5601 +4492 +4795 +2135 +3295 +6150 +4786 +6761 +5098 +6646 +5839 +1989 + +14468 +13500 +11544 +2195 +6282 + +1400 +3519 +6010 +4063 +4077 +1583 +2044 +5089 +3588 +6061 +1634 +1358 +2241 +2351 +6075 + +2658 +5979 +4727 +4991 +2198 +4491 +2206 +2601 +3637 +1955 +1618 +5849 +4662 +2457 +2479 + +7450 +2813 +1678 +5678 +6688 +3338 +3708 +4898 +4542 +4800 +3127 +3338 + +2747 +6148 +6301 +6097 +6988 +2280 +4093 +8031 +4865 +7293 +1528 + +7851 +3366 +10761 +12012 + +7487 +1457 +3109 +7722 +6730 +1528 +8678 +5243 +3434 +7351 + +7661 +2803 +7796 +7485 +6268 +7251 +7346 +8521 +5165 +8506 + +6788 +10715 +3520 +6591 +5738 +7419 + +37041 +22858 + +18343 +19902 +15427 + +13379 +7285 +11836 +9418 +9597 + +2796 +3345 +2704 +5395 +5386 +2687 +4133 +1749 +5117 +3822 +4244 +6093 +3108 +2015 +1322 + +3640 +6611 +5160 +6176 +4105 +3796 +4651 +6634 +3804 +3308 +3206 +6686 +3122 + +15465 +12326 +11646 +3744 +2857 + +2724 +3037 +3333 +6247 +9610 +7087 +2883 +6291 +6549 + +2860 +4870 +8726 +4865 +7283 +6364 +4892 +8653 +1937 +1356 + +6900 +4695 +4167 +6336 +1515 +3047 +6735 +4487 +1255 +3833 +3786 +1489 +5117 + +8133 +11386 +1756 +2859 +7861 +4284 +9113 + +2766 +8069 +1212 +2325 +6421 +7231 +6566 +1833 +2677 +3622 +6814 + +7498 +5282 +7407 +3241 +5596 +3862 +7268 + +12142 +3155 +7969 +6330 +10030 + +2534 +2657 +3129 +1604 +5325 +6252 +1007 +4982 +4123 +6270 +2391 + +9554 +15638 +14218 +15314 + +17850 + +4336 +7216 +8068 +2602 +7176 +5411 +1504 +7965 +5582 + +1910 +10293 +9366 +1653 +7607 +1238 +6089 +9832 + +8438 +18781 +8544 +14156 + +3472 +8118 +2455 +1789 +7535 +6667 +2003 +1025 +7340 + +2807 +9390 +13476 +10938 +2272 +5114 + +3311 +13209 + +10615 +15963 +6233 +9368 +13767 + +11712 +3170 +13964 + +3689 +9486 +9551 +3456 +4882 +11211 +1600 + +6760 +5563 +3589 +8736 +7398 +4388 + +9518 +4642 +3473 +11134 +1020 +3983 +1012 + +3776 +1573 +6476 +6958 +2257 +2912 +2577 +3201 +5425 +2764 +6006 +4068 +3984 + +3516 + +12606 +33693 + +22285 +30183 + +6732 +2689 +7685 +5674 +1023 +2447 +5675 +6507 +7257 +4059 +2773 + +14742 +13724 +5856 + +19020 +15808 +15831 + +6871 +5101 +5123 +7918 +1663 +4364 +5111 +6205 +6680 + +5241 +1029 +5194 +2693 +7420 +4095 +3765 +3433 +1752 +1822 + +4311 +10029 +9151 +9518 +2511 +2363 +6980 + +6760 +4212 +21929 + +5789 +2855 +7378 +1525 +3127 +6001 +8351 +8353 +4445 +2987 + +5246 +2746 +1650 +5781 +5816 +1068 +4261 +4453 +6656 +1395 +2589 +4375 +4263 + +2133 +10539 +2325 +2094 +9071 +4830 +5758 +2060 + +2173 +6292 +5585 +2040 +3758 +2941 +4877 +3816 +6376 +1493 +4425 +3327 +3551 + +2469 +3948 +6275 +3614 +2736 +6400 +5997 +6010 +4231 +4716 +5492 +2055 +1836 + +7704 +6489 +3032 +8583 +7929 +8709 +7837 +5110 +3939 +4258 + +3360 +6562 +19776 + +12387 +9654 +1246 +12376 +12271 +6105 + +2945 +14862 +15087 +15649 +2445 + +3191 +4141 +4266 +3335 +2222 +3679 +5209 +5109 +6873 +6313 +2765 +2442 +2133 + +10886 +3410 +16022 +19192 + +14993 +2080 +9131 +19401 + +1222 +4856 +5484 +4898 +3546 +3996 +1054 +6444 +2077 +1460 +4349 +2253 +5826 +6257 + +7221 +11757 +1038 +4768 +12836 +13339 + +4975 +17027 + +2688 +1733 +3844 +6205 +3089 +1343 +7323 +2613 +1223 +4277 +5551 +3968 + +3475 +4760 +6351 +7360 +2946 +1337 +3434 +2485 +6407 +3266 +3517 +2125 + +21512 +23024 + +27755 +1947 + +6307 +1957 +6982 +1516 +1671 +1054 +4311 +4235 +6952 +8129 + +6734 +11365 +9035 +9922 +7310 +4799 +5883 + +59886 + +1919 +10200 +5393 +6601 +4924 +10451 +10218 +3175 + +2360 +4470 +1823 +3699 +4974 +3365 +2002 +5251 +1188 +3192 +2328 +2461 +1931 +1506 +2544 + +6131 +4712 +4994 +5450 +3023 +2002 +6108 +1591 +1011 +1689 +3003 +3970 +3613 + +7374 +2176 +5878 +4112 +1213 +5819 +3944 +3250 +5839 +1207 +4641 + +4375 +2510 +1107 +1717 +4333 +5631 +2499 +4002 +3822 +3618 +5259 +7133 + +6307 +6702 +1754 +4893 +4003 +5101 +3275 +3579 +2235 +6823 + +7388 +6708 +2218 +2220 +5287 +8692 +8143 +5692 +4287 +7770 + +5881 +1741 +7408 +2466 +14095 + +9268 +2524 +2958 +15427 +14742 + +3955 +7993 +6342 +2637 +5825 +3660 +5537 +1832 + +1022 +3769 +2113 +5734 +4382 +5338 +4904 +3631 +1073 +4992 +4134 +1773 +2645 +4100 +3882 + +31354 + +22767 +13308 +3424 + +18428 +9719 + +13154 +13267 +1035 +10201 +3948 + +3104 +2047 +2790 +6051 +3733 +4667 +3701 +2668 +2197 +3221 +3145 +1999 +3303 + +1703 +1792 +4827 +5038 +1712 +2516 +4798 +1464 +3073 +4214 +4870 +5705 +4507 +5712 + +2151 +4888 +2967 +1081 +1474 +2949 +1942 +4762 +1432 +5156 +2345 +5225 +3496 +6123 + +2205 +2399 +5266 +8514 +8150 +7435 +4416 +5244 +2903 +7406 + +4278 +3403 +6713 +8407 +3593 +7880 +8196 +7305 +1762 + +4341 +19333 +3617 + +7586 + +16168 +1909 +8778 +4452 +4148 + +3790 +3233 +2400 +6936 +1376 +4576 +6698 +1305 +4930 +5510 +2721 +1772 +2293 + +5791 +2163 +1948 +3948 +8564 +6399 +8272 +9733 + +5423 +6215 +1459 +6879 +4283 +4006 +5135 +5086 +3024 +2603 +3646 +3998 +2984 + +4991 +8870 +9477 +6827 +4847 +8241 +6970 +6532 + +3660 +36765 + +2699 +7895 +2763 +2460 +2477 +4390 +1370 +5744 +7657 + +3183 +2115 +2175 +2887 +2336 +8459 +8135 +1868 +1095 +6213 + +5677 +2990 +5916 +6344 +5605 +2072 +2173 +3704 +2888 +1999 +7661 + +24731 +13470 +5599 + +8873 +6995 +5302 +12016 +8988 +4674 +10185 + +5528 +19366 +18649 +9187 + +7428 +3617 +5583 +6033 +8532 +3632 +2565 + +6725 +1708 +1735 +1662 +4790 +3215 +4378 +2562 +3136 +2268 +3323 +6101 +3908 + +67860 + +3912 +2698 +2610 +1883 +7163 +7834 +8215 +4361 +4631 +6559 + +61469 + +1752 +3571 +5372 +1210 +2232 +4724 +2075 +4374 +6962 +1331 +3080 + +4392 +3755 +8553 +10430 +2077 +6502 +9329 +8373 + +4642 +6832 +6307 +5022 +4373 +5532 +4745 +1098 +6005 +4653 +4683 +6255 +6875 + +7024 +1051 +5664 +1399 +7333 +4725 +3375 +3832 +7361 +6068 +1187 +1447 + +19585 +7175 +19834 +13102 + +6423 +10860 +6839 + +6385 +7387 +13727 +13764 +13174 + +3453 +1935 +6047 +2440 +6454 +2789 +5995 +5238 +2206 +5418 +2905 +5424 +6725 + +20427 +11408 +21179 + +1648 +6294 +5757 +6484 +6851 +6987 +4177 +4898 +6845 +7343 +1573 + +23105 + +4696 +5155 +3429 +2107 +6849 +1619 +2146 +2232 +1080 +8086 +7818 + +4525 +3467 +1486 +8013 +7366 +3654 +5303 +7754 +6469 +1468 +3874 + +8007 +5589 +6424 +9322 +10417 +1508 +5900 + +3644 +2169 +8705 +1837 +3247 +8079 +7704 +2387 +2802 +4142 + +5554 +4692 +1368 +2623 +4146 +3634 +3354 +5121 +2171 +3418 +7129 +1334 + +18870 +23687 + +13467 +5594 +13229 +2978 +7542 + +2239 +7363 +3465 +7284 +2900 +7929 +5295 +4752 +2225 + +4445 +15568 + +3892 +2012 +2469 +1666 +1613 +3789 +5048 +1514 +2444 +3556 +3011 +5467 +5248 +4722 +2803 + +4793 +3118 +1831 +2977 +3936 +1036 +4325 +4205 +5869 +4957 +5223 +4290 +4719 +2397 +4679 + +4298 +5696 +5284 +1761 +6972 +1749 +1766 +3024 +2173 +6806 +6209 + +4805 +2409 +5913 +1863 +6111 +3958 +1514 +1970 +6399 +1839 +5697 +3174 +6203 + +12825 +8917 +10603 +6987 +8314 + +16810 +10340 +21902 + +1836 +3878 +1856 +2099 +6527 +4670 +2388 +1364 +2119 +5725 +2976 + +2368 +15063 +12997 +6731 +3508 + +3583 +4242 +5197 +2541 +3058 +5540 +4464 +4867 +3424 +6194 +2071 +1310 +5976 +5290 + +4262 +5256 +1625 +3579 +2688 +2816 +5619 +5282 +2163 +1264 +1820 +2748 +1064 +3239 +3082 + +8888 +17024 +18873 +12576 + +5571 +2530 +4707 +6564 +2637 +6947 +4981 +1116 +3747 +1187 +3968 +6569 +6926 + +5158 +4884 +2078 +1283 +6676 +4477 +7153 +3696 +1282 +3218 +6716 +2714 + +68708 + +12439 +12815 +12165 +6292 +8568 +7503 + +18845 +9399 + +3205 +33907 + +2754 +2530 +2082 +2114 +5490 +2469 +5103 +5656 +1633 +5631 +1633 +5003 +5194 +3584 +2830 + +4197 +11261 +3154 +5946 +7624 +4258 + +1338 + +4227 +8355 +5986 +8348 +4869 +6318 +6432 +7363 +6661 + +9115 +3231 + +9797 +4164 +16220 + +4412 +2616 +1705 +3033 +5695 +4241 +4252 +2810 +4176 +2554 +6251 +1751 +5832 +5548 + +3098 +4538 +5763 +4913 +3322 +5956 +1910 +4210 +3629 +5531 +1243 +5258 +4642 +5572 +3838 + +10520 +2932 +18639 +7802 + +15433 +3635 + +4777 +5260 +1283 +7917 +5860 +1376 +8001 +1209 +6245 +5939 +4721 + +6893 +4349 +1011 +1314 +5878 +3129 +1410 +4377 +2089 +3518 +3560 +1205 +6452 + +16914 +17575 +8660 +17142 + +15028 +10221 +16158 + +11777 +10449 +13633 +19094 + +10289 +9390 +3685 +3979 +12643 + +15858 +24129 +9740 + +2707 +1840 +3010 +1744 +1509 +5039 +4158 +2900 +4999 +3619 +5309 +4386 +2105 +2919 +2327 + +2358 +1502 +6302 +1270 +3358 +2033 +5857 +1125 +6738 +5707 +3960 +6751 +2829 + +2690 +2401 +4685 +1891 +4701 +4503 +5740 +6441 +1119 +4211 +2072 +1476 +1779 +1943 + +1490 +12834 +3680 +13513 +1055 +9731 + +5322 +13458 +2941 +1758 +11817 +4550 + +3688 +4536 +5079 +4031 +5642 +5920 +5061 +4114 +3118 +3316 +1980 +5607 +2845 + +4372 +7991 +11604 +6661 +12052 +1241 + +4013 +4554 +5176 +4386 +6064 +1319 +4562 +1902 +4010 +3954 +1265 +4361 +2068 +3759 +4652 + +11866 + +4305 +1270 +2941 +6582 +3164 +3522 +4611 +4191 +3659 +7416 +4855 + +5179 +8236 +3392 +11505 +8487 +4344 + +7032 +27996 + +5322 +4909 +4858 +1281 +5937 +1289 +4176 +5993 +2841 +2188 +4192 +3398 +1800 +2678 + +5789 +13043 +4951 + +4119 +10014 +8815 +6749 +4545 +7692 +8436 +6740 + +10382 +8802 +7279 +4950 +1653 +3537 +10285 +7896 + +9975 + +3544 +5188 +5111 +2576 +7568 +7371 +6930 +4818 +7435 +6810 +2847 + +52788 + +2951 +8272 +6521 +5428 +6863 +3722 +6443 +1114 +7114 +2776 + +4386 +1913 +7477 +2665 +7932 +4653 +5426 +4484 +1108 + +3541 +3719 +3868 +1077 +4637 +2936 +3503 +5201 +5315 +5940 +2278 +6496 +1172 +4755 + +6439 +5144 +6491 +1234 +1459 +1968 +5797 +4909 +5923 +6534 +5268 +2147 +5632 + +2993 +3284 +4366 +5384 +4598 +1051 +3969 +2961 +7025 +2727 +4233 +3326 + +9727 +15517 +19290 + +17096 +1375 +14129 +10456 + +4103 +6099 +2887 +2589 +2957 +6664 +6948 +5126 +2427 +3269 +2868 +6296 +4641 + +1935 +5903 +3249 +1842 +4289 +5319 +2667 +4309 +2668 +3080 +3400 +3762 +2166 +2408 + +7866 +7422 +14288 +15942 +6371 + +1693 +2509 +6586 +4294 +7542 +1271 +8072 +4193 +8047 + +1925 +1564 +6018 +6894 +3300 +4040 +4154 +1720 +5159 +5001 +1605 +6080 +2792 + +16335 +11723 +7586 +12891 +13423 + +12011 +11646 +5317 +2769 +9679 + +6924 +1571 +3645 +4124 +5594 +7185 +7705 +2532 +7397 +5459 +1037 + +3948 +4286 +6395 +2645 +1835 +4764 +2649 +3403 +2704 +4039 +4581 +5278 +4128 +6174 + +5567 +8309 +4782 +5394 +4052 +5453 +7241 + +8673 +2968 +6481 +3887 +8279 +7800 +2025 +4775 +4627 + +6856 +1361 +6648 +7563 +4239 +10679 +8050 +8027 + +4905 +11553 +2902 +12065 +5974 +9578 +9837 + +6128 +6201 +2999 +6195 +1121 +2830 +4668 +5007 +1825 +2830 +5287 +5471 +5759 +1805 + +6515 +17925 +23344 + +4610 +2265 +7019 +2395 +3396 +5131 +7067 +5803 +1994 +6492 +3618 + +7951 +1762 +7521 +4837 +1589 +6260 +5765 +7442 +6185 +2695 +5675 + +4104 +6509 +5143 +2862 +5655 +2104 +5772 +6257 +2689 +3244 +3501 +2054 + +3967 +1326 +5906 +2740 +3487 +6586 +2908 + +43279 + +4935 +6761 +6021 +4857 +3040 +1491 +3820 +2741 +7058 +3114 +5775 + +6458 +8250 +3691 +7478 +4003 +6917 +8033 +1181 +6882 +6533 + +12020 +5725 +24247 + +6550 +1033 +1841 +5367 +1621 +6554 +5355 +7437 +8079 +5876 + +9079 +12200 +16431 +8582 +15548 + +7910 +16510 +25149 + +2569 +3570 +6639 +1706 +7204 +4964 +3314 +1862 +4344 +3529 +7688 + +9213 +15614 +12172 +15703 +6499 + +4927 +2418 +4565 +2409 +5355 +1464 +4788 +2040 + +1499 +5180 +2638 +5857 +2693 +5068 +3382 +1202 +5745 +3817 +1174 +3182 +3011 +5823 +4302 + +1992 +1060 +1356 +5702 +2700 +2129 +4364 +5380 +2317 +2392 +1269 +6268 +3462 +5392 + +4601 +1395 +8724 +2017 +11000 +2414 +9399 + +5998 +4595 +1327 +9386 +6206 +2712 +9617 +5234 +7096 + +5436 +6415 +4210 +1032 +1825 +4408 +4903 +3803 +1197 +2849 +4106 +5611 +4553 + +3572 +6127 +6035 +6950 +4353 +1660 +2135 +2866 +1322 +4847 + +2181 +4407 +2006 +5437 + +3560 +4717 +5998 +6944 +2180 +6922 +8628 +2761 +3524 +2473 + +6215 +2369 +5907 +6959 +7105 +4982 +5255 +2650 +1834 +7016 +3072 + +1564 +6445 +6037 +6545 +4622 +6301 +1712 +2949 +3608 +3965 +2602 +5065 +6050 + +12326 +10342 +12805 +11947 +2641 +10687 + +15426 + +19377 +13829 +6477 +11837 + +7159 +7868 +6373 +10135 +10731 +6850 +5819 + +6938 +25628 +22954 + +5570 +5782 +8571 +7353 +2189 +6056 +2774 +7061 +6279 +1923 + +1200 +5306 +6067 +2575 +4613 +1321 +1525 +1545 +1059 +5337 +1920 +1367 + +9230 +8121 +5933 +11082 +5561 + +6447 +3340 +6950 +2194 +3685 +5311 +3610 +4332 +6755 +4780 +1164 +4978 +2476 + +3111 +6078 +2022 +7748 +5569 +2895 +4911 +7478 +4002 + +2414 +3673 +3897 +11893 +4984 +3471 + +6240 +6211 +5245 +15319 +6704 diff --git a/1/onestar.py b/1/onestar.py new file mode 100644 index 0000000..f4fbbd3 --- /dev/null +++ b/1/onestar.py @@ -0,0 +1,11 @@ +with open("input.txt", "r") as f: + biggest = 0 + count = 0 + for line in f.readlines(): + try: + count += int(line) + if count > biggest: + biggest = count + except: + count = 0 +print(biggest) \ No newline at end of file diff --git a/1/twostar.py b/1/twostar.py new file mode 100644 index 0000000..2a80525 --- /dev/null +++ b/1/twostar.py @@ -0,0 +1,19 @@ +top_three = [0, 0, 0] + +def insert(calories): + top_three.sort() + if calories > top_three[0]: + top_three.pop(0) + top_three.append(calories) + +with open("input.txt", "r") as f: + count = 0 + for line in f.readlines(): + try: + count += int(line) + except: + insert(count) + count = 0 + insert(count) + +print(top_three[0] + top_three[1] + top_three[2]) \ No newline at end of file diff --git a/2/input.txt b/2/input.txt new file mode 100644 index 0000000..6ec569e --- /dev/null +++ b/2/input.txt @@ -0,0 +1,2500 @@ +B Z +A Z +B Z +C Z +C Z +B X +A X +C X +A Z +C Y +C X +C Y +C Y +A X +A Z +A Z +A X +B Z +B X +A Z +A X +C Y +A X +B Z +B Z +A X +C Z +A Z +A X +B Z +A Z +A Y +C Y +A Z +C Z +A Z +C Y +C Z +C Z +A Z +A X +A X +B X +A Z +B Z +A X +A Z +A Z +A X +A X +C Y +A Z +B X +C Y +A X +B Y +A Z +A X +A Z +A X +C Z +A Z +A Y +A X +C Y +A X +B X +A X +A Z +C Y +A Z +A X +C X +C Z +C Z +A Z +A X +A Z +C X +C Z +B Z +A Z +C Y +C Z +B X +A X +A Z +A X +A X +C Y +A Z +C Z +B X +A X +A X +A Z +A Y +A X +C X +A Z +B X +C Y +A X +A X +A X +C X +B Z +B Z +A Z +A X +A Z +C Z +C X +C Y +B X +C Z +A Z +C X +A Z +A X +A X +A X +A X +A Z +B X +A X +B X +C Z +A Z +A Z +A X +A X +A X +B X +A Z +A X +A Z +A X +B Z +A Z +A X +B Z +A Z +A Z +C Y +B Z +A Z +B Z +A Z +A X +C X +A X +C Y +C X +A X +A X +C Y +A Z +A X +B Z +A Z +A Z +B X +B Z +A X +A Z +A X +A X +A Z +A X +A Z +A Z +C X +A Z +A X +C Y +A Z +A Z +A X +A X +A X +A X +B Z +B X +A Z +A X +A Z +C Y +B Y +C Y +B X +A Z +A Z +A Z +C Y +A Z +A X +B Z +C X +A X +C Z +C X +C Y +A Z +A X +A Z +C Z +A Z +A Z +A Y +C Z +A X +A X +B Z +A Z +C Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +A X +A X +A X +B Y +B X +A X +A Z +A Z +A X +A Z +A X +A X +A Z +B X +A Z +C Z +A Z +C Z +A Z +A Z +C Z +A X +C Z +A X +C X +A Z +A Z +B Z +A Y +B Z +A X +B Z +A Z +A X +A Z +A Z +A X +A Z +B Z +C X +A Z +A X +B Z +C Y +B Z +C X +A Z +A Z +C X +B X +C Z +A Z +A X +A Z +C X +A Z +C Z +C Z +B Z +B Z +A Z +C X +A X +B Y +A Y +A Z +C X +B X +A Z +A Z +B Y +A Z +A Z +C Z +A Z +A X +A Z +B X +C Z +B X +A Z +B Z +C Y +A X +A X +A Z +A Z +A Z +C Y +A X +A Z +A Z +A X +B Z +A Z +C X +C Z +A Z +A X +B Z +A X +C Y +A X +A Z +A Y +C Z +A Y +A Z +C X +C Y +A Z +C Y +A Z +A X +C Y +A Z +A X +A X +B Z +A X +C X +A X +C X +A X +A Z +A X +A Z +A Z +A X +C X +C Z +A Z +C Z +C X +A Z +C Y +A X +A Z +A Z +C Y +A X +B X +C Y +B Z +C Y +A X +A X +C Z +A X +A Z +A X +A X +C X +A X +A Z +B X +C Z +A Y +B Y +A Z +A Z +A Z +A Z +B Y +A Y +A Z +B Z +A Z +A X +C Z +B Y +C Y +A X +A Z +C Z +B Z +A Z +A Z +A Y +C Z +A Z +A Z +C Z +C Z +C Z +A X +B Y +C X +A X +A Z +A Z +B Z +A Y +A X +A Z +B X +A X +A X +A Z +A Y +A Z +A X +B X +A Z +C X +A Z +A X +C X +B X +B Y +B X +A Z +A Z +A Z +A X +B X +A X +B Z +A Y +B Z +C Z +A X +C Z +C X +A Z +C Y +C Y +A Z +A X +A X +A X +B X +A Z +A Y +C Y +B X +A X +A X +A X +C Y +A Z +A Y +A X +C Z +A Z +A Z +A Z +C Z +A X +A Z +C Z +B X +C Y +A Z +B Z +B Z +C Z +C Z +A X +A Z +A Z +B X +B X +A Z +A Z +A Y +C Z +A Z +A X +C Z +A Z +C Z +C Z +A Z +A Z +B Z +A X +B Y +A Z +A X +C Z +A X +B X +A Z +C Y +A Z +C X +C Y +A X +C X +C X +A Z +C Z +C Y +A Z +A Z +A X +A X +C Z +A Y +A Z +A X +B Z +A X +A Z +A Z +A X +B Z +A X +A Z +C X +A Z +A Z +C X +A Z +A X +A Z +A X +B Z +A Z +A Z +C Y +C Y +C Z +C Z +C Y +A X +A X +A X +A Z +A Z +C Y +A Z +C Z +A Z +C Z +B Z +B X +A Y +C Y +A X +A Z +A X +A X +A Z +C Z +C Y +C Y +A Y +A X +A Z +A X +C Z +A X +A Z +A Z +C Y +A X +A Z +A Z +A X +B Y +A Z +A Z +A Z +A Z +C Y +A Z +A X +A X +A Z +A Z +C Y +A Z +A Z +B Z +A Z +A X +A X +A Y +C Z +C Z +A Z +B Z +A Z +A Z +A X +A X +C Z +A Z +A X +A X +A Z +A Z +B Y +A Y +C Y +A X +A Z +C Z +C Y +A Z +C Y +A X +A X +A X +A Z +C Y +C Y +A Z +B X +C Y +A Z +A X +A Z +A Y +C Y +C Z +B Z +A Z +C Y +A X +C Z +A X +C Y +C Z +A Z +C Y +C Y +A Y +B X +A Z +C Z +B Z +B Y +A Z +C Y +A X +A Z +A Z +C Y +A Z +C Z +A Z +A Z +A X +A Z +A Z +C Z +A X +A Z +C Z +C Y +A X +A X +C Z +C Y +A Z +C Y +A Z +A X +A X +A Z +A Z +A X +A Z +C Y +C Z +A Z +B X +C Z +A Z +A Z +A X +B X +A Z +A Y +A X +C Z +B X +A Z +C Y +C Z +C Z +C Z +A Z +A Z +A X +A Z +C Z +C Y +A X +A Z +A Z +A Y +A X +A Z +A Z +C X +B Z +A X +A Z +A X +C Z +A X +C X +A X +C Y +C Y +A X +A X +A Z +B Z +A Z +A Y +B Z +A X +C X +A X +C X +A X +C X +A Z +A X +A X +A X +C Y +A X +A X +C X +C Z +A X +B Y +A X +B Z +A Z +A X +C Z +A Z +A X +A Z +A X +C X +C Z +A X +C Z +C Y +C Y +A X +A X +A X +C Z +C Z +A Z +C Z +A Z +B Z +A Y +B Z +A X +A Z +A Z +A Z +C Z +A Z +A X +A X +B Z +A Z +C Y +C Z +B Z +C Y +C Z +A X +A X +C X +B X +C Z +A Z +A Z +C Z +A X +A Z +A Z +B X +B Z +A Z +A Z +B Z +A Z +A Z +B Z +B Z +C Z +A Z +C Z +A Z +A Z +C Z +A Z +A Z +B Z +A Z +A X +A X +A X +A Z +C Z +A X +A Z +A X +A Z +B Z +B Z +C Z +A Z +A Y +C X +A X +A Z +A X +A X +C X +C Z +B Y +A X +A X +C Y +C Y +A X +A Z +A Z +B Z +B Z +A Z +C Z +A Z +C Z +C X +A Z +A X +A Y +A X +A Z +C Z +A X +A Z +A Z +A Z +A X +C X +B Z +A Z +A Y +C X +A Z +A Z +A Z +A X +A Y +A X +C Y +A Z +C Y +A Z +A Z +C X +A Z +A Y +C Z +A X +A X +A Z +A Y +A Z +A X +C Z +A Z +A Z +B Z +A Z +A Z +C X +B Z +C Y +A X +A Y +B X +A Z +C Z +C X +C Z +A X +A X +A Z +A Z +A X +A Z +B Z +B Z +A Z +B Y +B Z +A X +A X +C Z +A Z +C Y +B Z +C Z +C Z +A Z +A X +B Z +A X +A X +A Z +A Z +A X +B Z +A Z +C Z +A Z +A Z +B X +C Z +B Z +C Y +A Z +A X +A X +B X +A X +B Z +C Y +C Y +B Z +C Y +C Y +A X +A Z +A Z +C Y +B Z +A X +A Z +A X +B X +A X +C Y +A X +A X +B Z +A X +B X +A Z +C Y +B Z +A X +A Z +A X +A X +B X +A X +A X +A X +A Z +A Z +C Y +A Z +B Z +C Z +C Y +C Z +A X +A Z +A X +C Z +C Z +C Z +C Y +A X +B X +B X +C X +C Z +C X +C Z +B Z +A Y +A X +C X +B X +A X +A X +A Z +A X +A Z +A X +A X +A Z +A Z +C Z +A X +C Y +C Y +C Z +A Z +A X +A Z +A X +A Z +A Y +A Z +A X +A X +A Z +A X +A Y +A Y +C X +A Y +C Y +C X +A Z +C Z +C Y +C Z +A Z +C X +A X +C Z +A Z +C Y +B Z +A Z +A Z +A Z +C Y +A X +A X +A Z +A Z +A Z +B Z +C Z +A X +C Y +A X +A Z +A X +C X +C Z +A Z +C Y +A Y +A Y +A Z +A X +A Z +A Y +A X +C Z +A Z +A Z +A X +A X +B Z +B Y +B Y +C X +A Z +A Z +C Z +A X +A Z +C Y +B X +C Y +A Z +A Z +A X +A Z +A X +A X +C Z +A Z +A Z +A X +A X +C Y +A X +A X +C Y +A Y +C X +A X +C Y +A Y +A Z +B Y +A X +C Z +B X +A X +C Z +A Z +B Z +A Z +A Z +C X +A Z +B Z +C X +A Z +C Y +A Z +C Z +A Z +C X +A X +A Z +A Y +B X +A X +B X +A Z +A Z +C Y +A Z +C Z +A Z +A Z +A Z +C X +A Z +B X +A X +A Z +C Z +A Z +A X +C Y +A Z +C Y +A Z +A Z +C Z +A X +A Z +A Z +B X +A Z +A X +C Z +B Y +A Z +A X +C Z +A X +A Z +A Z +A Z +C Z +A Z +A Z +C X +A X +A X +C X +A X +A X +B Z +A Z +A X +B X +A X +A Z +C Y +A Z +B X +C Y +A X +C Z +A Z +B Z +A X +A Z +A Z +C Z +A X +C Z +A X +C X +A Y +A X +A Z +C X +A X +A X +A X +A X +A Z +A X +B Z +C Z +C Y +B Z +B Z +B X +A Z +A X +B Z +A Z +A X +C Z +A Z +C Y +B Z +C Y +A X +C X +A X +A Z +C Y +A Z +A X +A Y +C Y +C Y +A Z +A Z +C Y +A Z +A Z +A X +C Y +B Y +A X +A X +A X +C Y +B X +A Z +A Y +A Z +A Z +A X +C Z +A Z +A Z +C X +A Z +B Z +B X +A X +C Z +A X +C Y +A Z +C Z +C Y +C X +C Y +A Z +A X +A Z +A Z +A Z +B Z +A Z +C Z +A Z +C Z +B Z +C Z +C Z +A Z +A Z +B X +A Z +A X +A Z +A X +A Y +A Z +B Z +C X +A Z +A Z +B X +A X +C X +C Z +A X +A Z +A X +C Y +C Z +A Z +C Y +A X +A Z +A Z +B Z +C Y +A Z +A Z +C Z +A X +C X +A Z +A Z +A Y +C Z +C Z +A Z +A X +B Z +A X +A X +A X +A X +A Z +A Z +A X +A X +C Z +C Y +C Y +C Y +A Z +C X +B Z +C Y +C Z +A X +A X +A Z +C Z +C Z +A Y +C Y +B X +C Y +A X +A X +A Y +A X +A Z +A Z +A X +A Z +A Z +A Z +A X +A Z +B Z +A X +A X +A X +C Z +C X +A Z +C Y +C Z +A X +A Z +A Z +A X +A Z +A X +B Z +A Z +A Z +A Z +C Y +C Z +B Z +A Z +B Z +A X +A X +A X +C Y +A Z +A Z +A Z +C X +A X +A X +A Z +A Z +A Z +A Z +B Z +A X +A Z +A X +C Z +A Z +A Z +A Z +B Z +A Y +A Z +C Z +B Z +C Y +A Z +A X +C Y +A X +A X +A Z +A Z +A X +B Z +B X +C Z +C Z +A Y +A Z +A X +A Z +A Z +A Z +A Z +A Z +B Z +A Z +B X +A Z +A Z +C Z +B Z +A Z +C X +B Z +C X +B Z +A Z +A Z +A Z +A Z +A X +B Z +A X +B Z +C Y +A Z +A Z +C X +A X +A Z +A Y +A Z +C Y +C X +C Z +A X +A Z +C Z +A Z +A X +A Z +B Z +A X +A Z +B Z +C Y +A Z +C Y +A Z +C Y +B X +C Y +A Z +B Z +A X +B Z +B Z +C X +A Z +C Z +A Z +C Z +A Z +C Z +B Z +C Y +C Z +A Z +C Y +A Z +C X +B Y +B Y +C X +C Y +A Z +C Z +A Z +C X +A Z +A Z +C Y +A Z +A Z +C X +A Y +A X +A X +B Z +A Z +C Z +A Z +B Z +C Y +C Z +A Z +C Y +B X +C Z +A X +C X +C Y +C Y +C Y +A Z +A Z +B Y +C Y +A Z +A X +A Z +A X +A Z +C X +C Z +A X +C Z +B X +A X +C Z +A Z +C X +A Y +A Z +A X +A Z +C Z +B Z +B Z +A Z +C Y +A Z +C Z +C Y +C Z +A Z +A Z +B X +C X +C Z +A X +A Z +A Y +C Y +A X +A Z +C Y +A Z +B X +A Z +A Z +A Z +A Z +C X +A X +A Z +A Y +A X +B Y +A X +A X +A X +A X +B Z +A X +C Y +C X +A X +A Z +A X +A Z +A Z +A Z +A Z +A X +A Z +C X +C Z +C Z +A X +B Y +A X +C Y +A X +C Z +A X +A Z +A Z +A Z +A Z +C X +A X +C Y +A Z +A Z +C Y +A Z +A X +A Z +A X +A Z +B Y +C Y +B Y +C Y +A Y +A Z +C X +B X +A X +A Y +C Z +A X +B Z +A X +A X +A Y +A X +A Z +A Z +C Z +C X +A Z +C Y +A Z +A Z +C X +A Y +A Z +A X +A Z +A Z +C X +A Z +A Z +A Z +C Y +A X +A X +A X +C Z +A Z +C Y +A X +A X +C Y +C X +C Y +A Y +C X +A Z +A Z +A Y +C X +A Z +A Z +A Z +C Y +C X +A Z +B Z +A Z +A X +C Y +A X +C Y +C Y +A X +C Y +A X +C Y +B Z +A Z +A X +A Z +A X +A X +A Z +A X +A X +C Z +A Z +B Y +C X +B X +B X +A Z +A Y +B Y +A Z +A X +A X +C Y +C X +B Z +A Z +C Y +C X +C Y +A Y +A Z +C X +A X +A X +A Z +A Z +B Z +C X +A Z +B Z +A X +B Y +C X +A X +A Y +C X +A X +C Y +A Z +A Z +A X +A X +C Z +C Z +B Z +A X +B Z +B Y +A Z +A Z +C Y +A Z +B Y +A Z +A X +C Z +C Z +A X +A X +A X +A Z +A Z +C Y +A X +A X +A Z +A X +C X +A Z +A X +B Z +B X +A X +A X +A Z +B Z +A X +A Z +C Y +C Y +B Z +C Z +A X +B X +B X +A Z +A X +A Z +C Y +A X +A X +B Y +C Y +A X +A X +C Y +A Z +A Z +C Z +A Z +B Z +A Y +A Z +C Y +B Y +A X +C X +A X +C Z +A Z +A X +A Z +A Z +A X +B Z +C Z +A Z +A X +C X +A X +C Y +B Z +B X +C Z +C X +A X +A X +A Z +A X +C Y +B Z +A Z +C Z +A Z +A Z +A X +B X +A X +A Z +A X +A X +A Z +A Z +A Y +A Z +C Z +B Z +A X +A X +A X +A Z +B Z +A Z +A Z +C Z +C Y +C Y +A Z +A X +A Z +C Z +A X +A X +A Z +A Z +C X +B Y +A X +B Z +B Z +A Z +A Z +C Z +C Z +A X +A X +A Z +C Z +A Z +C Z +B X +A X +A Z +A Z +C Z +A X +A Z +B Y +B X +A X +C Y +C X +C Y +B X +A X +C Y +A Z +B Y +A Y +A X +C Y +A Z +A Z +A Z +A Z +A Z +C Z +A Z +A Z +A Z +C X +B X +C Z +A X +B X +A X +C Y +A X +C X +A X +A Z +A Z +B X +A X +A Z +A X +C Z +A Z +A Z +A X +C Z +A Z +C X +A Z +A Z +A Z +A Z +B Z +A X +A X +C Y +A Z +A Z +B Z +A X +A Z +A Y +A Z +C X +B Z +A Z +A X +B Y +A Z +A X +C X +C X +A X +A Z +A X +A Z +B Z +B Y +A Y +A Z +C Y +B Z +A Z +C X +C Y +C Z +C X +A X +A Z +A X +A X +A Z +A X +A X +A X +A Z +C Z +C Y +A Z +A X +C X +B Z +C Z +C Y +C Y +A Z +A X +A Z +A Z +A Z +A X +A Z +A Z +A X +C Z +A X +A X +A Z +C X +B Y +A X +C Z +A X +C X +A Z +A X +A Y +C Z +A X +A Z +C X +B X +A Z +A Z +A X +A X +A Z +C Y +C Z +A X +A Z +C Z +C X +A X +A Z +A X +A X +B X +C Z +B Z +A Z +A X +A X +B Y +A Z +A X +A X +A Z +A Z +A Z +A X +C Y +A Z +C Y +A Z +A Z +A X +C Z +A Z +B X +A X +C Z +A X +A Y +B X +C X +A X +A X +A Z +A X +A X +A X +C Y +A Y +A Z +B Z +B Z +B Z +A Z +A Z +A Z +A X +B X +C Y +A X +A Z +C Z +B Y +A X +A Z +A Z +A X +A X +B Z +A X +C Y +A Z +A X +A X +A Z +A Z +A Z +A Z +A Z +A X +A Z +A X +A X +C Z +A X +C Z +A Z +C Y +A X +A Z +C Z +A Z +A Z +A X +A X +A Z +A X +A Z +B Z +A X +A X +C X +A Z +A X +A Z +C Y +C Y +C Y +C Y +C Z +A Z +B X +C Z +A X +A Z +C Y +A X +A Z +B X +A Z +C X +C Z +C X +C X +A Z +A Z +B X +A Z +A Z +A Z +B Z +A Z +C Z +A X +A X +A Z +A X +A Z +C Z +C Z +A Z +C Z +C X +A Z +A X +B Z +A X +B Y +C X +A X +A Y +A Z +A Z +A X +A X +A Z +A X +A Z +A X +A Z +A X +A Y +A X +C Z +A Z +A Z +A X +A X +A Z +A X +C Y +C Z +A Z +A Y +A Z +A X +A Z +C X +B X +A Z +C Z +B Y +A Z +A Z +C Y +A X +A Z +A Z +C Z +C Y +A Z +B Y +A X +C Y +A X +A X +A Z +C Z +A Z +A Z +A X +C Z +A X +C Y +C Y +A X +B X +C X +A Y +A X +A Z +B X +A X +B Z +A Z +A X +C X +A X +B X +A X +A Z +A X +C Y +A Z +C Z +C Y +A X +B X +C Y +C X +A X +A Z +A X +A Z +A X +A X +A Z +A Z +A X +A Z +A Y +A X +A X +A Y +A Z +A Z +C Z +A X +A Z +A X +A X +B X +A X +B Y +C Y +A Z +B Z +A Z +B Y +A Z +C Y +A Z +A X +A X +A Z +C X +C Z +B X +A X +A Z +A X +A Z +A Z +B X +A Z +A X +C Z +B Y +C Y +C X +A X +A Z +A X +C Y +A Z +C Z +A X +A X +A X +A Z +A Z +A Z +B X +C X +A Y +B Z +A X +A Z +A Z +C X +C Y +A X +A Z +C Y +A X +A Z +A X +A Z +A X +A X +B Z +A X +C X +A X +A X +A X +A Z +A Z +A X +A Z +C Y +C Z +B Z +B X +A Z +A X +C X +C Y +A X +B Z +B Z +A Z +B Z +C Y +A X +A X +A X +C Y +A Z +A X +A Z +A Z +A Z +A X +A Z +A X +A Z +C Y +A X +C X +C Y +C Y +C X +A X +C Y +A Z +C Y +B Z +B Z +C Z +A X +B X +C X +A Z +A Y +A Z +B Z +A Z +B Z +A X +A X +A Z +A Z +A Y +A Z +A X +A Y +A Z +A Z +A Z +A Z +B X +A Z +A Z +A Z +A Z +C Y +B Y +C X +A Z +B Z +B X +A X +C Z +A Z +C Z +A Z +A X +A X +A X +A X +A X +A Z +C Y +A X +C X +A Y +C X +C X +A X +A Z +A X +C Z +A X +C Y +B Z +C Y +C Z +B X +A Z +C Y +A Z +C Y +A X +A X +A X +A Z +A Z +A Z +A Z +C Z +C Y +A X +C Y +B Y +A X +A X +A Z +C Y +C Z +A X +A X +A Z +A Z +A X +A X +A Z diff --git a/2/onestar.py b/2/onestar.py new file mode 100644 index 0000000..a2da056 --- /dev/null +++ b/2/onestar.py @@ -0,0 +1,29 @@ +# The score for a single round is the score for the shape +# you selected (1 for Rock, 2 for Paper, and 3 for Scissors) +# plus the score for the outcome of the round +# (0 if you lost, 3 if the round was a draw, and 6 if you won). + +scores = { + "X": 1, #Rock + "Y": 2, #Paper + "Z": 3, #Scissors + "A": 1, #Rock + "B": 2, #Paper + "C": 3 #Scissors +} + +score = 0 +with open("input.txt", "r") as f: + for line in f.readlines(): + hands = line.strip("\n").split(" ") + theirs = scores[hands[0]] + ours = scores[hands[1]] + score += ours + if ours > theirs and not (ours == 3 and theirs == 1): + score += 6 + if ours == theirs: + score += 3 + if ours == 1 and theirs == 3: + score += 6 + +print(score) \ No newline at end of file diff --git a/2/twostar.py b/2/twostar.py new file mode 100644 index 0000000..baa5d36 --- /dev/null +++ b/2/twostar.py @@ -0,0 +1,31 @@ +# X means you need to lose, +# Y means you need to end the round in a draw, +# and Z means you need to win. Good luck!" + +scores = { + "A": 1, #Rock + "B": 2, #Paper + "C": 3 #Scissors +} + +score = 0 +with open("input.txt", "r") as f: + for line in f.readlines(): + strategy = line.strip("\n").split(" ") + theirs = scores[strategy[0]] + victory = strategy[1] + ours = 0 + if victory == "X": # Lose + ours = theirs-1 + elif victory == "Y": # Draw + ours = theirs + score += 3 + elif victory == "Z": # Win + ours = theirs+1 + score += 6 + if ours == 0: + ours = 3 + if ours > 3: + ours = 1 + score += ours +print(score) diff --git a/3/input.txt b/3/input.txt new file mode 100644 index 0000000..fd343d8 --- /dev/null +++ b/3/input.txt @@ -0,0 +1,300 @@ +BzRmmzZHzVBzgVQmZLPtqqffPqWqJmPLlL +hpvvTDcrCjhpcrvcGGhfLHMlLtMCqflNlWPJlJ +hGjhncHhGnhbTHczBBZVVSbRwgSgRV +rWVQjPQQjGRWNSrWrPjcptwBpqqJBtJBBcZgMdtq +zzmmpzfTCFpTlMlJJwBgMlqMBt +TvLszpbhhTLmsnRQPDQGWDWRvQSR +zGzvLlGlQHLGBQZlhBWhdjRdmdWRcjPj +fTJNfTfNSRWPhjdjfj +pbsbVVnpSnbVTprnbqqrzvLLgQlGLPLHll +ZCCCsWvNvmsCsCmZLZmgMLRpQMhwQRpQRfphfprpTfpM +tlncPjzlndctbzcPPBcjwDphwrfGGDffbDRpDTGG +cdqnddwzqjNVWVLZZLZq +DTLbDbRrlQbwhhNrmmfwdt +zzMJMzjCjJJjvLjMPJpcgPpzfhHdfqWcqddwtwfqdttcNtdN +pJCzVpCvDZBLsVRQ +STzBBbJzRRBZBRTqCCsfZLtNNLClCsfh +jsQnnQjjHcvQFrcPwCmtLCNlvDfftfff +sGFscMQQMMpqzqbMbd +QlNDWGsjQjgQllWQsbtzqTJczTJcbFmmFJJP +MhLrhgLVndRmzJFzVqqJqP +pSLnMdwhwdRZRSwhLZwLhdGWQjlsgWjNQWWSvgBsWDlj +THjSRFSddTjdBTcPLcVVvVBw +GzWnWfndWfznDfsnsBsPVwVwPPLL +zNflzJWqqzQDdSStHNZNpFFtbj +FSzDmsFSFlDlBzqVjqHHjHHpVgHLbp +rTrTtTQQntRQnQJQgggHZttVgHLBLhZL +WTJJRRQCRRJTRdBCRdvRNDFSWFMPmDlPPSsNPSzS +WQldlMtMVQgVMQHnDGbHGGnRnQmD +rqcZPrCFjmHlbGjZ +zSScchqwchBzTzFzhhSlcCwNtdVWWJgsVdMtWNgNVWTJTd +lMZqjMWllrTTspjprWWSSwgWNSVNDmWGVwFwgN +cdCCdLHcnndHJnmCRntLBnRzDvFNtNDVzgSgwDgFNVzFVv +BRLcCCJCmJdcRhfjPPZphrlrPqlZ +GdGqcrrZGDrvDJJqJHcBvmFFgmFMMgMgBtMLTssLmF +NbPVPDlljPmTmsTj +VfQDhflCCRWdcrQwJvvnJv +RLcWgLCqqPQLcqZwzHgwmmrmmtgwTw +DhbhNrMpnJSDJwVTHmmTVnTTVj +lrsvblMDlcWcfQPQ +PVldlphHwGwJJGdjZZWsRbbsGsNWrWQbNbQR +SqcDvTmDLtfmSmtqppfqzTgTQBrRQsbCFWbNNFQFBBrRbLNb +MgtmTgtfpqVlnVddZMwV +BdmfmPBPSbSNdGSdvWrwcZrccZPPcZnH +jzzLsjsMRlQQVHwswvvZrCHrrT +VqhzVFzplFlpLwpMphLRQQVRmSqgbdGtNJBmNSmgGbtggSgt +DHVpNZjdZjFZWVFHpvFvzmlRzPnlfznFRz +lrTBTsBwwMbrrwLPPfwGmGzvRf +scrtMhMCtJBBBclbHdHttWZWDSqDSjHj +wzqsPmqsbsfqBwPMNRMMZcZmFFNtZM +CgCnhlvvLJgcRFNNBdCpWM +QnQrVgHSvVHjbjTGBbbTHb +HdrVrdqFDdZVmHgRmDRFHMnTdTssMGnLnPJLbPTbCs +SczlScjwcNzplNzQSSfjwQSrTGGsbTsnTCnGTMCMLMGGbN +wQlfjrhfhQFHqZhRZRtD +RsfJDGJvzPNcjpddSWJWMd +LLCbBCwCrCmVVnrmhQFmbVhdcdlWpjZzSpMdWSpcWczSBj +rrLCbTwnHTvzvNGT +wPhPhbCqqSCrtJDlqvlrJr +RVVZddLFRZZcQLvJJtzptlgPJp +TVQRZGVncFdTGWZdCNShHhfPNwwsWPwb +dzLVzPSgrgDDDCMSMLLPwFmdTTcsvmwNwjNsHcFF +nWBGntQfGNGBflWBBqlpRQGbWFvjwsbsFswbvTHjjbmHTc +tBNJBnGBflQnDPJrPhDgrPVg +VtWztWtqpqzWpWzqjNRjNpWTmrrmrSbnmJwSJwnMPrCSJVwM +sDHsBDhBdsBZGcHvLHDLhhCSnRSwCJMZrPbmnMbJSCSR +ccLRhgsLBdRsdHNTFFNNgqTglqzF +hztlmDhPhgPlPNNgmZMCbmwwQjcwjjwMjVCd +RSJRrRqnqQJFqvnTGrHCcHHCCHHbHHMcMvdM +qGJsnQTRsStsftPlhPNl +BFFBLPRCwsLwhlPlRmhcGGrbmmGjfNTTnp +VJMVpzgqggJnrjmjNcMjmT +VqdSZtQgZvtdzqHqHtVZdVQpCDWWFdwlRPDpWPPBCswlWD +fCWCsjPzcbzwRSzVTzhhDLqvdg +TmJtrNJrBLSLJqgS +ptNTQFHrZlnpFPwsWMbRjCpcjR +nJmQNCmbmlllmbClbfMLjMFqbGBsdLFq +ZcgTWcTnMqqMTBqF +tPgctSnPctZZgDWzZgQHwNmHlhlmzlQhlJlw +ZpTCwpffdslvgShCBhqhRz +FDMPnNFNmBPzvRPRBg +nNgMrnnDGjDmJMmnFdZTTsdsrZrslcwcQr +pTmczpCldcdDDnPttpvWSqbpJf +jgjRZMGHhGLgQrjvPWzPJgJvzStbbq +LGNLLNBBzcDFCBwwFC +nJTTqnrNvTzNMzzNfqrTPrJnwpwPpZpsHccZVsBRpcVHwpcp +bgDhgbghLWmFmStctVpZtBCVCCpfZp +LLSgLGSjggFGbSSbmMnrvqvzjfzTNrJrqM +RRpDmmPMTjwfGmJQgQ +WsNscdnvvdVZFVnnrZbjjflwljlbzfGFjQjq +NnLZsNnrrVVVcvdBLTPCPCRMwhPMBMPhCt +lbVvzngGJnVbJHpHtHNPpdSQvc +TsMBswFZsWMWBZMNwPtNNtRNHcNpSQ +CcZCTrZDsjZTsTsshWhrWrTnfgbLDfJzVVLVVlgfnzfVGV +JzTTRtJRZWmWjrMHCT +DDFGlLGcGlSSSLsFGBspPBmNMBHMghmWNmWjWCmWtH +nSSpnbsGlLDnpPsSSspFtVvffRQdVzqvvbqdfVQwRz +sMhzszlHHDsWbthHDqsbJjpLNtmjVJmVLLVLVLBp +nrTPrGwfPLdprzJzdL +wgPQcTGGzgccwCgnRwgRChFhlWSDqWWQMWhssSsMQl +NSNmwtpSpCpvMphCsr +PHcRGPLJMrsvzsqG +QHjbnRMcfbPbQZmlZgZlgBBQ +cPRPbhQjbQRdtPQdLqLHqzFZjCFCqLjC +mmfsnnwrfvwrfSNZFzHHLDCFNlLlqDlN +wsmrwswwGTffMrBnmQttJtcMZQQtPJPbZc +MvBPDDRRdnnvHPCHZLHZsFLL +rmJcbVqbcjWwWjQHLzTZFTHSzFrpsz +cmwllVqqGJbVVVmmqbQcmgRnRvGhGfgDRDZBBBvRdd +nMvMhMnvhnbTZWSSZgHmGJDFmmNDzBmbNmdGBN +rCsPLRCssRjrLLsrLlwRVrcNJQfDQfdBmmfNBGJNzmDPfB +CRjCpLltgtJgJJWq +jshCzJpjzTPpmCWvSlpfwHfSWglf +LQMMNMnHtDtLVRvwwgRWlldgWD +qHVrQNHVMFQtrrBBQMBcrrZsZbzCZhbbJZJsmmsmFPTC +JZQZnsQNMqTngZqJBVfBfPPVBNrwvfPw +SSmDstFjpDpCszDjcLLhrPVlGlrGGVBwrvwVPt +FSssFcLjFjbmFFCzjLcFLRDnMJnTHRnZZTdWqZZWnMnRnZ +GbHRHpldwGMpWhHpCMBlCbRdVSLhnqJLSrDPLPPLPDqVDrhh +gvjWWQvgZFtQFFNqLnVnDnSJzzztDD +ZccccfTsffHdWWdRWwsw +ClCtbHMlnnPPlszV +gSDWSLgWQWQJJNWqgtQjPsnfcdVcLVdVdzfzVzff +WQgqtFQgDgQSFqJhqhSJvNDRrZMZHwHMCbZhTpZbGHMTMG +pZJZlCQtHFhPfdNfCh +zcmLSVczwcMcLDNFHdLPhPWH +szvVVnBmnTGQtHTQ +RVVCNDlNGzlGZqHGHWqWhGqQwH +ZFLFTmpLvvmSqsbb +TrfpBfJpJMlnnNfNZD +qHHlDClHhltMqQsHDhHslGznwdTnzzwDGSdfnwGnwG +mZRNcNcLLPNPBFFbbPmLmbZFSCVfJJTVndVfSwnRzznfTwCS +CcCWFbbBLCWtgWgHjghqvv +TjbzlnlFmfqCFFVVCRWr +PhMcLpPDtMLpwPDvLPJbMhSgVCGqggVqQgCqCgCgSWvv +btbZbNZhJDJJhDtwtsTTTmBzzBBmlNlmHj +FqhjWtqlqmmsnFPTCvMCQMTTCjQd +pfffRfLpgrgGgzrNVzzpGVzRCdMCPJbwwcVMbQPCJVMVdbww +DGGDZRGrHggzSsFQnnWShmtH +vtHVVMMrvVMVrSHvLgvlHcZFCnRCZcccZtRRZfJFCJ +rdDjGsdTQDcNZfdncCRR +rBDsTwBbjbmbbQswswPhqVmmSvpVhlvvqMhHhh +vGBLrqMNvqSLBvvrNbllLHfwStWWtFttccjtRtjtcj +MhCDJmhMDzmcRRcjzWfztH +ZQDmDhVVCQbBVdVNMvvv +ptCtCzhWPWptnhVzzpGZbZTjTjVjFGjVFgVl +fQswRRffmRqZlgrqqFjjSgGg +HwsQDNNsDsmRLLHmffsfvHptBnhtzCvhWpZWBdhnMdCh +RlHzzTqczBPfbnvcpB +wVtNwpSZstppwwMsZhsdnLvnbtBBmbnLFFdnmF +WNQJMVWsZWwGJWhhSNrQzlgHrDCgQRHpCHrl +RrZWpJZRrZpdTGstlchLGGlLMd +NqjDPCQPnQCSvtMzSLhhjM +nQVQDDDDfwBwNCVCNVFNpWpgJgrRTmLTmTmgRTWF +SHMcrMHpcjGcjSrMMbvSvvSvwFTLJwJNtFGFWJNtDLFTLfWN +zqRnPfzQCRzqsmRPzznhszzLtLwQwwFTgWWLDLgWFTwTNQ +qVPZmRZhsCZPhZlRCqRRRCbfpccMBjvMVjdHjjMjSvdf +VVQdHwBZLVltlddtBczhrzvGcWWFRwgsFG +TDTTTqqTSSqjqnmTmPqPPmTmGhRszvsrzsjRsccgzrRzgWGF +DpJPqpWqHbZpllpt +cCSCFsnnZFnscDtNdJFJtJtdmb +VgBqBsqRrHtNdzmNrt +BGLLVVjRBsqPBfsGwPsMfSSZCSfTZTZQpSphfS +plCHCHlgglHHGpNbtngNrDvBDpfQDBQfZDfWZVrr +mTmMLhRfwhsLPQvQZDMZQBQWMB +cwsssmqRTFFfFgtbCtGl +LQPPrCPnMZwqtRMn +cWTSlJWlcplJdDTdGdpDlGcGgqmtwwZtqRrNRRmRdNZqmgNq +GSJcJSjsjTpsvWGWBHLLvVVBBBrFrzVz +NVPCSPMNDSNFVSWCsJJJmpGmZZGLLcpZLHGGtsHt +fwzlBBqghqvzqqlDrHbpHjZHmGZbLZrHLb +dnBgnDqQvwRnSnnFMFMP +BCbPsFFwCRHmDSBmWnvDDj +phhZVzdpVfQZphhZpRhSVnjmrcvvnrWtDrvWDS +TfQJMfLphMhJdfdzpQJRTPbwHHNlgbGwsTGgCP +ttWLlnnvnNnBBtlTqWlpvpndQdZsQQFssFDdsRFdVdRNFQ +jSgrScrbGZSGrrCGsFVMssFsPPFcDDMV +bzSmJbfCZCbzLwllflwqtvvw +zmFTJwFLPmzLztmjDzTJwfNrdFNrFppBSNRGNGdbrpBR +gqlhWQgsZMsvqMlMMvsvqsNlLbcdppbrRpdbbcSrrbbr +vssCgVgCsggZQZCgsnsqWgWvfJPDLwffwTPPmzTnjTPmPmwJ +SpcRTPQLBLWpNNzjmmwwwRrR +tGlfvGhfnbDlbqlChnfFMrwsmwNssTMHMHjFwv +ZlhtCtffCdWcZWZVVT +jTTCcWHWJNgCGTzTmnzrmnGn +BwRRbFvtvvQmJJFMpMJr +ZBBwLvqbBZsRsbVsZSqbcZdJjHHjhfPCJfJfHhgc +VrnDSvvrLrfTdTLGfdRp +zcJzmcFcHGfdGmWTVd +tHsMhwPVctccHFHFcbSDbbPjnNbBnbvBQB +QttWQwLTnLnWTtnffnLQSBFVjNvBjBFNgMdCsVWsjv +pDqcmmRPHqgVBddjvN +DcclzbcbPbJLnNTfnw +plRcpsZDGlGZvWvMCNcLtttq +SrfrwSjSVrSjwbmSrHzmHJCQQPQzqttNNQJMzJtqMW +wSHVnfHfWwwHWFVfSnfgmmRsslFZZDBBGZsZsDTdGRTp +qSFQSgQNgQBrBHHcrW +VTmjVJLTwlTmwTVmsMJMVlJmPvcbvvbCBbGBPjGvBbBGWcbb +DnJTZwmnZRhnpqNdWt +dTVHjZLLZDVCfVHtLDDjQbscjWbSJMJPjsbWWb +FnqrnmzzFllmsWwtsFtQMMFc +lmqzzzngGmlNNBqGllzlBNRvptHHpTCHpDLpgDZdgvHvDD +sdRZQbCfZTSTdlfTZCffccWPHPPcPPwLwctRnLWn +BBJDzFVgCDrCJrqDJJhqJVVMLPHwcctFwcWHHGLcwGwGHnWc +ghpJgqqjCZbQdZpd +tbcpzbHSszcHBgqHGZgJJJhhww +jfvdvRTffQQrrFCRFTnGwJRqNRZVpJGZLZggLh +nQTjTnMndlTdQFMvnrClCnpzmzDtbbmBbcPSzzlmmtzP +BqBqTCSTcqHsJHHM +WWPGVPLtzVgWtjWPGzVjzVGcbDhPsRbDcsbJwNRswRDRss +VQfWjfLFGWLjdFfVzTZZpJTpnmlTrSQlBl +jLNsZjqSHCsGdsmpsm +MvnVFzWMwMVWzfnVDwfBMfnnrCtdtPmPlRrdrJCJrtPDrrPD +zznfFWwMfMfFMwVTMQFnQjhjgjSZhCNbLSTcHHgbbC +GGtssttVmvnnGNMQrrVzgwVrCWMz +FdhfhhcCDhHLfzclZMcrwcQMZM +HHqqCBhHSSpdmjGqmGjtjtjj +bbQLtGMQQtQRQtrDtGprrrbCqwplZhhqSqmdwvdzqqqhSmpS +FsJjJBfnsJcFcFfjVPjWBzldqhqnlZZZzzhmnSvSnm +JPcFfFWjFHJVVsVjPVscsDlLNRHGDbLRMRCDNrCGbG +JdMdlMRJnTwdvcjv +CDLHbNSzzLFgHvnTjrswBNBTNT +QgbvzSFQmZQPQQRW +NTBrNzrpjjjCwGbB +FRbQlcvFvcRQQlRsMlRRRZjwCqMwjmjwJZdLJmjCZC +cVPPQcvlWDNhrbPz +VdbVtbbZJdtJVVdDVZmTLqqTSQvNLjjDShhvSG +zplpnBnFpnrrlghGNpLNqHvqvjNj +cWncllnlPFWzcMwtWWtsVLVRmJWCds +ShLSTnZnTSttTSbLQdfSZTMwcDHwwcHnJvDHnlnlclMM +NmPMsssRrVwjDclHJwwR +gNNMWGzNmqGdtfZTbGGb +sWNNlRHnmJtmntJt +brbbBTbbFbCbqqGgBTrCfmQVVZfSSQQSVtJZSrVZ +bbFqvbDvvGGLGbCCtBGDLbLlcPNHhhccPNcdPPchlsdR +DCFvDvnCnNfMBmMMslDZML +SQQQJHwpSgJSJHQWSWHqJWWbmcBBBLLTsmhhTcZbMhmlshcb +RJRgpJHssgwSQHRqsQPGGjjtNCrrFvvnFjjPrP +mThmsgjzTPjMpcvtWP +GNNBVqVGNZbbNbNqqZQVNVNbWcpdtMCcpCtMWCdCPpQccmpp +VSmNrmmbBfZVlsrssrLTRhRhTn +TdmCvLDCpTRNTdFbbWnnSWCfhjbbzn +GrrMsPVGcQHBGMbhjjSgWfHHDbjb +BPBVqqrQPsQqwrrmmmJdRLDDqFRplT +fpDDJljDlCfDTjprjrfbddWthCSCtdPPQFhSSSWW +HsLZgMGbgBBsNzMvGbdVtVQzFRQSthhFPdtP +sMBmGBmbNvLHGMnrDppTcJmcjpqljf +ptSpSJQqpbNGGDDhcMWrlNHcZZWWls +zRLRRRjvvgjHMMsMpWpc +vmCPLCgwvwdnCzmvLbpTbVQqJJPbJPpTVq +TJCfhhJVFffrJJQQllNWcvWhwvWD +GPSGjjpLslBbpLpLqqqPDvdwvwvNzQWGzDDNdzGN +msbRjbpPqsRpHnlZrmJlnVHT +GGfFsCCTvGDsfTTrhsCMMzptZJMdpdgtrpdMcV +LBlwBHPSqjwwlVggHpnMZcVHMt +ZlZZlBbRPGGTGfmRsD +CtCjbVvzQQZTWVdd +MlSqWlmsmGBSHJHTDFHZ +pcqsmsplwsqclwRtRWgtRnPPvb +zCrzCrsdjrhGDCFqGDjRRPtpWfQQcpfQZcCZPp +VSVwVMgLHHLTwMDTMMVnbWPRZQRcRQPptWnpbZcb +MNBBBlSMvLVwTlVTFdNdhNhFsqsGDrzm +rBLWTwTThWwVVDTwHBsZZWppvpGtpptppmRvFFFMFMfL +qPPNCCbqcbcNqbqQjjJQqzjRpptmlpMGmMlJtftmtFHpMt +QnCgzzQbbQqPcPQnncbdQdnVTwDssZgrShBTVgZZsBSDHT +PFGJFqnfqmPgFJQPWdbLdpDRhbphWjDm +rclNHvcrzCNwrWRprjdMMMph +wsZHwZNvRRQsQqBV +LqlGCPlPLTCPqqQlpqLlWfBfWgcHNRJRfWNsncGH +VVtdwVtDDdVmhrdwSBmjbdzNHgfgJnNnsSnHsNffHgRsgR +wVzhbjmDbDrwjdbztFDDthMCvqPppZQBQLZQTqTvFTvZ +BnQnQFwRmRwmwdBSFDFnmSDVLCJTCTppVVmGLVTCLcgVpC +ZlWvhvZjNrbNvqjNhlfPfqjCGHrsspggTpVLpsJCpcJVgg +vPzNvqjWhqFzGSnRGMDG +wZnMZzzZZchDRtVsqtCtwV +WmWpWWmPPWrmrmBmWrTlTFPNVqVCRSDCQHcqVTtTqsSDSTSD +PrppdFlWWlfrWmpWFffrdcGjJJGggnnhZGdLLgGGndvz +FShHNmNhRhNJmBnQBQJrmP +VTgzDTjwfffwzDvwlcczzVSJbQlBQSWBWCnPJPbJWWbC +tzSVtzvSvGSRZqqFMNtpRR +hPZhGDZpnCGtDhznjmLmdJffdNzJ +glwsSrQwBvLdgLzdcj +QsRbHllzzlHwHlBszWlTBFbpDPMhbPDVGpGFpPtFPp +SRjStRDctgDSBzLvPvNrDhmPLr +QqTHGTPJmmHmhNmH +TGQZsTqFnQZCJTPsnJnZQMjVRBVtcVRSVRBlwccSCtBS +bbsNsvsvnNPTRRllbblLqhtQCqQSLCGGHSqHNC +wFpzFgqVzqVJWFDwqJDmSBBmHBHhShLQhCGSBCGH +MJVpFMqgwMqRRbZsMbZMrP +PPdDhvNDQdmgQPZmQVHHtHGGWVGbffWGvs +MMLCTRRLlLclTLRMRLCwMLHWVctbVVHWWWFfVjVGsFWW +MRSMMlpTJRqClBCRqBDnzqgQPnqgznZPZqbP +MrMNPNNpjvdprWtrpMsthqBfqlnfqcGhVBqFRcnqFG +QbDgSSQbgSDDmDVmlqSCRllRcFqnqfBl +QVJbVmwwDQbzVTgbppNJNMWNjNNPrdpM +WwJJNbtHfpLpVgZZPVFhZh +vmmqlDvRvRfqBSrlzmmMjRBhcVhQVZhVghCQQQQTcTrPTP +jSqMmqRzMDDjvqlBqsBMBmmwGNJwJnwLNfbGwddswnJtJH +RLgRmRggbvbzzPmmRNmzsQWFtSGNtwSNQnntFwnnCw +pDBrBHpHhlldphHBHhJVFSLnWWFJttCtQSttSS +hfHrpphHBppfTvmzgMmbLbgf diff --git a/3/onestar.py b/3/onestar.py new file mode 100644 index 0000000..01ff066 --- /dev/null +++ b/3/onestar.py @@ -0,0 +1,24 @@ +def priority(item): + if item < 'a': + # uppercase + return ord(item)-38 + else: + # lowercase + return ord(item)-96 + +priorities = [] +with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.strip("\n") + #print(line) + h = int(len(line)/2) + left = line[:h] + right = line[h:] + print(left, end=" | ") + print(right) + for c in left: + if c in right: + priorities.append(priority(c)) + print(c) + break +print(sum(priorities)) diff --git a/3/twostar.py b/3/twostar.py new file mode 100644 index 0000000..053d490 --- /dev/null +++ b/3/twostar.py @@ -0,0 +1,22 @@ +def priority(item): + if item < 'a': + # uppercase + return ord(item)-38 + else: + # lowercase + return ord(item)-96 + +priorities = [] +groups = [] +with open("input.txt", "r") as f: + group = 0 + for line in f.readlines(): + line = line.strip("\n") + groups.append(line) + if len(groups) == 3: + for c in groups[0]: + if c in groups[1] and c in groups[2]: + priorities.append(priority(c)) + groups = [] + break +print(sum(priorities)) \ No newline at end of file diff --git a/4/input.txt b/4/input.txt new file mode 100644 index 0000000..34d7cda --- /dev/null +++ b/4/input.txt @@ -0,0 +1,1000 @@ +57-93,9-57 +55-55,55-83 +55-88,78-88 +24-24,24-95 +7-92,8-93 +25-84,84-85 +62-85,62-85 +66-78,65-76 +28-32,31-33 +24-81,2-25 +45-80,79-80 +75-99,75-91 +24-49,23-24 +22-69,49-69 +15-77,76-78 +25-50,21-50 +29-77,29-64 +47-93,46-48 +37-42,70-97 +5-95,4-6 +37-90,74-95 +17-48,18-85 +2-97,1-89 +2-48,1-48 +52-70,42-71 +17-90,90-94 +76-77,2-76 +10-89,10-96 +40-52,39-53 +9-97,8-96 +6-74,5-6 +3-89,2-89 +35-63,62-79 +13-39,18-39 +45-81,4-46 +8-76,39-67 +3-76,1-4 +1-96,1-1 +11-59,58-60 +41-53,25-42 +5-54,11-93 +15-91,95-95 +62-62,2-63 +11-41,40-42 +52-98,51-53 +29-52,47-51 +15-86,16-86 +13-98,28-99 +8-13,14-54 +47-61,64-95 +27-95,10-76 +9-27,10-10 +23-89,24-24 +98-98,15-99 +8-92,92-96 +2-38,27-87 +22-64,20-63 +1-6,5-66 +23-49,9-48 +63-64,35-63 +6-7,7-81 +23-91,22-92 +32-97,33-69 +21-24,20-25 +35-42,34-43 +82-82,15-83 +23-34,20-34 +37-92,37-86 +35-94,30-36 +48-52,51-53 +7-74,3-73 +41-43,42-86 +2-5,5-91 +98-99,8-98 +68-86,67-67 +37-54,36-37 +3-95,2-96 +50-79,25-78 +12-71,11-72 +91-92,74-91 +10-43,9-44 +30-93,2-91 +20-44,20-54 +36-84,35-85 +75-76,75-75 +54-54,18-55 +36-91,14-39 +8-25,8-25 +16-97,4-96 +7-83,2-8 +4-4,4-71 +1-98,1-98 +87-87,33-88 +22-88,21-88 +8-94,9-89 +99-99,5-96 +63-92,63-92 +42-68,10-69 +18-96,19-19 +16-90,16-90 +9-93,8-94 +48-88,87-89 +3-68,67-98 +72-93,97-98 +11-99,11-99 +3-99,2-99 +83-87,79-86 +14-14,5-14 +1-2,1-92 +9-90,91-94 +53-85,84-84 +11-89,3-11 +13-33,32-86 +40-74,74-91 +68-71,69-86 +17-51,18-51 +47-90,47-90 +2-3,3-85 +7-97,8-75 +21-29,28-75 +87-93,53-93 +49-74,27-95 +56-65,55-97 +14-16,15-81 +7-7,8-71 +24-26,23-82 +34-56,50-55 +10-97,11-96 +52-70,16-69 +20-56,20-21 +27-96,96-97 +23-98,15-24 +24-72,86-98 +44-77,60-88 +6-98,5-99 +1-96,99-99 +8-95,99-99 +10-81,4-62 +88-88,69-89 +30-67,29-68 +14-96,15-96 +58-86,73-86 +7-55,14-54 +3-97,62-98 +11-86,9-87 +41-79,16-41 +2-99,1-96 +7-56,5-7 +25-61,24-62 +25-83,26-82 +20-82,7-12 +36-58,41-58 +98-98,16-89 +98-99,86-99 +18-50,18-93 +44-67,40-48 +46-90,47-91 +21-49,48-66 +2-90,89-94 +12-25,13-25 +5-9,6-44 +68-75,70-76 +25-99,26-99 +95-95,17-96 +13-14,13-90 +79-99,76-77 +87-88,88-89 +77-77,6-78 +36-92,35-35 +10-11,9-9 +9-37,8-38 +80-91,81-81 +17-97,17-99 +4-19,18-71 +35-92,8-91 +30-31,22-30 +19-19,18-47 +51-79,52-55 +4-8,7-77 +3-98,3-99 +68-76,67-68 +86-86,74-93 +20-86,35-86 +8-98,7-98 +56-58,14-63 +41-47,42-47 +16-89,41-88 +21-22,22-52 +2-62,3-33 +3-83,3-3 +87-94,25-86 +80-95,95-98 +7-57,8-58 +3-24,23-23 +5-43,2-4 +32-85,86-86 +39-82,38-83 +73-87,21-79 +86-94,39-87 +87-88,4-87 +41-65,48-60 +40-70,62-70 +3-44,2-43 +3-19,19-98 +65-98,66-98 +79-84,80-83 +93-97,91-98 +21-96,21-96 +30-77,31-83 +5-82,2-5 +10-82,9-10 +84-94,47-50 +26-93,27-39 +47-95,77-90 +30-33,33-81 +45-73,46-72 +12-59,12-59 +31-60,31-59 +23-76,39-75 +66-88,80-93 +58-76,2-75 +9-56,36-55 +2-94,2-94 +75-81,72-80 +9-46,10-41 +7-93,6-6 +99-99,43-97 +33-83,33-83 +20-85,84-84 +61-76,60-94 +16-75,17-75 +16-18,17-71 +6-88,7-35 +38-79,6-38 +9-42,8-10 +18-60,86-95 +3-3,2-98 +2-99,3-99 +78-82,79-82 +34-75,23-76 +3-12,3-4 +16-95,20-95 +81-85,66-75 +8-87,15-61 +37-58,37-37 +2-87,1-86 +49-89,48-84 +56-58,57-88 +77-79,3-78 +25-92,25-98 +14-73,73-74 +15-17,1-16 +41-84,1-84 +34-64,6-63 +86-88,28-87 +2-87,2-87 +68-76,34-69 +42-78,54-83 +7-92,2-24 +2-12,1-11 +72-83,64-82 +49-93,48-92 +31-32,32-59 +4-90,4-86 +2-65,71-83 +21-88,14-78 +5-92,93-94 +1-10,2-9 +40-66,39-40 +47-77,46-46 +2-99,25-99 +37-95,37-95 +60-64,60-64 +32-51,33-51 +22-90,11-88 +13-54,12-54 +67-77,16-72 +7-37,9-90 +2-54,53-53 +5-5,6-68 +8-9,9-31 +4-39,40-61 +5-95,6-95 +1-11,11-95 +30-70,30-70 +58-58,59-97 +11-41,12-44 +2-6,1-7 +10-58,10-64 +3-95,1-3 +23-55,8-23 +37-60,52-59 +6-46,6-47 +8-45,27-53 +12-95,94-94 +43-52,43-44 +9-95,10-94 +2-9,5-26 +5-8,9-97 +2-60,3-60 +87-89,45-88 +5-9,9-90 +47-91,45-47 +39-47,27-39 +16-72,16-34 +89-90,35-89 +18-93,8-17 +4-35,9-71 +64-96,27-62 +30-68,7-30 +25-70,3-26 +41-77,40-77 +87-97,24-97 +2-97,97-98 +41-50,49-67 +49-53,50-80 +18-18,19-87 +36-39,37-40 +4-83,27-93 +28-92,29-91 +33-93,93-94 +2-94,2-94 +26-65,25-26 +5-14,15-27 +19-49,19-49 +56-56,2-55 +79-79,49-80 +79-80,55-80 +61-82,17-62 +61-63,1-62 +20-92,32-73 +57-57,5-58 +19-37,20-20 +13-75,75-76 +61-99,62-99 +19-92,19-91 +34-68,35-35 +4-76,91-99 +30-71,71-72 +51-95,28-51 +64-70,51-75 +28-90,89-91 +70-85,42-83 +2-91,5-80 +45-53,17-52 +70-80,20-69 +29-88,30-89 +5-5,5-89 +30-30,30-77 +20-71,21-40 +11-44,18-43 +6-90,6-90 +1-98,97-99 +3-98,3-98 +9-42,24-42 +75-75,73-76 +20-87,86-88 +62-86,63-91 +15-61,14-16 +46-58,45-58 +2-53,47-54 +3-89,3-35 +3-99,1-78 +50-80,9-81 +96-98,69-97 +6-78,6-78 +19-77,18-77 +17-75,18-75 +54-73,53-73 +92-97,73-85 +5-76,77-77 +43-93,18-94 +7-8,8-92 +49-87,50-88 +34-56,35-57 +25-98,24-26 +11-93,12-94 +68-99,67-67 +5-8,9-55 +8-83,4-43 +52-84,51-53 +4-96,3-71 +6-94,6-99 +19-67,18-68 +1-91,2-96 +24-35,36-54 +13-96,13-99 +19-47,32-36 +10-62,6-61 +3-4,4-98 +42-43,43-76 +17-58,54-58 +57-77,12-77 +78-99,25-77 +3-91,1-90 +13-28,29-83 +60-88,23-59 +78-95,79-95 +16-97,16-17 +14-71,12-70 +1-99,2-99 +11-84,5-11 +55-80,55-80 +28-67,68-68 +60-81,60-81 +7-74,7-74 +3-68,2-4 +5-70,6-70 +4-92,30-93 +44-79,43-99 +31-70,4-98 +2-93,1-93 +6-95,5-5 +16-36,5-36 +13-14,13-31 +53-84,54-73 +41-75,74-91 +31-90,48-91 +25-93,19-93 +9-95,6-9 +27-89,25-28 +19-86,18-73 +11-62,10-11 +73-75,23-75 +19-90,18-96 +5-5,4-51 +16-98,42-52 +11-81,12-82 +65-95,66-95 +61-61,61-82 +68-74,73-78 +31-42,1-32 +7-97,7-96 +58-59,42-58 +99-99,13-92 +63-94,20-95 +17-38,8-18 +60-71,15-52 +75-90,9-76 +14-99,13-98 +9-16,16-81 +54-83,54-90 +18-18,18-53 +16-64,15-16 +19-60,18-19 +2-90,1-91 +79-79,79-98 +32-58,31-33 +60-65,59-65 +13-34,13-34 +6-34,33-33 +59-64,58-84 +13-13,13-71 +4-76,3-82 +77-86,60-75 +63-96,52-95 +4-68,3-5 +21-45,5-21 +11-81,10-12 +1-97,96-96 +25-78,26-79 +17-38,20-48 +61-62,62-90 +16-99,16-99 +12-66,42-65 +3-85,2-84 +6-47,7-46 +3-76,4-85 +10-44,11-72 +12-47,47-48 +47-84,48-84 +43-99,24-77 +21-44,21-25 +75-85,44-84 +86-97,32-86 +24-92,23-88 +86-88,49-87 +96-96,2-79 +90-95,17-95 +11-88,10-89 +3-59,1-4 +10-56,11-83 +46-94,47-94 +3-98,98-99 +34-86,34-94 +9-17,11-16 +89-93,21-90 +15-98,15-98 +32-84,33-85 +46-46,45-80 +5-69,70-93 +8-99,9-98 +4-99,5-95 +1-35,2-67 +1-99,2-98 +11-22,14-22 +32-95,33-94 +48-77,72-77 +28-30,22-29 +35-86,36-86 +56-60,55-60 +44-75,44-59 +85-91,8-86 +21-22,21-59 +96-97,8-60 +7-50,51-85 +32-98,33-33 +11-12,11-81 +6-7,6-39 +32-68,33-69 +19-46,18-50 +45-96,45-49 +1-13,4-94 +86-87,14-87 +15-15,16-93 +29-48,28-28 +89-97,90-98 +6-59,7-60 +13-13,13-64 +21-64,81-95 +17-34,18-33 +3-87,86-90 +4-84,2-38 +40-76,39-76 +17-84,18-85 +66-96,25-65 +16-97,16-96 +64-65,4-66 +53-66,10-86 +15-78,16-77 +75-76,54-75 +4-98,20-97 +22-75,23-62 +42-89,42-89 +70-71,69-70 +18-90,19-89 +40-68,67-69 +7-73,6-7 +86-95,96-97 +40-58,39-72 +1-43,5-28 +10-60,5-49 +30-81,29-91 +7-77,8-11 +8-65,9-65 +3-57,4-11 +1-2,2-96 +56-58,41-57 +34-89,83-90 +59-97,58-98 +29-30,28-30 +54-82,31-57 +4-99,98-98 +14-36,34-39 +88-97,3-98 +16-53,17-99 +39-39,39-72 +39-61,62-80 +20-32,31-43 +49-70,50-70 +65-75,34-66 +1-99,1-2 +57-90,56-94 +28-62,33-62 +21-21,22-96 +18-65,17-88 +93-97,60-94 +74-93,92-94 +9-18,17-77 +46-89,30-45 +17-97,16-98 +2-99,98-98 +11-21,12-20 +99-99,4-96 +36-48,35-44 +70-74,63-81 +40-41,40-92 +2-94,22-93 +67-73,60-78 +29-30,22-29 +65-99,65-99 +7-20,6-21 +29-99,30-99 +40-98,86-99 +20-37,21-53 +86-86,7-87 +25-39,30-93 +55-78,56-88 +5-15,6-7 +16-17,2-16 +71-72,72-83 +9-21,8-21 +5-44,3-26 +77-77,12-84 +15-16,16-53 +44-69,43-69 +6-84,5-5 +34-77,33-77 +15-78,15-97 +28-86,15-29 +47-96,46-46 +57-59,21-58 +2-91,4-92 +11-14,13-75 +45-46,45-99 +26-57,24-26 +4-95,67-98 +15-54,15-15 +41-44,19-42 +19-20,19-98 +16-86,15-86 +13-47,46-82 +13-50,12-14 +11-98,6-89 +44-89,45-99 +7-82,82-83 +24-61,24-24 +23-60,23-59 +10-86,9-10 +74-86,73-74 +1-41,5-82 +3-4,4-84 +94-98,19-83 +2-97,93-96 +89-91,45-90 +7-12,11-94 +52-60,46-51 +3-3,2-85 +35-43,42-66 +29-92,28-92 +20-21,21-96 +91-91,90-91 +8-34,8-21 +8-95,95-96 +4-81,44-82 +2-84,1-2 +11-88,11-11 +17-69,16-70 +12-76,11-12 +13-64,66-75 +38-68,69-85 +86-86,85-91 +10-87,11-97 +10-78,36-77 +8-68,7-68 +4-87,3-87 +62-64,12-65 +32-79,33-79 +2-90,2-3 +3-8,8-26 +63-64,63-70 +25-30,7-30 +3-92,3-92 +4-98,3-99 +2-3,2-43 +43-65,43-85 +17-62,91-94 +88-90,48-89 +13-96,1-96 +44-71,44-93 +66-71,70-72 +28-63,27-62 +19-19,20-99 +23-23,24-93 +27-84,28-85 +77-82,21-78 +40-40,24-41 +88-89,6-88 +1-97,96-98 +1-88,2-42 +12-39,12-13 +47-62,61-65 +3-97,7-96 +30-66,29-67 +71-90,72-78 +98-98,6-97 +43-43,43-48 +36-99,35-95 +30-93,30-99 +5-28,6-11 +3-22,2-96 +9-87,8-71 +41-79,27-69 +6-99,7-98 +99-99,45-76 +97-99,14-96 +6-39,7-92 +5-49,13-64 +6-41,4-41 +93-98,16-94 +8-98,25-97 +41-64,41-42 +5-87,5-6 +12-68,13-67 +24-75,24-75 +41-42,5-41 +16-92,13-49 +16-31,27-96 +27-79,78-78 +32-71,33-72 +23-24,24-96 +4-4,4-78 +85-91,40-91 +6-10,9-75 +38-69,39-69 +8-8,8-74 +7-40,1-7 +33-88,34-88 +32-92,33-92 +7-19,6-64 +21-22,21-22 +7-8,7-99 +4-48,5-47 +27-27,26-61 +77-85,76-86 +22-39,29-40 +4-42,5-63 +85-87,43-79 +8-88,7-9 +55-90,54-90 +7-98,6-8 +6-85,7-84 +18-56,5-19 +54-81,42-50 +7-27,28-40 +96-98,81-97 +52-74,52-53 +61-64,20-63 +45-92,45-60 +18-89,19-89 +9-51,8-52 +19-19,20-95 +49-99,49-99 +17-78,16-16 +20-95,20-21 +11-94,96-99 +38-57,56-58 +94-97,18-90 +38-42,10-53 +67-86,68-86 +2-96,2-91 +33-77,33-89 +25-26,25-51 +86-98,16-97 +2-71,2-71 +28-29,6-28 +30-83,31-84 +13-85,13-84 +23-61,22-48 +32-74,74-92 +41-53,10-94 +15-89,20-90 +25-69,25-25 +1-96,1-96 +7-96,6-96 +1-98,2-2 +47-47,11-48 +35-94,93-95 +67-69,68-77 +43-63,44-64 +14-94,15-49 +7-95,6-96 +15-40,41-41 +8-83,82-90 +66-75,11-67 +40-52,45-51 +20-57,7-20 +4-87,3-87 +97-97,56-95 +45-45,45-45 +58-96,9-95 +33-45,44-44 +6-26,16-26 +46-59,47-60 +24-40,23-40 +6-91,94-98 +40-93,20-84 +32-42,41-42 +2-94,3-93 +59-59,2-60 +7-40,3-7 +47-89,88-88 +35-66,65-67 +84-99,52-85 +75-99,75-96 +8-21,7-8 +3-53,4-52 +22-62,22-62 +72-72,73-78 +39-72,38-96 +2-14,1-91 +4-98,5-76 +8-88,7-13 +5-6,5-99 +20-90,19-90 +26-29,27-34 +52-69,53-95 +56-56,50-57 +23-79,22-79 +16-93,16-78 +13-76,55-92 +36-70,35-70 +43-81,40-80 +4-94,95-99 +1-94,1-94 +48-84,47-49 +32-93,31-92 +11-19,18-77 +62-80,39-74 +62-63,62-96 +3-94,93-95 +15-66,16-66 +23-95,22-88 +57-57,25-58 +71-86,3-72 +2-79,7-78 +47-49,13-48 +46-94,45-45 +19-77,65-76 +31-37,38-87 +4-79,92-99 +17-19,17-19 +1-82,41-89 +47-91,48-49 +6-19,10-37 +14-42,18-39 +40-79,20-61 +2-84,1-31 +83-95,47-84 +68-71,2-69 +37-73,8-72 +85-86,36-85 +2-9,8-78 +17-59,58-68 +62-90,78-90 +77-94,41-93 +11-90,12-94 +34-79,33-97 +42-56,22-57 +38-44,44-45 +1-84,98-98 +63-74,61-73 +28-57,4-58 +48-48,47-90 +37-38,38-77 +72-84,72-72 +3-47,47-47 +50-91,25-59 +5-38,4-38 +24-86,23-55 +55-74,50-75 +33-83,34-83 +1-91,73-88 +13-13,14-85 +54-94,60-99 +21-85,84-86 +12-98,8-36 +89-98,4-90 +4-15,8-15 +98-98,1-99 +21-79,20-78 +2-63,62-63 +78-80,63-79 +24-68,67-86 +24-25,25-47 +53-68,4-55 +11-82,10-82 +23-92,5-99 +94-99,67-88 +11-51,32-86 +49-79,24-48 +22-73,91-99 +4-9,8-89 +23-85,23-54 +5-86,6-13 +13-14,14-94 +72-81,73-82 +56-98,55-98 +3-96,2-96 +88-88,20-89 +78-79,79-85 +29-94,20-30 +8-43,85-90 +96-98,7-71 +45-74,70-71 +23-79,94-94 +41-97,40-97 +73-96,72-72 +4-28,4-65 +89-98,20-90 +37-70,37-98 +26-36,26-35 +41-41,7-42 +7-22,21-90 +12-84,13-75 +98-98,1-99 +47-75,74-87 +7-33,33-90 +41-68,41-87 +64-92,65-88 +41-54,10-42 +6-89,93-96 +20-48,1-21 +8-91,8-8 +11-95,10-97 +72-98,31-90 +44-45,33-44 +54-56,18-55 +7-9,10-88 +44-45,45-90 +52-56,54-83 +68-70,1-69 +91-92,91-92 +13-74,14-75 +4-60,61-91 +9-94,10-95 +9-95,9-10 +50-61,49-68 +50-50,5-51 +38-46,43-43 +4-11,12-22 +42-42,43-96 +77-91,48-76 +23-89,24-94 +9-65,10-15 +53-81,7-73 +8-28,22-37 +76-95,31-77 +9-84,3-84 +12-98,13-99 +17-74,17-78 +60-89,59-89 +1-15,2-14 +14-91,13-88 +87-97,42-96 +77-77,73-76 +16-77,15-69 +80-95,81-96 +40-73,41-90 +47-63,46-62 +5-98,4-97 +46-93,42-92 +15-30,7-23 +7-90,91-95 +1-99,1-2 +5-97,4-99 +81-87,8-28 +56-69,24-68 +87-89,20-88 +78-99,1-98 +32-97,33-97 +19-20,20-33 +77-78,21-78 +2-6,5-42 +35-36,35-44 +2-83,82-84 +48-97,49-58 +36-53,53-75 +5-92,4-93 +49-85,50-86 +45-81,43-82 +3-97,1-43 +97-98,58-97 +6-88,3-88 +4-67,5-66 +43-88,32-44 +95-95,13-96 +4-54,13-97 +1-45,3-45 +2-9,8-98 +1-12,1-53 +13-98,14-84 +85-99,86-99 +4-16,3-16 +15-77,14-15 +18-67,67-68 +34-69,33-70 +97-97,9-92 +76-84,58-77 +76-84,42-55 +96-98,2-97 +50-98,51-72 +54-94,53-94 +23-91,23-91 +21-94,22-95 +41-89,42-89 +48-78,47-78 +18-51,51-76 +5-49,1-34 +40-55,40-47 +41-96,41-97 +8-10,9-94 +74-79,66-80 +6-15,15-91 +10-99,9-99 +12-92,12-96 +32-96,20-33 +5-67,1-66 +21-90,31-94 +22-23,22-60 diff --git a/4/onestar.py b/4/onestar.py new file mode 100644 index 0000000..d955447 --- /dev/null +++ b/4/onestar.py @@ -0,0 +1,16 @@ +elves = [] +count = 0 +with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.strip("\n") + # Some python magic to split out the strings and convert them to integers + pair = [x.split("-") for x in line.split(",")] + pair = [[int(y) for y in x] for x in pair] + elves.append(pair) + # Elves is now a list of list of lists. + for elf in elves: + if ((elf[0][0] <= elf[1][0] and elf[0][1] >= elf[1][1]) or + (elf[1][0] <= elf[0][0] and elf[1][1] >= elf[0][1])): + print(elf) + count += 1 +print(count) \ No newline at end of file diff --git a/4/twostar.py b/4/twostar.py new file mode 100644 index 0000000..27863f2 --- /dev/null +++ b/4/twostar.py @@ -0,0 +1,26 @@ +elves = [] +count = 0 + +def inrange(lb, ub, check): + """Returns true iff check is inclusive in-between lb and ub.""" + return check >= lb and check <= ub + +with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.strip("\n") + # Some python magic to split out the strings and convert them to integers + pair = [x.split("-") for x in line.split(",")] + pair = [[int(y) for y in x] for x in pair] + elves.append(pair) + # Elves is now a list of list of lists. + for elf in elves: + lb1 = elf[0][0] + lb2 = elf[1][0] + ub1 = elf[0][1] + ub2 = elf[1][1] + if (inrange(lb1, ub1, ub2) or + inrange(lb1, ub1, lb2) or + inrange(lb2, ub2, ub1) or + inrange(lb2, ub2, lb1)): + count += 1 +print(count) \ No newline at end of file diff --git a/5/input.txt b/5/input.txt new file mode 100644 index 0000000..b5eebfc --- /dev/null +++ b/5/input.txt @@ -0,0 +1,511 @@ +[V] [B] [C] +[C] [N] [G] [W] [P] +[W] [C] [Q] [S] [C] [M] +[L] [W] [B] [Z] [F] [S] [V] +[R] [G] [H] [F] [P] [V] [M] [T] +[M] [L] [R] [D] [L] [N] [P] [D] [W] +[F] [Q] [S] [C] [G] [G] [Z] [P] [N] +[Q] [D] [P] [L] [V] [D] [D] [C] [Z] + 1 2 3 4 5 6 7 8 9 + +move 1 from 9 to 2 +move 4 from 6 to 1 +move 4 from 2 to 6 +move 5 from 8 to 7 +move 4 from 9 to 2 +move 1 from 5 to 8 +move 1 from 3 to 1 +move 2 from 3 to 1 +move 1 from 4 to 2 +move 11 from 7 to 2 +move 5 from 5 to 1 +move 1 from 6 to 8 +move 1 from 7 to 6 +move 3 from 6 to 7 +move 1 from 3 to 2 +move 1 from 6 to 8 +move 11 from 2 to 1 +move 1 from 9 to 8 +move 1 from 3 to 7 +move 4 from 7 to 9 +move 3 from 3 to 7 +move 4 from 8 to 2 +move 3 from 7 to 6 +move 2 from 6 to 3 +move 5 from 4 to 1 +move 1 from 6 to 5 +move 26 from 1 to 7 +move 1 from 4 to 6 +move 22 from 7 to 5 +move 4 from 9 to 1 +move 3 from 7 to 3 +move 1 from 6 to 3 +move 6 from 1 to 7 +move 2 from 7 to 5 +move 8 from 1 to 9 +move 4 from 3 to 4 +move 10 from 2 to 7 +move 6 from 7 to 4 +move 2 from 9 to 5 +move 1 from 5 to 1 +move 8 from 4 to 1 +move 2 from 5 to 9 +move 1 from 3 to 6 +move 1 from 9 to 1 +move 1 from 3 to 6 +move 2 from 5 to 2 +move 1 from 4 to 2 +move 1 from 2 to 3 +move 7 from 1 to 4 +move 9 from 7 to 4 +move 1 from 3 to 4 +move 2 from 2 to 4 +move 5 from 9 to 6 +move 1 from 4 to 5 +move 2 from 9 to 3 +move 1 from 1 to 6 +move 2 from 6 to 1 +move 2 from 6 to 5 +move 2 from 9 to 7 +move 1 from 3 to 9 +move 1 from 9 to 5 +move 2 from 7 to 3 +move 1 from 1 to 7 +move 7 from 4 to 5 +move 2 from 1 to 2 +move 3 from 3 to 8 +move 3 from 8 to 9 +move 31 from 5 to 8 +move 1 from 7 to 1 +move 1 from 2 to 1 +move 1 from 1 to 5 +move 1 from 5 to 6 +move 2 from 5 to 7 +move 10 from 4 to 9 +move 5 from 6 to 2 +move 3 from 2 to 6 +move 2 from 7 to 8 +move 1 from 6 to 3 +move 1 from 4 to 1 +move 1 from 3 to 6 +move 1 from 4 to 2 +move 2 from 1 to 2 +move 1 from 8 to 7 +move 10 from 8 to 2 +move 13 from 2 to 9 +move 1 from 1 to 5 +move 18 from 8 to 2 +move 21 from 9 to 6 +move 1 from 7 to 8 +move 2 from 9 to 7 +move 1 from 2 to 3 +move 1 from 7 to 8 +move 9 from 2 to 4 +move 1 from 7 to 8 +move 3 from 9 to 1 +move 1 from 8 to 1 +move 6 from 2 to 3 +move 5 from 4 to 7 +move 1 from 5 to 8 +move 2 from 4 to 3 +move 5 from 7 to 3 +move 2 from 2 to 7 +move 15 from 6 to 1 +move 12 from 1 to 2 +move 6 from 2 to 9 +move 4 from 9 to 5 +move 4 from 5 to 6 +move 14 from 3 to 9 +move 1 from 6 to 7 +move 1 from 7 to 2 +move 1 from 7 to 8 +move 9 from 2 to 6 +move 1 from 1 to 6 +move 2 from 9 to 8 +move 4 from 9 to 7 +move 1 from 1 to 5 +move 8 from 8 to 3 +move 1 from 5 to 4 +move 2 from 1 to 2 +move 3 from 1 to 4 +move 9 from 6 to 2 +move 1 from 7 to 4 +move 1 from 8 to 2 +move 1 from 6 to 4 +move 4 from 7 to 8 +move 12 from 6 to 8 +move 3 from 2 to 1 +move 6 from 8 to 7 +move 5 from 3 to 6 +move 3 from 3 to 6 +move 3 from 1 to 3 +move 8 from 2 to 9 +move 2 from 4 to 5 +move 2 from 7 to 2 +move 10 from 8 to 5 +move 3 from 3 to 2 +move 10 from 5 to 3 +move 1 from 4 to 3 +move 1 from 2 to 1 +move 1 from 1 to 7 +move 14 from 9 to 6 +move 5 from 2 to 4 +move 15 from 6 to 5 +move 3 from 9 to 3 +move 1 from 8 to 6 +move 1 from 3 to 8 +move 7 from 3 to 8 +move 16 from 5 to 1 +move 2 from 7 to 1 +move 1 from 5 to 9 +move 2 from 9 to 3 +move 15 from 1 to 5 +move 3 from 8 to 2 +move 3 from 3 to 1 +move 3 from 7 to 3 +move 8 from 4 to 6 +move 5 from 1 to 6 +move 9 from 5 to 7 +move 2 from 8 to 3 +move 2 from 2 to 7 +move 1 from 1 to 4 +move 2 from 5 to 8 +move 4 from 3 to 1 +move 4 from 8 to 1 +move 1 from 8 to 6 +move 9 from 7 to 6 +move 2 from 7 to 5 +move 3 from 1 to 8 +move 1 from 4 to 8 +move 1 from 2 to 4 +move 12 from 6 to 2 +move 3 from 8 to 6 +move 1 from 4 to 7 +move 2 from 6 to 8 +move 5 from 5 to 9 +move 13 from 2 to 9 +move 2 from 4 to 7 +move 13 from 9 to 5 +move 2 from 6 to 5 +move 1 from 3 to 9 +move 6 from 9 to 4 +move 5 from 1 to 3 +move 1 from 7 to 9 +move 15 from 5 to 8 +move 2 from 4 to 7 +move 2 from 4 to 6 +move 1 from 4 to 6 +move 1 from 5 to 7 +move 18 from 6 to 2 +move 2 from 7 to 3 +move 3 from 6 to 7 +move 3 from 2 to 8 +move 5 from 7 to 3 +move 1 from 9 to 6 +move 2 from 3 to 8 +move 11 from 3 to 2 +move 2 from 2 to 9 +move 1 from 6 to 2 +move 1 from 7 to 5 +move 1 from 5 to 9 +move 9 from 8 to 4 +move 1 from 4 to 6 +move 2 from 3 to 1 +move 2 from 1 to 5 +move 12 from 8 to 3 +move 1 from 8 to 2 +move 14 from 3 to 4 +move 1 from 6 to 4 +move 1 from 5 to 4 +move 20 from 2 to 7 +move 2 from 9 to 5 +move 1 from 5 to 3 +move 1 from 9 to 2 +move 1 from 2 to 8 +move 2 from 2 to 3 +move 5 from 4 to 5 +move 6 from 5 to 7 +move 2 from 8 to 2 +move 3 from 3 to 9 +move 5 from 4 to 5 +move 2 from 9 to 7 +move 2 from 2 to 3 +move 1 from 9 to 3 +move 22 from 7 to 3 +move 4 from 7 to 4 +move 24 from 3 to 6 +move 4 from 2 to 6 +move 18 from 6 to 9 +move 15 from 4 to 6 +move 8 from 6 to 3 +move 6 from 6 to 1 +move 7 from 9 to 6 +move 2 from 7 to 4 +move 8 from 3 to 9 +move 14 from 6 to 3 +move 2 from 3 to 9 +move 1 from 9 to 6 +move 13 from 9 to 1 +move 3 from 4 to 5 +move 1 from 9 to 6 +move 5 from 1 to 8 +move 3 from 3 to 9 +move 2 from 1 to 5 +move 8 from 5 to 8 +move 10 from 3 to 5 +move 3 from 4 to 6 +move 6 from 1 to 9 +move 4 from 5 to 3 +move 5 from 8 to 2 +move 6 from 6 to 3 +move 7 from 3 to 6 +move 1 from 3 to 4 +move 5 from 8 to 7 +move 5 from 2 to 6 +move 2 from 7 to 3 +move 3 from 7 to 3 +move 1 from 4 to 9 +move 9 from 6 to 9 +move 2 from 6 to 2 +move 1 from 8 to 2 +move 2 from 8 to 7 +move 5 from 1 to 5 +move 1 from 1 to 4 +move 13 from 5 to 7 +move 5 from 3 to 7 +move 1 from 5 to 6 +move 1 from 4 to 6 +move 3 from 2 to 8 +move 1 from 3 to 5 +move 1 from 3 to 8 +move 14 from 7 to 4 +move 1 from 5 to 6 +move 7 from 6 to 9 +move 6 from 7 to 9 +move 2 from 8 to 9 +move 2 from 8 to 1 +move 31 from 9 to 1 +move 13 from 4 to 2 +move 1 from 4 to 3 +move 10 from 2 to 7 +move 1 from 3 to 4 +move 1 from 2 to 7 +move 3 from 7 to 8 +move 1 from 4 to 1 +move 3 from 8 to 5 +move 32 from 1 to 5 +move 3 from 9 to 7 +move 4 from 9 to 6 +move 2 from 2 to 7 +move 2 from 1 to 7 +move 1 from 6 to 1 +move 1 from 9 to 4 +move 3 from 6 to 4 +move 1 from 1 to 8 +move 15 from 5 to 1 +move 1 from 8 to 4 +move 9 from 5 to 7 +move 1 from 9 to 8 +move 1 from 8 to 1 +move 10 from 1 to 9 +move 1 from 4 to 2 +move 2 from 9 to 5 +move 4 from 9 to 6 +move 1 from 2 to 7 +move 3 from 4 to 2 +move 1 from 1 to 5 +move 5 from 1 to 5 +move 1 from 4 to 9 +move 3 from 6 to 7 +move 23 from 7 to 6 +move 1 from 2 to 4 +move 1 from 2 to 5 +move 9 from 5 to 4 +move 1 from 2 to 5 +move 9 from 5 to 6 +move 1 from 9 to 7 +move 1 from 9 to 3 +move 3 from 9 to 4 +move 14 from 6 to 3 +move 5 from 7 to 4 +move 1 from 7 to 5 +move 1 from 5 to 9 +move 2 from 5 to 6 +move 16 from 6 to 2 +move 2 from 6 to 1 +move 7 from 4 to 8 +move 2 from 1 to 2 +move 4 from 3 to 5 +move 5 from 4 to 7 +move 2 from 6 to 7 +move 4 from 4 to 1 +move 4 from 8 to 9 +move 1 from 4 to 5 +move 1 from 6 to 8 +move 1 from 4 to 9 +move 4 from 1 to 7 +move 1 from 9 to 4 +move 2 from 2 to 7 +move 7 from 3 to 9 +move 15 from 2 to 3 +move 4 from 8 to 6 +move 1 from 4 to 7 +move 2 from 9 to 7 +move 1 from 6 to 8 +move 2 from 7 to 2 +move 5 from 7 to 2 +move 1 from 5 to 2 +move 6 from 2 to 9 +move 3 from 7 to 1 +move 3 from 1 to 2 +move 3 from 7 to 1 +move 2 from 2 to 9 +move 2 from 6 to 9 +move 1 from 8 to 3 +move 19 from 3 to 9 +move 1 from 6 to 3 +move 3 from 7 to 4 +move 1 from 2 to 5 +move 2 from 1 to 9 +move 2 from 2 to 3 +move 33 from 9 to 7 +move 1 from 1 to 7 +move 3 from 3 to 7 +move 1 from 3 to 2 +move 1 from 5 to 8 +move 4 from 9 to 7 +move 1 from 5 to 2 +move 2 from 4 to 9 +move 4 from 9 to 7 +move 3 from 2 to 1 +move 1 from 4 to 3 +move 1 from 9 to 7 +move 1 from 8 to 3 +move 7 from 7 to 3 +move 3 from 1 to 9 +move 4 from 9 to 7 +move 4 from 5 to 8 +move 3 from 3 to 4 +move 3 from 4 to 5 +move 3 from 3 to 6 +move 2 from 6 to 5 +move 38 from 7 to 5 +move 40 from 5 to 3 +move 4 from 8 to 9 +move 1 from 6 to 9 +move 1 from 5 to 1 +move 3 from 7 to 6 +move 1 from 7 to 5 +move 38 from 3 to 8 +move 1 from 1 to 9 +move 3 from 9 to 6 +move 5 from 3 to 9 +move 4 from 8 to 6 +move 1 from 7 to 1 +move 3 from 5 to 9 +move 1 from 1 to 2 +move 10 from 8 to 3 +move 5 from 8 to 1 +move 3 from 1 to 2 +move 9 from 6 to 7 +move 9 from 3 to 5 +move 1 from 7 to 6 +move 1 from 3 to 8 +move 1 from 7 to 9 +move 1 from 1 to 5 +move 1 from 1 to 3 +move 1 from 9 to 2 +move 4 from 2 to 3 +move 1 from 2 to 4 +move 9 from 8 to 1 +move 2 from 9 to 5 +move 2 from 1 to 2 +move 2 from 3 to 4 +move 6 from 8 to 6 +move 10 from 5 to 3 +move 7 from 3 to 2 +move 2 from 1 to 2 +move 5 from 1 to 7 +move 7 from 9 to 6 +move 7 from 6 to 5 +move 1 from 4 to 3 +move 7 from 7 to 4 +move 5 from 3 to 9 +move 7 from 2 to 6 +move 4 from 7 to 8 +move 5 from 8 to 9 +move 1 from 2 to 6 +move 1 from 3 to 5 +move 2 from 2 to 8 +move 8 from 4 to 6 +move 7 from 9 to 7 +move 4 from 7 to 9 +move 7 from 9 to 3 +move 8 from 3 to 1 +move 6 from 5 to 9 +move 8 from 1 to 8 +move 13 from 8 to 4 +move 3 from 9 to 6 +move 1 from 8 to 6 +move 1 from 7 to 3 +move 2 from 4 to 1 +move 5 from 9 to 1 +move 1 from 3 to 7 +move 15 from 6 to 1 +move 1 from 7 to 9 +move 10 from 4 to 7 +move 11 from 7 to 5 +move 17 from 1 to 6 +move 1 from 9 to 3 +move 6 from 6 to 1 +move 3 from 5 to 3 +move 2 from 4 to 5 +move 2 from 7 to 8 +move 12 from 5 to 3 +move 13 from 6 to 9 +move 2 from 8 to 2 +move 2 from 5 to 1 +move 16 from 3 to 8 +move 3 from 2 to 3 +move 2 from 3 to 7 +move 2 from 7 to 9 +move 1 from 3 to 7 +move 4 from 8 to 4 +move 2 from 4 to 8 +move 5 from 1 to 5 +move 2 from 4 to 7 +move 6 from 6 to 8 +move 2 from 8 to 5 +move 2 from 1 to 4 +move 5 from 8 to 7 +move 5 from 6 to 3 +move 6 from 9 to 8 +move 2 from 9 to 2 +move 1 from 1 to 7 +move 4 from 5 to 3 +move 2 from 2 to 3 +move 1 from 4 to 9 +move 10 from 3 to 6 +move 1 from 3 to 7 +move 10 from 7 to 2 +move 2 from 5 to 3 +move 1 from 4 to 2 +move 2 from 6 to 8 +move 3 from 6 to 5 +move 1 from 6 to 1 +move 7 from 2 to 3 +move 6 from 8 to 7 +move 4 from 6 to 3 +move 14 from 8 to 6 +move 11 from 6 to 8 +move 1 from 1 to 4 +move 6 from 7 to 2 +move 3 from 5 to 8 +move 4 from 1 to 7 +move 1 from 2 to 8 +move 1 from 2 to 6 +move 1 from 3 to 4 +move 1 from 5 to 6 +move 7 from 8 to 6 +move 9 from 3 to 2 +move 1 from 8 to 5 diff --git a/5/onestar.py b/5/onestar.py new file mode 100644 index 0000000..37fc3d4 --- /dev/null +++ b/5/onestar.py @@ -0,0 +1,53 @@ +stacks = None + +def initStacks(s): + global stacks + stacks = [] + for i in range(s): + stacks.append([]) + +def reverseStacks(): + global stacks + newStacks = [] + for stack in stacks: + rstack = list(reversed(stack)) + newStacks.append(rstack) + stacks = newStacks + +def move(amount, source, dest): + for i in range(amount): + try: + srcstack = stacks[source-1] + dststack = stacks[dest-1] + m = srcstack.pop() + dststack.append(m) + except IndexError: + pass + +def printAnswer(): + answer = "" + for stack in stacks: + answer += stack[-1] + print(answer) + +with open("input.txt", "r") as f: + line = "." + while line != "": + line = f.readline().strip() + s = int((len(line)-3)/4 + 1) + if stacks is None: + initStacks(s) + for i in range(s): + char = line[1+i*4] + if char != " ": + stacks[i].append(char) + reverseStacks() + print(stacks) + for line in f.readlines(): + data = line.strip().split(" ") + amount = int(data[1]) + source = int(data[3]) + dest = int(data[5]) + move(amount, source, dest) + print(stacks) + printAnswer() \ No newline at end of file diff --git a/5/twostar.py b/5/twostar.py new file mode 100644 index 0000000..92dda12 --- /dev/null +++ b/5/twostar.py @@ -0,0 +1,54 @@ +stacks = None + +def initStacks(s): + global stacks + stacks = [] + for i in range(s): + stacks.append([]) + +def reverseStacks(): + global stacks + newStacks = [] + for stack in stacks: + rstack = list(reversed(stack)) + newStacks.append(rstack) + stacks = newStacks + +def move(amount, source, dest): + # Get substack of items to move + substack = stacks[source-1][-amount:] + + # Remove the items from source + stacks[source-1] = stacks[source-1][:-amount] + + # Get destination stack and place items + dststack = stacks[dest-1] + stacks[dest-1] = dststack + substack + +def printAnswer(): + answer = "" + for stack in stacks: + answer += stack[-1] + print(answer) + +with open("input.txt", "r") as f: + line = "." + while line != "": + line = f.readline().strip() + s = int((len(line)-3)/4 + 1) + if stacks is None: + initStacks(s) + for i in range(s): + char = line[1+i*4] + if char != " ": + stacks[i].append(char) + reverseStacks() + print(stacks) + for line in f.readlines(): + data = line.strip().split(" ") + amount = int(data[1]) + source = int(data[3]) + dest = int(data[5]) + move(amount, source, dest) + print(stacks) + printAnswer() \ No newline at end of file diff --git a/6/input.txt b/6/input.txt new file mode 100644 index 0000000..d754dfa --- /dev/null +++ b/6/input.txt @@ -0,0 +1 @@ +dcbcsbblhhgdgssmcmqccdwdvwdvvcfvcfvvpvmmwccdqddshhdppcfpfbbfggfjfvvhzhmmsqswsttcgtctggjllhnnqbnnnldlglplvlbvbzztpzzvpphshwwfhhgssvgsvvpfvfzznbznndqqtsqttnvtvqqqrgqrrgzzlqzzbvzbzmzffnbfnbffcggdcggqhqpqzpqzqbbqvbqbhhtzhhrrrprlrclrcrssqspqpbblggfvvbpvbbssvttsztzpzjjwffnpnfnrrqhqgqrrzqzbzzdpdjpplpclpptltztjtztqthtmmmpsmmpjpqpvvshhsfshhrvrdvdggwssdbbzbttlmlmpprmrmlrrmqrqsshjhjljzjnjllbbvjvnnppqbppqqfffrbfbdfbbqppmtppfttqddtzzwbblqqbddgwgqwqzwwpzwzjjbccdjdwwrggrmrtmrtmrrvpptwwcdcwwsdshhjjhwjwqjwwqsshrrbsblssphspsjpssnsmsqswqwfwjwccdvccrqqnsqnsnwsnsmnmccvcqqfjjfljfljfjgjffjvffvjvhjhfhrfrlrrtpphbhwbbvmmnpndnlljdjfjsffvccnhchwhddrccljllmnnhmnmpnnhtnthnhvnhnwnqqjmmgzzvssphhjljbjwjbwwdnwwdvvzpvvhccvjjlclrrppgjgsshghvvzjvvpvvbjjqhjqqfcqffchcmmvdvtddftdtppfnppcnpnznwwpdpjpnpttlbbmmqfqmffqnfnbffbrbgbwggsmsbbfgbbfbzbtzbbvmmdlmlrlnlwwbswsjjpjhhwqwzqznqzqvvwccwvwwcbbpvvwcvcvzzhzchzccbnccjlljsjbjdbbvqbvvfdfgdfggzfzlzmzrznnqsnncmnnljjtcjcfftrthtrhrgrvvjggzpggrcrpcppggdfggpmmwnmnlmlglvvmjvvddsmsjsnjssqffffctczcjzjjlbbhpbbfdbdzbbsjbjnjbbqqjbqjbjjhwhssmvsschhhwppbjppllprpjrppdpfpgpjptjtptplpnptnptpjjmcmnnnhnjhjlhjlhjlhlwwhwmwjjbhhlfffrbbgvvqwvwswtstmmmfpmfpffmcfcrrqsqzqjjjnpnnztnznddlwdldsdbssstzstswwjtttmmwmsmwssvswszsjzsjjsffmccmfccqzzvpmbbbsqffgzdqbjtzhlqdzhlpwghlstcrcrffrnbwjnqgmbmpgttfmsswdqctlrpdnlsgnlldvbfpwtcptvbwftzcnbbscrrcpnwtmllcvsrmwzzlsdmfctdcwsqdlsnzgfpmzrnswhbqjhstztzzmzpcttsgsggnlhvjmcbbrhgqhsfmglpcbdvmmmnfbtbfrqbpcmttjtnwvznbshwrmznnsvpjqjntlzspljnbwtjcqztsfcqlrggrpzjgjsvqqcrmrjmzwdsshqfhbtfmlwmfvtbcgdmjgtcnphfmfmjlbjzrvjslccftnwcchgdwjnlthlwgldjwqwgdptdjdmzdrrzcdpbfrtdgcspjtqdqvzswwdwrhggdrqjjgwwrbwhhlrpqmszvlvjfqptncjlscvzbgzgmsttlbhbfrctnsphjcrcwlhcgrcrsjbrjvptgfbjgjrvtzmnhpzcgptbmrgvstsltnctjphsjdwpdqblfswzfhgjbpfrptlmhfwcpdlzqccgtdvbzhwngrhlqftmlhjprscflgzpflvvpfsjmlnmbzsrlrshvnsqrhhlqdlzhrcbjjjfrbqcdspwsmltcrtlbdnbnvhbbwgqdcncsztbfwztzdbqgcrnvndmpstpncbwvtctzdpmcpvrgqvjjztfwpvjtdqlvcvdpfzgcghsmbcwtzztmqwdpsprgsmfhphqsqmflrjdqzjscgzlnvcwcrlmpdscnhqpqjfdbdftqgttwntdbpnshdwnmwsrslfgnzlnwwwqgdbfnthhqtvbzsqgzjhhghtmvvfhlmlpbghnsvlttzsjlgndhdqmqqfdlqnbfscsnnqzcdwzdlqcnstcbsffghftqvwrsshgwmlnprhdnnwslwfwtmtfzdjwpmlvvdhjvdwrhvdsmpgrdpnqsjpqmhttrmdwllrmnbznwjwvvpjnnbnfzbdnhjbqqrnzgdqbspbqtwdpgsbwpzfdbpvzfjpsgmztnzrpvvhwlfscfvfpfblvplgdbhvjjpdjtnwrmvpjsphvglpsntvwtqwqvprcgwjltddpjngvmzfzhmqnnwglbzsbrcztpplpsmgmcfgzgpbtgsjrfvdzzcsthznvdpbwvdlcgdhncsjdvpcbbmtrqczctjljdfghsrvrsfjglqqhjttfdhqdqwhzhqrggsjwlldrntwmmbftgqjhpvvctpbtgltnttlhdqbsbwcqmctwlsnhmhncpmnzsllmjhcgnlfgvpcqrwzvsstgwbvjtnrlbblclzdrcwddrwnptqzgwdwtgrfwffpzjmwbqfmmrcfzfzjbwsslbhggtwtcrlhffzgfgrtljgnznnlgzwfmtwwqzhlthvpfclrtmrqfzrggbctzfsmjhrtwzpfrnhwwprnbwmvwvmvnzqpggmzgslctqbqdtvhgzjwzsnblqzmcpnpwllzhvzzmfqzfjlrsrcnjzqdzbpjftljtzvvmrjszvqllnhhgnrnqttnwlvllphjtnmlwqhcvmbsvnwtcdmhsmhdcwqwtvggcqfpdsrsscmhcvfzvdnffrfhdfmgbsghdbpwdwrdmlvsnzwcfchcqvccszdqrbnfvrpbftcwnjmczwgqzmtlmrthlhtjpmchltcmcqwgfgshtvtpmcmpbmlnjmhnpdsljjmjzddnlgtnjqztzsqqlhtqcscjvjncjvfcvsgjhqgzrmtjjcgvvmwswffmlcvlhqhbvrldrvbrfmmqcnqmfzlsghvclrdbsvcbqspgbzmjnlrdhvncnbcfmdlqrssggsmlwwglcjjzmcdwcnrgvvmgjcfbzlncmgqtllgldbdztbtfcjczqtjjlnpqmrgtjsmrbscvqlgqghfbgwccgwrjrzrsbbrqnjcqhllsqmrjtzmjnndwwmdjfhspjpgdcjjpdvwrsgjcfnpllnnnccvnfvqbpddgvbgbsbczmbzrbclczljdmbhpgmhwlqvnjzjwzzfjmsmcchjrqrtmhwlgjsptctlbtdnrqgntcvngcrqdqptfmhbvlhrqchdtwdwbrbqwtswzcrrfndldwmjbczppzrnncvvqsmpvvqcnsvhprhlmrhnjbwdvrbbwwdtmzrqttschrztgjcshlhfbmhmwrrmwgmfshpdhjwgdmcfdvqrmmwgmzbrlgbfltvlzmvqbgvhppdzglqbdlrhjnntnfvtmzjqccmqdbpjqphfggmjqdrndhclcfvqsjrsbcgdhcrbjsdjmwrzvpfpcjwjfdltztfzgmlzqzmztpvbflppgnhdzssznngfjggczdtdmcczjzfsnflpwqrbggmqdbbprfptzcdqvhrvszzjqqjlrlrdpwcnzhvgfhpcdbbgsfmtnszwbhwcdwdghqqctwqlqrlqbdwfvjnhcpmzchqfrwzhzgslzhncmrlrpzcjczvzwcvwcldbmscfqnnqnwwvrpfvjswqmhgmhgnmfzpsjmdhbpvsftccttvdpcdzcnzswqmtrwbctpbgmzrvrrshjjgdqsqrwfpcmsbvqhccvjqpztlttwjjdtbmwslschpqjjllvjcjwtmrtvvwdzglstvtpndmmzcpgqsvqgfdtqdjdctsbsbmqzqhtczhgqgwbdlrhjrwcmtbzfndsbnpnhmsdhtghwwzvtdwtscdnwzmrjrsrjvvbvrpbszchwbltrjbcqmlhqnzcfbhjqnsjghlnlbsrgzrrzfvslwpbqmgfswhgjdsdfrzsdhvdqvqfbcbvmbfhjfpzwlbspcbnvrgpfnmjbwbsnpqpqhjpsnwrlcmfhpdmjbvpnctcfqgdmwzblsnr diff --git a/6/onestar.py b/6/onestar.py new file mode 100644 index 0000000..bab3ecb --- /dev/null +++ b/6/onestar.py @@ -0,0 +1,20 @@ +from collections import deque + +LEN = 4 +dups = deque(maxlen=LEN) + +def hasdups(): + for x in dups: + if dups.count(x) > 1: + return True + return False + +with open("input.txt", "r") as f: + line = f.readline().strip() + for (index, char) in enumerate(line): + dups.append(char) + print(char) + print(dups) + if len(dups) >= LEN and not hasdups(): + print(index+1) + break \ No newline at end of file diff --git a/6/twostar.py b/6/twostar.py new file mode 100644 index 0000000..6186dc1 --- /dev/null +++ b/6/twostar.py @@ -0,0 +1,20 @@ +from collections import deque + +LEN = 14 +dups = deque(maxlen=LEN) + +def hasdups(): + for x in dups: + if dups.count(x) > 1: + return True + return False + +with open("input.txt", "r") as f: + line = f.readline().strip() + for (index, char) in enumerate(line): + dups.append(char) + print(char) + print(dups) + if len(dups) >= LEN and not hasdups(): + print(index+1) + break \ No newline at end of file diff --git a/7/input.txt b/7/input.txt new file mode 100644 index 0000000..d62b62e --- /dev/null +++ b/7/input.txt @@ -0,0 +1,980 @@ +$ cd / +$ ls +dir csjncqmr +dir fnfjhvsp +dir mhfrct +dir pgmgbfcl +dir qcf +dir wrsjr +$ cd csjncqmr +$ ls +8827 vdrdm.pfj +$ cd .. +$ cd fnfjhvsp +$ ls +dir csjncqmr +dir czpmg +162385 dcgph +7135 hff.cdt +$ cd csjncqmr +$ ls +121543 gzjdsn.wlc +dir ljq +$ cd ljq +$ ls +dir cwlrlvf +dir jpqjhhpg +$ cd cwlrlvf +$ ls +151219 dcgph +$ cd .. +$ cd jpqjhhpg +$ ls +188355 dcgph +38458 gfgl.hlg +$ cd .. +$ cd .. +$ cd .. +$ cd czpmg +$ ls +168232 dcgph +143031 gzjdsn.wlc +$ cd .. +$ cd .. +$ cd mhfrct +$ ls +dir clm +66710 dcgph +232576 mtfhpcnj +$ cd clm +$ ls +dir pgmgbfcl +$ cd pgmgbfcl +$ ls +110296 qbfhj.tmn +$ cd .. +$ cd .. +$ cd .. +$ cd pgmgbfcl +$ ls +163613 cgchl +dir nnlr +123977 rrwbnmlh.jtt +dir tjhzggs +dir wfl +252837 wpgrl +$ cd nnlr +$ ls +103051 flp +dir qrhlzd +dir rcgmhz +dir snwrlr +dir vgj +dir znbzt +$ cd qrhlzd +$ ls +dir crg +246915 dcgph +264791 fcphzfb.fmb +299291 flp +dir mjqsg +297202 pgmgbfcl +dir sbbzgbz +dir wnsnssbg +$ cd crg +$ ls +55556 flp +185529 jswdvn +$ cd .. +$ cd mjqsg +$ ls +dir fnfjhvsp +dir jfbzjz +dir rwg +$ cd fnfjhvsp +$ ls +24945 cctwbs +170960 csjncqmr +316168 ljffgvvz.zld +187325 pgmgbfcl.fzv +74133 qbfhj.tmn +dir tjhzggs +dir vjmgmdz +$ cd tjhzggs +$ ls +287777 csjncqmr.nbd +$ cd .. +$ cd vjmgmdz +$ ls +dir vgpb +$ cd vgpb +$ ls +202578 bbbg.hlr +$ cd .. +$ cd .. +$ cd .. +$ cd jfbzjz +$ ls +207736 tjhzggs.cql +$ cd .. +$ cd rwg +$ ls +184997 csjncqmr +4378 dcgph +55767 qnc.wvv +$ cd .. +$ cd .. +$ cd sbbzgbz +$ ls +321376 csjncqmr +317438 flp +9263 hrs +$ cd .. +$ cd wnsnssbg +$ ls +dir jdjv +$ cd jdjv +$ ls +153354 gzjdsn.wlc +$ cd .. +$ cd .. +$ cd .. +$ cd rcgmhz +$ ls +dir tjhzggs +$ cd tjhzggs +$ ls +299192 jfbzjz.ttg +$ cd .. +$ cd .. +$ cd snwrlr +$ ls +30314 csjncqmr.jvn +dir hcf +$ cd hcf +$ ls +81979 jfbzjz.pfz +179459 ngh +$ cd .. +$ cd .. +$ cd vgj +$ ls +278579 jbn.rgz +dir jzj +dir lnbhh +dir pgmgbfcl +dir qgvspcpm +$ cd jzj +$ ls +295808 hrs +220437 vqbcl +$ cd .. +$ cd lnbhh +$ ls +212203 nfmhd.hbq +233853 qgz.mcd +$ cd .. +$ cd pgmgbfcl +$ ls +dir mmbdpj +138462 mwcdrpm.spr +288430 pgmgbfcl.pwd +132880 rdmwtn.qjj +41775 rfqb.djh +dir rnd +69597 thnbf +$ cd mmbdpj +$ ls +158542 hrs +306559 tjhzggs +$ cd .. +$ cd rnd +$ ls +223745 fnfjhvsp.hgt +138236 gdmtnffs.cdm +dir gmzb +dir hvl +266178 mzwmjl.rqq +dir njpq +33906 qbfhj.tmn +dir tjhzggs +$ cd gmzb +$ ls +186579 nsbfn.lsd +$ cd .. +$ cd hvl +$ ls +312925 csjncqmr.sbc +75264 gqp +81003 gzjdsn.wlc +$ cd .. +$ cd njpq +$ ls +188139 lbnrr.pwd +213545 qgqddvwf.hfl +$ cd .. +$ cd tjhzggs +$ ls +dir dlwvc +191782 jfbzjz +dir tbldpln +$ cd dlwvc +$ ls +75927 jvhjtnft +260563 qbfhj.tmn +dir vlg +$ cd vlg +$ ls +187660 hgm +dir rhr +273019 tdgr.crr +$ cd rhr +$ ls +286129 wnn.jgn +$ cd .. +$ cd .. +$ cd .. +$ cd tbldpln +$ ls +173546 pdfrsq.pnb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qgvspcpm +$ ls +dir dhrbsl +286566 fldhvbq +209725 gzjdsn.wlc +148148 nspz.gwc +111003 tjhzggs +$ cd dhrbsl +$ ls +58390 gzjdsn.wlc +150545 hrs +$ cd .. +$ cd .. +$ cd .. +$ cd znbzt +$ ls +211651 gwhb.mfz +$ cd .. +$ cd .. +$ cd tjhzggs +$ ls +dir hgr +229076 jfbzjz.dfh +dir ptfcbwwv +51893 qbfhj.tmn +97712 qgtvfh.hvs +$ cd hgr +$ ls +dir hwvgjdq +dir vwvbt +$ cd hwvgjdq +$ ls +dir pgmgbfcl +$ cd pgmgbfcl +$ ls +dir qgs +$ cd qgs +$ ls +188108 hrs +$ cd .. +$ cd .. +$ cd .. +$ cd vwvbt +$ ls +169212 tfrm.gjb +$ cd .. +$ cd .. +$ cd ptfcbwwv +$ ls +67829 lpszzl +$ cd .. +$ cd .. +$ cd wfl +$ ls +dir hfcm +$ cd hfcm +$ ls +73872 flp +$ cd .. +$ cd .. +$ cd .. +$ cd qcf +$ ls +dir ctjw +177175 dwzmnpr +dir fqldn +dir hmjnnjjj +301788 hrs +dir lgmld +dir pgmgbfcl +76771 qzsbm.zdb +dir scbgn +234764 vhrlgcf +$ cd ctjw +$ ls +139505 mflt.hnr +$ cd .. +$ cd fqldn +$ ls +dir bgq +7260 flgrh.tmt +dir fnfjhvsp +dir fnr +dir gsnqjmw +10529 gzjdsn.wlc +22877 hrs +dir hzbrgrfq +dir snmbwrzn +dir tjhzggs +6773 tzhsjsc +$ cd bgq +$ ls +40780 gzjdsn.wlc +233301 mnzdbpc +dir mpdjgbgf +303076 qbfhj.tmn +dir qjs +189723 sbzn.dtj +dir vhnqcrd +$ cd mpdjgbgf +$ ls +227105 dcgph +298219 dprcwts.vdt +$ cd .. +$ cd qjs +$ ls +214072 pgmgbfcl +264897 qbfhj.tmn +$ cd .. +$ cd vhnqcrd +$ ls +178950 fnfjhvsp +180561 pgmgbfcl.mst +312980 pgmgbfcl.twp +$ cd .. +$ cd .. +$ cd fnfjhvsp +$ ls +141191 fnfjhvsp.bng +81709 pgmgbfcl.sfw +$ cd .. +$ cd fnr +$ ls +316638 flp +dir fnfjhvsp +dir fqdnn +267054 gdnln +dir hfcrzwvm +dir rdljd +319112 wpcmfbr.zgp +$ cd fnfjhvsp +$ ls +115581 hrs +dir jfbzjz +$ cd jfbzjz +$ ls +170398 qbfhj.tmn +$ cd .. +$ cd .. +$ cd fqdnn +$ ls +dir cfg +dir jbjltw +$ cd cfg +$ ls +dir qljztr +dir tnsw +dir zhnqp +$ cd qljztr +$ ls +64638 bnlsrfb +63440 csjncqmr +206111 gzjdsn.wlc +207890 hrs +265995 pgmgbfcl.zcw +$ cd .. +$ cd tnsw +$ ls +85166 lsflqzmc +$ cd .. +$ cd zhnqp +$ ls +217666 csjncqmr.cch +$ cd .. +$ cd .. +$ cd jbjltw +$ ls +88043 dcgph +238483 hrs +189734 jnvwjs +243936 pgmgbfcl.wsr +$ cd .. +$ cd .. +$ cd hfcrzwvm +$ ls +dir vwc +$ cd vwc +$ ls +82566 shc.qhj +$ cd .. +$ cd .. +$ cd rdljd +$ ls +68011 ptw.bgd +$ cd .. +$ cd .. +$ cd gsnqjmw +$ ls +236818 gzjdsn.wlc +$ cd .. +$ cd hzbrgrfq +$ ls +240924 dcgph +dir dcjsv +dir dsrzdjfm +dir fnfjhvsp +dir hnzm +dir mqb +94014 smpnth.bbm +$ cd dcjsv +$ ls +316708 cmddvb +dir fnfjhvsp +$ cd fnfjhvsp +$ ls +dir fnfjhvsp +$ cd fnfjhvsp +$ ls +dir jqlcvds +$ cd jqlcvds +$ ls +51018 dqfbq.ggm +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd dsrzdjfm +$ ls +262938 csjncqmr.dmm +125129 mwcnlvhv.szp +150590 qbfhj.tmn +dir rrrzpsn +196430 vbdgb +dir vsfbwfdl +$ cd rrrzpsn +$ ls +dir tjhzggs +281655 tjhzggs.btg +dir tsjzf +$ cd tjhzggs +$ ls +291402 gbl +dir hctmr +dir hqdmpwl +225075 hrs +dir jfbzjz +51032 tjhzggs.qzr +$ cd hctmr +$ ls +113430 qbfhj.tmn +$ cd .. +$ cd hqdmpwl +$ ls +67634 tjhzggs +$ cd .. +$ cd jfbzjz +$ ls +193552 nmvl.tzj +197076 pgmgbfcl +11047 tjhzggs +$ cd .. +$ cd .. +$ cd tsjzf +$ ls +36205 jwmdtdjv +$ cd .. +$ cd .. +$ cd vsfbwfdl +$ ls +288660 flp +185921 jfbzjz +dir mqmvtddt +124423 nfbfq.dln +dir wzbc +$ cd mqmvtddt +$ ls +85529 bhjp.vvj +$ cd .. +$ cd wzbc +$ ls +77316 flp +271730 pgmgbfcl.lcd +$ cd .. +$ cd .. +$ cd .. +$ cd fnfjhvsp +$ ls +47666 mpwtvwd.fwr +$ cd .. +$ cd hnzm +$ ls +157672 flp +294957 gzjdsn.wlc +297187 lbssg +24223 qbfhj.tmn +dir rdnqrgt +177449 tld.tsd +$ cd rdnqrgt +$ ls +dir nltjzrrr +217347 vrb.gcd +$ cd nltjzrrr +$ ls +dir zzd +$ cd zzd +$ ls +47464 flp +dir fnfjhvsp +$ cd fnfjhvsp +$ ls +89424 qtzfddz.btd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd mqb +$ ls +105537 tjhzggs.wns +$ cd .. +$ cd .. +$ cd snmbwrzn +$ ls +dir mqt +dir nsdrn +dir rjn +$ cd mqt +$ ls +233842 pgmgbfcl +$ cd .. +$ cd nsdrn +$ ls +67018 dcgph +17296 flp +274166 gzjdsn.wlc +186308 jfbzjz +280195 lvbsrvwm.zlq +dir pjv +dir thlp +$ cd pjv +$ ls +123190 rfbj.gmq +$ cd .. +$ cd thlp +$ ls +141308 flp +188164 jfbzjz +299013 pgmgbfcl +171259 qbfhj.tmn +dir qsljb +$ cd qsljb +$ ls +291980 glcnlj.swh +$ cd .. +$ cd .. +$ cd .. +$ cd rjn +$ ls +181047 fqmhpg.hpl +$ cd .. +$ cd .. +$ cd tjhzggs +$ ls +dir csjncqmr +274202 fhfjvdjc.swt +dir fnfjhvsp +97050 frbpp.wch +dir gnbtgdr +dir jfbzjz +dir lpg +dir pgmgbfcl +dir twcdfdcv +dir wzd +dir zllcflrn +$ cd csjncqmr +$ ls +dir chpmwsfj +dir csjncqmr +57088 fnfjhvsp.jqg +52097 vgcm.dpv +$ cd chpmwsfj +$ ls +279480 tjhzggs.srw +$ cd .. +$ cd csjncqmr +$ ls +13716 dcgph +dir fqb +dir jfbzjz +dir msvlnt +88312 pgmgbfcl.qcf +$ cd fqb +$ ls +dir mmjfbvq +$ cd mmjfbvq +$ ls +79822 flp +$ cd .. +$ cd .. +$ cd jfbzjz +$ ls +302531 csjncqmr +164326 dcgph +8277 fnfjhvsp.rbv +dir jgsrgrtc +dir zwdgcd +$ cd jgsrgrtc +$ ls +60317 gzjdsn.wlc +$ cd .. +$ cd zwdgcd +$ ls +171967 fpls.fvd +$ cd .. +$ cd .. +$ cd msvlnt +$ ls +83178 cnhzh +11226 tjhzggs +$ cd .. +$ cd .. +$ cd .. +$ cd fnfjhvsp +$ ls +89882 dcgph +212817 qbfhj.tmn +257899 tjhzggs +$ cd .. +$ cd gnbtgdr +$ ls +dir flltghn +dir fnfjhvsp +dir jfbzjz +300698 ngcsnwb +292809 qtcqhdq +dir vbwjgf +280270 wbzcr.sgn +$ cd flltghn +$ ls +111452 rhgfv +$ cd .. +$ cd fnfjhvsp +$ ls +dir lbznfb +31273 nrtrqqc.cth +$ cd lbznfb +$ ls +175736 ljpr.cwm +$ cd .. +$ cd .. +$ cd jfbzjz +$ ls +237625 tjhzggs +$ cd .. +$ cd vbwjgf +$ ls +269242 jrrw.ljb +106705 pqnbrbt +$ cd .. +$ cd .. +$ cd jfbzjz +$ ls +dir dnn +$ cd dnn +$ ls +19045 dcgph +187257 tjhzggs.qzg +$ cd .. +$ cd .. +$ cd lpg +$ ls +101509 fnfjhvsp.nnt +221211 ldgjngjq +$ cd .. +$ cd pgmgbfcl +$ ls +dir bzbdphz +37920 flp +dir wpsm +$ cd bzbdphz +$ ls +252099 ffsfqfdw +312106 htft +298880 jfbvz.znw +135204 lrwccthr +dir zhbqf +108144 zsbbfhz.drr +$ cd zhbqf +$ ls +dir gtw +298022 svpgsrgj.ljz +$ cd gtw +$ ls +dir csjncqmr +dir rpzjg +$ cd csjncqmr +$ ls +278962 flp +272127 tjhzggs +$ cd .. +$ cd rpzjg +$ ls +92241 flp +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wpsm +$ ls +15936 flp +241514 qbfhj.tmn +245049 rjgwzlq.qrw +$ cd .. +$ cd .. +$ cd twcdfdcv +$ ls +140758 bjm +78772 dcgph +114059 mqsgrc.qcb +$ cd .. +$ cd wzd +$ ls +dir fnfjhvsp +dir mcbnp +$ cd fnfjhvsp +$ ls +72702 csjncqmr.jfn +120586 dcgph +$ cd .. +$ cd mcbnp +$ ls +12494 fnfjhvsp.frc +182092 gsv +17859 pdbvmblc.vng +116984 pfbdf +113843 prshrmg.srm +$ cd .. +$ cd .. +$ cd zllcflrn +$ ls +30966 flp +245820 jfbzjz.rnd +$ cd .. +$ cd .. +$ cd .. +$ cd hmjnnjjj +$ ls +134366 dcgph +212399 dtsb +255795 zhbcjtr +$ cd .. +$ cd lgmld +$ ls +55248 pgmgbfcl +62265 pgmgbfcl.nbg +240733 zhmff +$ cd .. +$ cd pgmgbfcl +$ ls +232717 fnfjhvsp +219581 gtcjbwpz.lmz +47399 gzjdsn.wlc +22814 hjqf +296672 hrs +dir nrzf +dir wqgcmnpp +dir wwvmdjz +dir zlhv +$ cd nrzf +$ ls +18406 dcgph +dir mhm +$ cd mhm +$ ls +95168 pgmgbfcl.hqv +$ cd .. +$ cd .. +$ cd wqgcmnpp +$ ls +dir csjncqmr +189963 dvcd.tnh +dir gzqrt +dir njffft +dir qvqp +6981 tjhzggs +dir wgfnlfsd +$ cd csjncqmr +$ ls +307371 cdptrw.rfm +$ cd .. +$ cd gzqrt +$ ls +dir pwsqss +$ cd pwsqss +$ ls +173397 flp +$ cd .. +$ cd .. +$ cd njffft +$ ls +dir bzhzg +dir tjhzggs +$ cd bzhzg +$ ls +213821 pgmgbfcl +$ cd .. +$ cd tjhzggs +$ ls +dir szvfzgj +$ cd szvfzgj +$ ls +196306 tjhzggs.hjh +$ cd .. +$ cd .. +$ cd .. +$ cd qvqp +$ ls +dir pgmgbfcl +$ cd pgmgbfcl +$ ls +114456 flp +252954 pgmgbfcl +$ cd .. +$ cd .. +$ cd wgfnlfsd +$ ls +212011 gzjdsn.wlc +$ cd .. +$ cd .. +$ cd wwvmdjz +$ ls +70022 dcgph +dir hjgvstp +dir jhgb +276853 qbfhj.tmn +242756 qdqswjjd.wnn +dir tjhzggs +292963 wcgmgmz.shb +$ cd hjgvstp +$ ls +24056 tdjwdw +$ cd .. +$ cd jhgb +$ ls +90571 gzjdsn.wlc +132326 rrvfml.dms +$ cd .. +$ cd tjhzggs +$ ls +29139 dmrsz.qhc +$ cd .. +$ cd .. +$ cd zlhv +$ ls +315120 dcgph +290175 pgvlcvpb +$ cd .. +$ cd .. +$ cd scbgn +$ ls +258300 bcchv.qsn +$ cd .. +$ cd .. +$ cd wrsjr +$ ls +dir csjncqmr +dir jfbzjz +dir nmfmqb +dir svgtrz +dir zjvhmd +$ cd csjncqmr +$ ls +148619 qbfhj.tmn +$ cd .. +$ cd jfbzjz +$ ls +dir csjncqmr +dir flrhpzt +dir fnfjhvsp +dir gpwv +dir lwrtc +$ cd csjncqmr +$ ls +dir czmlfmf +137365 flp +dir hggbs +107369 mpgm.lbl +$ cd czmlfmf +$ ls +dir hnpjvq +$ cd hnpjvq +$ ls +41339 fnfjhvsp.wnv +$ cd .. +$ cd .. +$ cd hggbs +$ ls +273367 qbfhj.tmn +$ cd .. +$ cd .. +$ cd flrhpzt +$ ls +200923 fwb +62059 hrs +$ cd .. +$ cd fnfjhvsp +$ ls +dir gdnmpgn +256037 hrs +$ cd gdnmpgn +$ ls +64024 jmww.gbb +$ cd .. +$ cd .. +$ cd gpwv +$ ls +159155 hrs +$ cd .. +$ cd lwrtc +$ ls +150299 nzvqj.dsv +129702 pgmgbfcl.lrt +dir zvgb +$ cd zvgb +$ ls +304137 hrs +$ cd .. +$ cd .. +$ cd .. +$ cd nmfmqb +$ ls +139823 jfbzjz +299946 nqqscdn.wsw +$ cd .. +$ cd svgtrz +$ ls +dir jdlvtm +123801 phhrgrbs +$ cd jdlvtm +$ ls +267972 tbgcnf.pqz +$ cd .. +$ cd .. +$ cd zjvhmd +$ ls +287427 csjncqmr.tfj +297578 hhhp.jvt diff --git a/7/onestar.py b/7/onestar.py new file mode 100644 index 0000000..e567afa --- /dev/null +++ b/7/onestar.py @@ -0,0 +1,29 @@ +dirstack = [] # Stack of directories we are currently at +directories = {} # Maps paths to total filesums + +def addsize(size): + for (i, dir) in enumerate(dirstack): + path = "/".join(dirstack[:i+1]) + if not path in directories: + directories[path] = 0 + directories[path] += size + +with open("input.txt", "r") as f: + for line in f.readlines(): + line = line.strip() + if line[0] == '$' and line[2] == 'c': + folder = line.split("$ cd ")[1] + if folder == '..': + dirstack.pop() + else: + dirstack.append(folder) + else: + indicator = line.split(" ")[0] + try: + size = int(indicator) + addsize(size) + except: + pass +sum = 0 +[sum := sum + directories[x] for x in directories if directories[x] <= 100000] +print(sum) \ No newline at end of file