From 15aab5d23ae97f4dd498bf3460be1ef22e31f3b5 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 2 Dec 2022 12:10:03 +0200 Subject: [2022] Updated names of folders --- 2022/Day01/input-po.txt | 2263 ++++++++++++++++++++++++++++++++++++++++++ 2022/Day01/part-one.cl | 22 + 2022/Day01/part-two.cl | 21 + 2022/Day02/input-po.txt | 2500 +++++++++++++++++++++++++++++++++++++++++++++++ 2022/Day02/part-one.cl | 45 + 2022/Day02/part-two.cl | 45 + 2022/Day1/input-po.txt | 2263 ------------------------------------------ 2022/Day1/part-one.cl | 22 - 2022/Day1/part-two.cl | 21 - 2022/Day2/input-po.txt | 2500 ----------------------------------------------- 2022/Day2/part-one.cl | 45 - 2022/Day2/part-two.cl | 45 - 12 files changed, 4896 insertions(+), 4896 deletions(-) create mode 100644 2022/Day01/input-po.txt create mode 100644 2022/Day01/part-one.cl create mode 100644 2022/Day01/part-two.cl create mode 100644 2022/Day02/input-po.txt create mode 100644 2022/Day02/part-one.cl create mode 100644 2022/Day02/part-two.cl delete mode 100644 2022/Day1/input-po.txt delete mode 100644 2022/Day1/part-one.cl delete mode 100644 2022/Day1/part-two.cl delete mode 100644 2022/Day2/input-po.txt delete mode 100644 2022/Day2/part-one.cl delete mode 100644 2022/Day2/part-two.cl diff --git a/2022/Day01/input-po.txt b/2022/Day01/input-po.txt new file mode 100644 index 0000000..1fabb6f --- /dev/null +++ b/2022/Day01/input-po.txt @@ -0,0 +1,2263 @@ +9686 +10178 +3375 +9638 +6318 +4978 +5988 +6712 + +10422 +3062 +2753 +3695 +1722 +8110 +6568 +7124 + +3162 +6117 +2560 +8788 +2413 +3719 +1052 +1349 +4780 +5178 + +24919 +15983 +18045 + +24872 +35761 + +20914 + +4701 +7592 +1014 +12219 +3794 +6893 + +6471 +5100 +4297 +8538 +3923 +8135 +2015 +2255 + +1631 +8016 +4371 +5797 +5252 +1487 +8289 +8886 +1149 + +8082 +8747 +4577 +3624 +4481 +7947 +2790 +9217 +4729 + +4069 +1728 +4093 +2978 +6582 +7897 +8643 +6644 +6473 +5476 + +2319 +22021 +15407 + +4522 +6382 +7089 +4432 +2795 +1003 +2831 +6318 +8082 +6085 + +6379 +3407 +1390 +2026 +2030 +5246 +6918 +4426 +6198 +6476 +5351 +1033 +1162 + +8071 +1526 +7680 +5507 +6398 +6183 +8175 +3282 +4522 + +5629 +3140 +8533 +6464 +3686 +2374 +2301 +5700 +3279 + +13663 +6031 +6803 +6393 +11160 +4072 + +4857 +1156 +5520 +7976 +7668 +1279 +1326 + +7711 +3945 +2583 +5502 +13777 + +34906 +15510 + +2588 +4153 +4506 +6765 +6541 +3058 +5648 +1128 +1968 +2492 +4147 +7017 + +1394 +3512 +8021 +9546 +2626 +9116 +2891 +2875 +7467 + +18630 + +19644 +32798 + +3971 +5752 +2806 +5887 +5795 +1287 +3304 +3597 +3474 +1179 +3770 +1015 +3592 +4485 +4764 + +7482 +2786 +3311 + +3192 +3483 +2424 +3037 +3110 +7110 +5647 +6269 +6561 +7272 +2554 +1036 + +6564 +3818 +3472 +1020 +1410 +5849 +2679 +4928 +3751 +5858 +4227 +5278 + +4117 +3263 +3692 +1978 +4588 +2585 +6214 +6494 +1778 +3568 +3864 +2868 +4305 +1430 + +1221 +1373 +1096 +5913 +3836 +5890 +3601 +4165 +3495 +1397 +4949 +1134 +6029 +5142 + +27593 +11384 + +2784 +1688 +3096 +3150 +4879 +4582 +1333 +1807 +2379 +5554 +3324 +5152 +5012 +2462 +1222 + +4859 +10400 +5079 +11803 +2503 +10827 +5426 + +5345 +8211 +1451 +4410 +8381 +4890 +7548 +7246 +1780 +3917 + +6854 +3240 +8375 +3079 +5972 +2835 +2674 +3492 +3796 + +6733 +6827 +10768 +10517 +4257 +3205 +7453 + +1099 +1739 +9012 +2371 +4084 +1693 +3029 +1434 + +5254 +11413 +7980 +4327 +8249 +9088 +3606 + +6987 +11807 +10066 +2892 +5783 + +2796 +23737 +10352 + +2634 + +49880 + +4685 +22996 +19146 + +28725 + +15169 +8027 +5352 +2138 +2120 + +6615 + +2024 +8972 +10861 +5491 +8987 +8435 +11850 + +3344 +2538 +6150 +8412 +1846 +4479 +2644 +5897 +5393 +5998 + +18876 +9663 +9689 +11058 + +6583 +11800 +7779 +2848 +2722 +4396 +7549 + +3246 +5003 +7862 +6912 +8904 +3942 +7496 +7132 +5370 + +12064 +7414 +9559 +5152 +7290 +9582 +5481 + +10086 +3167 +9372 + +11462 +4147 +5783 +9869 +6777 +4304 +7994 + +8294 +7105 +6757 +7863 +3160 +1528 +7169 +7838 +2268 +3947 + +4584 +2761 +1785 +8626 +5990 +2024 +6423 +3467 +2700 +8439 + +4345 +6322 +2099 +11273 +12175 +1463 + +10421 +12435 + +5558 +3558 +4218 +4032 +1163 +1627 +7457 +3703 +4028 +1023 +2037 +5726 + +6668 +17056 +6110 + +3542 +3056 +8182 +6347 +6062 +1489 +2602 +5081 +6673 +8375 + +10854 +30495 + +3402 +2945 +2982 +2379 +3173 +3456 +4373 +2120 +3383 +4479 +5662 +4288 +6776 + +4621 +5405 +2698 +3244 +4090 +6275 +5460 +3835 +4066 +3355 +4301 +5429 +2772 +2712 + +3836 +2729 +6662 +3756 +4596 +4783 +3636 +3965 +1593 +2152 +2658 +7456 + +5299 +5046 +1717 +3615 +5827 +1622 +6363 +1352 +2279 +5193 +2936 +3009 +6706 + +62000 + +6685 +2477 +2113 +5147 +4652 +5793 +4917 +7792 +6330 +5030 + +12537 +24802 + +7935 +8012 + +2421 +7653 +4554 +1956 +4607 +7395 +2884 +1969 +6443 +8245 + +6117 +5191 +4630 +1140 +6668 +5451 +6697 +4489 +5269 +2465 + +6837 +12023 +1789 +15035 + +8901 +3155 +10520 +7453 +8927 +2128 +3719 +2603 + +4407 +3576 +2621 +11197 +4048 +7417 +6378 + +26360 +30617 + +5540 +19475 +16907 +14236 + +12536 +28934 + +8992 +12942 +9843 +10281 + +12753 +7704 + +14617 +16937 + +6129 +2474 +1298 +11648 +3020 +13000 + +1105 +7814 +8488 +4284 +3278 +2762 +1956 +3020 +3604 +5909 + +8949 +32474 + +9354 +11532 +2977 +2575 +4038 +4165 +6043 + +16780 +21589 +15519 + +8929 +1176 +3057 +2567 +7937 +4959 +4256 +1722 +6570 + +2959 +5442 +4853 +1549 +1536 +5182 +3162 +3241 +5325 +2981 +4123 +5075 +4265 +3914 +1534 + +21076 +21413 +4121 + +2364 +3051 +15060 +15441 +5350 + +6444 +4119 +16142 + +12702 +1593 +10837 +3016 +12402 +7042 + +13897 +10933 +1898 +1192 +9621 +1669 + +3555 +4589 +4554 +5877 +2963 +5429 +2915 +2849 +2882 +4263 +2041 +3715 +3060 +2303 + +11964 +4040 +1263 +7289 +15158 + +5623 +2844 +5308 +3138 +1993 +3563 +6627 +3503 +3715 +4622 +6335 +5643 + +9204 +13679 +11665 +13069 +8239 + +3263 +3999 +3795 +6653 +9340 +2589 +4005 + +7500 +4295 +1968 +6505 +7489 +1744 +7166 +6015 +2376 + +9225 +15648 +9771 +6353 + +5602 +4032 +5956 +3389 +6191 +2664 +3316 +4315 +3835 +2812 +4567 +3807 +3900 +6049 + +9856 +15646 +16811 +9434 + +2608 +5821 +2961 +4460 +3216 +6185 +6432 +4535 +2637 +3924 +1974 +5768 +4971 + +7986 +11586 +10183 +8977 +2084 +2145 +9341 + +4685 +8276 +12887 +17836 + +9164 +2380 +6783 +3995 +7267 +1261 +4388 +4553 +1097 + +8223 +1915 +11132 +4659 +11049 +7510 + +4913 +8607 +16691 +9972 + +7210 +6436 +4538 +9051 +5474 +1160 +5078 +8171 +6253 + +16053 +7244 + +11209 +13125 +16289 + +18073 +12316 +7433 +18146 + +16372 +12640 +7592 +7330 +6436 + +15791 +4640 +8961 +2333 +4146 + +8804 +6092 +8411 +8919 +4059 +7108 +2972 +4028 +5195 + +13788 +3616 +19422 +7306 + +6851 +7067 +3876 +9144 +13656 +2327 + +1966 +2583 +1157 +2915 +6675 +3776 +1302 +6089 +2172 +3532 +2863 +3901 +1531 + +9831 +12160 +11410 +10388 + +1745 +3005 +8080 +5559 +6190 +2608 +7327 +2918 + +3396 +4608 +5926 +4771 +4039 +2174 +2121 +5335 +1336 +1675 +2359 +3973 +3239 +5151 +1931 + +1449 +1728 +4133 +6107 +2320 +1185 +4399 +3983 +2801 +3940 +6492 +5123 +4035 +3978 + +6109 +6364 +1026 +3149 +2741 +3875 +1984 +5286 +1888 +3023 +2625 +2827 +2957 +1806 + +30480 +13619 + +6289 +3501 +3339 +3547 +4583 +3975 +3044 +4120 +1519 +5909 +2056 + +6066 +2415 +3690 +8311 +4415 +5086 +2243 +7362 +5987 + +23114 +11625 +16362 + +1968 +4106 +1413 +3111 +7762 +5820 +5670 +5574 +6409 +5357 + +16940 +1118 +17725 +19352 + +4795 +4181 +2637 +2630 +2424 +1778 +5931 +4683 +2394 +5086 +4831 +3332 +2698 +3486 +4771 + +2149 +4199 +2711 +6010 +1129 +1231 +6029 +3041 +1062 +3989 +4288 +4097 +3866 +2487 +2904 + +5703 +3132 +3141 +3076 +2213 +1286 +1553 +4281 +5310 +3129 +1686 +4290 +1523 +2253 + +3393 +5859 +9430 +7600 +3773 +6009 +6501 + +2112 +3375 +4744 +2051 +7859 +5263 +7294 +4412 +3787 +3697 +3237 + +6377 +5061 +6859 +13460 +14181 + +5001 +7058 +5323 +3147 +5016 +7995 +8072 +1337 +4375 +5257 +3975 + +3785 +3750 +3530 +3048 +2905 +2034 +6828 +1797 +6657 +3317 +2701 +2805 +5267 + +3394 +3691 +6713 +2117 +2962 +1057 +5815 +4045 +1400 +1865 + +18465 + +3921 +1777 +7151 +1041 +5017 +7230 +1976 +4454 +1604 +7350 +5884 +1003 + +2624 +1309 +6631 +9455 +6512 +7719 +7483 +4181 +5094 + +2569 +9911 +14251 +8292 +12541 + +2439 +1330 +1018 +5115 +4820 +5319 +3124 +3076 +1693 +2628 +2344 +3158 +1718 +4605 + +4199 +3446 +4622 +6428 +5002 +1766 +2452 +5311 +6527 +2064 +4993 +2024 +4693 + +1280 +3349 +4131 +5665 +2363 +3945 +5484 +3679 +1486 +3646 +3623 +4184 +3000 +1048 +2655 + +14131 +3553 +13678 +1207 + +5857 +6149 +3312 +4757 +2563 +1790 +1221 +5509 +3380 +1359 +2480 +4558 +6280 +6369 + +1547 +3878 +5568 +1225 +1380 +2200 +5147 +2039 +6309 +2982 +3495 +2152 +5235 + +16640 +20034 +9548 + +1753 +3165 +1652 +4443 +1216 +4491 +1942 +1762 +1107 +4286 +3966 +1075 +4525 +4613 +1913 + +1009 +2116 +7166 +3405 +7214 +6239 +4865 +5685 +7262 +3953 +6155 +1625 + +11721 +15346 +2328 + +1874 +1749 +5597 +1262 +6198 +4768 +5577 +4281 +2519 +4929 +5366 +3798 +4735 +5911 + +5955 +9870 +1445 +9985 +2525 +3789 +9850 +8345 + +4573 +1388 +5113 +5476 +4662 +1491 +4951 +4466 +3762 +1945 +4543 +1206 +1464 +2592 +3641 + +1335 +1373 +2210 +4502 +6682 +3789 +3132 +6931 +4406 +2178 + +3208 +2932 +4708 +7096 +3292 +1181 +7684 +7182 +4935 + +33589 + +3334 +1623 +14592 +12083 +8779 + +2894 +5672 +4799 +5270 +4984 +2968 +4691 +5946 +4794 +3982 +1050 +3329 +1705 +2157 +5903 + +6094 +4559 +3567 +6528 +10766 +6235 +11374 + +3073 +5101 +11776 +9277 +6191 +4145 +3796 + +7420 +7909 +4665 +4147 +3076 +7307 +7796 +5377 +3060 +6959 + +7330 + +35781 + +21425 +21583 +5018 + +4184 +1379 +6016 +3474 +6024 +4306 +3615 +1908 +2850 +1928 +3089 + +16714 +5650 +15944 +11173 + +9343 +16875 +12773 +14484 + +10430 +10942 +11646 +3054 +7681 +9377 +9747 + +1306 +6064 +9684 +2441 +5045 +4444 +5012 +6192 +1975 + +1344 +5398 +5433 +7606 +8077 +7391 +1909 +2436 +6590 +1780 +7328 + +1965 +1722 +6019 +2211 +5501 +6079 +2874 +2073 +6101 +1485 +1281 +2820 +2924 +1053 + +4243 +1623 +2406 +5790 +3669 +4752 +5178 +6264 +6380 +2595 +3841 +1924 + +1396 +4822 +5173 +4566 +5742 +4373 +3061 +3710 +3165 +2752 +4663 +3674 +1988 +5783 +4851 + +4241 +7995 +10301 +9600 +3012 +2005 +7728 +2592 + +4258 +4068 +3590 +4519 +4699 +4420 +1850 +2672 +1702 +1419 +5779 +2548 +5901 +6088 + +65317 + +4907 +1843 +6719 +2996 +8461 +1214 +7159 +3834 +9003 + +49655 + +3092 +5048 +1627 +1180 +3552 +4004 +3769 +1024 +4362 +5281 +5272 +3328 +3477 +5851 +1852 + +13904 +7402 +7268 +3770 +2397 +10475 + +8476 +1976 +6163 +8095 +1462 +4641 +3808 +3857 + +3335 +6780 +2119 +5330 +7117 +7491 +3805 +8481 +6605 +7085 + +4322 +7670 +9443 +9057 +3985 +3627 +5998 +4438 +1504 + +13151 +10965 +11166 +13415 + +5671 +8571 +11580 +7158 +9153 +5862 +5101 + +4456 +3654 +8081 +5430 +2761 +3354 +5363 +6253 +2655 +4659 + +1596 +2737 +8104 +8749 +3052 +5251 +2949 +1621 +7083 + +2651 +11140 +13548 +3706 +12111 + +10168 +12202 +22359 + +6858 +5062 + +13856 +10455 + +12441 +19040 + +6274 +9591 +6760 +4995 +6509 + +8503 +6463 +1391 +5937 +2652 +6222 +3700 +4437 +4223 + +1347 +5568 +3527 +2038 +7671 +2747 +2076 +5001 +6812 +6935 +4605 + +6064 +4289 +3615 +1534 +1503 +3969 +5012 +5882 +1072 +3045 +1108 +1100 +5537 +2296 +5210 + +2276 +5684 +8123 +10661 + +14356 +10192 +8724 +9007 +2580 + +4185 +1781 +4779 +2912 +2168 +1818 +2476 +4738 +4184 +4399 +2516 +5069 +4411 +1555 +4792 + +17014 + +32213 +4835 + +9759 +16225 + +13768 +12275 +12116 +5614 +13597 +11836 + +13759 +5359 +16706 +3223 + +5529 +8735 +2684 +7245 +4021 +6476 +4830 +4545 +4689 + +7538 + +2382 +11825 +7660 +12725 +8655 +6276 + +3726 +8819 +8277 +11877 +2680 +9393 +9534 + +5712 +4484 +3939 +6190 +12015 +8155 +3414 + +1744 +3387 +5549 +5161 +1944 +3018 +2892 +4872 +2058 +3465 +5410 +4294 +4460 +5671 +2677 + +3277 +5567 +1927 +4030 +2402 +6956 +1493 +2694 +2953 +4684 +1757 + +2412 +9606 +11353 +2517 +4728 +13835 + +8658 +3007 +3050 +7032 +10355 +7154 +2882 +1771 + +7005 +4228 +4094 +6651 +2666 +4580 +6731 +7665 +6497 +2146 +3836 + +49889 + +1694 +21826 +15682 + +4069 +11100 +14655 +13224 +4596 + +7669 +4609 +5102 +6077 +6909 +5199 +6616 +3888 +2759 +5067 +1215 + +1178 +1772 +6040 +6155 +7363 +2308 +1947 +2395 +1998 + +3637 +1397 +3793 +2486 +1535 +6323 +5601 +1122 +4774 +5946 +3911 +1983 +5110 +6123 + +4280 +3131 + +2074 +8575 +10967 +11051 +7926 + +5181 +5262 +9549 +4648 +5870 +10554 + +10006 +9886 +1787 +4121 +6732 +11668 +1701 + +9374 +10024 +4499 +19405 + +2653 +2184 +1682 +2239 +5008 +3214 +6107 +1386 +1746 +1625 +6576 +5311 +2448 + +2752 +1482 +2199 +1874 +6361 +1308 +2520 +5508 +7547 +2123 + +3589 +3732 +1867 +1000 +3740 +6457 +7409 +1310 +7995 +6470 + +3216 +3362 +1330 +7974 +7888 +7616 +5315 +6599 +4725 +8265 + +25525 +11728 +2872 + +15044 +2896 +9572 +10589 +4530 + +6439 +10037 +1455 +12711 +3160 +2979 + +2176 +6329 +3361 +6290 +1759 +5233 +3803 +2310 +5657 +4209 +4457 +1883 +3449 +1304 + +11140 +4322 +11612 +8569 +8463 +6798 +5517 + +4374 +6158 +5395 +2805 +1792 +3798 +6749 +4769 +6825 +6759 +6835 +4871 +1074 + +1474 +4540 +2518 +4116 +3756 +3306 +4666 +3344 +3742 +6019 +3442 +2869 +2045 +4736 +3950 + +6446 +7360 +1549 +8156 +1739 +1610 +2676 + +2168 +2396 +6164 +7025 +8787 +8097 +3409 +4574 +3966 + +3086 +2856 +5035 +5065 +5864 +1594 +7703 +6964 +7211 +7718 +1107 + +51004 + +4918 +1158 +2005 +4612 +7834 +1074 +9254 +5527 +1324 + +6855 +3281 +1711 +6762 +7458 +6741 +4422 +1410 +7470 +3944 +1893 + +9371 +15492 +19708 +12935 + +5733 +3862 +4820 +2177 +8633 +7626 +6625 +7092 +8201 +2674 + +49048 + +7618 +4063 +4934 +2443 +2170 +6858 +4485 +3340 +1799 +3106 + +8992 +6122 +2877 +9496 +2383 +7021 +4371 +8902 +5207 + +14001 +26749 + +15324 +23968 +19677 + +5335 +2824 +4423 +5694 +7382 +8340 +1838 +8489 +7044 +6785 + +3771 +2619 +2974 +9941 +8552 +5552 +3107 +2597 + +3505 +1425 +4302 +6794 +3867 +6186 +2169 +6833 +4437 +5529 +1621 +1454 +6758 + +4211 +2770 +3598 +2408 +5814 +1930 +4342 +1792 +6068 +3389 +2838 +2599 +3464 +4967 + +2326 +1344 +3774 +5442 +1575 +5559 +1918 +4675 +2672 +2538 +4055 +3083 +5036 +1558 +4674 + +2098 +15641 +1220 +5315 + +12642 +15560 +4074 +15919 + +21911 +9200 +10100 + +2645 +12965 + +8655 +8517 +7883 +6615 +2964 +6688 +1089 +4816 +6827 +1743 + +14801 + +7826 +6082 +5962 +6382 +5873 +9072 +6773 +7190 +3114 + +6448 +8620 +7630 +8340 +5270 +8082 +1467 +7973 +2886 + +1010 +4394 +3625 +1476 +4141 +5883 +7079 +3272 +6419 + +5456 +2482 +8364 +1530 +11974 +11305 +12132 + +2319 +6357 +6245 +3226 +3813 +5844 +4492 +4140 +3185 +4965 +5452 +1614 +1123 diff --git a/2022/Day01/part-one.cl b/2022/Day01/part-one.cl new file mode 100644 index 0000000..34644c6 --- /dev/null +++ b/2022/Day01/part-one.cl @@ -0,0 +1,22 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(let + ((cal (read-line *prog-input* NIL)) (maxsum 0) (csum 0)) + + (loop until (or (equal cal "end") (not cal)) do + (if (equal cal "") + (setq csum 0) + (setq csum (+ csum (parse-integer cal)))) + (if (> csum maxsum) + (setq maxsum csum)) + (setq cal (read-line *prog-input* NIL))) + + (print maxsum)) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) diff --git a/2022/Day01/part-two.cl b/2022/Day01/part-two.cl new file mode 100644 index 0000000..2d88791 --- /dev/null +++ b/2022/Day01/part-two.cl @@ -0,0 +1,21 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(let + ((cal (read-line *prog-input* NIL)) (sums '(0))) + + (loop until (or (equal cal "end") (not cal)) do + (if (equal cal "") + (push 0 sums) + (push (+ (pop sums) (parse-integer cal)) sums)) + (setq cal (read-line *prog-input* NIL))) + + (setq sums (sort sums #'>)) + (print (+ (first sums) (second sums) (third sums)))) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) diff --git a/2022/Day02/input-po.txt b/2022/Day02/input-po.txt new file mode 100644 index 0000000..18f755a --- /dev/null +++ b/2022/Day02/input-po.txt @@ -0,0 +1,2500 @@ +B Z +A Y +A Y +B X +A Y +B X +A X +B X +B X +B X +C Y +C Y +A X +A Y +A Y +B X +A X +C Y +B Z +A X +B Z +C Y +C Z +A X +C Z +A Y +A X +B Z +B X +A Z +B Z +A X +A Z +B X +B X +C Y +B X +A X +A Y +C Y +B Z +C X +A X +B Z +B Y +B X +A Z +B Z +B Z +A X +B Z +B X +C X +A X +B X +B X +B Z +B X +B Z +A Y +B Z +B X +C Y +A Y +C Y +B Z +A Y +B X +A Y +C Y +A Y +B Z +B Z +C Z +B X +A X +C X +B Y +A Z +C Z +B Z +A Y +A X +B Z +C Z +B X +B Z +A Y +B X +A Y +A Y +A X +C Y +B X +B Z +C Y +B X +B X +C Z +C Y +C Y +A X +B Z +A X +A X +B Y +A Y +B Z +B Z +B Z +A Y +A X +A Y +B X +B Z +A X +B X +B X +C Y +B Z +A X +A Y +B Z +A X +B Z +A Z +A Y +A Z +B Z +A X +A Z +A X +C Y +A Y +A X +B Z +C Z +B Y +B Z +B X +A X +C Y +B Z +B Y +B X +B X +A X +C Y +A Y +B X +A Y +A Y +A Y +B X +A Z +A Y +B X +A X +A Z +B X +B X +C Z +C Y +B X +B X +A Y +C Y +C Y +A X +B Z +B Z +A Y +C Y +B Z +A Y +A Y +A X +B Z +B X +A X +A X +B X +A X +B X +A X +B X +A X +B Y +B Z +A X +B X +B X +B Z +A X +B Z +A Y +B Z +A X +A Z +B X +A X +A Y +C Y +C Y +B Z +A X +C Y +A X +B X +A Y +A X +B X +B X +A Y +A X +A X +A Z +C Y +A X +B X +A X +A X +A X +A Y +A Y +C Z +C Z +A Y +B Z +A X +B X +C Y +B Z +B Z +C Y +C Y +A Y +A Y +A Y +A Y +C Z +A Y +B Z +B Z +C Z +C Y +C Y +C Y +C Y +C X +A X +B Z +B Z +B Z +B Z +C Y +B Z +A X +A X +A X +B Z +A Y +C X +B Z +A X +A Y +B Z +C Z +B X +A X +B Z +A X +A Y +B X +C Y +B X +B Z +A X +B X +B X +A X +B X +B Z +B X +A X +B X +B X +B X +B Z +B X +B Z +C Y +A X +A X +C Y +C Z +A Y +B Z +B Z +A X +B Z +A Y +A X +A Y +A Y +A Y +B Z +C Y +A X +A Y +A Z +B X +A Z +B X +B X +B X +A X +A X +C Y +B X +A X +B Z +A Y +A Y +A X +B Z +A Y +B X +A Y +B Z +C Y +A Y +C X +B X +B Z +C Y +A Y +A X +A X +B Y +C Z +B Z +A Y +A X +A Y +A X +A Y +A Y +A X +A Y +A Z +B X +A X +C Y +A X +C X +A Y +A X +A Y +A X +A X +B X +A X +B Z +A X +C Z +B Z +B Z +A Y +B X +B X +A Y +B X +B X +C Y +A Y +C X +C Y +B Z +A Y +A X +C Z +A X +B X +B X +C X +A Y +B Z +A X +A Z +C Y +B Z +C Y +C X +A Y +B Z +B Z +A Y +B Z +B X +B X +B Z +B Z +B X +C Y +A Y +A X +A Y +B Z +A X +A Y +A Y +A X +B X +A Z +A X +B Z +B Z +A X +C Y +C Y +A Y +A X +A Y +B Z +B Z +B X +B Z +A Y +A X +A Y +A Y +A Z +C Y +C Z +A X +C Y +A Y +A X +A Y +A X +C Z +B Z +B X +B X +B X +A X +A Z +B Z +B X +B X +B X +B X +B X +B X +C Y +B X +B Z +A X +C Z +A X +C X +B Z +A X +A Y +A Z +C Y +B X +C Z +C Y +A Z +B Z +C X +A Y +A Z +B Z +B Z +B Z +A X +A X +B X +A X +B Y +A X +A Y +A Y +B X +A Y +B X +C Z +A Y +C Y +A X +A X +A Y +B X +B Z +A X +B X +B Z +A Z +C Z +B Z +B X +A X +A X +B X +A X +A Y +A Y +B Z +A X +A X +A X +A X +C Y +C Z +A X +A Z +A X +B X +A X +B X +B Z +B X +C Y +B Z +A X +B Z +A Z +A Y +A Y +A X +A X +B Z +A Y +A X +A X +B X +B Z +A Z +A Y +A Z +B X +B Z +A Y +A Z +B X +B Z +A Z +A Y +A Y +A X +A Y +B Z +A Y +A X +A X +A Y +A Y +A X +A Y +A X +C Y +B Z +B X +B X +B X +A X +B Z +B Z +A X +B Z +A Y +C Y +C Y +A Y +B Z +B X +C Y +A X +A Z +B X +B X +C Y +A X +B X +B Z +A Y +A X +B Z +A Y +A Y +C Z +B Z +B Z +A X +C Y +A Y +A Z +A Y +C Z +B Z +A Y +C Z +B X +A X +B X +B X +C Y +A Y +B Y +A Y +B X +A Y +A Y +B X +B Z +B X +A Y +A Y +C Y +C Y +A Y +C Y +A Z +B Z +A X +A Z +A X +C Y +A X +A X +B Z +B Z +C X +C Z +A X +C Y +B Z +B X +A Y +A X +A X +B Z +A X +A Y +A Y +A X +B Z +C Y +A Y +B Z +A Y +B X +A X +A X +A Y +A X +B Z +C Y +A X +A Z +B Z +B Z +A X +C Y +A X +B X +A X +A X +B X +A X +B X +B Z +C X +A X +C Y +C Y +B Z +B X +C Y +C X +A Y +B X +A Y +B Z +C Z +B Z +A Y +A X +B X +A Y +A Y +B Z +B X +A Y +B X +A X +A Y +B Z +B X +A Z +A Y +A X +A Y +B Z +B Z +A X +A X +B Z +A X +B Z +A X +B X +B X +A X +A Y +B X +A Y +A X +B X +B X +B Z +B X +C X +B Z +A Y +B Z +A Y +A X +B Z +B X +B X +C Y +B X +B X +A X +A Y +A X +B X +C Y +C Z +A X +B X +B X +A Y +B Z +B X +A X +B X +C X +A Y +A Y +A Y +A Y +C Y +A Y +A Y +A X +A Y +B X +A Z +A X +B Z +B X +A X +B Z +A X +B Y +A X +A X +A Y +B X +B Z +C X +A X +A X +A Y +B Z +C Z +A X +C X +B Z +B X +B X +B Z +B Z +A X +C Z +A Y +A Y +B Y +B X +B Y +A X +B Z +B Z +A X +B X +A X +B Z +A Y +A Y +B Y +A Y +A Y +A X +B X +A X +B Z +B X +B Z +C Y +A X +B Z +A Z +A X +A X +B X +B X +A Z +B X +A X +A Z +A X +A Z +A Y +A X +A Z +C X +A X +C Y +B X +A X +B X +B X +B X +B X +A X +B Z +B X +A Y +B X +A Y +B X +B X +A Y +B X +A X +A X +A Y +B Z +A Z +B Z +C Y +B Y +A Y +A X +A Y +B Z +A X +B Z +B X +A X +B X +B X +A X +A Y +B Z +C Y +A Y +B Z +C Y +A X +C Y +A Y +A Y +A X +C Y +A Y +B Z +B Z +A Y +B Z +B Z +C Y +A X +A Y +A Y +C Z +A X +A Y +A Y +A X +A Y +B X +A Y +A X +A Y +B X +B X +A Y +A Y +A Y +C Y +A X +A X +B X +A X +B Z +C Y +B Z +C Y +A X +C Z +C Y +B Z +B Z +A Y +B X +B Z +C Y +A X +A X +A X +B Z +A X +A Y +B Z +C X +C Y +A Z +A X +C Y +A X +A X +B X +C Y +A Z +B Z +C Y +B X +A X +A X +C Y +A X +A X +B Z +B X +A X +A Y +B X +A X +A X +B X +C Y +A Y +C Z +A Y +B Z +A X +B X +B X +A X +B X +B Y +A X +C Y +A Y +A Y +B X +A Y +B X +B Z +A Y +C Y +C Y +A Z +B Z +C Z +B Z +A Z +A Y +B Z +A X +B Z +A Z +A Z +B Z +B X +A X +A X +A X +B X +A X +A Y +C Y +B Z +B X +A X +B Z +B X +B Z +A X +B X +B X +B X +A X +B Z +A X +B X +A X +C Y +A X +A Y +A Z +C Y +A Y +A X +C Y +B Z +A X +B Z +A X +B Z +B Z +B Z +C Z +A Z +B X +A X +A Y +A Y +A Y +B X +C X +A Y +A X +A X +C Y +A Y +A Y +B X +C Y +A Z +A Z +A Y +C Y +B Z +A Z +C Y +A X +B X +B X +B X +A X +C Z +C Y +B Z +B Z +A X +A Y +A Y +A Y +C X +A Z +A X +B X +B Z +B Z +A Z +A X +B Z +A Y +B Z +C X +A X +B Z +A Y +A Y +A X +B Z +B X +A Y +A Y +A Y +A Y +A Z +A X +C Y +A Y +A Y +C Y +C Y +B X +C Y +A X +A Z +B Z +C Y +A Z +A X +A Z +A Y +C Y +B Z +A Y +B X +B X +A X +B X +A Z +B Z +A X +A X +C Y +A Y +C Y +C Y +B X +A X +C X +B X +B Z +A Y +B Z +A X +A Y +B Z +B Z +A Y +A Y +A X +A Y +B Z +A Y +B Z +C Y +C Y +B X +A Z +A Y +C Y +B X +B Z +B X +C Y +B Z +A Y +A Y +B Z +A X +A Z +B X +A X +C Z +B X +B X +B X +C X +C Y +B X +A Y +B Z +B X +B Z +C Y +A X +A Y +A X +B X +B Z +B Z +A X +B X +C Y +C X +B Z +A X +A Y +B Z +B Y +C Y +C Y +A Y +B Z +B X +A Y +B Z +A X +A X +A Y +B Z +A Y +A X +B Z +A X +C Y +A Y +C Z +B Z +C Y +B Z +A Y +C Y +A X +A Y +B X +B Z +B X +B Z +A Y +B X +A Y +B Z +A Y +C Y +A X +A X +B Y +B X +A Y +C X +B Z +B Z +A Y +C Z +B X +A X +A Y +B Z +C Y +C Y +A Y +A Y +B X +C Y +A Y +B X +A X +B X +B Z +A X +A Y +B X +B X +C Y +B Z +A X +A X +B X +C Y +B X +A X +A X +B X +C Z +C Y +B X +B Z +A X +A Y +C Y +A Y +A Y +A Y +B X +C Y +B X +A X +A Y +A X +B Z +A Z +B X +A Y +B X +A Y +B X +B Z +A X +A X +B Z +A X +A Y +B X +B Z +B Z +A X +A Y +A Y +A X +A X +B X +B Z +B Y +A X +C Y +A Y +C Y +A Y +C X +B X +B X +A X +B Z +A X +C Y +B X +C Y +A Z +A X +B Y +A X +B X +B Z +A Z +C Y +A Y +A Z +A Y +A X +A Y +A X +A X +A X +B Z +B Z +C X +A X +C Z +B X +C X +B Z +B Z +A Z +B X +A Y +B Z +C Y +A X +C Y +C Y +B Z +A Y +A Z +A X +B Z +B X +C Z +C Y +A Y +C Z +B X +B Z +C Y +A X +B X +C Z +B Z +C Y +B X +A Y +B Z +C X +A Z +A X +A Y +B Z +B X +B X +B X +B Z +A Z +A X +B Z +B X +A X +A Y +B X +B X +A X +A X +B X +B X +C Y +A Y +C Z +A Y +A Y +A X +B X +B Z +A X +B X +A X +B X +A Y +C Y +A Y +A X +A Y +A Y +C Y +B Z +B Z +A X +A Y +C Y +C Y +A Y +A X +A X +C Y +B X +A Y +B Z +C Y +B Z +A X +A Y +A X +B Z +B X +C Y +A Z +C X +A Y +A X +C X +B X +A Y +A X +B Z +B Z +C Y +A X +A Y +A Y +B X +A Y +A X +C Y +B X +C Y +A Y +A Y +A Y +A X +A X +C Z +B X +C Y +B Z +A X +A Y +B Z +C X +B Z +A X +C Y +C Y +B Z +B Z +A X +C Y +C Y +A Y +C Y +B X +B Z +A Z +C Y +A Z +B Z +A X +B Z +A X +B Z +A X +A Y +A X +B Z +A X +A X +A X +B X +C Y +B Z +B X +A Y +A Y +C Y +B X +A Z +C Z +C Y +A X +A Y +A X +B Z +A X +B X +C Z +A Y +C Y +A Y +A Y +A Z +C Y +A X +B Z +C X +B Z +A X +B Z +B Y +A X +C Y +A X +A Y +B X +A X +B X +A Z +A X +A Y +B X +A Y +B X +C Y +B X +A X +A Y +A X +B X +A X +A X +B X +A Y +B Y +A X +A Y +A X +B X +C Y +A X +A Z +C Y +A Y +C Z +B X +B Z +A Y +C X +A Z +A X +A X +B Z +C X +A Y +A X +A Y +A X +A Y +B Z +B X +A Z +B Z +A X +A Y +B X +B Z +A Y +B Z +C X +B Z +A X +B X +B X +C Y +B X +B Z +A X +A Y +B X +A X +B Z +A X +B Z +B Z +C Y +C Y +B Z +B X +B Z +A X +A Y +A X +B X +B Z +A Y +B Z +B X +B X +B X +B Z +B Z +A X +B X +A Y +B X +C Y +B Z +B Z +B X +C Z +A Y +A Y +B Z +B Z +A X +C Z +A Y +A X +A Y +B X +C Y +A Y +A X +B X +B Z +A Z +A Y +A Z +A X +B X +B X +A Z +A Y +A X +C Y +A Y +A X +C Z +A X +B X +A Y +B X +A Y +A X +A Y +B Z +B Z +C Z +A Y +A X +A Y +A Z +A Y +B Z +B X +A X +A X +B Z +C X +A Y +A X +A Z +C X +C Y +B Z +A Y +B X +B Z +C X +B Z +A Y +B Z +B X +A Y +B Z +B X +A X +B Z +C Y +A Y +B Z +A X +A X +B Z +A X +C Y +A X +B X +B Z +B Z +C Y +A X +B Z +C Z +B Z +A Y +B Z +B Z +A X +B Z +A X +B X +A X +A X +B Z +B X +A Z +B Z +B X +B Z +B Z +B Z +B Z +A Y +B X +A Y +B Z +B X +A X +A X +B X +B Z +C Y +B Z +B X +B Z +B Z +C Y +A X +A Y +B X +A Z +B Z +B Z +A X +A Y +B Z +A Z +A Y +A Y +A Y +A Y +C Y +B Z +A X +A X +B X +A Y +A Y +A Y +A Y +B X +B Z +C Y +B X +B X +A Y +B X +B Z +A X +C X +B X +B X +B X +C X +C Y +A Y +A X +B X +A Z +C X +B Z +C Y +B Z +A Y +A X +B X +B X +B X +A Y +B Z +A Z +C Y +A Y +A X +B Z +C Y +A Y +A X +B Z +C Z +C Y +A Y +A X +A Y +C Z +A Y +B Z +B X +B X +C Z +C Y +C Y +C Z +A Y +A Z +C Z +A Y +A X +B Z +A Y +A X +C X +A Y +C Y +C Y +A X +B Z +B X +A Z +B X +A X +C Y +A Z +B Z +A X +B Z +B X +A Y +C Z +B X +B Z +C Y +A X +B Z +B X +A Y +B X +C X +A X +A X +A X +A X +C Y +C Y +A X +B Z +A X +A Y +A Y +A X +A X +B Z +B Z +B X +A Y +A Z +C Y +A X +A Y +B Z +B X +B X +A X +C X +B Z +C Y +C Z +B Z +A X +B Z +A Y +A Y +A Y +C Z +C Y +A Y +C Y +A Y +A X +B Z +B Z +B X +C Z +A Y +C X +B Z +A Y +B Z +B X +B Z +A X +A X +B Z +C Y +A Z +A Y +B Z +A Z +C Y +B Z +B X +A X +B Z +B X +A X +B Z +A X +A X +B Z +C Y +B Z +A Y +A X +A X +C X +A Y +B Z +C Y +A Z +C Y +B X +A X +B X +C X +C Y +B Z +B Z +A Y +A Z +B X +B Z +A Y +B X +A Z +C Y +C Z +C Y +A Y +C X +C X +B X +A Y +A X +B X +B X +C Z +C X +A X +A Y +B X +B X +C X +B Z +A Y +B Z +A Y +B Z +C Y +A X +A X +B X +B Z +A X +C Y +B X +A X +A X +A Y +A Z +B X +A X +A Y +A Z +B X +B Z +A Y +A X +B X +A Y +C Y +B Y +B X +A Y +C X +A Z +C Y +A X +B Y +C Y +B Z +B X +C Y +C Y +A Y +A X +C X +A Z +A X +B Z +B X +B X +A X +B X +A Z +B X +B Z +B Z +C Z +B Z +B X +C Y +C Y +A Z +C X +A X +B Z +A X +C Y +A X +A Z +B Z +B Z +A X +B Z +B Z +A X +C Z +B Z +B X +C X +A Z +B X +A Y +B Z +C Y +B Z +B X +A Y +B Z +A X +B Z +A Y +A Z +B Z +C Y +C Y +A Z +B Z +B X +B X +C Z +B Z +B Z +A X +A X +A X +A X +A X +C Y +A X +B Z +A X +B Z +C Y +C X +A Y +B X +A X +B Z +A Y +B Z +C X +A Y +B X +A X +A Y +B Z +A Y +A X +B X +B Y +B X +B Z +B X +A X +B X +B X +B X +A Z +A X +A X +B X +C Y +A X +A X +B X +B X +B X +B X +A Y +A X +B Z +A X +A Y +C Y +B Z +A Y +A X +C Z +A X +B Z +A X +B Z +B Z +B Z +C Y +B X +C Y +A Z +B Z +A X +A Y +A Y +A Y +B X +B Z +B Z +A Y +B Z +B Z +B X +A X +B Z +A Y +A Y +A X +B Z +A X +A X +B Z +C Y +B X +A X +A X +A Z +C Y +A X +A X +A X +A X +A X +C Y +A X +A X +B X +B Z +C Z +B X +A Y +B Z +A X +A Y +B Z +B Z +B Z +B Z +A X +A Y +A Y +B X +A Y +A Z +A Y +B Y +A X +B Z +A X +A Y +C Y +B Z +C Y +A X +B Z +A X +A Z +B Z +A X +B X +C Y +A Y +A X +A Z +C Y +A Z +A Y +A Y +A X +A X +A Z +A Y +B X +B Z +B X +B X +C Y +A Y +A X +B X +A X +B Z +A X +A X +B Z +C Y +B X +C Y +A X +B X +C Z +A Y +B X +A Y +A Y +B X +C Y +B Z +A Y +B Z +A Y +A X +A X +A Y +B Z +B Z +A Y +A X +A X +B X +B Z +A Y +A X +C Y +B X +C Y +B Z +B Z +B X +A Y +B X +B X +A X +C Y +C Y +B Z +B X +A Y +C Z +C Z +C Y +A Y +B X +B Z +B X +A X +B Z +A Y +A X +C Y +B X +A Y +B X +A Z +A X +A Y +C Y +A Y +A X +C Y +C Z +B X +A Y +C Y +B Z +B X +A X +B X +B X +C Y +B Z +B Z +B Z +B X +B Z +A Y +B Y +B Z +A Z +A X +B Y +A X +B Z +A Y +B X +A X +B Z +C Z +B Z +B Z +A Y +B X +A X +A X +B X +A Y +A Y +A X +C Z +C X +A Y +C X +A Y +A Z +C Y +A X +B X +A X +B Z +A X +C Y +A Y +B X +C Y +A Y +A Z +A Y +A Y +B Z +C Z +C Y +A Y +A Y +B X +C X +A Z +B Z +C Y +A X +A Y +B X +A Y +C Y +C Z +A Y +B Z +A X +C Y +B X +B Z +A X +C Z +B Z +C Y +C Z +B Z +A X +A Y +A X +B X +B Z +B X +A X +B Z +C Y +A Z +A Z +C Y +A Y +C X +B X +A X +A X +B X +B Z +B X +B Z +B Z +A X +B X +A X +A Y +A X +C Z +B Z +A X +C Z +C Z +C X +A X +B X +A X +A Z +A X +C Z +A X +A X +B Z +C Z +C Y +B Z +B X +A X +A X +A Y +B Z +A Y +B X +B Z +C X +B Z +B X +A Y +B Z +A Z +A Y +A Y +B X +C X +A Y +A Y +C Y +C Y +B Z +B X +C Y +C Y +A Y +A X +A Y +A Y +B Z +B X +A X +B X +B Z +B Z +A Z +A Z +A Z +A X +B X +B Z +A X +B Z +A X +B Z +B X +C Z +B Y +A Y +A Y +A X +A X +B Z +B Z +B X +A Y +C Y +B X +A X +B X +C Y +A X +A X +B X +C Y +C Y +C X +B X +C Y +A Z +B Z +B Z +B Z +B X +B Z +A X +B X +A X +A Y +C Z +B X diff --git a/2022/Day02/part-one.cl b/2022/Day02/part-one.cl new file mode 100644 index 0000000..e93cae8 --- /dev/null +++ b/2022/Day02/part-one.cl @@ -0,0 +1,45 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(let + ((cal (read-line *prog-input* NIL)) (total-score 0) + (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C)) + (cy-rps 0) (ce-rps 0)) + + (loop until (or (equal cal "end") (not cal)) do + ;; Rock is 1, paper is 2, scissors is 3 + (setq ce-rps (position (char cal 0) enemy-rps)) + (setq cy-rps (position (char cal 2) your-rps)) + + ;; We want, when we lose to add 3 * 0, when we draw to add 3 * 1 and when we win to add 3 * 2 + ;; To get numbers 0, 1, and 2, we'll use `3 mod N` + ;; Writing down all possible combinations + ;; (from left to right, columns are "Your choice", "Enemy choice", "Result"): + ;; 1 1 | 1 = 3 % 1 (Draw) + ;; 1 2 | 0 = 3 % 3 (Lose) + ;; 1 3 | 2 = 3 % 2 (Win) + ;; ----+----------------- + ;; 2 1 | 2 = 3 % 2 (Win) + ;; 2 2 | 1 = 3 % 1 (Draw) + ;; 2 3 | 0 = 3 % 3 (Lose) + ;; ----+----------------- + ;; 3 1 | 0 = 3 % 3 (Lose) + ;; 3 2 | 2 = 3 % 2 (Win) + ;; 3 3 | 1 = 3 % 1 (Draw) + ;; We notice, that N (in "3 % N") is a rotation of the numbers 3, 2, 1, where if your choice + ;; is 3, we don't rotate them, if it's 2 we rotate by one (backwards) and so on. + ;; We can get 3, 2, 1 from the enemie's 1, 2, 3 by subtracting them from 4. Then we can use + ;; your choice to do the "rotation" (since we're doing mod, 3 % 3 = 3 % 6). + (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps)) + + (setq cal (read-line *prog-input* NIL))) + + (print total-score)) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) + diff --git a/2022/Day02/part-two.cl b/2022/Day02/part-two.cl new file mode 100644 index 0000000..40090e2 --- /dev/null +++ b/2022/Day02/part-two.cl @@ -0,0 +1,45 @@ +(defvar *prog-input*) + +(let ((ui (read-line))) + (if (equal ui "") + (setq *prog-input* *standard-input*) + (setq *prog-input* (open ui)))) + +(let + ((cal (read-line *prog-input* NIL)) (total-score 0) + (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C)) + (cy-rps 0) (ce-rps 0)) + + (loop until (or (equal cal "end") (not cal)) do + (setq ce-rps (position (char cal 0) enemy-rps)) + ;; We reuse numbers 1,2,3 to, for now, signify your strategy + (setq cy-rps (position (char cal 2) your-rps)) + + ;; Similarly to part-one.cl, if we write down the table of possible combinations + ;; (from left to right, columns are "Your strategy", "Enemy choice", "What your choice should be"): + ;; 1 1 | 3 = 1 + 2 + ;; 1 2 | 1 = 1 + 0 + ;; 1 3 | 2 = 1 + 1 + ;; ----+---------- + ;; 2 1 | 1 = 1 + 0 + ;; 2 2 | 2 = 1 + 1 + ;; 2 3 | 3 = 1 + 2 + ;; ----+---------- + ;; 3 1 | 2 = 1 + 1 + ;; 3 2 | 3 = 1 + 2 + ;; 3 3 | 1 = 1 + 0 + ;; Your choice is a rotation of the numbers 1, 2 and 3, where if your strategy is 1 (lose) + ;; you rotate once, if your strategy is 2 (draw) you rotate zero times and if it is 3 (win) + ;; you rotate two times. + (setq cy-rps (+ (mod (+ cy-rps ce-rps) 3) 1)) + + ;; Refer to part-one.cl for explanation on math + (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps)) + + (setq cal (read-line *prog-input* NIL))) + + (print total-score)) + +(if (not (eq *prog-input* *standard-input*)) + (close *prog-input*)) + diff --git a/2022/Day1/input-po.txt b/2022/Day1/input-po.txt deleted file mode 100644 index 1fabb6f..0000000 --- a/2022/Day1/input-po.txt +++ /dev/null @@ -1,2263 +0,0 @@ -9686 -10178 -3375 -9638 -6318 -4978 -5988 -6712 - -10422 -3062 -2753 -3695 -1722 -8110 -6568 -7124 - -3162 -6117 -2560 -8788 -2413 -3719 -1052 -1349 -4780 -5178 - -24919 -15983 -18045 - -24872 -35761 - -20914 - -4701 -7592 -1014 -12219 -3794 -6893 - -6471 -5100 -4297 -8538 -3923 -8135 -2015 -2255 - -1631 -8016 -4371 -5797 -5252 -1487 -8289 -8886 -1149 - -8082 -8747 -4577 -3624 -4481 -7947 -2790 -9217 -4729 - -4069 -1728 -4093 -2978 -6582 -7897 -8643 -6644 -6473 -5476 - -2319 -22021 -15407 - -4522 -6382 -7089 -4432 -2795 -1003 -2831 -6318 -8082 -6085 - -6379 -3407 -1390 -2026 -2030 -5246 -6918 -4426 -6198 -6476 -5351 -1033 -1162 - -8071 -1526 -7680 -5507 -6398 -6183 -8175 -3282 -4522 - -5629 -3140 -8533 -6464 -3686 -2374 -2301 -5700 -3279 - -13663 -6031 -6803 -6393 -11160 -4072 - -4857 -1156 -5520 -7976 -7668 -1279 -1326 - -7711 -3945 -2583 -5502 -13777 - -34906 -15510 - -2588 -4153 -4506 -6765 -6541 -3058 -5648 -1128 -1968 -2492 -4147 -7017 - -1394 -3512 -8021 -9546 -2626 -9116 -2891 -2875 -7467 - -18630 - -19644 -32798 - -3971 -5752 -2806 -5887 -5795 -1287 -3304 -3597 -3474 -1179 -3770 -1015 -3592 -4485 -4764 - -7482 -2786 -3311 - -3192 -3483 -2424 -3037 -3110 -7110 -5647 -6269 -6561 -7272 -2554 -1036 - -6564 -3818 -3472 -1020 -1410 -5849 -2679 -4928 -3751 -5858 -4227 -5278 - -4117 -3263 -3692 -1978 -4588 -2585 -6214 -6494 -1778 -3568 -3864 -2868 -4305 -1430 - -1221 -1373 -1096 -5913 -3836 -5890 -3601 -4165 -3495 -1397 -4949 -1134 -6029 -5142 - -27593 -11384 - -2784 -1688 -3096 -3150 -4879 -4582 -1333 -1807 -2379 -5554 -3324 -5152 -5012 -2462 -1222 - -4859 -10400 -5079 -11803 -2503 -10827 -5426 - -5345 -8211 -1451 -4410 -8381 -4890 -7548 -7246 -1780 -3917 - -6854 -3240 -8375 -3079 -5972 -2835 -2674 -3492 -3796 - -6733 -6827 -10768 -10517 -4257 -3205 -7453 - -1099 -1739 -9012 -2371 -4084 -1693 -3029 -1434 - -5254 -11413 -7980 -4327 -8249 -9088 -3606 - -6987 -11807 -10066 -2892 -5783 - -2796 -23737 -10352 - -2634 - -49880 - -4685 -22996 -19146 - -28725 - -15169 -8027 -5352 -2138 -2120 - -6615 - -2024 -8972 -10861 -5491 -8987 -8435 -11850 - -3344 -2538 -6150 -8412 -1846 -4479 -2644 -5897 -5393 -5998 - -18876 -9663 -9689 -11058 - -6583 -11800 -7779 -2848 -2722 -4396 -7549 - -3246 -5003 -7862 -6912 -8904 -3942 -7496 -7132 -5370 - -12064 -7414 -9559 -5152 -7290 -9582 -5481 - -10086 -3167 -9372 - -11462 -4147 -5783 -9869 -6777 -4304 -7994 - -8294 -7105 -6757 -7863 -3160 -1528 -7169 -7838 -2268 -3947 - -4584 -2761 -1785 -8626 -5990 -2024 -6423 -3467 -2700 -8439 - -4345 -6322 -2099 -11273 -12175 -1463 - -10421 -12435 - -5558 -3558 -4218 -4032 -1163 -1627 -7457 -3703 -4028 -1023 -2037 -5726 - -6668 -17056 -6110 - -3542 -3056 -8182 -6347 -6062 -1489 -2602 -5081 -6673 -8375 - -10854 -30495 - -3402 -2945 -2982 -2379 -3173 -3456 -4373 -2120 -3383 -4479 -5662 -4288 -6776 - -4621 -5405 -2698 -3244 -4090 -6275 -5460 -3835 -4066 -3355 -4301 -5429 -2772 -2712 - -3836 -2729 -6662 -3756 -4596 -4783 -3636 -3965 -1593 -2152 -2658 -7456 - -5299 -5046 -1717 -3615 -5827 -1622 -6363 -1352 -2279 -5193 -2936 -3009 -6706 - -62000 - -6685 -2477 -2113 -5147 -4652 -5793 -4917 -7792 -6330 -5030 - -12537 -24802 - -7935 -8012 - -2421 -7653 -4554 -1956 -4607 -7395 -2884 -1969 -6443 -8245 - -6117 -5191 -4630 -1140 -6668 -5451 -6697 -4489 -5269 -2465 - -6837 -12023 -1789 -15035 - -8901 -3155 -10520 -7453 -8927 -2128 -3719 -2603 - -4407 -3576 -2621 -11197 -4048 -7417 -6378 - -26360 -30617 - -5540 -19475 -16907 -14236 - -12536 -28934 - -8992 -12942 -9843 -10281 - -12753 -7704 - -14617 -16937 - -6129 -2474 -1298 -11648 -3020 -13000 - -1105 -7814 -8488 -4284 -3278 -2762 -1956 -3020 -3604 -5909 - -8949 -32474 - -9354 -11532 -2977 -2575 -4038 -4165 -6043 - -16780 -21589 -15519 - -8929 -1176 -3057 -2567 -7937 -4959 -4256 -1722 -6570 - -2959 -5442 -4853 -1549 -1536 -5182 -3162 -3241 -5325 -2981 -4123 -5075 -4265 -3914 -1534 - -21076 -21413 -4121 - -2364 -3051 -15060 -15441 -5350 - -6444 -4119 -16142 - -12702 -1593 -10837 -3016 -12402 -7042 - -13897 -10933 -1898 -1192 -9621 -1669 - -3555 -4589 -4554 -5877 -2963 -5429 -2915 -2849 -2882 -4263 -2041 -3715 -3060 -2303 - -11964 -4040 -1263 -7289 -15158 - -5623 -2844 -5308 -3138 -1993 -3563 -6627 -3503 -3715 -4622 -6335 -5643 - -9204 -13679 -11665 -13069 -8239 - -3263 -3999 -3795 -6653 -9340 -2589 -4005 - -7500 -4295 -1968 -6505 -7489 -1744 -7166 -6015 -2376 - -9225 -15648 -9771 -6353 - -5602 -4032 -5956 -3389 -6191 -2664 -3316 -4315 -3835 -2812 -4567 -3807 -3900 -6049 - -9856 -15646 -16811 -9434 - -2608 -5821 -2961 -4460 -3216 -6185 -6432 -4535 -2637 -3924 -1974 -5768 -4971 - -7986 -11586 -10183 -8977 -2084 -2145 -9341 - -4685 -8276 -12887 -17836 - -9164 -2380 -6783 -3995 -7267 -1261 -4388 -4553 -1097 - -8223 -1915 -11132 -4659 -11049 -7510 - -4913 -8607 -16691 -9972 - -7210 -6436 -4538 -9051 -5474 -1160 -5078 -8171 -6253 - -16053 -7244 - -11209 -13125 -16289 - -18073 -12316 -7433 -18146 - -16372 -12640 -7592 -7330 -6436 - -15791 -4640 -8961 -2333 -4146 - -8804 -6092 -8411 -8919 -4059 -7108 -2972 -4028 -5195 - -13788 -3616 -19422 -7306 - -6851 -7067 -3876 -9144 -13656 -2327 - -1966 -2583 -1157 -2915 -6675 -3776 -1302 -6089 -2172 -3532 -2863 -3901 -1531 - -9831 -12160 -11410 -10388 - -1745 -3005 -8080 -5559 -6190 -2608 -7327 -2918 - -3396 -4608 -5926 -4771 -4039 -2174 -2121 -5335 -1336 -1675 -2359 -3973 -3239 -5151 -1931 - -1449 -1728 -4133 -6107 -2320 -1185 -4399 -3983 -2801 -3940 -6492 -5123 -4035 -3978 - -6109 -6364 -1026 -3149 -2741 -3875 -1984 -5286 -1888 -3023 -2625 -2827 -2957 -1806 - -30480 -13619 - -6289 -3501 -3339 -3547 -4583 -3975 -3044 -4120 -1519 -5909 -2056 - -6066 -2415 -3690 -8311 -4415 -5086 -2243 -7362 -5987 - -23114 -11625 -16362 - -1968 -4106 -1413 -3111 -7762 -5820 -5670 -5574 -6409 -5357 - -16940 -1118 -17725 -19352 - -4795 -4181 -2637 -2630 -2424 -1778 -5931 -4683 -2394 -5086 -4831 -3332 -2698 -3486 -4771 - -2149 -4199 -2711 -6010 -1129 -1231 -6029 -3041 -1062 -3989 -4288 -4097 -3866 -2487 -2904 - -5703 -3132 -3141 -3076 -2213 -1286 -1553 -4281 -5310 -3129 -1686 -4290 -1523 -2253 - -3393 -5859 -9430 -7600 -3773 -6009 -6501 - -2112 -3375 -4744 -2051 -7859 -5263 -7294 -4412 -3787 -3697 -3237 - -6377 -5061 -6859 -13460 -14181 - -5001 -7058 -5323 -3147 -5016 -7995 -8072 -1337 -4375 -5257 -3975 - -3785 -3750 -3530 -3048 -2905 -2034 -6828 -1797 -6657 -3317 -2701 -2805 -5267 - -3394 -3691 -6713 -2117 -2962 -1057 -5815 -4045 -1400 -1865 - -18465 - -3921 -1777 -7151 -1041 -5017 -7230 -1976 -4454 -1604 -7350 -5884 -1003 - -2624 -1309 -6631 -9455 -6512 -7719 -7483 -4181 -5094 - -2569 -9911 -14251 -8292 -12541 - -2439 -1330 -1018 -5115 -4820 -5319 -3124 -3076 -1693 -2628 -2344 -3158 -1718 -4605 - -4199 -3446 -4622 -6428 -5002 -1766 -2452 -5311 -6527 -2064 -4993 -2024 -4693 - -1280 -3349 -4131 -5665 -2363 -3945 -5484 -3679 -1486 -3646 -3623 -4184 -3000 -1048 -2655 - -14131 -3553 -13678 -1207 - -5857 -6149 -3312 -4757 -2563 -1790 -1221 -5509 -3380 -1359 -2480 -4558 -6280 -6369 - -1547 -3878 -5568 -1225 -1380 -2200 -5147 -2039 -6309 -2982 -3495 -2152 -5235 - -16640 -20034 -9548 - -1753 -3165 -1652 -4443 -1216 -4491 -1942 -1762 -1107 -4286 -3966 -1075 -4525 -4613 -1913 - -1009 -2116 -7166 -3405 -7214 -6239 -4865 -5685 -7262 -3953 -6155 -1625 - -11721 -15346 -2328 - -1874 -1749 -5597 -1262 -6198 -4768 -5577 -4281 -2519 -4929 -5366 -3798 -4735 -5911 - -5955 -9870 -1445 -9985 -2525 -3789 -9850 -8345 - -4573 -1388 -5113 -5476 -4662 -1491 -4951 -4466 -3762 -1945 -4543 -1206 -1464 -2592 -3641 - -1335 -1373 -2210 -4502 -6682 -3789 -3132 -6931 -4406 -2178 - -3208 -2932 -4708 -7096 -3292 -1181 -7684 -7182 -4935 - -33589 - -3334 -1623 -14592 -12083 -8779 - -2894 -5672 -4799 -5270 -4984 -2968 -4691 -5946 -4794 -3982 -1050 -3329 -1705 -2157 -5903 - -6094 -4559 -3567 -6528 -10766 -6235 -11374 - -3073 -5101 -11776 -9277 -6191 -4145 -3796 - -7420 -7909 -4665 -4147 -3076 -7307 -7796 -5377 -3060 -6959 - -7330 - -35781 - -21425 -21583 -5018 - -4184 -1379 -6016 -3474 -6024 -4306 -3615 -1908 -2850 -1928 -3089 - -16714 -5650 -15944 -11173 - -9343 -16875 -12773 -14484 - -10430 -10942 -11646 -3054 -7681 -9377 -9747 - -1306 -6064 -9684 -2441 -5045 -4444 -5012 -6192 -1975 - -1344 -5398 -5433 -7606 -8077 -7391 -1909 -2436 -6590 -1780 -7328 - -1965 -1722 -6019 -2211 -5501 -6079 -2874 -2073 -6101 -1485 -1281 -2820 -2924 -1053 - -4243 -1623 -2406 -5790 -3669 -4752 -5178 -6264 -6380 -2595 -3841 -1924 - -1396 -4822 -5173 -4566 -5742 -4373 -3061 -3710 -3165 -2752 -4663 -3674 -1988 -5783 -4851 - -4241 -7995 -10301 -9600 -3012 -2005 -7728 -2592 - -4258 -4068 -3590 -4519 -4699 -4420 -1850 -2672 -1702 -1419 -5779 -2548 -5901 -6088 - -65317 - -4907 -1843 -6719 -2996 -8461 -1214 -7159 -3834 -9003 - -49655 - -3092 -5048 -1627 -1180 -3552 -4004 -3769 -1024 -4362 -5281 -5272 -3328 -3477 -5851 -1852 - -13904 -7402 -7268 -3770 -2397 -10475 - -8476 -1976 -6163 -8095 -1462 -4641 -3808 -3857 - -3335 -6780 -2119 -5330 -7117 -7491 -3805 -8481 -6605 -7085 - -4322 -7670 -9443 -9057 -3985 -3627 -5998 -4438 -1504 - -13151 -10965 -11166 -13415 - -5671 -8571 -11580 -7158 -9153 -5862 -5101 - -4456 -3654 -8081 -5430 -2761 -3354 -5363 -6253 -2655 -4659 - -1596 -2737 -8104 -8749 -3052 -5251 -2949 -1621 -7083 - -2651 -11140 -13548 -3706 -12111 - -10168 -12202 -22359 - -6858 -5062 - -13856 -10455 - -12441 -19040 - -6274 -9591 -6760 -4995 -6509 - -8503 -6463 -1391 -5937 -2652 -6222 -3700 -4437 -4223 - -1347 -5568 -3527 -2038 -7671 -2747 -2076 -5001 -6812 -6935 -4605 - -6064 -4289 -3615 -1534 -1503 -3969 -5012 -5882 -1072 -3045 -1108 -1100 -5537 -2296 -5210 - -2276 -5684 -8123 -10661 - -14356 -10192 -8724 -9007 -2580 - -4185 -1781 -4779 -2912 -2168 -1818 -2476 -4738 -4184 -4399 -2516 -5069 -4411 -1555 -4792 - -17014 - -32213 -4835 - -9759 -16225 - -13768 -12275 -12116 -5614 -13597 -11836 - -13759 -5359 -16706 -3223 - -5529 -8735 -2684 -7245 -4021 -6476 -4830 -4545 -4689 - -7538 - -2382 -11825 -7660 -12725 -8655 -6276 - -3726 -8819 -8277 -11877 -2680 -9393 -9534 - -5712 -4484 -3939 -6190 -12015 -8155 -3414 - -1744 -3387 -5549 -5161 -1944 -3018 -2892 -4872 -2058 -3465 -5410 -4294 -4460 -5671 -2677 - -3277 -5567 -1927 -4030 -2402 -6956 -1493 -2694 -2953 -4684 -1757 - -2412 -9606 -11353 -2517 -4728 -13835 - -8658 -3007 -3050 -7032 -10355 -7154 -2882 -1771 - -7005 -4228 -4094 -6651 -2666 -4580 -6731 -7665 -6497 -2146 -3836 - -49889 - -1694 -21826 -15682 - -4069 -11100 -14655 -13224 -4596 - -7669 -4609 -5102 -6077 -6909 -5199 -6616 -3888 -2759 -5067 -1215 - -1178 -1772 -6040 -6155 -7363 -2308 -1947 -2395 -1998 - -3637 -1397 -3793 -2486 -1535 -6323 -5601 -1122 -4774 -5946 -3911 -1983 -5110 -6123 - -4280 -3131 - -2074 -8575 -10967 -11051 -7926 - -5181 -5262 -9549 -4648 -5870 -10554 - -10006 -9886 -1787 -4121 -6732 -11668 -1701 - -9374 -10024 -4499 -19405 - -2653 -2184 -1682 -2239 -5008 -3214 -6107 -1386 -1746 -1625 -6576 -5311 -2448 - -2752 -1482 -2199 -1874 -6361 -1308 -2520 -5508 -7547 -2123 - -3589 -3732 -1867 -1000 -3740 -6457 -7409 -1310 -7995 -6470 - -3216 -3362 -1330 -7974 -7888 -7616 -5315 -6599 -4725 -8265 - -25525 -11728 -2872 - -15044 -2896 -9572 -10589 -4530 - -6439 -10037 -1455 -12711 -3160 -2979 - -2176 -6329 -3361 -6290 -1759 -5233 -3803 -2310 -5657 -4209 -4457 -1883 -3449 -1304 - -11140 -4322 -11612 -8569 -8463 -6798 -5517 - -4374 -6158 -5395 -2805 -1792 -3798 -6749 -4769 -6825 -6759 -6835 -4871 -1074 - -1474 -4540 -2518 -4116 -3756 -3306 -4666 -3344 -3742 -6019 -3442 -2869 -2045 -4736 -3950 - -6446 -7360 -1549 -8156 -1739 -1610 -2676 - -2168 -2396 -6164 -7025 -8787 -8097 -3409 -4574 -3966 - -3086 -2856 -5035 -5065 -5864 -1594 -7703 -6964 -7211 -7718 -1107 - -51004 - -4918 -1158 -2005 -4612 -7834 -1074 -9254 -5527 -1324 - -6855 -3281 -1711 -6762 -7458 -6741 -4422 -1410 -7470 -3944 -1893 - -9371 -15492 -19708 -12935 - -5733 -3862 -4820 -2177 -8633 -7626 -6625 -7092 -8201 -2674 - -49048 - -7618 -4063 -4934 -2443 -2170 -6858 -4485 -3340 -1799 -3106 - -8992 -6122 -2877 -9496 -2383 -7021 -4371 -8902 -5207 - -14001 -26749 - -15324 -23968 -19677 - -5335 -2824 -4423 -5694 -7382 -8340 -1838 -8489 -7044 -6785 - -3771 -2619 -2974 -9941 -8552 -5552 -3107 -2597 - -3505 -1425 -4302 -6794 -3867 -6186 -2169 -6833 -4437 -5529 -1621 -1454 -6758 - -4211 -2770 -3598 -2408 -5814 -1930 -4342 -1792 -6068 -3389 -2838 -2599 -3464 -4967 - -2326 -1344 -3774 -5442 -1575 -5559 -1918 -4675 -2672 -2538 -4055 -3083 -5036 -1558 -4674 - -2098 -15641 -1220 -5315 - -12642 -15560 -4074 -15919 - -21911 -9200 -10100 - -2645 -12965 - -8655 -8517 -7883 -6615 -2964 -6688 -1089 -4816 -6827 -1743 - -14801 - -7826 -6082 -5962 -6382 -5873 -9072 -6773 -7190 -3114 - -6448 -8620 -7630 -8340 -5270 -8082 -1467 -7973 -2886 - -1010 -4394 -3625 -1476 -4141 -5883 -7079 -3272 -6419 - -5456 -2482 -8364 -1530 -11974 -11305 -12132 - -2319 -6357 -6245 -3226 -3813 -5844 -4492 -4140 -3185 -4965 -5452 -1614 -1123 diff --git a/2022/Day1/part-one.cl b/2022/Day1/part-one.cl deleted file mode 100644 index 34644c6..0000000 --- a/2022/Day1/part-one.cl +++ /dev/null @@ -1,22 +0,0 @@ -(defvar *prog-input*) - -(let ((ui (read-line))) - (if (equal ui "") - (setq *prog-input* *standard-input*) - (setq *prog-input* (open ui)))) - -(let - ((cal (read-line *prog-input* NIL)) (maxsum 0) (csum 0)) - - (loop until (or (equal cal "end") (not cal)) do - (if (equal cal "") - (setq csum 0) - (setq csum (+ csum (parse-integer cal)))) - (if (> csum maxsum) - (setq maxsum csum)) - (setq cal (read-line *prog-input* NIL))) - - (print maxsum)) - -(if (not (eq *prog-input* *standard-input*)) - (close *prog-input*)) diff --git a/2022/Day1/part-two.cl b/2022/Day1/part-two.cl deleted file mode 100644 index 2d88791..0000000 --- a/2022/Day1/part-two.cl +++ /dev/null @@ -1,21 +0,0 @@ -(defvar *prog-input*) - -(let ((ui (read-line))) - (if (equal ui "") - (setq *prog-input* *standard-input*) - (setq *prog-input* (open ui)))) - -(let - ((cal (read-line *prog-input* NIL)) (sums '(0))) - - (loop until (or (equal cal "end") (not cal)) do - (if (equal cal "") - (push 0 sums) - (push (+ (pop sums) (parse-integer cal)) sums)) - (setq cal (read-line *prog-input* NIL))) - - (setq sums (sort sums #'>)) - (print (+ (first sums) (second sums) (third sums)))) - -(if (not (eq *prog-input* *standard-input*)) - (close *prog-input*)) diff --git a/2022/Day2/input-po.txt b/2022/Day2/input-po.txt deleted file mode 100644 index 18f755a..0000000 --- a/2022/Day2/input-po.txt +++ /dev/null @@ -1,2500 +0,0 @@ -B Z -A Y -A Y -B X -A Y -B X -A X -B X -B X -B X -C Y -C Y -A X -A Y -A Y -B X -A X -C Y -B Z -A X -B Z -C Y -C Z -A X -C Z -A Y -A X -B Z -B X -A Z -B Z -A X -A Z -B X -B X -C Y -B X -A X -A Y -C Y -B Z -C X -A X -B Z -B Y -B X -A Z -B Z -B Z -A X -B Z -B X -C X -A X -B X -B X -B Z -B X -B Z -A Y -B Z -B X -C Y -A Y -C Y -B Z -A Y -B X -A Y -C Y -A Y -B Z -B Z -C Z -B X -A X -C X -B Y -A Z -C Z -B Z -A Y -A X -B Z -C Z -B X -B Z -A Y -B X -A Y -A Y -A X -C Y -B X -B Z -C Y -B X -B X -C Z -C Y -C Y -A X -B Z -A X -A X -B Y -A Y -B Z -B Z -B Z -A Y -A X -A Y -B X -B Z -A X -B X -B X -C Y -B Z -A X -A Y -B Z -A X -B Z -A Z -A Y -A Z -B Z -A X -A Z -A X -C Y -A Y -A X -B Z -C Z -B Y -B Z -B X -A X -C Y -B Z -B Y -B X -B X -A X -C Y -A Y -B X -A Y -A Y -A Y -B X -A Z -A Y -B X -A X -A Z -B X -B X -C Z -C Y -B X -B X -A Y -C Y -C Y -A X -B Z -B Z -A Y -C Y -B Z -A Y -A Y -A X -B Z -B X -A X -A X -B X -A X -B X -A X -B X -A X -B Y -B Z -A X -B X -B X -B Z -A X -B Z -A Y -B Z -A X -A Z -B X -A X -A Y -C Y -C Y -B Z -A X -C Y -A X -B X -A Y -A X -B X -B X -A Y -A X -A X -A Z -C Y -A X -B X -A X -A X -A X -A Y -A Y -C Z -C Z -A Y -B Z -A X -B X -C Y -B Z -B Z -C Y -C Y -A Y -A Y -A Y -A Y -C Z -A Y -B Z -B Z -C Z -C Y -C Y -C Y -C Y -C X -A X -B Z -B Z -B Z -B Z -C Y -B Z -A X -A X -A X -B Z -A Y -C X -B Z -A X -A Y -B Z -C Z -B X -A X -B Z -A X -A Y -B X -C Y -B X -B Z -A X -B X -B X -A X -B X -B Z -B X -A X -B X -B X -B X -B Z -B X -B Z -C Y -A X -A X -C Y -C Z -A Y -B Z -B Z -A X -B Z -A Y -A X -A Y -A Y -A Y -B Z -C Y -A X -A Y -A Z -B X -A Z -B X -B X -B X -A X -A X -C Y -B X -A X -B Z -A Y -A Y -A X -B Z -A Y -B X -A Y -B Z -C Y -A Y -C X -B X -B Z -C Y -A Y -A X -A X -B Y -C Z -B Z -A Y -A X -A Y -A X -A Y -A Y -A X -A Y -A Z -B X -A X -C Y -A X -C X -A Y -A X -A Y -A X -A X -B X -A X -B Z -A X -C Z -B Z -B Z -A Y -B X -B X -A Y -B X -B X -C Y -A Y -C X -C Y -B Z -A Y -A X -C Z -A X -B X -B X -C X -A Y -B Z -A X -A Z -C Y -B Z -C Y -C X -A Y -B Z -B Z -A Y -B Z -B X -B X -B Z -B Z -B X -C Y -A Y -A X -A Y -B Z -A X -A Y -A Y -A X -B X -A Z -A X -B Z -B Z -A X -C Y -C Y -A Y -A X -A Y -B Z -B Z -B X -B Z -A Y -A X -A Y -A Y -A Z -C Y -C Z -A X -C Y -A Y -A X -A Y -A X -C Z -B Z -B X -B X -B X -A X -A Z -B Z -B X -B X -B X -B X -B X -B X -C Y -B X -B Z -A X -C Z -A X -C X -B Z -A X -A Y -A Z -C Y -B X -C Z -C Y -A Z -B Z -C X -A Y -A Z -B Z -B Z -B Z -A X -A X -B X -A X -B Y -A X -A Y -A Y -B X -A Y -B X -C Z -A Y -C Y -A X -A X -A Y -B X -B Z -A X -B X -B Z -A Z -C Z -B Z -B X -A X -A X -B X -A X -A Y -A Y -B Z -A X -A X -A X -A X -C Y -C Z -A X -A Z -A X -B X -A X -B X -B Z -B X -C Y -B Z -A X -B Z -A Z -A Y -A Y -A X -A X -B Z -A Y -A X -A X -B X -B Z -A Z -A Y -A Z -B X -B Z -A Y -A Z -B X -B Z -A Z -A Y -A Y -A X -A Y -B Z -A Y -A X -A X -A Y -A Y -A X -A Y -A X -C Y -B Z -B X -B X -B X -A X -B Z -B Z -A X -B Z -A Y -C Y -C Y -A Y -B Z -B X -C Y -A X -A Z -B X -B X -C Y -A X -B X -B Z -A Y -A X -B Z -A Y -A Y -C Z -B Z -B Z -A X -C Y -A Y -A Z -A Y -C Z -B Z -A Y -C Z -B X -A X -B X -B X -C Y -A Y -B Y -A Y -B X -A Y -A Y -B X -B Z -B X -A Y -A Y -C Y -C Y -A Y -C Y -A Z -B Z -A X -A Z -A X -C Y -A X -A X -B Z -B Z -C X -C Z -A X -C Y -B Z -B X -A Y -A X -A X -B Z -A X -A Y -A Y -A X -B Z -C Y -A Y -B Z -A Y -B X -A X -A X -A Y -A X -B Z -C Y -A X -A Z -B Z -B Z -A X -C Y -A X -B X -A X -A X -B X -A X -B X -B Z -C X -A X -C Y -C Y -B Z -B X -C Y -C X -A Y -B X -A Y -B Z -C Z -B Z -A Y -A X -B X -A Y -A Y -B Z -B X -A Y -B X -A X -A Y -B Z -B X -A Z -A Y -A X -A Y -B Z -B Z -A X -A X -B Z -A X -B Z -A X -B X -B X -A X -A Y -B X -A Y -A X -B X -B X -B Z -B X -C X -B Z -A Y -B Z -A Y -A X -B Z -B X -B X -C Y -B X -B X -A X -A Y -A X -B X -C Y -C Z -A X -B X -B X -A Y -B Z -B X -A X -B X -C X -A Y -A Y -A Y -A Y -C Y -A Y -A Y -A X -A Y -B X -A Z -A X -B Z -B X -A X -B Z -A X -B Y -A X -A X -A Y -B X -B Z -C X -A X -A X -A Y -B Z -C Z -A X -C X -B Z -B X -B X -B Z -B Z -A X -C Z -A Y -A Y -B Y -B X -B Y -A X -B Z -B Z -A X -B X -A X -B Z -A Y -A Y -B Y -A Y -A Y -A X -B X -A X -B Z -B X -B Z -C Y -A X -B Z -A Z -A X -A X -B X -B X -A Z -B X -A X -A Z -A X -A Z -A Y -A X -A Z -C X -A X -C Y -B X -A X -B X -B X -B X -B X -A X -B Z -B X -A Y -B X -A Y -B X -B X -A Y -B X -A X -A X -A Y -B Z -A Z -B Z -C Y -B Y -A Y -A X -A Y -B Z -A X -B Z -B X -A X -B X -B X -A X -A Y -B Z -C Y -A Y -B Z -C Y -A X -C Y -A Y -A Y -A X -C Y -A Y -B Z -B Z -A Y -B Z -B Z -C Y -A X -A Y -A Y -C Z -A X -A Y -A Y -A X -A Y -B X -A Y -A X -A Y -B X -B X -A Y -A Y -A Y -C Y -A X -A X -B X -A X -B Z -C Y -B Z -C Y -A X -C Z -C Y -B Z -B Z -A Y -B X -B Z -C Y -A X -A X -A X -B Z -A X -A Y -B Z -C X -C Y -A Z -A X -C Y -A X -A X -B X -C Y -A Z -B Z -C Y -B X -A X -A X -C Y -A X -A X -B Z -B X -A X -A Y -B X -A X -A X -B X -C Y -A Y -C Z -A Y -B Z -A X -B X -B X -A X -B X -B Y -A X -C Y -A Y -A Y -B X -A Y -B X -B Z -A Y -C Y -C Y -A Z -B Z -C Z -B Z -A Z -A Y -B Z -A X -B Z -A Z -A Z -B Z -B X -A X -A X -A X -B X -A X -A Y -C Y -B Z -B X -A X -B Z -B X -B Z -A X -B X -B X -B X -A X -B Z -A X -B X -A X -C Y -A X -A Y -A Z -C Y -A Y -A X -C Y -B Z -A X -B Z -A X -B Z -B Z -B Z -C Z -A Z -B X -A X -A Y -A Y -A Y -B X -C X -A Y -A X -A X -C Y -A Y -A Y -B X -C Y -A Z -A Z -A Y -C Y -B Z -A Z -C Y -A X -B X -B X -B X -A X -C Z -C Y -B Z -B Z -A X -A Y -A Y -A Y -C X -A Z -A X -B X -B Z -B Z -A Z -A X -B Z -A Y -B Z -C X -A X -B Z -A Y -A Y -A X -B Z -B X -A Y -A Y -A Y -A Y -A Z -A X -C Y -A Y -A Y -C Y -C Y -B X -C Y -A X -A Z -B Z -C Y -A Z -A X -A Z -A Y -C Y -B Z -A Y -B X -B X -A X -B X -A Z -B Z -A X -A X -C Y -A Y -C Y -C Y -B X -A X -C X -B X -B Z -A Y -B Z -A X -A Y -B Z -B Z -A Y -A Y -A X -A Y -B Z -A Y -B Z -C Y -C Y -B X -A Z -A Y -C Y -B X -B Z -B X -C Y -B Z -A Y -A Y -B Z -A X -A Z -B X -A X -C Z -B X -B X -B X -C X -C Y -B X -A Y -B Z -B X -B Z -C Y -A X -A Y -A X -B X -B Z -B Z -A X -B X -C Y -C X -B Z -A X -A Y -B Z -B Y -C Y -C Y -A Y -B Z -B X -A Y -B Z -A X -A X -A Y -B Z -A Y -A X -B Z -A X -C Y -A Y -C Z -B Z -C Y -B Z -A Y -C Y -A X -A Y -B X -B Z -B X -B Z -A Y -B X -A Y -B Z -A Y -C Y -A X -A X -B Y -B X -A Y -C X -B Z -B Z -A Y -C Z -B X -A X -A Y -B Z -C Y -C Y -A Y -A Y -B X -C Y -A Y -B X -A X -B X -B Z -A X -A Y -B X -B X -C Y -B Z -A X -A X -B X -C Y -B X -A X -A X -B X -C Z -C Y -B X -B Z -A X -A Y -C Y -A Y -A Y -A Y -B X -C Y -B X -A X -A Y -A X -B Z -A Z -B X -A Y -B X -A Y -B X -B Z -A X -A X -B Z -A X -A Y -B X -B Z -B Z -A X -A Y -A Y -A X -A X -B X -B Z -B Y -A X -C Y -A Y -C Y -A Y -C X -B X -B X -A X -B Z -A X -C Y -B X -C Y -A Z -A X -B Y -A X -B X -B Z -A Z -C Y -A Y -A Z -A Y -A X -A Y -A X -A X -A X -B Z -B Z -C X -A X -C Z -B X -C X -B Z -B Z -A Z -B X -A Y -B Z -C Y -A X -C Y -C Y -B Z -A Y -A Z -A X -B Z -B X -C Z -C Y -A Y -C Z -B X -B Z -C Y -A X -B X -C Z -B Z -C Y -B X -A Y -B Z -C X -A Z -A X -A Y -B Z -B X -B X -B X -B Z -A Z -A X -B Z -B X -A X -A Y -B X -B X -A X -A X -B X -B X -C Y -A Y -C Z -A Y -A Y -A X -B X -B Z -A X -B X -A X -B X -A Y -C Y -A Y -A X -A Y -A Y -C Y -B Z -B Z -A X -A Y -C Y -C Y -A Y -A X -A X -C Y -B X -A Y -B Z -C Y -B Z -A X -A Y -A X -B Z -B X -C Y -A Z -C X -A Y -A X -C X -B X -A Y -A X -B Z -B Z -C Y -A X -A Y -A Y -B X -A Y -A X -C Y -B X -C Y -A Y -A Y -A Y -A X -A X -C Z -B X -C Y -B Z -A X -A Y -B Z -C X -B Z -A X -C Y -C Y -B Z -B Z -A X -C Y -C Y -A Y -C Y -B X -B Z -A Z -C Y -A Z -B Z -A X -B Z -A X -B Z -A X -A Y -A X -B Z -A X -A X -A X -B X -C Y -B Z -B X -A Y -A Y -C Y -B X -A Z -C Z -C Y -A X -A Y -A X -B Z -A X -B X -C Z -A Y -C Y -A Y -A Y -A Z -C Y -A X -B Z -C X -B Z -A X -B Z -B Y -A X -C Y -A X -A Y -B X -A X -B X -A Z -A X -A Y -B X -A Y -B X -C Y -B X -A X -A Y -A X -B X -A X -A X -B X -A Y -B Y -A X -A Y -A X -B X -C Y -A X -A Z -C Y -A Y -C Z -B X -B Z -A Y -C X -A Z -A X -A X -B Z -C X -A Y -A X -A Y -A X -A Y -B Z -B X -A Z -B Z -A X -A Y -B X -B Z -A Y -B Z -C X -B Z -A X -B X -B X -C Y -B X -B Z -A X -A Y -B X -A X -B Z -A X -B Z -B Z -C Y -C Y -B Z -B X -B Z -A X -A Y -A X -B X -B Z -A Y -B Z -B X -B X -B X -B Z -B Z -A X -B X -A Y -B X -C Y -B Z -B Z -B X -C Z -A Y -A Y -B Z -B Z -A X -C Z -A Y -A X -A Y -B X -C Y -A Y -A X -B X -B Z -A Z -A Y -A Z -A X -B X -B X -A Z -A Y -A X -C Y -A Y -A X -C Z -A X -B X -A Y -B X -A Y -A X -A Y -B Z -B Z -C Z -A Y -A X -A Y -A Z -A Y -B Z -B X -A X -A X -B Z -C X -A Y -A X -A Z -C X -C Y -B Z -A Y -B X -B Z -C X -B Z -A Y -B Z -B X -A Y -B Z -B X -A X -B Z -C Y -A Y -B Z -A X -A X -B Z -A X -C Y -A X -B X -B Z -B Z -C Y -A X -B Z -C Z -B Z -A Y -B Z -B Z -A X -B Z -A X -B X -A X -A X -B Z -B X -A Z -B Z -B X -B Z -B Z -B Z -B Z -A Y -B X -A Y -B Z -B X -A X -A X -B X -B Z -C Y -B Z -B X -B Z -B Z -C Y -A X -A Y -B X -A Z -B Z -B Z -A X -A Y -B Z -A Z -A Y -A Y -A Y -A Y -C Y -B Z -A X -A X -B X -A Y -A Y -A Y -A Y -B X -B Z -C Y -B X -B X -A Y -B X -B Z -A X -C X -B X -B X -B X -C X -C Y -A Y -A X -B X -A Z -C X -B Z -C Y -B Z -A Y -A X -B X -B X -B X -A Y -B Z -A Z -C Y -A Y -A X -B Z -C Y -A Y -A X -B Z -C Z -C Y -A Y -A X -A Y -C Z -A Y -B Z -B X -B X -C Z -C Y -C Y -C Z -A Y -A Z -C Z -A Y -A X -B Z -A Y -A X -C X -A Y -C Y -C Y -A X -B Z -B X -A Z -B X -A X -C Y -A Z -B Z -A X -B Z -B X -A Y -C Z -B X -B Z -C Y -A X -B Z -B X -A Y -B X -C X -A X -A X -A X -A X -C Y -C Y -A X -B Z -A X -A Y -A Y -A X -A X -B Z -B Z -B X -A Y -A Z -C Y -A X -A Y -B Z -B X -B X -A X -C X -B Z -C Y -C Z -B Z -A X -B Z -A Y -A Y -A Y -C Z -C Y -A Y -C Y -A Y -A X -B Z -B Z -B X -C Z -A Y -C X -B Z -A Y -B Z -B X -B Z -A X -A X -B Z -C Y -A Z -A Y -B Z -A Z -C Y -B Z -B X -A X -B Z -B X -A X -B Z -A X -A X -B Z -C Y -B Z -A Y -A X -A X -C X -A Y -B Z -C Y -A Z -C Y -B X -A X -B X -C X -C Y -B Z -B Z -A Y -A Z -B X -B Z -A Y -B X -A Z -C Y -C Z -C Y -A Y -C X -C X -B X -A Y -A X -B X -B X -C Z -C X -A X -A Y -B X -B X -C X -B Z -A Y -B Z -A Y -B Z -C Y -A X -A X -B X -B Z -A X -C Y -B X -A X -A X -A Y -A Z -B X -A X -A Y -A Z -B X -B Z -A Y -A X -B X -A Y -C Y -B Y -B X -A Y -C X -A Z -C Y -A X -B Y -C Y -B Z -B X -C Y -C Y -A Y -A X -C X -A Z -A X -B Z -B X -B X -A X -B X -A Z -B X -B Z -B Z -C Z -B Z -B X -C Y -C Y -A Z -C X -A X -B Z -A X -C Y -A X -A Z -B Z -B Z -A X -B Z -B Z -A X -C Z -B Z -B X -C X -A Z -B X -A Y -B Z -C Y -B Z -B X -A Y -B Z -A X -B Z -A Y -A Z -B Z -C Y -C Y -A Z -B Z -B X -B X -C Z -B Z -B Z -A X -A X -A X -A X -A X -C Y -A X -B Z -A X -B Z -C Y -C X -A Y -B X -A X -B Z -A Y -B Z -C X -A Y -B X -A X -A Y -B Z -A Y -A X -B X -B Y -B X -B Z -B X -A X -B X -B X -B X -A Z -A X -A X -B X -C Y -A X -A X -B X -B X -B X -B X -A Y -A X -B Z -A X -A Y -C Y -B Z -A Y -A X -C Z -A X -B Z -A X -B Z -B Z -B Z -C Y -B X -C Y -A Z -B Z -A X -A Y -A Y -A Y -B X -B Z -B Z -A Y -B Z -B Z -B X -A X -B Z -A Y -A Y -A X -B Z -A X -A X -B Z -C Y -B X -A X -A X -A Z -C Y -A X -A X -A X -A X -A X -C Y -A X -A X -B X -B Z -C Z -B X -A Y -B Z -A X -A Y -B Z -B Z -B Z -B Z -A X -A Y -A Y -B X -A Y -A Z -A Y -B Y -A X -B Z -A X -A Y -C Y -B Z -C Y -A X -B Z -A X -A Z -B Z -A X -B X -C Y -A Y -A X -A Z -C Y -A Z -A Y -A Y -A X -A X -A Z -A Y -B X -B Z -B X -B X -C Y -A Y -A X -B X -A X -B Z -A X -A X -B Z -C Y -B X -C Y -A X -B X -C Z -A Y -B X -A Y -A Y -B X -C Y -B Z -A Y -B Z -A Y -A X -A X -A Y -B Z -B Z -A Y -A X -A X -B X -B Z -A Y -A X -C Y -B X -C Y -B Z -B Z -B X -A Y -B X -B X -A X -C Y -C Y -B Z -B X -A Y -C Z -C Z -C Y -A Y -B X -B Z -B X -A X -B Z -A Y -A X -C Y -B X -A Y -B X -A Z -A X -A Y -C Y -A Y -A X -C Y -C Z -B X -A Y -C Y -B Z -B X -A X -B X -B X -C Y -B Z -B Z -B Z -B X -B Z -A Y -B Y -B Z -A Z -A X -B Y -A X -B Z -A Y -B X -A X -B Z -C Z -B Z -B Z -A Y -B X -A X -A X -B X -A Y -A Y -A X -C Z -C X -A Y -C X -A Y -A Z -C Y -A X -B X -A X -B Z -A X -C Y -A Y -B X -C Y -A Y -A Z -A Y -A Y -B Z -C Z -C Y -A Y -A Y -B X -C X -A Z -B Z -C Y -A X -A Y -B X -A Y -C Y -C Z -A Y -B Z -A X -C Y -B X -B Z -A X -C Z -B Z -C Y -C Z -B Z -A X -A Y -A X -B X -B Z -B X -A X -B Z -C Y -A Z -A Z -C Y -A Y -C X -B X -A X -A X -B X -B Z -B X -B Z -B Z -A X -B X -A X -A Y -A X -C Z -B Z -A X -C Z -C Z -C X -A X -B X -A X -A Z -A X -C Z -A X -A X -B Z -C Z -C Y -B Z -B X -A X -A X -A Y -B Z -A Y -B X -B Z -C X -B Z -B X -A Y -B Z -A Z -A Y -A Y -B X -C X -A Y -A Y -C Y -C Y -B Z -B X -C Y -C Y -A Y -A X -A Y -A Y -B Z -B X -A X -B X -B Z -B Z -A Z -A Z -A Z -A X -B X -B Z -A X -B Z -A X -B Z -B X -C Z -B Y -A Y -A Y -A X -A X -B Z -B Z -B X -A Y -C Y -B X -A X -B X -C Y -A X -A X -B X -C Y -C Y -C X -B X -C Y -A Z -B Z -B Z -B Z -B X -B Z -A X -B X -A X -A Y -C Z -B X diff --git a/2022/Day2/part-one.cl b/2022/Day2/part-one.cl deleted file mode 100644 index e93cae8..0000000 --- a/2022/Day2/part-one.cl +++ /dev/null @@ -1,45 +0,0 @@ -(defvar *prog-input*) - -(let ((ui (read-line))) - (if (equal ui "") - (setq *prog-input* *standard-input*) - (setq *prog-input* (open ui)))) - -(let - ((cal (read-line *prog-input* NIL)) (total-score 0) - (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C)) - (cy-rps 0) (ce-rps 0)) - - (loop until (or (equal cal "end") (not cal)) do - ;; Rock is 1, paper is 2, scissors is 3 - (setq ce-rps (position (char cal 0) enemy-rps)) - (setq cy-rps (position (char cal 2) your-rps)) - - ;; We want, when we lose to add 3 * 0, when we draw to add 3 * 1 and when we win to add 3 * 2 - ;; To get numbers 0, 1, and 2, we'll use `3 mod N` - ;; Writing down all possible combinations - ;; (from left to right, columns are "Your choice", "Enemy choice", "Result"): - ;; 1 1 | 1 = 3 % 1 (Draw) - ;; 1 2 | 0 = 3 % 3 (Lose) - ;; 1 3 | 2 = 3 % 2 (Win) - ;; ----+----------------- - ;; 2 1 | 2 = 3 % 2 (Win) - ;; 2 2 | 1 = 3 % 1 (Draw) - ;; 2 3 | 0 = 3 % 3 (Lose) - ;; ----+----------------- - ;; 3 1 | 0 = 3 % 3 (Lose) - ;; 3 2 | 2 = 3 % 2 (Win) - ;; 3 3 | 1 = 3 % 1 (Draw) - ;; We notice, that N (in "3 % N") is a rotation of the numbers 3, 2, 1, where if your choice - ;; is 3, we don't rotate them, if it's 2 we rotate by one (backwards) and so on. - ;; We can get 3, 2, 1 from the enemie's 1, 2, 3 by subtracting them from 4. Then we can use - ;; your choice to do the "rotation" (since we're doing mod, 3 % 3 = 3 % 6). - (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps)) - - (setq cal (read-line *prog-input* NIL))) - - (print total-score)) - -(if (not (eq *prog-input* *standard-input*)) - (close *prog-input*)) - diff --git a/2022/Day2/part-two.cl b/2022/Day2/part-two.cl deleted file mode 100644 index 40090e2..0000000 --- a/2022/Day2/part-two.cl +++ /dev/null @@ -1,45 +0,0 @@ -(defvar *prog-input*) - -(let ((ui (read-line))) - (if (equal ui "") - (setq *prog-input* *standard-input*) - (setq *prog-input* (open ui)))) - -(let - ((cal (read-line *prog-input* NIL)) (total-score 0) - (your-rps '(#\0 #\X #\Y #\Z)) (enemy-rps '(#\0 #\A #\B #\C)) - (cy-rps 0) (ce-rps 0)) - - (loop until (or (equal cal "end") (not cal)) do - (setq ce-rps (position (char cal 0) enemy-rps)) - ;; We reuse numbers 1,2,3 to, for now, signify your strategy - (setq cy-rps (position (char cal 2) your-rps)) - - ;; Similarly to part-one.cl, if we write down the table of possible combinations - ;; (from left to right, columns are "Your strategy", "Enemy choice", "What your choice should be"): - ;; 1 1 | 3 = 1 + 2 - ;; 1 2 | 1 = 1 + 0 - ;; 1 3 | 2 = 1 + 1 - ;; ----+---------- - ;; 2 1 | 1 = 1 + 0 - ;; 2 2 | 2 = 1 + 1 - ;; 2 3 | 3 = 1 + 2 - ;; ----+---------- - ;; 3 1 | 2 = 1 + 1 - ;; 3 2 | 3 = 1 + 2 - ;; 3 3 | 1 = 1 + 0 - ;; Your choice is a rotation of the numbers 1, 2 and 3, where if your strategy is 1 (lose) - ;; you rotate once, if your strategy is 2 (draw) you rotate zero times and if it is 3 (win) - ;; you rotate two times. - (setq cy-rps (+ (mod (+ cy-rps ce-rps) 3) 1)) - - ;; Refer to part-one.cl for explanation on math - (setq total-score (+ total-score (* 3 (mod (+ (- 4 ce-rps) cy-rps) 3)) cy-rps)) - - (setq cal (read-line *prog-input* NIL))) - - (print total-score)) - -(if (not (eq *prog-input* *standard-input*)) - (close *prog-input*)) - -- cgit v1.2.3