diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2a005df --- /dev/null +++ b/.gitignore @@ -0,0 +1,174 @@ +# Created by https://www.toptal.com/developers/gitignore/api/python +# Edit at https://www.toptal.com/developers/gitignore?templates=python + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + + +# End of https://www.toptal.com/developers/gitignore/api/python + + +tags diff --git a/2021/README.md b/2021/README.md new file mode 100644 index 0000000..8ef2545 --- /dev/null +++ b/2021/README.md @@ -0,0 +1,24 @@ +Advent of Code 2021 + +to run any day: + +- make a virualenv `python3 -m venv env` +- source it `souce env/bin/activate` +- install deps `pip install -r requirements.txt` +- run the day `python day01.py` +- to run sample code pass `--sample` as the argument. `python day01.py --sample`, (nothing special just checks sys.argv[-1]) + + + + + +python day01.py --sample +python day02.py --sample +python day03.py --sample +python day04.py --sample +python day05.py --sample +python day06.py --sample +python day07.py --sample +python day08.py --sample +python day09.py --sample +python day10.py --sample diff --git a/2021/full/day01.txt b/2021/full/day01.txt new file mode 100644 index 0000000..c32ab19 --- /dev/null +++ b/2021/full/day01.txt @@ -0,0 +1,2000 @@ +109 +117 +118 +98 +102 +94 +101 +109 +121 +126 +117 +116 +134 +119 +98 +97 +96 +98 +101 +107 +123 +134 +137 +160 +171 +188 +189 +188 +169 +163 +182 +184 +187 +184 +196 +199 +218 +222 +223 +218 +214 +220 +215 +223 +226 +228 +236 +237 +268 +277 +282 +284 +285 +288 +289 +313 +322 +331 +335 +331 +316 +323 +314 +313 +314 +301 +302 +320 +315 +323 +324 +346 +347 +362 +376 +377 +378 +379 +381 +391 +392 +395 +391 +393 +399 +401 +403 +428 +423 +422 +427 +430 +432 +431 +433 +449 +456 +455 +456 +457 +456 +460 +461 +460 +459 +460 +467 +468 +505 +506 +513 +505 +509 +510 +511 +521 +522 +523 +525 +521 +514 +517 +510 +507 +534 +543 +554 +552 +578 +587 +593 +598 +591 +592 +579 +580 +576 +594 +593 +594 +598 +610 +611 +609 +607 +606 +609 +616 +617 +605 +604 +616 +628 +641 +642 +643 +644 +641 +652 +645 +637 +652 +651 +648 +649 +647 +650 +651 +652 +660 +675 +672 +643 +624 +633 +635 +626 +642 +645 +651 +658 +671 +674 +684 +687 +668 +675 +650 +662 +680 +679 +701 +704 +716 +720 +727 +736 +734 +738 +735 +742 +754 +781 +777 +778 +792 +795 +797 +796 +816 +819 +829 +839 +846 +839 +864 +865 +868 +869 +873 +878 +876 +878 +881 +882 +909 +922 +929 +944 +945 +944 +945 +954 +958 +959 +963 +967 +960 +957 +965 +986 +1006 +986 +1007 +1010 +1011 +1000 +1001 +970 +974 +972 +974 +982 +990 +988 +1002 +1003 +1027 +1037 +1034 +1045 +1036 +1038 +1036 +1016 +1015 +1032 +1038 +1040 +1041 +1043 +1046 +1088 +1105 +1112 +1113 +1114 +1117 +1132 +1130 +1132 +1121 +1124 +1112 +1117 +1118 +1122 +1123 +1154 +1155 +1153 +1150 +1151 +1167 +1171 +1172 +1173 +1174 +1181 +1183 +1193 +1194 +1227 +1231 +1234 +1253 +1256 +1255 +1242 +1255 +1276 +1280 +1297 +1298 +1308 +1309 +1307 +1325 +1327 +1329 +1325 +1319 +1323 +1324 +1327 +1361 +1364 +1368 +1360 +1365 +1348 +1357 +1358 +1359 +1372 +1373 +1377 +1381 +1383 +1385 +1384 +1387 +1382 +1381 +1410 +1405 +1412 +1413 +1416 +1417 +1423 +1434 +1437 +1442 +1443 +1445 +1460 +1461 +1459 +1479 +1452 +1475 +1492 +1503 +1508 +1507 +1479 +1480 +1472 +1471 +1478 +1479 +1456 +1459 +1469 +1457 +1460 +1465 +1469 +1477 +1478 +1482 +1485 +1486 +1485 +1463 +1473 +1477 +1480 +1482 +1493 +1494 +1495 +1507 +1502 +1501 +1496 +1494 +1495 +1493 +1490 +1497 +1521 +1530 +1524 +1525 +1521 +1529 +1545 +1529 +1526 +1538 +1525 +1505 +1506 +1511 +1512 +1513 +1512 +1515 +1548 +1555 +1557 +1575 +1576 +1598 +1596 +1609 +1605 +1608 +1621 +1631 +1632 +1645 +1647 +1660 +1665 +1693 +1703 +1697 +1699 +1711 +1701 +1702 +1703 +1715 +1716 +1717 +1693 +1692 +1697 +1669 +1670 +1673 +1690 +1697 +1705 +1707 +1726 +1720 +1721 +1726 +1732 +1731 +1739 +1749 +1737 +1713 +1718 +1734 +1735 +1742 +1745 +1742 +1741 +1742 +1743 +1776 +1779 +1797 +1801 +1802 +1804 +1806 +1807 +1803 +1804 +1806 +1817 +1815 +1802 +1803 +1809 +1811 +1814 +1811 +1815 +1817 +1818 +1817 +1808 +1819 +1824 +1829 +1830 +1817 +1819 +1820 +1821 +1822 +1823 +1827 +1828 +1829 +1832 +1834 +1839 +1845 +1848 +1857 +1859 +1879 +1880 +1885 +1888 +1887 +1912 +1910 +1917 +1929 +1930 +1931 +1932 +1930 +1914 +1917 +1904 +1910 +1913 +1901 +1903 +1904 +1900 +1896 +1917 +1921 +1910 +1914 +1915 +1917 +1915 +1916 +1939 +1940 +1941 +1942 +1943 +1946 +1947 +1962 +1946 +1949 +1938 +1935 +1927 +1928 +1931 +1932 +1933 +1931 +1957 +1951 +1956 +1957 +1958 +1969 +1967 +1966 +1992 +1991 +1997 +1999 +2010 +2016 +2039 +2043 +2047 +2048 +2046 +2064 +2069 +2072 +2084 +2094 +2103 +2104 +2105 +2080 +2090 +2092 +2079 +2094 +2100 +2097 +2105 +2104 +2092 +2093 +2094 +2100 +2105 +2106 +2122 +2126 +2128 +2134 +2141 +2153 +2154 +2157 +2170 +2171 +2158 +2156 +2180 +2181 +2167 +2182 +2188 +2166 +2162 +2167 +2163 +2181 +2191 +2192 +2195 +2237 +2236 +2249 +2255 +2258 +2271 +2272 +2257 +2260 +2263 +2264 +2281 +2282 +2285 +2289 +2293 +2279 +2284 +2287 +2292 +2291 +2303 +2304 +2302 +2306 +2324 +2323 +2327 +2330 +2321 +2332 +2316 +2320 +2323 +2336 +2332 +2303 +2304 +2303 +2304 +2308 +2311 +2324 +2325 +2347 +2348 +2345 +2340 +2348 +2347 +2348 +2346 +2352 +2345 +2346 +2347 +2350 +2354 +2359 +2363 +2369 +2374 +2378 +2377 +2393 +2400 +2403 +2405 +2404 +2411 +2417 +2415 +2408 +2407 +2409 +2419 +2420 +2446 +2448 +2450 +2451 +2446 +2447 +2448 +2450 +2451 +2449 +2448 +2450 +2453 +2454 +2460 +2463 +2465 +2474 +2471 +2473 +2471 +2485 +2487 +2483 +2501 +2494 +2519 +2517 +2516 +2517 +2520 +2523 +2524 +2489 +2491 +2494 +2493 +2504 +2507 +2512 +2513 +2511 +2512 +2488 +2495 +2484 +2476 +2477 +2480 +2479 +2487 +2495 +2492 +2493 +2513 +2512 +2506 +2513 +2514 +2515 +2499 +2506 +2510 +2505 +2506 +2512 +2513 +2515 +2527 +2515 +2516 +2533 +2534 +2535 +2536 +2541 +2548 +2586 +2588 +2601 +2604 +2614 +2616 +2615 +2622 +2624 +2639 +2638 +2642 +2647 +2637 +2654 +2613 +2614 +2618 +2609 +2608 +2609 +2613 +2634 +2631 +2651 +2658 +2660 +2670 +2674 +2675 +2678 +2682 +2686 +2680 +2683 +2689 +2691 +2690 +2691 +2697 +2700 +2704 +2716 +2720 +2723 +2737 +2734 +2737 +2736 +2737 +2740 +2741 +2743 +2737 +2738 +2737 +2746 +2752 +2748 +2749 +2755 +2756 +2758 +2774 +2784 +2785 +2800 +2802 +2811 +2813 +2825 +2819 +2822 +2823 +2829 +2824 +2823 +2824 +2805 +2808 +2806 +2821 +2820 +2826 +2834 +2833 +2837 +2850 +2853 +2857 +2869 +2868 +2870 +2891 +2890 +2895 +2896 +2905 +2926 +2928 +2926 +2930 +2929 +2938 +2970 +2976 +2968 +2967 +2988 +3000 +3001 +3002 +3003 +3020 +3021 +3025 +3035 +3041 +3040 +3014 +3013 +3019 +3024 +3025 +3035 +3036 +3032 +3054 +3065 +3064 +3053 +3054 +3058 +3052 +3061 +3063 +3064 +3068 +3096 +3095 +3091 +3114 +3124 +3130 +3137 +3146 +3147 +3148 +3142 +3144 +3145 +3150 +3151 +3149 +3158 +3146 +3144 +3135 +3153 +3166 +3168 +3167 +3151 +3147 +3155 +3156 +3159 +3156 +3159 +3160 +3175 +3174 +3188 +3182 +3175 +3185 +3189 +3194 +3169 +3173 +3176 +3177 +3169 +3137 +3138 +3148 +3139 +3141 +3142 +3162 +3163 +3168 +3164 +3168 +3167 +3176 +3173 +3197 +3198 +3199 +3216 +3232 +3245 +3272 +3295 +3294 +3291 +3301 +3303 +3304 +3306 +3307 +3306 +3312 +3291 +3292 +3290 +3266 +3271 +3261 +3267 +3268 +3288 +3300 +3289 +3297 +3264 +3271 +3255 +3256 +3263 +3266 +3269 +3308 +3323 +3320 +3326 +3332 +3334 +3335 +3341 +3369 +3375 +3365 +3359 +3362 +3365 +3370 +3371 +3364 +3365 +3366 +3375 +3376 +3392 +3393 +3428 +3458 +3474 +3475 +3484 +3490 +3496 +3512 +3510 +3512 +3513 +3516 +3517 +3540 +3550 +3549 +3540 +3552 +3559 +3549 +3550 +3568 +3569 +3568 +3572 +3576 +3578 +3580 +3581 +3583 +3586 +3590 +3574 +3576 +3579 +3563 +3558 +3557 +3554 +3556 +3564 +3561 +3563 +3583 +3582 +3590 +3594 +3583 +3578 +3596 +3602 +3615 +3621 +3625 +3631 +3633 +3655 +3636 +3639 +3640 +3641 +3644 +3646 +3652 +3655 +3671 +3681 +3685 +3692 +3673 +3691 +3696 +3692 +3695 +3704 +3719 +3721 +3728 +3737 +3738 +3754 +3757 +3754 +3759 +3758 +3765 +3767 +3770 +3774 +3769 +3756 +3755 +3750 +3780 +3782 +3781 +3785 +3788 +3771 +3774 +3775 +3764 +3742 +3743 +3755 +3759 +3757 +3767 +3771 +3770 +3776 +3778 +3773 +3774 +3775 +3778 +3777 +3764 +3773 +3767 +3768 +3769 +3792 +3810 +3808 +3791 +3789 +3790 +3816 +3838 +3841 +3849 +3850 +3849 +3853 +3854 +3878 +3880 +3892 +3911 +3886 +3885 +3889 +3892 +3893 +3918 +3919 +3915 +3916 +3913 +3928 +3955 +3956 +3961 +3959 +3963 +3962 +3964 +3973 +3969 +3972 +3973 +3974 +3993 +3995 +3998 +4018 +4026 +4027 +4026 +4027 +4024 +4039 +4052 +4055 +4056 +4060 +4077 +4069 +4066 +4067 +4071 +4102 +4099 +4106 +4112 +4114 +4125 +4130 +4127 +4157 +4147 +4148 +4127 +4130 +4131 +4130 +4129 +4134 +4124 +4132 +4133 +4134 +4153 +4154 +4157 +4154 +4187 +4168 +4165 +4170 +4172 +4205 +4203 +4204 +4174 +4175 +4172 +4169 +4171 +4198 +4203 +4215 +4209 +4212 +4213 +4229 +4230 +4232 +4233 +4237 +4242 +4243 +4268 +4277 +4278 +4284 +4293 +4298 +4302 +4281 +4282 +4280 +4271 +4264 +4265 +4258 +4269 +4268 +4273 +4276 +4284 +4270 +4271 +4266 +4275 +4305 +4309 +4314 +4316 +4324 +4323 +4335 +4338 +4339 +4368 +4369 +4368 +4373 +4375 +4366 +4370 +4376 +4375 +4374 +4377 +4378 +4379 +4380 +4392 +4395 +4391 +4389 +4390 +4391 +4400 +4393 +4391 +4396 +4364 +4351 +4385 +4387 +4391 +4395 +4387 +4407 +4408 +4410 +4426 +4449 +4450 +4460 +4461 +4460 +4465 +4469 +4472 +4479 +4489 +4492 +4508 +4512 +4527 +4537 +4544 +4552 +4553 +4561 +4566 +4567 +4561 +4559 +4550 +4543 +4549 +4554 +4557 +4558 +4570 +4585 +4595 +4597 +4584 +4583 +4605 +4603 +4606 +4607 +4608 +4612 +4611 +4610 +4620 +4621 +4613 +4615 +4605 +4617 +4626 +4650 +4655 +4665 +4664 +4663 +4665 +4669 +4668 +4670 +4662 +4666 +4665 +4660 +4661 +4673 +4676 +4679 +4685 +4687 +4708 +4704 +4707 +4717 +4718 +4716 +4724 +4715 +4718 +4721 +4714 +4738 +4739 +4740 +4753 +4756 +4757 +4763 +4754 +4755 +4747 +4760 +4761 +4760 +4781 +4774 +4776 +4784 +4786 +4785 +4783 +4798 +4800 +4796 +4795 +4798 +4800 +4801 +4805 +4794 +4800 +4819 +4823 +4824 +4822 +4816 +4820 +4826 +4831 +4830 +4832 +4833 +4827 +4822 +4826 +4825 +4824 +4823 +4824 +4844 +4849 +4853 +4858 +4861 +4859 +4856 +4841 +4843 +4844 +4843 +4858 +4859 +4864 +4860 +4857 +4869 +4901 +4902 +4907 +4908 +4909 +4911 +4914 +4918 +4906 +4907 +4912 +4902 +4911 +4888 +4890 +4888 +4885 +4887 +4873 +4874 +4880 +4891 +4890 +4891 +4892 +4909 +4910 +4930 +4932 +4937 +4940 +4948 +4950 +4945 +4948 +4949 +4950 +4946 +4945 +4936 +4954 +4955 +4942 +4952 +4956 +4959 +4958 +4960 +4958 +4964 +4972 +4974 +4973 +4974 +4988 +4989 +4956 +4960 +4959 +4966 +4968 +4961 +4965 +4971 +4979 +4983 +4990 +4991 +4990 +4993 +4997 +5016 +5010 +5008 +5009 +4997 +4998 +4999 +5008 +5021 +5022 +5023 +5024 +5030 +5014 +5017 +5022 +5018 +5017 +5021 +5023 +5002 +5003 +5004 +5010 +4998 +4999 +5008 +5007 +5011 +5013 +5039 +5041 +5043 +5046 +5057 +5055 +5017 +5015 +5010 +5011 +5017 +5011 +5019 +5020 +5022 +5023 +5032 +5033 +5042 +5062 +5083 +5092 +5093 +5081 +5082 +5085 +5086 +5085 +5087 +5099 +5096 +5085 +5088 +5087 +5090 +5091 +5104 +5092 +5093 +5081 +5080 +5082 +5086 +5087 +5088 +5098 +5097 +5101 +5114 +5117 +5120 +5128 +5129 +5126 +5127 +5128 +5129 +5135 +5138 +5142 +5145 +5146 +5169 +5170 +5172 +5168 +5172 +5189 +5190 +5201 +5222 +5219 +5220 +5237 +5238 +5245 +5286 +5280 +5293 +5294 +5306 +5305 +5308 +5317 +5320 +5322 +5347 +5363 +5361 +5359 +5365 +5373 +5375 +5379 +5378 +5379 +5381 +5388 +5386 +5389 +5401 +5402 +5401 +5403 +5409 +5404 +5409 +5414 +5415 +5434 +5436 +5444 +5448 +5465 +5464 +5465 +5466 +5468 +5469 +5456 +5460 +5443 +5445 +5443 +5439 +5438 +5445 +5452 +5484 +5487 +5481 +5488 +5489 +5504 +5513 +5536 +5539 +5547 +5571 +5584 +5597 +5601 +5572 +5575 +5582 +5583 +5586 +5591 +5590 +5603 +5598 +5603 +5588 +5570 +5571 +5573 +5575 +5594 +5595 +5599 +5602 +5610 +5641 +5639 +5647 +5656 +5663 +5661 +5664 +5651 +5645 +5650 +5658 +5659 +5660 +5655 +5654 +5655 +5673 +5672 +5655 +5653 +5661 +5666 +5669 +5671 +5675 +5681 +5692 +5685 +5684 +5685 +5684 +5724 +5725 +5732 +5731 +5732 +5733 +5728 +5743 +5742 +5767 +5775 +5779 +5783 +5774 +5778 +5783 +5795 +5797 +5801 +5795 +5794 +5795 +5790 +5789 +5791 +5789 +5791 +5792 +5788 +5789 +5798 +5799 +5792 +5802 +5801 +5808 +5805 +5806 +5799 +5795 +5812 +5816 +5818 +5794 +5779 +5781 +5792 +5799 +5814 +5805 +5809 +5811 +5813 +5816 +5820 +5835 +5830 +5829 +5857 +5862 +5863 +5854 +5849 +5852 +5855 +5853 +5852 +5853 +5857 +5858 +5867 +5863 +5865 +5864 +5875 +5900 +5874 +5883 +5886 +5915 +5913 +5914 +5882 +5888 +5889 +5890 +5891 +5880 +5883 +5901 +5903 +5904 +5907 +5910 +5913 +5928 +5954 +5963 +5964 +5967 +5975 +5976 +5973 +5979 +5980 +5979 +5990 +5989 +6002 +5998 +6006 +6012 +6007 +6014 +6019 +6020 +6019 +6008 +6022 +6032 +6028 +6010 +6009 +6022 +6023 +6025 +6030 +6037 +6038 +6041 +6035 +6025 +6020 +6036 +6026 +6027 +6032 +6041 +6034 +6036 +6044 +6055 +6061 +6101 +6102 +6123 +6128 +6129 +6131 +6141 +6142 +6143 +6144 +6143 +6140 +6143 +6153 +6154 +6168 +6170 +6167 +6174 +6180 +6160 +6162 +6167 +6163 +6160 +6167 +6166 +6167 +6164 +6153 +6155 +6185 +6193 +6170 +6190 +6201 +6238 +6225 +6223 +6222 +6225 +6227 +6232 +6229 +6230 +6234 +6239 +6240 +6254 +6253 +6240 +6252 +6273 +6266 +6276 +6277 +6276 +6299 +6300 +6299 +6289 +6291 +6289 +6287 +6288 +6287 +6289 +6292 +6293 +6297 +6308 diff --git a/2021/full/day02.txt b/2021/full/day02.txt new file mode 100644 index 0000000..6445102 --- /dev/null +++ b/2021/full/day02.txt @@ -0,0 +1,1000 @@ +forward 7 +forward 9 +forward 9 +down 3 +down 8 +down 3 +forward 6 +down 7 +up 3 +forward 3 +up 3 +down 3 +down 9 +down 6 +forward 8 +down 3 +down 9 +forward 4 +forward 3 +down 1 +forward 2 +down 5 +forward 9 +forward 6 +up 1 +forward 8 +down 9 +forward 8 +down 7 +down 9 +down 4 +down 2 +forward 2 +down 6 +up 8 +forward 3 +forward 7 +down 2 +forward 4 +down 3 +down 1 +down 8 +forward 5 +forward 6 +down 3 +forward 1 +up 1 +down 8 +forward 5 +forward 2 +forward 9 +up 4 +down 1 +down 3 +up 5 +up 5 +forward 7 +up 1 +forward 8 +forward 4 +forward 3 +down 9 +forward 2 +forward 5 +down 5 +up 7 +forward 4 +up 5 +down 5 +down 4 +down 9 +forward 1 +up 3 +forward 6 +down 3 +forward 9 +down 1 +up 5 +down 7 +forward 3 +forward 3 +up 9 +down 2 +down 4 +forward 1 +forward 2 +down 4 +down 4 +up 5 +forward 9 +down 3 +down 1 +down 8 +down 2 +down 8 +forward 9 +forward 5 +down 2 +forward 8 +up 9 +down 8 +down 5 +down 6 +down 2 +down 4 +up 2 +forward 4 +down 9 +forward 4 +down 6 +down 9 +forward 9 +down 3 +down 1 +up 2 +down 6 +forward 2 +down 4 +down 6 +forward 5 +up 2 +up 8 +down 2 +up 9 +forward 6 +down 8 +down 7 +forward 3 +forward 5 +forward 4 +down 5 +forward 2 +up 1 +up 3 +up 7 +forward 2 +forward 2 +up 6 +down 3 +down 7 +down 8 +forward 5 +up 5 +down 9 +forward 7 +down 2 +down 6 +forward 8 +down 1 +down 7 +down 2 +forward 2 +forward 4 +down 5 +up 5 +down 6 +down 5 +down 8 +forward 5 +forward 4 +down 3 +up 7 +up 4 +forward 7 +down 9 +down 3 +down 7 +forward 6 +up 4 +down 2 +down 9 +up 1 +down 2 +up 7 +down 7 +down 1 +down 5 +forward 9 +down 5 +down 8 +down 4 +down 5 +forward 3 +down 5 +forward 5 +down 6 +forward 6 +up 7 +down 7 +down 3 +down 8 +down 8 +up 5 +down 3 +up 4 +down 1 +up 4 +up 2 +up 2 +forward 6 +forward 3 +forward 4 +down 9 +up 2 +forward 2 +down 2 +down 6 +up 2 +forward 1 +up 4 +forward 5 +up 5 +forward 3 +forward 7 +down 2 +up 6 +forward 1 +up 6 +down 8 +forward 1 +forward 7 +up 3 +up 5 +forward 4 +down 1 +forward 7 +up 7 +forward 5 +forward 6 +forward 6 +forward 2 +down 6 +down 1 +forward 4 +forward 2 +forward 2 +up 2 +forward 1 +down 2 +down 8 +forward 5 +forward 3 +up 1 +forward 5 +down 8 +down 6 +down 1 +up 2 +down 1 +down 3 +forward 3 +up 9 +forward 5 +down 6 +up 8 +down 9 +up 4 +down 8 +forward 2 +forward 9 +forward 6 +forward 2 +up 5 +down 5 +down 6 +forward 2 +forward 3 +forward 5 +forward 7 +down 8 +forward 1 +forward 1 +forward 4 +forward 5 +down 4 +forward 6 +forward 4 +forward 6 +down 5 +down 8 +down 7 +up 9 +down 8 +forward 2 +down 9 +forward 3 +down 4 +up 1 +down 6 +forward 4 +down 9 +down 5 +down 3 +up 6 +down 1 +down 3 +forward 2 +down 7 +down 9 +forward 6 +forward 1 +forward 8 +down 6 +down 2 +down 2 +forward 7 +up 8 +forward 5 +forward 7 +forward 7 +forward 3 +up 3 +forward 3 +up 4 +down 5 +forward 1 +forward 7 +forward 7 +down 9 +up 4 +forward 1 +down 9 +forward 3 +forward 8 +down 3 +forward 6 +down 7 +down 2 +forward 1 +down 4 +down 6 +down 2 +forward 7 +forward 7 +down 9 +forward 7 +down 8 +forward 7 +down 5 +down 7 +forward 1 +forward 7 +up 6 +down 5 +forward 9 +down 2 +forward 7 +up 4 +down 1 +down 7 +forward 4 +down 2 +down 4 +forward 4 +down 8 +forward 3 +forward 2 +down 3 +down 4 +forward 2 +forward 6 +down 9 +down 3 +forward 9 +up 4 +up 1 +forward 7 +up 3 +up 8 +down 2 +up 2 +up 6 +forward 8 +down 3 +up 4 +up 6 +down 8 +forward 5 +down 1 +up 2 +up 5 +forward 7 +down 6 +up 4 +forward 1 +up 9 +forward 8 +down 3 +up 8 +down 3 +down 5 +up 6 +up 8 +down 2 +up 4 +down 1 +down 2 +forward 4 +up 9 +up 1 +up 2 +forward 4 +forward 9 +up 8 +forward 8 +down 8 +up 9 +forward 3 +forward 2 +down 7 +up 1 +up 8 +up 1 +up 6 +up 9 +forward 6 +forward 8 +forward 8 +forward 6 +down 2 +down 4 +forward 8 +up 3 +forward 1 +down 3 +down 1 +down 9 +up 9 +down 4 +forward 7 +down 3 +forward 1 +down 6 +forward 7 +forward 3 +forward 2 +down 5 +forward 6 +up 8 +forward 6 +forward 8 +down 1 +up 3 +down 1 +down 7 +up 2 +down 8 +forward 7 +down 1 +forward 5 +forward 5 +up 9 +down 1 +forward 6 +up 1 +forward 1 +down 8 +down 5 +forward 7 +forward 5 +forward 3 +down 2 +down 4 +forward 3 +forward 2 +forward 3 +down 1 +down 6 +down 8 +down 5 +forward 6 +forward 5 +down 8 +forward 2 +forward 6 +forward 1 +down 3 +down 7 +down 1 +down 1 +down 6 +down 5 +forward 1 +up 9 +down 4 +down 8 +forward 4 +down 3 +down 6 +down 9 +up 4 +forward 6 +down 1 +down 3 +up 5 +up 7 +forward 6 +up 6 +down 6 +down 2 +up 1 +forward 1 +down 3 +forward 2 +down 6 +down 5 +down 1 +down 5 +up 2 +down 3 +up 1 +forward 7 +down 3 +forward 5 +down 4 +up 1 +down 7 +forward 3 +up 9 +down 2 +up 5 +forward 7 +up 8 +forward 8 +forward 8 +up 8 +forward 8 +forward 1 +forward 2 +down 8 +forward 6 +down 3 +down 9 +forward 9 +forward 4 +down 6 +down 4 +forward 3 +up 2 +up 7 +down 9 +down 2 +forward 8 +down 2 +down 3 +down 7 +forward 9 +down 4 +up 3 +down 4 +down 5 +forward 9 +down 9 +forward 4 +forward 3 +down 6 +forward 4 +down 5 +down 2 +forward 1 +down 4 +forward 2 +up 3 +up 3 +forward 4 +down 4 +up 2 +up 8 +forward 8 +down 5 +down 8 +down 7 +down 7 +forward 6 +forward 5 +up 4 +down 6 +down 9 +forward 1 +down 3 +forward 8 +down 4 +forward 3 +down 7 +forward 3 +forward 3 +forward 1 +forward 5 +down 7 +forward 4 +up 5 +down 9 +down 3 +down 6 +down 6 +forward 1 +down 2 +forward 8 +forward 5 +forward 9 +up 2 +forward 5 +down 1 +up 2 +forward 7 +down 9 +down 2 +up 9 +down 6 +forward 4 +down 8 +forward 4 +down 7 +down 6 +up 7 +up 3 +forward 6 +forward 7 +down 4 +down 6 +up 1 +forward 6 +down 6 +forward 5 +forward 9 +forward 5 +forward 7 +down 3 +down 9 +forward 7 +forward 6 +down 2 +down 9 +down 8 +down 5 +forward 3 +up 5 +down 4 +forward 5 +down 8 +forward 8 +up 3 +down 5 +up 8 +down 5 +down 1 +down 3 +down 1 +down 8 +up 9 +forward 1 +forward 5 +forward 9 +forward 9 +down 6 +forward 3 +up 6 +up 2 +down 6 +forward 4 +down 7 +up 1 +up 3 +down 3 +up 3 +up 1 +down 9 +down 2 +up 6 +down 6 +forward 8 +forward 3 +forward 1 +up 9 +down 2 +forward 6 +down 1 +forward 5 +up 8 +down 2 +forward 7 +forward 2 +down 1 +forward 6 +up 7 +down 7 +forward 3 +down 8 +down 6 +forward 3 +down 9 +down 7 +forward 5 +forward 5 +down 1 +forward 3 +up 8 +forward 8 +down 3 +up 4 +up 6 +up 5 +up 6 +down 8 +up 9 +down 6 +up 5 +down 6 +forward 4 +down 7 +forward 5 +forward 2 +down 1 +down 5 +forward 4 +forward 4 +down 9 +forward 6 +down 4 +forward 1 +forward 3 +down 5 +forward 2 +up 3 +forward 6 +down 2 +up 5 +down 6 +down 6 +forward 3 +up 5 +forward 4 +forward 3 +forward 6 +forward 5 +forward 7 +down 5 +down 8 +up 6 +up 3 +down 1 +forward 6 +down 4 +forward 7 +up 3 +forward 9 +down 3 +forward 2 +forward 8 +down 9 +down 2 +up 8 +down 3 +down 6 +forward 8 +forward 6 +up 5 +forward 9 +forward 7 +down 9 +forward 5 +down 1 +up 5 +down 4 +up 2 +forward 1 +up 9 +forward 1 +forward 2 +down 1 +forward 5 +forward 8 +down 8 +up 3 +down 4 +forward 6 +down 9 +down 9 +forward 7 +forward 3 +down 3 +down 7 +forward 8 +forward 1 +forward 6 +down 8 +up 2 +up 6 +forward 2 +down 6 +up 3 +down 5 +forward 9 +down 6 +down 9 +down 8 +down 5 +forward 3 +forward 3 +down 1 +forward 7 +forward 5 +down 3 +down 1 +down 9 +forward 4 +up 9 +up 8 +down 2 +down 1 +forward 6 +forward 5 +up 8 +up 4 +down 7 +forward 9 +forward 9 +up 4 +forward 3 +down 6 +forward 1 +down 2 +forward 2 +down 6 +forward 4 +down 2 +forward 9 +down 3 +down 4 +forward 9 +forward 4 +forward 7 +forward 8 +down 7 +up 5 +forward 3 +forward 1 +down 3 +forward 2 +forward 5 +forward 5 +down 5 +down 5 +down 6 +forward 3 +up 4 +forward 6 +down 1 +down 3 +down 5 +down 6 +up 1 +forward 3 +forward 2 +up 9 +forward 6 +up 1 +down 9 +up 3 +down 4 +forward 1 +down 4 +forward 3 +forward 5 +down 2 +forward 5 +down 5 +down 9 +down 8 +forward 5 +forward 7 +down 1 +forward 2 +up 5 +up 9 +forward 4 +up 7 +down 9 +forward 9 +up 9 +down 5 +up 8 +forward 1 +forward 8 +up 9 +down 1 +down 3 +down 6 +forward 8 +forward 9 +down 7 +forward 8 +down 9 +forward 7 +up 6 +forward 7 +forward 3 +forward 5 +down 4 +forward 3 +up 8 +up 3 +down 7 +up 3 +forward 6 +down 7 +forward 5 +down 5 +forward 8 +down 4 +up 1 +up 1 +forward 9 +forward 8 +up 3 +down 5 +forward 8 +forward 6 +forward 9 +forward 5 +forward 3 +down 5 +forward 4 +down 6 +forward 9 +up 6 +down 3 +down 8 +down 5 +down 8 +down 4 +down 5 +down 2 +down 4 +down 8 +down 2 +down 7 +down 9 +down 5 +up 3 +down 1 +forward 6 +forward 4 +forward 1 +forward 6 +forward 4 +down 1 +forward 3 +forward 1 +forward 1 +down 5 +down 4 +up 6 +forward 2 +up 6 +down 8 +forward 1 +up 7 +down 4 +up 2 +down 3 +forward 6 +forward 2 +up 5 +forward 7 +down 8 +forward 6 +up 6 +down 9 +down 6 +down 5 +down 8 +down 5 +down 8 +down 2 +down 7 +up 6 +up 9 +down 3 +down 5 +forward 3 +up 7 +down 7 +up 8 +forward 4 +forward 2 +down 1 +up 1 +up 6 +up 2 +down 1 +down 6 +down 1 +forward 4 +down 6 +forward 9 +forward 2 +forward 1 +forward 7 +forward 5 diff --git a/2021/full/day03.txt b/2021/full/day03.txt new file mode 100644 index 0000000..52865a8 --- /dev/null +++ b/2021/full/day03.txt @@ -0,0 +1,1000 @@ +000011001000 +001111100100 +110101011111 +010100001101 +110001001000 +010000110100 +010011010010 +110101000011 +100111001001 +001101110011 +001101011010 +000010111000 +111001101010 +001010011011 +000101101100 +010011011101 +111100101001 +110110100011 +001100000110 +111010110110 +110110011100 +110000011111 +010101111110 +011001111010 +110101100111 +101111010011 +001111000011 +001110011100 +000011001001 +100101101100 +010110000101 +000001110001 +000100011101 +011110001101 +000111000110 +000111011001 +110111110100 +101110010000 +111010000000 +000111001001 +010101010001 +111100100000 +100000000101 +100111010111 +000111110110 +000000101010 +010010001011 +000100100000 +111101011100 +001100110000 +001101010100 +001011100101 +010011000101 +000001000101 +010101110110 +101110101101 +011011110011 +110101111101 +110101011000 +001001110100 +001001110111 +110100100100 +110110110111 +111001001100 +010101101010 +010101110010 +110100011101 +011111100110 +001011010011 +010100010100 +010111101000 +111000000101 +110101110101 +111010111111 +101000110011 +011111000011 +001011010100 +000001101001 +011110010010 +000001100111 +111010110010 +000111100110 +010001000101 +101010100001 +110011000101 +010101010110 +111110111000 +000100110001 +100011100111 +000110011010 +001110100111 +110001111000 +101000010111 +110000010011 +111101111011 +010001011010 +011110000111 +010011101100 +011101010010 +100111110011 +100010100010 +010000011100 +001111010011 +111000111111 +000100111100 +001100101110 +001000011110 +001101101000 +100101000011 +011001010011 +111001100101 +111110011111 +011010111010 +001100101101 +111100110011 +111001000100 +100111111101 +101101101111 +110011100111 +010000111101 +001100111101 +011110101000 +001110010001 +011010001110 +110110110010 +001010111101 +110110011110 +011110111111 +001000011010 +001011000010 +110011111001 +010110110000 +101011111111 +110100111001 +100110000011 +101010011100 +011100011100 +101011001011 +001010100011 +001110100011 +000100000001 +111011101000 +000010011111 +010101101110 +001101010110 +110100101101 +101101010001 +100110010111 +100101010010 +011000101101 +010001100000 +110100110010 +001011101001 +110100111000 +111000111000 +100011001001 +011010100110 +001110011110 +101011110001 +000100101010 +001111101001 +111011101010 +001001010000 +111000011000 +001110100110 +001111011100 +000000111111 +000100110111 +010010111101 +100011000110 +001110011011 +001011011000 +000100101110 +100001010100 +110101010111 +110110101011 +111110011100 +100001111101 +001001001010 +100101111001 +101111010101 +100110110000 +101110010110 +101000000111 +100000110001 +001111110100 +011111010101 +010100110111 +010110101110 +100001010010 +101011100110 +100001001010 +001110101000 +100010110010 +100101100011 +111000000010 +101110110110 +011110001011 +101101111000 +001111001000 +010111000101 +111111111100 +000000011010 +001000010110 +111110000110 +110001110010 +101110001000 +010100011110 +111110001001 +010111111100 +111100100001 +001000010101 +010000001011 +011000101000 +001000010011 +111100000111 +100110101010 +011001011111 +101110100111 +111011100010 +010111110100 +010111110110 +111010101001 +100110100111 +100000001000 +111001110100 +000010101011 +101000001111 +001000011111 +000010010000 +110010000001 +111110111010 +111100101010 +101000100111 +110101011110 +000010001010 +100101111000 +011001000011 +101001000011 +010101001000 +111111101000 +101001001101 +010101000101 +010010011100 +011011011100 +100010001111 +100000000100 +101111101001 +011110001110 +010110011000 +111110110101 +010101000010 +001100110011 +111110100001 +110110111100 +110101011101 +100010111111 +101111000111 +001100011000 +011001001110 +101110111111 +010110111100 +111000001100 +000001111110 +101001011010 +000001101100 +110111111110 +101010000101 +010101001100 +011101111001 +110101100001 +111000010110 +100001101101 +000000011110 +011101001011 +011111111000 +011001001100 +010011001100 +001111010000 +111111000001 +010000010000 +010000101001 +111001110111 +100100000101 +100011010011 +110111100010 +111100110001 +000000111000 +000101101101 +101110001010 +011101111100 +110000100101 +010010111001 +011011010111 +011111101001 +010001100001 +110011100011 +111010110011 +011000101001 +000011101001 +001000110111 +011010010001 +101111111111 +110011110101 +000000100000 +101111110010 +011100010001 +000001100001 +000010000001 +110110000100 +011011001101 +101001011111 +000111100101 +110101111010 +100101100100 +100001110111 +101110001001 +110110010110 +111000000011 +001101110010 +010000001000 +101001010101 +000101111000 +110011101110 +010010001000 +110010010000 +011001110111 +000010110000 +000110100101 +000101101001 +000110101110 +011101100001 +100111110010 +010100111001 +110111111100 +110110000001 +001011000100 +101010101010 +011100000001 +100001001000 +010110110110 +011000100001 +100001001100 +010000110000 +111111101100 +000101101110 +111010101010 +101001111100 +010011100001 +001011001001 +100111110110 +010111001000 +101110000101 +110110001110 +010000000101 +110010010110 +011100100011 +001111101000 +111111011001 +010100100010 +001111000110 +001110000110 +110101010001 +001100011100 +010001101101 +011110010100 +110000101101 +011110011110 +110101001100 +101011101000 +101000001100 +101000000010 +011010100100 +110000000101 +000010001001 +111010010110 +000110110010 +101000111001 +101001011000 +010111011111 +000110111101 +000100011001 +010101110100 +101010010111 +001010100111 +111010101101 +101011011101 +010011101110 +000111111000 +111000111011 +011101110100 +100100111110 +011100000101 +100011111010 +010010010000 +001011101111 +110011001011 +100011111100 +000010011101 +110010000000 +001011010110 +010110111110 +101011010101 +011111111111 +001011001011 +010101011001 +110011110100 +111001001111 +111001110110 +001000000111 +111011111110 +100100100111 +110001110101 +011001111110 +001101000100 +101011000100 +110111101000 +100100001100 +011001011010 +001000010001 +011001111011 +111010011000 +111001001110 +111100010000 +111101100001 +001000111110 +011111001100 +101001111001 +010010000110 +001010000011 +100011100000 +111101110110 +100111010001 +111000011111 +100100010110 +010100000101 +101110001011 +101100100011 +010000101010 +110110101001 +010110100101 +100000110111 +010010000010 +101000010001 +110001111101 +011001011100 +011111100011 +010100100000 +001110011101 +100011010001 +000111010101 +001111000100 +001111101011 +001001011101 +110110101100 +011101111010 +011110001000 +000111001100 +010100111000 +100100110000 +110100001111 +010010010110 +110111101011 +111011011001 +011001101010 +011011001010 +111001101100 +000011110001 +111111001011 +110111100110 +110111110011 +101010111011 +111010110111 +000100000010 +110011011110 +101010111101 +000110111000 +111011011111 +010001110110 +000011000100 +100001010101 +000111001101 +111011000011 +001110110000 +110101111011 +011011010100 +001100100000 +100011101001 +010101100110 +001101000000 +011110100001 +000110110011 +000000000100 +110110111010 +000100001101 +110101111000 +010100101011 +000011011011 +011011100001 +011011001100 +000101111100 +101010011110 +011111100000 +100011000101 +010111101110 +100000110101 +001101111100 +010111100010 +011000000001 +101001101111 +001011000001 +111000110101 +000000110100 +100001110001 +001000101100 +001011101100 +110010101000 +010011001011 +001111011000 +110001100100 +110010100001 +100101010100 +010000101100 +111010101111 +000010000100 +000101000010 +110000101110 +010001000110 +110001011100 +101000111101 +111011111100 +011100101111 +010111100111 +110111011001 +010100000000 +010100101101 +101010111001 +001010100001 +011010010011 +111011100101 +010110110101 +110010101100 +000101010111 +100010001110 +100111101100 +001000100001 +110111110001 +101100011100 +100101101001 +110010101111 +000010001100 +011111110010 +011111011011 +110101010010 +001110101100 +101111101100 +101001101001 +011010101010 +111110100111 +000110001111 +100110110100 +111011100100 +100100101001 +000011101100 +100001000011 +101100001011 +000101011011 +110001010000 +111111011110 +000100110100 +011110110010 +101111100111 +010010110100 +001001000001 +111101101111 +000010010001 +001011001100 +110110010000 +101000100110 +111100001010 +011010101101 +011101101110 +010101000110 +100110011110 +011001000100 +101111111010 +011001101000 +001010100100 +000101111101 +111010110001 +001100111110 +100000100000 +101011101011 +011101011110 +110011111101 +001111000111 +101110111011 +001110111011 +001010100101 +111011110111 +011011000100 +111000001101 +111110011101 +101001001000 +111110001011 +100000000110 +011100010101 +000111101001 +110101001000 +011000000011 +100000001001 +111010000100 +111110010111 +110000010001 +100001000110 +000100000000 +101000100010 +011011010011 +001000111000 +001101101010 +000010010100 +100101111100 +101110110101 +101110100010 +010100000010 +011110001001 +111111010011 +111111101001 +001010000001 +100100111000 +000011001011 +010111000010 +000000001101 +010100011111 +101001010100 +001110111111 +111110111100 +010010101011 +100010000001 +101001111010 +111101000010 +100100011101 +011111010001 +111111011000 +110101010110 +110101011011 +010011110000 +010000011001 +011000111101 +101011011000 +110111101101 +101010000000 +101100100010 +111001010111 +100101010111 +011101101011 +011000011010 +111010011101 +000100011000 +110111100011 +001100010111 +000111100100 +011010000000 +101010000001 +010100011100 +110001111001 +011111010111 +101111110011 +101100001000 +111011101001 +010011001101 +100001111110 +000111011101 +011110100010 +010110010010 +001110101001 +001000100000 +000110111110 +111110011010 +111100100100 +010100110000 +001101100100 +100010111010 +010000101111 +100001011000 +010100101100 +101010011001 +100111111000 +001100001011 +111111010000 +100001111000 +110010000111 +000000110101 +000101000100 +100000101011 +101100010100 +100111101000 +100111100001 +100001100111 +110001110000 +001010100010 +110000011010 +111010111000 +111100111001 +011011001111 +101011110111 +001001010100 +111110010011 +111000110100 +100111110101 +001001001110 +111000101111 +011001110100 +011100000110 +000111010010 +000111000010 +111000111010 +111100001110 +000011111100 +000111100001 +110111001111 +011111000100 +101001000001 +010001101111 +001101001010 +001100001100 +000111001010 +011010011101 +000111111100 +001011111110 +101100101111 +100010110001 +101100001110 +111000011001 +010010000011 +110000000000 +111111011100 +100011101010 +101000000110 +111111101101 +001010101101 +100101110011 +001010111111 +101001101000 +100100000110 +011011000011 +000010110110 +110110011111 +100011100001 +010011111100 +011001101011 +111001110001 +111100111000 +101010011111 +010101111011 +000001000100 +110010111101 +110101010101 +100100100010 +011000010000 +111101011000 +111111110101 +111010100011 +000100100010 +001110110101 +100001100110 +001011000000 +001110010101 +010101100111 +111101100111 +000011110111 +101000010101 +000000101011 +100101000111 +110011001000 +111101101101 +111100001101 +010101010100 +011111001111 +011010011011 +001100011110 +001111110101 +010001010010 +011010100000 +100110100010 +110110110001 +100101000101 +011101101100 +111000100001 +101011011010 +101001100111 +100000110110 +101101011101 +011000101110 +000011011100 +001010010101 +010001010110 +010100000100 +001101100011 +011110110000 +101101100110 +101011110000 +111100111010 +001101111010 +011011011101 +011111000111 +001011000110 +001110010110 +110100101001 +111010010010 +011100101000 +110100110011 +111011111101 +011011001011 +011101101001 +000101110110 +111010101100 +100100011001 +111011101110 +010001101110 +010101011011 +111010000110 +111111111001 +011011001000 +110000110011 +100010101001 +010101100011 +010011111010 +101111011101 +100110000111 +110100100101 +001000001100 +001101100110 +110110101111 +111001011100 +110110001001 +010111110011 +010000001010 +000101100110 +001011101101 +001010110001 +111100011111 +110110100100 +001001111011 +010100010011 +000100010011 +010011010100 +100011000100 +001000101111 +000011010001 +111111001101 +101011010001 +011101100100 +101110110100 +100101100101 +111000110010 +010000010011 +011011000010 +011010011110 +001000110101 +011011101010 +001101010101 +001110110010 +111100111100 +011011100111 +011101001101 +010011011001 +110100100000 +110011010111 +010111001100 +101110101011 +111001001010 +010011101011 +100000001010 +000010101010 +001110101011 +000100111001 +010011111011 +110001001110 +111111001100 +011010100101 +101001100010 +100110000010 +010001001000 +111111010001 +000110011110 +001011011110 +000111101100 +000001110000 +111011011010 +110001001010 +011110011001 +001110100010 +001101110110 +100011011010 +101000111010 +010010101101 +011100111000 +011001100001 +011100110110 +111101011001 +100100010000 +101000001001 +000000101110 +001001000000 +111110011000 +101110100101 +110010001100 +110010001001 +101110100110 +100101000100 +001010110110 +000001011110 +001001011111 +011000001001 +101001100001 +100011011100 +010000111111 +001001010101 +110011010011 +010110111011 +000010101001 +110101101101 +110101000111 +111110010010 +001110111101 +100011110101 +111000101011 +110011101000 +111111001000 +010010111110 +111001111001 +100101111111 +010011011000 +100010010011 +111110111001 +100000011011 +000110000100 +101001001100 +110101110010 +010101101111 +101010011010 +110110110000 +101100110100 +110111010001 +011011101111 +000111110111 +011000101010 +001011110001 +001010010001 +110100110110 +000101010101 +101100101011 +001010000110 +111101010111 +011011111000 +011010010010 +110010001110 +001111100101 +101101001111 +011110110110 +011011011011 +101001100100 +111001000000 +010001101011 +010011110101 +101011000011 +100010100111 +100110111010 +000010110101 +111101010101 +100100000100 +101111111011 +010101000111 +000110001101 +001101101110 +011011011010 +010100100001 +101101110001 +010010100001 +011100100101 +001110000011 +010011011110 +000100100011 +110101100000 +111011010110 +110100111111 +000101110101 +110000000011 +010110101101 +100001011110 +110110101101 +001101000010 +101110101000 +010100101000 +110001000010 +111111000010 +001000111101 +001111111001 +010100010000 diff --git a/2021/full/day04.txt b/2021/full/day04.txt new file mode 100644 index 0000000..1c64115 --- /dev/null +++ b/2021/full/day04.txt @@ -0,0 +1,601 @@ +6,69,28,50,36,84,49,13,48,90,1,33,71,0,94,59,53,58,60,96,30,34,29,91,11,41,77,95,17,80,85,93,7,9,74,89,18,25,26,8,87,38,68,5,12,43,27,46,62,73,16,55,22,4,65,76,54,52,83,10,21,67,15,47,45,40,35,66,79,51,75,39,64,24,37,72,3,44,82,32,78,63,57,2,86,31,19,92,14,97,20,56,88,81,70,61,42,99,23,98 + +22 59 7 10 6 +33 36 96 55 23 +13 85 18 29 28 +75 46 83 73 58 +34 40 87 56 98 + +73 96 47 14 10 +28 11 79 84 20 +74 30 0 59 71 +80 93 42 22 17 +44 2 81 29 15 + +73 32 37 93 39 + 2 87 38 99 97 +15 12 42 49 33 + 9 23 25 94 19 +57 4 18 70 79 + +43 79 59 71 78 +51 97 37 28 26 +46 21 84 8 86 +96 30 17 34 49 +55 90 99 75 61 + +43 86 35 51 24 +16 25 29 21 3 + 2 13 4 36 54 +89 27 8 85 34 +96 59 65 14 56 + + 5 57 43 4 1 +86 80 67 30 20 +22 16 99 0 14 +40 25 59 91 54 +82 95 96 37 24 + +97 20 87 66 21 +25 40 9 78 89 +52 75 95 63 62 +32 43 13 47 69 +53 48 56 29 4 + +24 4 65 12 8 +76 3 81 99 49 +45 33 31 66 34 +17 94 75 35 88 +64 10 7 93 95 + +88 20 99 15 83 +81 40 5 6 98 +49 74 18 27 9 +43 69 28 37 71 +87 82 90 14 47 + +21 97 92 42 60 +11 65 98 95 29 + 2 49 75 20 74 +56 40 78 66 81 +68 4 46 77 61 + +26 14 39 76 11 +41 74 34 91 4 +51 9 97 29 75 +83 86 23 35 77 +90 2 49 30 89 + +34 97 0 22 15 +65 60 82 66 47 +30 9 49 95 48 +54 73 67 17 78 +33 96 44 1 32 + +90 29 10 49 63 + 8 26 95 61 0 +54 13 51 12 44 +32 48 16 47 84 +55 46 93 14 3 + +68 55 46 16 54 +97 59 49 6 21 +52 32 15 96 70 +57 56 61 51 0 +40 31 62 24 48 + +75 56 70 42 14 +77 9 23 62 25 +29 27 54 17 2 +55 72 43 15 96 +45 30 88 86 1 + +65 12 22 6 51 +77 81 15 91 19 +80 71 27 89 52 +75 92 41 83 57 +40 44 66 84 98 + +89 80 73 59 18 +74 55 67 71 10 +78 27 37 57 3 +92 26 17 5 72 +52 83 28 76 51 + +64 0 87 4 13 +14 43 42 62 31 +17 84 72 91 83 +53 80 59 61 74 +47 22 38 28 77 + +65 49 91 94 19 +25 81 64 57 9 +50 95 82 12 66 +53 54 85 36 11 +31 56 83 18 60 + + 6 12 76 37 33 +14 96 16 31 40 +17 82 27 94 83 + 1 50 49 9 54 +29 70 59 91 77 + +85 0 33 41 16 + 7 86 80 53 65 +94 19 28 35 32 + 4 55 93 97 63 +83 22 67 56 36 + +28 70 65 17 19 +88 51 15 73 12 +11 49 80 23 42 +26 54 90 75 29 +74 77 91 86 66 + +88 22 83 10 43 +57 34 15 23 8 +94 42 68 67 37 +84 3 6 71 62 +89 45 72 55 38 + +68 27 93 7 15 +85 96 1 56 6 +32 2 30 55 17 +99 90 37 80 50 +77 78 58 98 57 + + 5 95 22 13 97 +19 2 52 92 20 +75 49 86 31 41 +51 63 56 33 10 +82 27 79 94 57 + +15 44 91 26 4 +41 78 53 95 86 +90 92 46 56 33 +80 93 68 66 70 +36 10 38 0 6 + +11 47 52 64 17 +16 60 39 55 78 +46 18 33 83 35 +13 92 4 23 50 +40 5 29 6 90 + +20 60 2 23 74 +43 39 91 75 12 +58 67 50 29 79 +10 40 92 95 25 +13 24 53 72 36 + +69 64 15 53 86 +61 11 48 71 27 +26 93 38 70 73 +96 29 30 98 45 +13 7 31 59 84 + +13 55 50 54 57 +32 24 45 5 77 +82 86 0 4 99 +75 72 14 40 56 +76 94 89 17 30 + +66 71 86 41 0 +80 64 3 29 78 +23 21 42 99 87 +96 60 75 61 49 + 2 83 85 12 1 + +78 96 4 82 6 +73 36 57 99 8 +11 83 15 35 30 +85 87 25 22 66 +32 64 16 50 43 + + 6 39 55 2 4 + 1 61 99 71 80 +46 88 22 31 60 +62 66 37 97 76 +74 34 10 52 24 + +42 38 13 65 12 + 4 39 60 62 21 +81 99 1 69 40 +59 15 11 95 53 +91 78 72 30 73 + +43 68 82 72 2 +34 92 33 97 89 +63 70 9 0 45 +69 10 12 65 21 +40 20 55 57 49 + +41 22 8 16 49 +71 64 19 65 92 +17 10 26 36 29 +30 88 7 54 11 +77 55 70 72 47 + +15 94 90 6 39 +99 55 16 54 91 +18 7 82 44 51 +25 34 83 14 12 +30 2 77 27 66 + +44 50 74 97 58 +87 42 56 92 28 +49 82 52 17 78 +54 89 63 77 27 +83 14 24 16 84 + +47 32 8 55 22 +19 14 24 82 4 +76 73 9 10 64 +40 6 92 67 17 +68 44 43 3 54 + +26 10 9 92 81 +46 98 13 0 14 +68 99 35 18 72 +74 33 22 61 93 +80 38 71 6 75 + +17 23 54 55 22 +10 8 60 76 24 +71 28 16 62 82 +13 12 21 78 39 +26 66 89 64 79 + +72 12 91 79 99 +84 18 37 98 41 +10 71 88 23 24 +11 34 26 83 74 +58 27 77 5 8 + + 9 90 13 0 46 + 6 58 74 92 8 +75 77 56 76 80 +55 60 44 68 91 +67 28 96 66 18 + +14 26 54 21 35 +69 67 16 76 62 +78 45 87 44 94 +27 89 39 85 28 + 3 81 93 64 74 + +10 28 35 84 76 +40 11 95 59 57 +53 4 24 50 45 + 7 43 78 17 81 + 1 74 82 16 27 + + 6 26 72 53 52 +51 91 80 11 18 +20 63 74 25 33 +79 4 8 59 67 + 3 13 55 81 83 + +98 85 27 84 42 +90 15 17 61 34 +40 64 86 96 45 +59 47 53 5 35 +11 7 41 80 13 + +47 48 54 31 76 +99 32 98 20 15 +61 41 30 94 37 +34 59 86 55 45 + 9 83 92 53 3 + + 3 80 24 94 25 +17 23 64 76 71 +20 97 0 56 72 +95 73 28 59 21 +14 81 46 67 88 + + 2 95 5 38 90 +63 62 11 24 34 +19 31 57 84 80 +47 86 36 85 74 +13 39 73 94 42 + +28 6 60 34 15 +63 36 51 30 92 +43 10 7 88 49 +78 76 31 19 66 +22 20 35 45 79 + +19 42 49 57 73 +99 50 97 93 43 +67 52 40 16 33 + 2 55 0 71 46 +21 75 59 66 83 + +19 86 30 25 3 +32 39 65 54 29 +38 6 85 52 13 +43 95 18 44 15 +53 70 16 31 71 + +68 73 74 83 70 +56 15 12 78 4 +43 87 63 90 86 +41 16 23 17 77 +80 14 61 30 50 + +88 28 45 80 65 +64 11 68 33 27 +29 70 44 82 37 +42 66 9 32 87 +10 24 15 3 46 + +99 81 5 62 97 + 4 36 23 38 35 +42 16 37 98 54 +34 41 25 30 48 + 8 60 63 89 72 + +25 33 94 23 14 +45 10 79 30 3 +22 28 95 27 11 +74 13 39 84 83 +72 88 56 53 97 + +31 92 91 84 71 +54 90 89 80 0 +98 96 65 66 68 +35 39 70 11 82 +15 34 42 52 2 + +68 71 86 82 37 +28 48 12 34 54 +62 55 10 25 89 +60 4 50 21 22 + 3 2 18 40 84 + +18 96 95 47 45 +14 51 2 88 43 +94 56 19 15 8 +48 65 62 6 75 +35 28 25 72 30 + +43 85 69 92 26 +61 75 5 73 66 +16 87 4 99 48 +18 19 79 23 83 +37 88 31 38 40 + +23 10 89 84 76 +45 39 62 55 66 +25 73 79 43 60 +12 69 36 93 71 + 9 77 14 58 49 + + 9 24 26 53 79 +99 15 30 50 16 +14 95 12 25 33 +54 40 58 46 66 + 5 23 39 29 48 + +64 67 11 10 92 +59 99 80 97 66 +45 51 88 47 82 +35 27 72 85 16 +54 58 2 1 52 + +10 97 27 54 66 +89 85 39 99 98 + 8 68 95 51 19 + 4 17 79 87 3 +72 43 76 58 33 + +95 72 0 18 17 + 3 42 24 86 34 +52 79 46 58 98 +76 77 78 19 10 +81 61 88 85 54 + +74 70 15 80 72 +77 89 11 19 22 +34 59 56 65 91 +58 6 50 40 16 +93 30 95 26 85 + +47 62 57 6 25 +40 79 22 95 29 +42 11 70 10 92 +60 53 84 96 17 +75 86 74 89 18 + +30 42 4 19 92 +40 58 72 7 70 +17 98 45 76 50 +93 57 65 79 2 +56 94 73 84 62 + +51 0 14 7 53 +63 36 48 81 84 +50 22 11 88 6 +83 99 21 31 91 +86 17 72 42 94 + +83 0 20 26 7 +42 24 37 86 65 +73 82 63 21 27 +30 35 9 47 80 +79 53 3 14 84 + +50 99 83 86 42 +81 36 24 4 76 + 0 71 66 41 57 + 7 54 94 78 97 +12 8 82 45 31 + + 4 91 57 50 37 +22 46 86 24 26 +39 54 48 7 42 + 2 45 95 29 12 +38 25 52 0 72 + +51 94 46 44 62 +95 60 0 48 61 +38 13 85 32 8 +22 56 53 30 80 +43 65 58 68 88 + +49 76 41 43 51 +57 46 45 82 90 +48 33 36 5 23 +81 30 3 61 75 +56 70 29 91 59 + +58 74 50 47 84 + 2 1 62 36 60 +32 16 95 43 27 +79 12 39 56 11 + 9 33 4 25 61 + +23 84 16 51 39 +72 19 53 64 43 + 9 44 10 52 26 +45 68 29 56 74 +62 42 46 95 0 + +16 83 27 85 56 +13 41 49 79 53 +18 63 7 60 3 +45 15 48 69 29 +46 86 35 34 32 + +85 2 96 15 43 +33 30 29 53 98 +21 55 61 73 40 +31 4 66 75 59 +26 32 91 38 80 + +69 81 65 30 77 +82 22 83 0 38 + 2 3 29 47 94 +42 55 9 18 97 +53 45 90 31 44 + +23 86 0 35 84 +27 80 3 64 12 + 1 96 48 93 85 +69 24 61 15 22 +91 72 62 13 76 + +81 51 67 60 16 +65 48 86 39 97 +92 93 49 77 59 +15 94 88 52 19 +80 83 23 61 4 + +47 84 46 79 55 +92 38 65 42 76 + 9 58 26 95 86 +30 49 56 69 59 +94 4 25 89 44 + +73 10 29 0 48 +56 40 19 84 61 +52 31 25 86 21 +79 55 53 51 5 +81 9 35 72 15 + +41 95 30 58 73 +26 80 4 21 96 +61 92 76 93 74 + 2 69 60 8 20 +46 98 70 72 83 + + 1 99 31 4 86 +93 64 8 43 61 +33 36 75 90 50 +52 13 3 42 34 +22 65 60 18 76 + +17 63 6 66 92 +51 67 86 88 18 +82 83 32 74 30 + 5 33 9 28 61 +72 75 25 23 60 + +43 28 40 53 52 +54 12 77 10 83 +21 44 63 0 1 +15 22 33 49 2 +80 41 3 46 55 + + 1 97 75 37 4 +47 33 13 21 40 +27 62 15 90 30 +11 83 63 36 35 + 0 12 60 91 42 + + 0 45 17 88 18 +66 10 63 62 8 +36 5 47 39 67 +21 3 61 29 19 +82 58 33 6 59 + +37 92 69 56 52 +46 66 20 78 13 +83 99 16 31 0 +36 35 2 68 9 +70 82 94 96 29 + +62 65 85 37 3 +74 95 34 96 58 +15 33 49 21 93 +19 83 66 6 25 +81 84 23 0 76 + +95 84 71 92 52 +54 36 66 59 82 + 0 76 32 45 83 +69 27 25 88 38 +81 96 63 4 61 + +73 51 28 48 40 + 3 38 11 14 35 +66 91 86 20 81 +53 39 46 71 1 +97 60 21 93 23 + +92 70 4 60 95 +58 49 20 15 25 +55 68 21 84 80 +56 41 82 23 19 +30 74 65 27 29 + +81 97 68 46 75 +62 73 63 36 41 + 1 5 91 84 37 +45 92 20 49 7 +25 26 3 88 56 + +25 9 94 37 26 +44 58 84 91 38 +39 46 57 98 50 +96 42 73 24 70 +71 32 53 48 13 + +98 72 25 96 77 +80 64 88 53 23 +21 37 45 24 18 +41 86 59 68 5 +76 50 36 26 12 + +77 79 88 74 12 +21 9 85 26 68 +11 62 64 4 5 +47 33 76 63 87 +55 19 2 60 95 + +74 79 30 14 35 +90 52 17 29 63 +18 69 78 34 26 +92 42 85 71 56 +12 2 5 0 98 diff --git a/2021/full/day05.txt b/2021/full/day05.txt new file mode 100644 index 0000000..d6a5213 --- /dev/null +++ b/2021/full/day05.txt @@ -0,0 +1,500 @@ +456,846 -> 221,846 +980,926 -> 73,19 +682,930 -> 562,930 +766,592 -> 274,100 +247,685 -> 247,21 +106,800 -> 635,800 +953,340 -> 135,340 +293,223 -> 293,12 +454,196 -> 454,463 +886,766 -> 164,766 +592,590 -> 192,590 +436,982 -> 436,545 +731,571 -> 420,260 +741,11 -> 466,11 +727,541 -> 579,541 +341,553 -> 25,553 +942,470 -> 942,196 +203,600 -> 203,647 +965,595 -> 949,611 +554,306 -> 554,401 +902,438 -> 902,728 +864,609 -> 525,270 +187,790 -> 187,323 +956,950 -> 427,950 +847,554 -> 422,554 +935,900 -> 701,900 +192,854 -> 866,180 +512,946 -> 543,915 +978,979 -> 491,979 +708,61 -> 708,878 +738,508 -> 282,52 +23,25 -> 841,843 +204,750 -> 204,797 +703,500 -> 703,419 +14,311 -> 694,311 +646,301 -> 785,301 +397,168 -> 439,168 +680,931 -> 561,812 +540,448 -> 90,448 +706,668 -> 91,53 +848,319 -> 318,319 +198,948 -> 198,307 +686,58 -> 686,541 +867,234 -> 867,498 +134,125 -> 134,688 +824,566 -> 53,566 +437,167 -> 276,167 +94,65 -> 638,609 +36,971 -> 971,36 +494,330 -> 494,197 +920,438 -> 920,364 +698,84 -> 49,733 +59,842 -> 59,876 +328,577 -> 328,677 +757,701 -> 134,78 +466,274 -> 135,605 +81,925 -> 988,18 +40,142 -> 882,984 +50,96 -> 882,928 +782,47 -> 782,427 +247,599 -> 24,599 +112,812 -> 191,733 +487,198 -> 144,198 +327,663 -> 327,756 +117,76 -> 688,76 +530,71 -> 530,958 +558,602 -> 671,489 +677,830 -> 677,556 +529,669 -> 349,669 +336,966 -> 341,971 +20,31 -> 851,862 +423,880 -> 423,573 +521,657 -> 552,657 +412,822 -> 18,428 +423,311 -> 423,105 +381,614 -> 705,614 +521,248 -> 394,121 +286,47 -> 286,403 +286,27 -> 711,452 +347,61 -> 489,61 +760,454 -> 760,954 +746,573 -> 911,573 +839,933 -> 839,776 +124,815 -> 290,649 +577,848 -> 419,848 +393,206 -> 410,206 +364,755 -> 881,755 +788,68 -> 788,215 +94,798 -> 192,798 +292,250 -> 453,250 +601,545 -> 293,237 +438,923 -> 438,655 +70,757 -> 887,757 +184,402 -> 818,402 +586,49 -> 103,49 +202,315 -> 735,315 +534,504 -> 534,523 +367,236 -> 367,736 +24,163 -> 24,240 +185,426 -> 634,875 +485,189 -> 39,189 +556,30 -> 374,30 +969,821 -> 676,528 +254,435 -> 254,43 +290,615 -> 741,164 +345,601 -> 120,826 +224,641 -> 887,641 +190,716 -> 581,325 +552,646 -> 552,393 +413,177 -> 413,103 +397,900 -> 360,900 +138,980 -> 138,55 +909,891 -> 909,593 +926,986 -> 79,139 +954,67 -> 53,968 +180,30 -> 595,30 +823,165 -> 823,660 +285,176 -> 375,176 +915,826 -> 184,95 +735,230 -> 667,230 +934,865 -> 917,865 +48,602 -> 737,602 +477,319 -> 385,411 +981,17 -> 11,987 +458,401 -> 24,401 +118,415 -> 849,415 +176,678 -> 176,852 +567,753 -> 567,37 +285,868 -> 830,323 +555,623 -> 822,623 +522,546 -> 674,546 +880,21 -> 23,878 +591,103 -> 591,407 +434,64 -> 434,401 +245,968 -> 275,968 +726,510 -> 450,786 +768,366 -> 768,738 +488,745 -> 488,94 +675,674 -> 675,705 +618,237 -> 265,237 +802,709 -> 802,59 +144,696 -> 144,542 +547,381 -> 547,799 +78,667 -> 78,916 +409,271 -> 302,271 +294,694 -> 938,50 +140,571 -> 97,571 +682,875 -> 682,534 +748,816 -> 748,183 +84,622 -> 84,258 +485,696 -> 582,599 +909,233 -> 954,233 +203,711 -> 203,350 +335,904 -> 455,904 +578,778 -> 578,21 +830,954 -> 902,954 +78,252 -> 78,682 +920,220 -> 684,220 +309,301 -> 104,301 +270,795 -> 270,919 +906,479 -> 304,479 +627,164 -> 627,986 +122,960 -> 915,167 +664,916 -> 770,810 +692,810 -> 826,810 +981,951 -> 192,162 +183,423 -> 809,423 +632,464 -> 567,464 +94,266 -> 94,587 +261,770 -> 569,770 +51,403 -> 466,818 +631,645 -> 187,645 +141,238 -> 141,145 +357,21 -> 173,21 +138,248 -> 839,949 +889,957 -> 807,957 +399,431 -> 105,725 +548,331 -> 548,821 +790,844 -> 43,97 +675,671 -> 221,671 +874,143 -> 620,397 +205,435 -> 205,546 +521,434 -> 822,133 +141,86 -> 257,86 +427,28 -> 290,165 +49,694 -> 567,694 +846,344 -> 266,924 +425,910 -> 433,918 +956,498 -> 485,27 +798,498 -> 798,634 +879,13 -> 766,126 +737,475 -> 737,425 +338,473 -> 425,386 +510,615 -> 214,319 +758,415 -> 758,490 +969,208 -> 239,938 +917,188 -> 917,528 +34,820 -> 806,820 +85,633 -> 857,633 +262,355 -> 262,748 +373,784 -> 971,186 +146,577 -> 60,663 +613,570 -> 613,199 +300,319 -> 300,108 +764,171 -> 764,17 +555,921 -> 555,825 +241,197 -> 770,197 +600,832 -> 600,807 +934,987 -> 20,73 +960,730 -> 837,730 +976,50 -> 46,980 +829,834 -> 153,158 +785,835 -> 785,58 +586,633 -> 689,736 +804,250 -> 348,706 +226,539 -> 16,539 +411,940 -> 98,940 +289,589 -> 893,589 +738,616 -> 738,55 +225,54 -> 542,54 +793,246 -> 303,736 +332,752 -> 984,100 +413,18 -> 839,444 +840,122 -> 840,233 +989,970 -> 215,196 +329,361 -> 573,605 +242,537 -> 242,619 +943,898 -> 943,535 +469,865 -> 501,833 +226,717 -> 196,687 +819,803 -> 712,803 +532,663 -> 532,672 +61,931 -> 940,52 +623,218 -> 274,567 +281,326 -> 281,790 +815,176 -> 679,176 +790,862 -> 942,710 +18,771 -> 18,514 +479,377 -> 309,377 +704,402 -> 704,150 +961,335 -> 492,335 +745,829 -> 745,477 +556,543 -> 771,543 +832,336 -> 917,251 +742,755 -> 742,174 +206,735 -> 493,735 +151,216 -> 312,55 +445,157 -> 615,157 +781,143 -> 781,76 +833,717 -> 514,398 +357,14 -> 357,36 +771,405 -> 771,422 +662,886 -> 169,886 +689,990 -> 22,990 +680,445 -> 379,445 +92,369 -> 502,779 +64,948 -> 64,363 +295,957 -> 976,276 +113,920 -> 634,399 +542,662 -> 305,899 +566,514 -> 566,645 +528,106 -> 549,106 +205,367 -> 821,367 +313,105 -> 313,928 +532,177 -> 532,664 +862,773 -> 905,816 +800,796 -> 911,796 +870,80 -> 11,939 +188,900 -> 154,900 +420,509 -> 520,609 +540,863 -> 28,863 +31,72 -> 78,72 +823,648 -> 503,648 +879,252 -> 606,252 +677,117 -> 677,507 +743,303 -> 196,850 +220,491 -> 220,891 +216,815 -> 577,815 +540,819 -> 745,819 +152,721 -> 382,721 +280,745 -> 985,745 +479,367 -> 358,488 +913,413 -> 649,413 +40,678 -> 817,678 +467,533 -> 467,214 +132,68 -> 843,779 +519,109 -> 669,259 +619,791 -> 221,791 +114,622 -> 628,622 +951,636 -> 866,636 +172,569 -> 775,569 +244,972 -> 173,972 +283,64 -> 739,520 +68,604 -> 68,156 +529,30 -> 529,925 +813,883 -> 137,883 +893,231 -> 629,231 +673,658 -> 673,389 +725,899 -> 218,899 +317,318 -> 105,318 +82,706 -> 100,688 +222,227 -> 440,227 +810,371 -> 810,985 +414,321 -> 289,446 +901,158 -> 260,799 +198,967 -> 717,448 +928,454 -> 875,454 +974,437 -> 974,764 +657,13 -> 760,13 +498,966 -> 976,966 +66,104 -> 66,15 +773,569 -> 980,362 +420,496 -> 403,513 +57,920 -> 85,920 +879,551 -> 879,662 +98,395 -> 98,398 +483,685 -> 483,55 +222,935 -> 586,935 +89,926 -> 807,208 +744,160 -> 744,462 +588,973 -> 588,548 +312,572 -> 38,298 +27,131 -> 552,656 +591,935 -> 591,86 +907,478 -> 907,279 +981,75 -> 981,972 +316,947 -> 935,947 +906,38 -> 906,216 +374,521 -> 345,550 +579,29 -> 579,107 +444,636 -> 444,557 +458,608 -> 830,980 +479,839 -> 155,515 +766,600 -> 766,71 +976,965 -> 31,20 +928,49 -> 269,708 +787,238 -> 787,983 +583,742 -> 112,742 +966,268 -> 554,680 +671,354 -> 671,966 +274,340 -> 274,894 +673,185 -> 607,185 +73,171 -> 874,171 +861,526 -> 861,410 +739,591 -> 739,138 +209,355 -> 209,146 +286,501 -> 887,501 +495,902 -> 700,902 +192,889 -> 821,260 +400,21 -> 154,21 +861,301 -> 325,301 +552,990 -> 511,990 +908,21 -> 11,918 +127,724 -> 821,30 +935,46 -> 170,811 +947,91 -> 374,91 +625,420 -> 265,60 +214,228 -> 546,228 +375,547 -> 715,887 +516,350 -> 870,350 +610,138 -> 665,193 +214,621 -> 678,621 +497,248 -> 600,145 +549,558 -> 576,558 +364,537 -> 364,312 +840,324 -> 310,854 +441,945 -> 441,458 +459,531 -> 459,100 +937,113 -> 150,900 +277,405 -> 259,405 +409,527 -> 409,359 +534,766 -> 534,740 +534,934 -> 681,934 +456,419 -> 83,419 +871,986 -> 873,986 +14,59 -> 916,961 +911,963 -> 971,963 +25,325 -> 139,211 +937,184 -> 354,767 +460,416 -> 289,245 +193,171 -> 861,839 +840,299 -> 840,911 +531,45 -> 531,619 +599,315 -> 455,315 +455,97 -> 455,811 +38,748 -> 392,748 +841,79 -> 841,88 +105,571 -> 105,545 +801,458 -> 344,458 +491,535 -> 558,535 +835,814 -> 223,202 +563,85 -> 405,85 +410,396 -> 600,396 +273,670 -> 818,125 +671,647 -> 817,647 +46,892 -> 678,260 +456,736 -> 110,736 +962,941 -> 619,598 +388,406 -> 53,71 +558,895 -> 227,564 +944,182 -> 807,319 +484,898 -> 59,473 +808,214 -> 488,534 +451,679 -> 155,383 +858,931 -> 381,931 +723,377 -> 723,281 +694,283 -> 182,795 +385,191 -> 320,256 +33,380 -> 584,931 +480,91 -> 817,91 +677,91 -> 677,126 +291,651 -> 760,182 +832,962 -> 153,283 +38,60 -> 479,501 +249,350 -> 789,350 +603,341 -> 266,678 +52,303 -> 52,102 +911,201 -> 559,201 +46,210 -> 46,275 +960,212 -> 554,212 +375,374 -> 169,580 +10,10 -> 989,989 +844,140 -> 40,944 +916,408 -> 916,815 +834,401 -> 834,169 +553,479 -> 784,248 +543,452 -> 543,848 +854,910 -> 334,390 +685,491 -> 793,491 +552,943 -> 709,943 +723,367 -> 124,367 +95,55 -> 881,841 +155,267 -> 573,267 +59,357 -> 84,357 +218,435 -> 218,344 +491,584 -> 491,649 +676,445 -> 676,333 +361,618 -> 783,618 +220,295 -> 220,267 +668,758 -> 299,389 +965,845 -> 674,845 +285,603 -> 47,603 +853,417 -> 853,757 +859,906 -> 856,906 +55,364 -> 753,364 +893,474 -> 978,474 +602,32 -> 58,576 +171,445 -> 96,370 +214,592 -> 214,286 +400,946 -> 745,946 +559,37 -> 112,484 +624,510 -> 90,510 +329,714 -> 329,850 +458,287 -> 657,287 +99,385 -> 99,949 +50,736 -> 719,67 +273,195 -> 273,306 +490,902 -> 490,798 +619,131 -> 921,131 +266,652 -> 266,730 +745,661 -> 745,555 +311,878 -> 311,679 +491,982 -> 643,830 +735,875 -> 816,875 +936,353 -> 936,529 +792,467 -> 565,467 +141,140 -> 141,988 +98,171 -> 414,487 +257,259 -> 257,484 +24,41 -> 969,986 +302,453 -> 223,453 +807,363 -> 492,678 +823,22 -> 835,10 +301,94 -> 399,94 +946,110 -> 248,808 +983,985 -> 21,23 +510,145 -> 510,58 +13,661 -> 13,639 +218,260 -> 218,54 +475,846 -> 475,770 +458,644 -> 458,529 +912,934 -> 912,136 +152,823 -> 550,823 +136,470 -> 443,470 +253,871 -> 905,219 +765,212 -> 793,240 +11,402 -> 11,42 +348,813 -> 348,768 +368,321 -> 823,776 +343,495 -> 343,809 +117,616 -> 117,273 +92,92 -> 732,92 +914,31 -> 28,917 +259,944 -> 214,944 +630,759 -> 462,759 +134,653 -> 134,610 +14,989 -> 988,15 +139,181 -> 139,451 +598,636 -> 598,442 +263,42 -> 686,465 diff --git a/2021/full/day06.txt b/2021/full/day06.txt new file mode 100644 index 0000000..87141dd --- /dev/null +++ b/2021/full/day06.txt @@ -0,0 +1 @@ +3,1,4,2,1,1,1,1,1,1,1,4,1,4,1,2,1,1,2,1,3,4,5,1,1,4,1,3,3,1,1,1,1,3,3,1,3,3,1,5,5,1,1,3,1,1,2,1,1,1,3,1,4,3,2,1,4,3,3,1,1,1,1,5,1,4,1,1,1,4,1,4,4,1,5,1,1,4,5,1,1,2,1,1,1,4,1,2,1,1,1,1,1,1,5,1,3,1,1,4,4,1,1,5,1,2,1,1,1,1,5,1,3,1,1,1,2,2,1,4,1,3,1,4,1,2,1,1,1,1,1,3,2,5,4,4,1,3,2,1,4,1,3,1,1,1,2,1,1,5,1,2,1,1,1,2,1,4,3,1,1,1,4,1,1,1,1,1,2,2,1,1,5,1,1,3,1,2,5,5,1,4,1,1,1,1,1,2,1,1,1,1,4,5,1,1,1,1,1,1,1,1,1,3,4,4,1,1,4,1,3,4,1,5,4,2,5,1,2,1,1,1,1,1,1,4,3,2,1,1,3,2,5,2,5,5,1,3,1,2,1,1,1,1,1,1,1,1,1,3,1,1,1,3,1,4,1,4,2,1,3,4,1,1,1,2,3,1,1,1,4,1,2,5,1,2,1,5,1,1,2,1,2,1,1,1,1,4,3,4,1,5,5,4,1,1,5,2,1,3 diff --git a/2021/full/day07.txt b/2021/full/day07.txt new file mode 100644 index 0000000..9d9d08a --- /dev/null +++ b/2021/full/day07.txt @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,82,1266,26,290,428,9,676,880,16,340,1578,839,23,32,721,88,837,118,543,198,836,870,105,44,214,184,52,330,213,1224,1211,481,1707,409,78,1096,995,420,808,50,65,635,1186,228,5,359,290,1241,757,323,11,447,522,8,170,265,632,321,9,1707,1005,1194,466,137,982,905,373,158,601,247,373,202,432,168,694,785,568,144,576,1006,143,1506,298,1790,146,182,535,895,42,296,278,469,118,292,1375,206,235,1545,63,81,49,1405,660,41,1009,226,133,324,1250,113,10,687,223,78,10,745,21,55,1041,149,519,57,589,123,901,416,200,112,35,6,873,353,539,665,75,207,80,787,322,1026,178,19,630,12,263,1136,71,220,143,688,101,88,1600,16,141,55,64,436,19,889,267,470,884,31,546,846,601,15,84,399,83,1054,4,1417,766,525,162,640,73,2,110,189,494,85,44,263,618,583,263,591,1139,21,1593,187,115,520,142,887,3,12,565,78,88,114,803,157,307,1007,1365,1063,1481,431,410,125,19,1123,3,433,73,273,25,438,314,111,369,1188,526,516,509,1,186,143,1335,689,436,1002,260,791,12,36,380,80,306,173,45,24,856,1892,255,11,12,1221,422,8,1214,327,851,85,375,115,325,213,725,720,669,465,577,1,28,331,123,297,267,1586,478,259,572,204,365,461,618,364,5,630,377,26,259,331,956,164,89,115,1328,823,48,625,922,236,577,1113,251,156,846,261,500,73,1607,281,267,64,2,392,115,682,1833,861,1093,1165,52,1643,59,180,787,298,274,304,381,196,511,352,793,1043,984,30,85,190,109,276,303,251,1601,939,726,5,213,915,235,780,43,1212,1466,353,364,507,129,1109,1307,113,109,342,756,898,1015,63,949,127,887,175,91,409,1069,88,600,101,434,1021,477,1073,22,549,145,712,730,160,7,123,27,566,689,172,1496,543,154,345,442,3,860,47,69,319,487,17,1086,1305,329,788,738,688,421,139,1629,499,824,276,13,1033,885,522,140,328,113,311,297,252,33,168,1059,94,469,1816,2,107,149,652,350,200,173,367,100,229,219,400,43,283,1551,752,278,99,648,190,190,337,44,191,462,454,544,261,142,1204,231,924,209,858,768,211,223,186,1452,687,320,343,444,94,1231,285,324,431,36,309,705,672,69,1082,83,269,515,369,117,951,489,117,249,47,350,1408,93,203,800,1151,526,785,721,240,74,605,501,533,512,337,12,720,787,1521,894,112,187,170,1020,339,77,565,691,1141,129,1020,60,505,1383,178,1262,1302,750,743,1108,43,634,135,738,810,628,1807,938,530,61,1384,42,79,276,336,1434,1286,393,145,9,94,945,113,76,88,856,78,1750,499,994,527,1102,266,1164,796,143,726,480,357,577,910,460,448,379,402,1576,1353,257,1044,651,1206,44,126,353,1099,934,892,379,710,988,1041,367,116,377,546,1222,830,259,10,6,385,856,343,793,490,165,367,1022,1065,95,135,426,184,270,227,456,673,90,1363,1127,387,93,138,202,184,1071,134,15,813,134,200,80,144,128,1502,574,868,487,118,42,48,1135,1107,57,418,1093,1508,229,26,154,652,94,1254,171,502,407,276,1098,18,1000,345,150,123,211,1517,1005,590,1413,63,80,510,502,76,476,47,405,186,143,344,286,1277,934,64,512,12,1026,264,68,1420,10,245,10,352,6,585,567,48,428,816,1525,180,346,350,34,100,42,1354,699,265,445,1719,425,8,604,129,111,71,110,1170,703,36,317,198,104,655,95,1046,327,161,853,400,224,797,1221,794,684,321,1279,1,95,1253,671,203,43,220,55,90,1606,359,52,775,76,422,403,305,614,196,244,102,519,122,451,1610,79,709,336,1374,735,478,1123,658,906,615,688,561,518,39,1084,608,54,739,416,1648,1838,1280,1039,35,552,299,142,56,1217,1356,30,12,102,731,1343,224,452,304,1808,546,583,710,33,149,1126,565,314,745,22,115,263,813,113,52,308,944,981,441,544,129,1258,299,885,717,536,253,3,612,29,130,1099,1455,38,501,578,13,347,729,166,772,230,518,488,430,1093,140,16,120,1603,794,174,1361,1657,825,444,176,815,1353,469,264,191,988,12,104,11,1518,1096,347,606,350,18,1376,430,182,1229,131,111,731,174,111,304,715,35,410,701,78,46,390,291,1008,1779,620,2,1378,199,331,334,708,446,1141,773,159,702,716,13,582,161,259,90,180,607,539,611,312,622,151,522,921,150,522,273,421,842,111,21,159,148 diff --git a/2021/full/day08.txt b/2021/full/day08.txt new file mode 100644 index 0000000..498a4b4 --- /dev/null +++ b/2021/full/day08.txt @@ -0,0 +1,200 @@ +fdeba beagfd gbafe dagb dbf ecfad bd dgcaefb fbecgd abfecg | dgba dfb ecadf bdf +dgfc egdbaf afgcbe eafdbcg bcgad bdg fdbacg gd ecabd bafgc | gd gbd dg febgac +dfebc bceadf ebacf gdceb fd dfea cdgfba afbgec dfb fdaecbg | cgafbde efbagc faed gecdb +dbaef fabgd fcaedb cgadf aefbgd cabefg gfb bceagdf bg ebdg | gdbfae geafdbc bafgdce dbgfa +aebgd adg dg dgcabef facedg cfaebd dfbega begca bfgd dbafe | abdecf eafbd fdgb ebdfgca +bae febac abcgf eabfgd cbagfd gefcba abedfcg efcda eb becg | fcgab gafbed aedcfbg eb +edbcg ba afcdeg gbaedf gcabdf eabf bagde bga deabgcf edfga | aebf ab bdfecag abfe +dbae dgfec egfbd fbgaed feb fcabdg be bfgda facebgd baefcg | bagecf efb eb fbcgad +cdagbef cd bdgcf efcbg adbgf cdga egdabf acbdfg cdf caebfd | fbdga fcd fcd adcg +abceg dbgca acfd ebagfdc dbecfg gdfbea dc dcg abfdcg gfbad | cdg dbcagf acdf gbcdef +bcdag acdgbef ebcdag facd dfgbe cfg bfagdc fc fbcgd bgfaec | fc dafbcg fc cbdgae +ca feacgb cedfgb bgaed gbaec acefdgb bfcge eafgcd acg fbac | ca cag gac becga +gbdcfa afdcb cebd fadce cbgfdea aec cdebfa ce caegfb daegf | aedfbgc eca eca cebd +cb dcb fdbegc bgaed fcba dacgfe efcadb dceaf eacgfbd dbaec | cbd cb bagde dcb +debgf gaecdfb gcbef cbgaf fbecag bce bgfcda ce aefc ebdgca | ebcfgad ec gefcba bec +cdbfega ae cedaf bedgcf ebac efadbg afcedb afe fgadc cdfbe | fabedcg cafbed efa badgcef +aceg bcafgde deacgb fdcgab dacgb eafbcd dgcbe bdfge bce ce | dbfge bdcafg fbdcga ebdfg +efcbda fcgbe efdgc efgdcab cagbe cbf bagf ecagdb bacefg fb | fgab aecgb acfgbe agecfbd +bcgd egafb adgbcf cafged cegadfb gd dgf dbfag dfeacb dcabf | adbcf dg gd dgf +bgeca fgcbe fcgd egfbd bcgdfe fc agbdef ecf dafgecb bdafec | fc febdag cgfd dfcbgae +agb dbfa gbafcde afgcbe edfgb bagde cfdegb gbdefa ba caged | bdfa bafd cfdgeba agb +bdf baefcdg df cafbgd bdcgef bcdeag bcgad cadf gfbad fbeag | ebacfgd facd cdgfbe df +edagc egbcfad bcfdge agbdcf fbdage dcabg bga bgfdc fbca ba | cebgfda gdcfabe gfcdba bag +bgaf af bcdfge ecfagd fgcdb beacd gdecbfa bcafd fac bfdgac | bagcedf fbedgc ebfgdc gbfa +fagbdc fagdeb cebgf cbd ecagdb cade dagcebf dc becdg geabd | gfbadec cdae dbc bcefg +dgfbeac abfge dcefag cga cgbd baced gc adfebc ecbag aedgbc | bfcaged gac gebaf egdafc +cfdbe afge fa gdfbeca agfcbd abedgc fac cafbe ecfgab acgeb | adcfgeb bcadfg ebfac cfa +gebdcf cdbga eag ae dagecbf bgdfe ebgfad gabed dagfec feab | fadgecb fgbced dgcab ega +gf gcbaf gfdc agf eafcb cadebfg cgfabd dbagc agdcbe egfbda | gf beafc fga fcgd +cbed ebgad gadbfe bc bcfgea gebacd gceadfb cgfad cbg abcgd | bacdg afbegdc bgc bcagdfe +fdg dg acgfdbe gafdec cfbdg ebfgc gdeb bdcgef fbegca fbdca | fdg edbg edbg cgfbe +gfcbaed gfceda cadbg gafdb ca adc fbca dfcabg cedbg aegfdb | ca becadfg dcefga ca +agfcbd edcabg cdf cdgfabe debgcf fdgca bfac gdcab cf gedaf | fc cdf cf bcagdef +cdagb bae ea cdfebg febacd egdfb gdacfbe feag aedfbg gdabe | ea gefa agbde afge +dab cgaedb cafbg faced bdfe bd gfdeca dafgbec fcbda cadbef | db edfb bd dcafe +bde cbaed dcbf ecbag fcbdae acgfde dgafebc db fbdgea dacfe | cadbe bcdf afebdg dcgfea +ag fgaecd egcbdaf ebacd gad dagbfe cfga fcegd dcbgfe gaced | dag ag gda gacf +fdaegb dcgefa bfdec geca ge fge cdbafg decbgaf ecdfg cagdf | gdefc cgea dfacgb gedbaf +ecgfab cgbdea dgabf dcfb bd dgcabf fgdeacb dba efagd cfabg | dab adb bfdc fcdbag +dfcae cfegbd ade cdeabg egacdf gcfde da becfadg agfd efcba | ade aed dfga ade +fdgeab adcbgfe edfca cebad gdbace dgcb beafgc bac cb gdeba | bdcea bgdc dagcfeb abc +cabdge fdgae fbgc fedgcb gfebacd dfbeg bf bdf ecgbd adecfb | fb aegfbcd bdf fbacged +dfbgec feacgdb ca adgec cda ecba gdaef degbc abfdgc gdceab | ca dabfegc ca acdeg +abd fbagec gfdbea dagc ad fcdbega bafcdg facbg ecbdf fbcad | edfagb bcedf dba fbdcag +abf ebfdcg fgcdbae faegc bdgacf bfdec bade ceafdb ba eacbf | fab fbdaecg dcabfg ba +ebcgf aedcb gbaecfd gd cgdeb cadfeb edga bdfgca cbgead cdg | adge fgbec cgd dgbcfa +gdcaef dcgbe fbcdage bacge aec ea bfea bcafg aegbcf cfdgab | bfea gfecadb gbafc gedafcb +facg aebfg ecfba bfaecd fbdge badcfeg cfgeba ega cadebg ag | fgca bdgef gafc acgf +dacefg eb bdecf acbfge ecb bfcda decgf cgdebaf cbfgde gbde | bdge ecbfgd feacbgd efdabcg +bd fbd bfcgde egbaf dafgceb cefgda fcbdae dfgeb gcdb cgfde | dfbceag bd fgbdec gdbfec +gbdacf dacebf adgfbe aedfb acgbedf eacf ca dac aedcb bedgc | ca cad fcbdaeg bdagcf +cbd egdba ebfdga efadc gcdfabe bc decbga dbaec gfbecd bcag | cdb egdba acbg acgb +eacb fdeab fgcade cbdaf dea cfebgda ae bdegf cebdaf fgdcab | ae facbdg bdfecga baec +cfd adbce cf bcdafg fcedb cbedfag fdgbe faegdb fceg gdcbef | fegc cf gfdabe adbcgf +gfbdeac efdgac gcfb edbagf cebda cafeb abf cgfeab bf gacfe | abfce cadefgb abf abfce +dcfge fabgec beg abdg gbaedcf gcdbe bg ebcad cfdaeb ebagcd | bgdaec gbe gb gb +aecb daefbg ebdfc aedfcg efbad cdgabfe cfgdb fdbeca ce cfe | fce ce aceb ec +gadebf fg fga acbgfe agbcd deabf bdagf cedbfa dbafceg dfeg | fg afg gaf fg +afed cdbge dag gabfe fagbde gadbcf adebg ad agfecb gedfabc | da geabf fgcbad gad +de gcdeaf agbcedf efacg gdcea efgacb edc fegd adcgb daecbf | edc ecd de dgceaf +becadgf edagfc fcg edbagf cg adfgcb dfega acgfe gecd bfeca | cgf cg gcde cg +cfaed agcedf db dfcbe bcd dbefca dcbgfa gbecf dcaegfb bdea | dagbcef bcd fegcb eabd +fcdagb ca aedfcgb fca gafbd abegfd afbcg fbgce aefcbd acdg | acf adcg efbgc ca +da dcefgba cdgef egcabf baed fagbcd fadbge dag faebg agedf | fcegab abde gad dbgfae +fbdec cdaeb dac dbage egca ecbdgaf debcga ca abdgfe dagcbf | efbcd adgefbc gbefacd ca +bfdecg dbaecg fcd bedaf fc dcbafg cegf fcdeb cbdfage bcdeg | egcf fbade cfd dbafgec +cg cadegb badfce gfdc agfbc cadbf egafb dbecfag cbg dagcbf | bagdcf fgcbda cbg dgcf +acgbf afbged fcadgb dcefg gebcaf ad adcb acdefbg cdgfa daf | dgcefab egbfacd gabefc cdab +dgb ecfbd fbgcd aegdbcf adcfg gfba gbaced acfgde fcabgd bg | dbg gb efdcb dbgcae +febg bcfaed efagdc fba ebafgc aecbgdf fegca bcgad bf acfbg | febgacd bfeg afb fb +adc ebdfacg ad badec efbdcg fade bcgdaf faedbc baecg cbfde | da edgbcf da edfa +afbgd agdcef dc cda bedcag cgaefb fdec cgfae fgadc deabgfc | cd cfage cedf fecd +facbe edcbf ebdgac fa dfgeac gaebc acf cfaegb dcfegba bfag | ebfac gcebad fac fa +cfebdag daecfb bg gecbdf ebagc ecagd gbe abfgec gabf ebfac | gbe afcbe gecdabf gb +bgefdca fecbgd ec bce cedab ecaf bdeafg cgbda dbaef bcfdae | bfecgd cefa fdeabc ce +gedbac cbade edfgbac gabfe cfaeb caf fc dcbf cdfbea cdefga | acf dafcbe cdfb dfabceg +cfgaed cbda abgfde cea abcdfeg adcgbe ac fcbge egdab eagbc | bcda ac ac ac +cbfaged afdgec ed fdea edcfg dce fdgac bfdagc fecbg ebcdga | fcabgd bfegc fcedag gfdabc +gafec afegb bgafed bafd fb egbda edbgac cedgfb ebf bedgfca | cgefbd bef edcgfb fb +cf gfc fecgd cebf dgecbaf faedgb afbgcd dcaeg efbdg dbcefg | fecb edfgcb ebgafd bfadgc +ea gafecd fbgac fcedb defcab fbeca bfdcge baed dabfceg fae | gbefcd ebda beda fae +afdgb acg aefdgc cebgd ac begdfac dacbfg gbcad abgfde cfab | abgdc abcf bacf ca +cdbga acedbg gefcd abdf fac af bfgaec ecfagdb gfdac bcdfag | caf bfad fa caf +edcagf feadg dab adgeb gceab dgfabc fdbe befcadg fagbed bd | dab dgabef dgebcaf bd +bga baedg abdc ab gefdb gadceb gcdae aedgcbf gcebaf cfdega | gab cdab dagcfeb dafebgc +afb eabdgf eafgcb gcdabe ecfa edbgfac fbdgc fa bacfg ceagb | cefa fab baf aebcgfd +da gdbcef facdeg dafbc efdcb adc edba gbcfa acdbef deafcbg | da ad defbgc ad +acbg ecbdg ecbgfda gdabec bg daefbc cefgd dceba dgb afebdg | bg edfcg gb efcgdab +dgbeca befcd gcfaed edgac agefcbd ceadb ba abe gcba daebgf | aeb acbg efgadc becgda +cgbafde ed bdce gde bdaegc eagbfd cgbad eadgc facbgd cgfae | gfdacbe fdegacb de deg +deacfbg afc dfcea cgaed gdbcea cf dcfg fbeacg gdfcae baedf | dbcaefg fdcg acgdebf gdfc +gca fagdbe cedbgaf dgbc gdaec badeg edafc gc abedcg afbgec | gac dgbae gdcb bgdc +cdfeab dbcfa bdg bg fgbc adcgb gdfeab ecgbdfa gdeca cfadgb | bedgacf acbdfg gdb bg +gbfec bgfde gacedb fcgea cb cgeafd bcg aebgcf gdaebcf afbc | cafbge abfc adbgfec bcg +edgf bcgef edcgfb gfcabd fbdcae ef efc acebg gcbdfea fgcdb | fdge fe dabcfg aefdcb +cdbafge agdebc bcg dfbgac cged ebagd degafb bfcea gc caegb | bcg edbga fcgdab debga +ea dagfbe fae fcdgbe gfaecbd decfb dacbfe abec gdafc caedf | defcba ebgdafc ceab gbcafde +dg cefga bfaed fdecgb bdag bdaecfg fgedab edg adfecb efdag | dgab gfcae bedgfc cgfdeab +degcfb bdcfg edgb cdfab bcadgef fgcdea gdf becfg dg egfbca | gd ceabgfd efcbagd bedg +dfbg bcgeda faecdg dab bfaec dbegacf geafd eabfd agbfde db | dab adfegbc db bd +ecfagdb db gadecb dagfb caefgb gbd fbeag facgd bdfe efadgb | bfedagc db dgb cagfd +edbcga fcdgbe ebcdg bcfage fb bfcgd bgf gcdaf bgfcdea fbde | dgcbf fbg gbf fdgcb +efagd eb dafcgb ebfad eabdgcf cbed aecfbd egbcfa feb adcbf | be eb eb bfe +bdge fdabce begfcd gcbdf bd ebfgc fadcg dagecbf dfb bcafge | gfacd dbf bgcaedf dgfca +geacf cfb gbfcde dfbga bc fbadgce fgdcba cabgf fdaegb dacb | dfagcb cafdebg acfbdg fcdgeba +fecdbg gbcaf ebgacfd acgfed gbad gb fbaec afcgd bafdcg fgb | gcbefd egfdbc fgb fgb +fdce ebagf fdcegb fgacbd dcbeg geadbc cf gebcf gabefdc cbf | edfc cfdgab decbg fc +adcfeg cfgad efgcdba fecda fec gabcdf ef bacde bfdceg gefa | ef edafc ef fgcdab +afeb fbegd daefg agdbcfe agdcf ega adbegc dbgafe efcdbg ae | abedcg efbgcd fgcad cdegba +fdegbca gefbda egbf dbagc gfd bgdaf adgfec fg bfead dfceab | fdg abcdegf gadebf decfgba +dbcaef debfgc gfebdca bcaed ad baceg dca deaf edfbc dagcfb | acd dafe fbdecg adef +beadc fc faedc dbafeg gdfea gafc fegcad cgebadf dfgbec fcd | cdf deacgf gefda cf +fdaceg edgacb dbcg cda cd ebfad acbeg gdfbace dbaec bcfeag | deabf bcgd cdgb defgca +fgcebd dgbcae bfcgad ga bga bfcgd gbfda acfg dbafe fbcgead | bedcgf dbfgc gfac acfbgd +cfaebdg dcg gedbfc gefdba egafcd dc cbde bedfg bcgdf cabgf | dbacfeg feadgb dcbgf fbgdae +fagcbd fedbg fcabge ebgad cbfdg cfedgab feb fdce dfcgeb ef | cfde fgedb bdgecf ef +becgdf efcbda cgbd gdcfe gc gaedf efbcd cfg fbegcad gbfcae | fcg cdefbg gafed efadg +da adbcgef dacf eadfcb bfcage eafbc ceabd begfda bdceg bda | da da acbedf bagcfe +agebf adfb fabedg cgafde dga beadfcg cdbeg egbad cfabeg da | dfegba dafgbce egdbc fecbdga +eac fcdabeg gdabc ebadc bcge gfecad deafb bdgfac dgaecb ce | cea ec cegabdf gadcb +gfedbc gcdfb ecdfga df cfegba defb dbcga gdf cgfbead ecgbf | facbged dfg bfed cfbedag +agbde bgdfca deacgb agbef aebcgdf afg fbecg aedbfg afed af | daef fga fga gdefab +gfbac gaecdb baefc fdebgca fgbadc ec adbef efgc fabegc cea | cae eac gfdcbea fceg +ec dagbc cagfbd adbecg bfdge gebcdaf ced gdebc fagced bcea | gdbeca dec agcdb aebc +geab ebgdfa eafbd dafbc efdgb aed ae bgcaefd dcegfb aegdcf | ebga ade ebfdg dgafceb +bdaeg aebcd cgebad dbc cb fecbgd dafce bcgfdea gcab gfdbae | cbga cbag cdb bagc +dfb egfbdc ceabdfg cfbae fgbade fdbec bd gedfc deafgc cbdg | ebfgdca fdgbec caebdgf db +dfcaeg bagcefd fceab ad dae faedb fcabed ebfgd fcabeg adcb | dea ad ebgfd da +afgcd acgebf da agbdfc cad gcdfe dagb dafbec dagbefc abcgf | fgcde beagcfd cebafg da +cabd bce cb cfbdea adbef agcfbe aebcdfg fabdeg dgcfe fbdec | ebc gfcabe egcfd fedab +efcbga cgfbaed bcfga ecgbf egdbc deabfc fdgcba fage fce ef | ecgbdaf gdecabf bdceg febcga +gbcda ad gacfb dba gfacbd fbgdeca aecbfg fdac gfabde bdgce | dab bdgafce bcegd abegdfc +fcaegb baegdf gfaced gedfa dcebg dbgea agedcbf abdf bga ba | bag fabd bgfcea bga +ebafg gdebafc gedacb gcdefb agbdfc cf gebcd gcf cfde cgbfe | fdgaecb dfbcega cfg fc +fce cbaedf cgbaedf ec bfega dcea agbdfc bfdegc dacbf cefab | ce efabg faebcd gdecbaf +dcfbg fd egcdba efcgb bfad cefagd abegdfc gcafdb cabgd fdg | bafd egfbc cdgabf gfebc +abfegc gecdabf cedb bdg dgcbf gaebdf db fgacd ecfgb egcfdb | bdegaf gfaebd gcefb cdbe +bafeg febdac ged bfcedg gd cbafedg edcaf gafdce cagd fadge | fgcdae daebgcf dagc fadeg +cfdegb efdc gcadbe gdbaf ebadgfc fc gdebc dfcgb fgc egcbaf | fc cf cfed cf +aecfgd efgab bdagfc cedf cge agfce afcdg cdeabg dgbaefc ec | gce gce ec cegfadb +eagdbc ga fecbda ecdaf fdgbc abgdcef afdcg fega cag eafgdc | cga ag ag ag +fabedg cedg cbefga dga gacedf gd fdcga afecg bfdac gabfedc | fgeca gdec fdacg gda +begadc gcfeab dgcba defbac gc fbdag agdebcf degc cag abecd | gcde gca cdge cg +fd dcgba gdbfca afedcgb gbadef cagfe fad dfcb acgfd dacgeb | cbgdea fd cfdb afegbdc +fb fceab fdeb bgfaced acdfbe gbcafd cdabe abf agcef baecdg | bf fb gdebac bf +df fdb egcbd gfed bcaegd abcfg ceadbf egcdbf aegfdcb dbgfc | begdac fdb acefbd dgbec +bgedfa dg bdcgeaf cbfad decg efcdga aecgfb aegcf cgdfa gad | egfac dg gedc dga +gadfe cfgead cdgbae cfage de dbceagf ecgafb cfed dea fgbad | ade fecag aefgc fcagbed +dfab gaecbd degfc bcegfa dgebfa edb ebdfg dbceagf gafeb bd | gbaef bafd agcfbe bfcadeg +edcbg dgbfc bdfecag cfegbd eg gebfda dcaeb afcdgb cgef ebg | fceabdg gdfbec beg fdbgc +ba gfbdec gacfd bfcdae caeb egbfacd cbedf edabgf bad cadbf | becfdg aecb bad efgcdb +gba dabgfec ga fbadc dafgcb fdabg dbecaf agfceb cdag bfegd | dfeabc gab gfabd abg +abgdf gcabfd cgabde agedfcb ab cegfda dbfeg afcgd acfb gba | bcfa dgefca dfcagb ba +bdecf dgebfc bgcd fdgae gec cg gbacef bacefd cgedf afbecgd | abegfc egfcd cg gbedafc +gdecbfa cd bfcagd fagec dfcae dcf adgcfe eabfd cdge gcbeaf | cd dfc dcf gcfbae +fdecb adfce bc ecagbd bdc facgedb bfac fbged egdacf fcadbe | daefc efcgda bcd dagcfeb +fgdba fbae bcafedg dfgebc fag cbgad gedacf gdfeb fbdage fa | dbfag fdbeacg bgedaf bfae +dafbg abfed fe eaf degbca fegabc bafdec dcef aedbc afdcegb | fe fe ebfcag dacgefb +adcegb cf dceab caef ebgadfc dcabfe cbdfe fbc degbf gbdfca | cf afce aecgdb cf +cebdfag acfgbd gcbef bcf dfegc bf egacfd bfde gbfdec abceg | dbef cbf cfgde cbf +bgfaedc gcdfb cadbge fdac bgfdac cf eabfgc bfc acdbg fgbed | cafd fbdagc bdgac cf +fgdc fgceab edf feadg beadfc bdgae egdcfba efagc fd cdagef | fed gfdcaeb cgaef fedgca +bfg ecabg cabdgfe fdgc fgbac dafbge gf fcdbag fadcbe fdcab | bdagecf fgbdaec fdcgeab fg +aefdgb agcfe dfeca dgecfa feg deabgfc ge gacfb defabc dceg | efg edfca egf aefcdg +afbeg fagd adgfbe abefcdg bdefca ga gab ecdgab abefd bgfce | fgad fdag dgcbeaf ga +fbgea ebfgdca badegc bac cb gceba eadcgf daegc gcdafb bedc | cgbdefa bc bc dabecgf +cfbega dgba gb fbegd gdeabf bfcadeg egdcf fgb badef fdbaec | gadb facbdge cfgdbae eadbf +gdecaf fabed bdgcae dcgfba ce bdfegca dcaeb gbcda cae ebgc | afdgce dcbegfa egdcfba bgfcad +bcgdfa cda agecfdb cedba cafdeb caefbg abfec edcf debag cd | cda cda dc ecabd +fdbagce abfc cageb cagfe eba gadefc dgcbe adebgf geafbc ab | ab edbagf afbc facb +gcdfa cadeg dcaeb adcegf gfcdba fcabgde ge gfed gea gfeacb | cadgf gae dagfbc gfed +bfegdac gcabf fdg adgfb gefdcb gd abfed gdae dfgbae befacd | dega bfgdec dfg daefbg +acebgd ceg gcabd afcbgde ebcd afbdcg cbgea ec gbfae gdfeac | gce afbeg adcgb abedcgf +degfab fbade ac acdf feacb dgcbea cfbge abc dgfaecb bdecfa | adfc cdaebg ca acb +adegcfb gf acfdbe ecfdb dgceaf dgfbe dgbae feg fcbg dfcbge | gf fg fg gf +fbacde gfacbe eg dcge fdbga beg bedgcf dcbef fcbaedg bgfde | cged edcg bgedf ge +dgafc dfbegc fagbed cfba adfbcg cfg cf dabfg gafcdbe dgaec | dgbface fcgad cfg fadgc +defcga gdfc afc cadebf bceag degaf fc gaedfb dabcgfe eagfc | adfge dgfc edcfab fgcd +dcefb feb gcdeb efdg fcagbe becgad bfcda gabfdec fe ebfdgc | ecbagf ef dfge decbf +fgebac faegb gcebfad fb fecga bgf ecbf abged gcefad fbgacd | fb fbeag fbega bfg +cbdgfae fbe gdfbce egbda abedf cdfea badcge agfb edbafg fb | ebfad afbg edafbg efb +gbdc gb cfdegba bdgae gab gcafbe fadeb ecfgda gbdace cgaed | abg dbgc dcbg gb +db dgefb eafdbgc ecfbg bcegdf bdg fbcd gefad ecfbag adbgce | db cabedgf dbg fgead +ab bcfa bacfed dba befad fadeg bcdaeg abcgdfe bdecfg bcfde | ba debacfg fdcbe abd +baecfg edgba cdgae fced cd egfdca cgd acedfgb dbfgca feagc | adceg dcaeg efdc dc +cdb bgfeda acdeb becfda fedba dfca gbeca dbgecf dc aedcfbg | bdc egabfd cd eadbc +efgcadb dgebf baedf gcedfa bfg gb eacgbf dgefc bdcg cgbfde | dfgbe gb gbdefca dbcg +afebdgc gbfdc gbca defgb cdb bc bcfagd bcdfae edfgca fdacg | cbd cgab dfbgc cb +bgfade cdgabef cfebd ce febad dgafce dce abce cgbdf edcafb | bfeadg gdfbea cabe ce +gefbcd de dgfce gfdaecb gafec bfdcg bdge abdfgc edf dfbcea | ed fcdgab dfe edgb +cgafeb egadbc bagce gedcafb afcbd fgae bfeac fdegbc feb fe | egcba bfe bef bcdaf +bcdea dgbfc gdae dabcg ecdfab gca ag dcebgaf gadecb beafcg | eagd eadg bfgcd gac +gafcb eba acbfeg cagbfd ecaf fcbedag bdcge ea cagbe fdeabg | bea aeb ae eab +cdegfb cdagef bgf dfgcaeb eadgb fegac febga bf bfcaeg cfba | caefdgb gfb fb ebafgcd +bgedfa dfbca ebdgcf fbgcd dfcega cgf gfbcead degfb ecbg gc | gecb cfg cg aegdfb +agebd bcegda aeg fedabc bdgafce acgd fbgde ag caegbf cbdae | agcd egabfc dacg dgca +cbdfe feacd geacfd dbaefg cbgfd aedfbc ceba eb bde egacfdb | bed ceba adbefgc ebd +egd ge afcbedg bfgeda bdgefc gbce bcgdf fdacbg aecfd dcgfe | cefgbd afcbgd ge cebg +bg gacbe cefgad cbgf cbead gba fcedagb ebdafg gcfbae gacfe | gabec cedfgab acgefb dgecabf +afedg edabg fcdg bfcega ebfdca decaf gf gfa acegfbd afedcg | dgcf efacgdb dcgf ebdfcag diff --git a/2021/full/day09.txt b/2021/full/day09.txt new file mode 100644 index 0000000..1b2c943 --- /dev/null +++ b/2021/full/day09.txt @@ -0,0 +1,100 @@ +3498899019878754677899876434987898910234679986778932468999412767899921249978987543456799987899987876 +4597678929765833445943989759976567891465798765869893459997323459999890198767898792347899876999876645 +9986567898654421237891094998765347976587987663656789598986537568998789397646999989499998765899865434 +8763456799543210948942123999654236897799876542345699987987656789987658989534789879987899986789996323 +9852165987654399899653439899954345679899988651234799895698967899896547678965698767996789498896987534 +7541034598765989789864598789865466789998798742398986744569878998765432567896789459875489699954598976 +5432123459879875678975798677976567997897659876567895432979999549898543456789992359876578976543239987 +6543334599989954567896987556988678956798543987678986759898989921987676567893210123987799989876136799 +8654456789999843456789875445999989239987562398989099898787678899898797688954321254599893498964345689 +9875598899988732347898654333878992198765421239699124987685457789759899789875434675679901987895496793 +2986789999876521456987543212668943019843210134568949986545345697545999899986545786789929876789989932 +1987998798765435587896432101457892198767521235679998697632158789434589999987656799999899965396879321 +0299899659876656678987545232345793899899432349789876598794377895323478998798867988989789654245568910 +1298778943987887889998654353476965789976545498990997469876456789212567896569879877875678965123457891 +2979667892398999998998765467987899896989769987991984367989767994346789965456998766434789996534968932 +9867458943489023457899976699798999935799898956789875457999879976557898654356789954321246789649899543 +7654347895678934668901989789559789424589987645698989598989991397968997655246699865310137898659797665 +9765236896789549789542999896445696537679896435787897699678992989899876442123469954323245998798679789 +9896144589899998997659898991234589648998765323676798789567989878789989321012398767454356899897598999 +6941023478999867898798787889945678959899994212545699895429876767679998992534569898768769986996456789 +5432124567989756789898656667896789998789789301234589997698765654598977989645678999899978975987867899 +6553734679876545899997543556789893987674679912547678998987654423987865678959889996945989964598998998 +7696545989997656789987632345899932398543467894758989899876543319876434567896999985436799893239989987 +8987656899998967893098641012799541987656878976769998767987432109965323458945678977321298789549878966 +9399897978999878932159892323678992399787989497878999654597644298764212969434767965410989678959769345 +1298969459986989543246993934568989459898991298989899543459756789872101894325457894329877567897657239 +2987654349895498754347989896679678967999432989796798432349897999989237789212399965698765435689642128 +9899765459679999899499876789894569999998999876655987321234998999994345678924987897987654323899951037 +9765989998567899998989924678943456987897978965434595210123489998765456789434976789999766445999872156 +9834599887456789887978913459652349876566467899323984321235678999876867896559875689999878576789653245 +8945798765387898765459904589101259865454348678919876533546789999998978997997654677895989687999877656 +7896999643228999876246895678912346965321234589323989854689899987799989989876543456964598798934988767 +6989898954019987542134989789924956987540455695456798765789999875689997878987651348976799899127699978 +5876797892123498431013778999875789998432567897978899979897899954578986768998910256899987977934569989 +4345676889234599545124567898976990976545778989899999989956598768678965456789321345698786556899698792 +3257345678945987656234579976999891987657889679789998797643459879789874345895432566987675345998976543 +2101234689656998764346889345789799998768996598699987698764769998999985456976543456989554234767897794 +3212345699987899885456793219897678899889865487589997569879898987999876869899676579975433123456789999 +5333459999898989876567899398923456789999654396467895456989987986789989998798987898754321012345998798 +7569998789799876989688998987934567994598763212356789347597896565678998987677898989865432124456789697 +8698889676689999898799987756895678979999854323767892123456998424799986976545799979879753234578994556 +9987674565578998769899976548789789459889876434789943254569876534999875568925689769998764345699543434 +9876543234467899656998767434678999398768976545678954565879987695789954321014578957889885456989432323 +1987652102345678943239654323489988999544987796789765776989698986898766535123489945679976769978921012 +0199863243458999453198765464599767898432098989899879887993569997909877645234567896798989998767892523 +9239954867567954321099986765678956987643129878901991998921345998912998784345678989987698765452679434 +8998767898689765692987987876789545698754298767899892359210167899439999895567899778996579876321567999 +7899878998799876989875598999899959798767987656789789459321379997698987987678965656889456985432345678 +6895989469902997976753459899999898999879876545345678998932998999987696799889654345678999976569496789 +5694398979899889765442356789398787899996999631234789877899887899876565679998767976789988997998989994 +3789457898798678954321467892197676789975698742649895756798796796543434568999898987899967989987879893 +4567967987656567965435698989986545678954987653458954247986545965432123457998989298989855679875658789 +7689878998943456896546789679876434589543398954567932123965437896543437689986679019876744598654345696 +8789989999732345989687894598764323678932198768799899439876545987859549898775568999865432987643256795 +9991099987621265778998943569843212367893349879898798945987687899998956798654348789886540198732134894 +9989129876540124567979964579976301456789459989989667896798789945987897899886234598765431469543456902 +9878939986521569879769875798765412348996598998976456789899893239896689998765495679986562359876587893 +8769898765432478989654986969876523657899987697654367896934991098765568999886788797987679767989698954 +7659769876546599697923999853987798769998765498765478945795989139954457899997899896598899898999899995 +7649853987658943466899899764799899878909964349876567899979878998732356789998945997439934959789996986 +6534954599767892355998798765679934989219875656987978998968967789540245699999659986321012345698785497 +5429765679878910234597659878794325299924998787898989997956545678954357999898798765432129596987654329 +3212987794989321296789543989943210199895989899959799976844234569765456789789999976573298989898843212 +3101498943495433387997642396794321989789875935345679865432143568976789997657989899954987879789943209 +4212349932398544499896521345689439778678954321236789987545012379899899754349879767899896768678999998 +4363457893987659598789432467896598653578965432447892399653123456792998965598765456789765454579988787 +9456789954598998987679943598987989432345696643456890198764334569891987897899894323898754323459879656 +8769899866789997656567894789998976545456789754567899239895456678999865679999989219989843212398765545 +9997998988999876543456789898789998666567999765679978945976578989987654567979678998765432101987654234 +9886797999498765432326678987678899898678978976789669957897689999876543568964569999986954312398765101 +9765656789319854321014567896566789979989767897893459898998797999998662789543467892199875429459893212 +7654545678998765432123459975445698654393456789912399789019896798987653497651498993246976598999954343 +8943234567929876543275678954323459543212767893201988689323987987798765689320239789345987976789876458 +9895395678912989654586789995445668986543468954329876578939999876549876795432445678967899875345987967 +8796989989101292986797899987856899997854578965934985467898898765432998997544556789878986543234599898 +7679979893212391097898968998967899998765678979899876328246789986521019789678967898999598632123498799 +6598767789324989998929459999998999879876899998798765410135690198745123678989878967965439643245987689 +5432545689939878899102399898789998965987999987659876721248791987656234567899989656896019865459976578 +4321234567899767789293989765698987894299689998743987533367989998754345678999991347992139876798765469 +3210355879999645678989978974987876989103569879651987544569878999876556799778930456789246998999864345 +4323796789878924567977567895986645879212398765510198656789969899987667894569321367894356979987543234 +6435697896567895979865457989995434567923999864323498767899656789798798923498936568965469865698965676 +9876789923456896893974345678976312459899898765434569898998767896679899014567899689876598754349876789 +9987895312345797954985657789875401346789799877555678999439898934599984323678998796998789743210989896 +7899986453456998969876767893986212468998678988669899878924999623459876544567929965349899655439898965 +6432097568967899978987889901297326579765459599778965767895989510569998697678909893234987996598767464 +6593198789898945899899997892398438989899679499989954655689879431458798789789998789399656789679955353 +9989349999769236798789486899459549992998792987699893244588968942345679899899857678988745898798843212 +8878959898954126797678365678998757891369990996548789123467957793459798910998743569976324999987654523 +7967899767893235986543234769999898990156789875437678965678945689598987892987632457895436789998787634 +5456998656994467897652123456893969789245698765323569896789234579987696789765421346789597899869898745 +4349876545989578999653245767892345679367899972103456789892124569876554998653210145699989997654949856 +3234987439878989398769356978901956789878999864212389899943434598765432359986321234899878976543234987 +2136796545967893219898967899899897991989789974363478999854545998654321239875434345998767975432124598 +6545987659878999423987998999776799890195698765455569298765669899766510129876589456789656896594234599 +7659899867999988939876789988645698799234589876566689129879898769854321234987676567899545699989995678 +9998654978989877898765899876434789678945678987679791012989987655987642345698987899998732488979789789 +9876543989876865789996999995321234567896889798789895423497896543499873486789999978987521267965678990 +2995432598765934456789398765452345689997897659892986434986987632198764678999876569876410149894569521 +1986543497654321345891239976563456893198976543901296549765498743459876789101983469865321235789789433 diff --git a/2021/full/day10.txt b/2021/full/day10.txt new file mode 100644 index 0000000..ae1deb5 --- /dev/null +++ b/2021/full/day10.txt @@ -0,0 +1,98 @@ +[[{[<{{<<{<[<{<>[]}([][])>{{<>()}<()>}](({{}<>}[[]<>])<([]<>){[]()}>)>[<{{<>}<[]()>}[{[][]}<{}{}>]><{< +{[<[({([[(<<(([]{}))<[{}()]>>>)]])<([<{[{({}{})[[]()]}[(()[])<{}()]]]{{[[][]]<<>[]>}}}{([([ +{<{<{(({[[([{<<><>>([]())}[{()[]}({}())]}<{{{}}{[]<>}}({<>{}})>){<(([]())([]<>))(<<>[]><[]<>>)>({[[] +{[([<{<([{{(({()<>}({}<>)))(<{<>{}}](<<>[]><()()>))}{[{{[]()}(<>[])}{{[][]}{<>{}}}]}}{[{{{{}[]}<<>()>}}<{([] +[({[{[(<<<[((<{}<>><{}{}>)({[]<>}((){}))){{[{}<>]{{}<>}}})[<[<<>>[<>{}]]{{<>[]}}>]>>[[([<{<><>} +<[{[{[[<{[[{<<[]()>[{}<>]>}]<([{{}}({}{})])>]{<[[<<><>><()[]>]([[]<>]{[]<>})]{(([][]){()[]}) +((<(<(<[(<([(<{}<>>(()()))](<{{}[]}{()[]}>))<<<(<>[]){()()}>([<>{}]{{}})>({{[][]}(()())}(< +{{([(<{<([([[[<><>][()<>]]{(()[])}])]({<[<<>>[()<>]]({()[]}[{}()])>]))>({<<[<{[]()}<<>[]>>{<[] +([<{{((<({<[<({}<>)[[]()]>]([(<>)<(){}>](([][]){{}{}}))>{(({<>[]}<()()>){(()[])})[{{[][]}((){})}[([]<>)({}{}) +<<<{<{<([<[((<()<>]<[]()>)[(<>[])[{}<>]])]><[<[(()())[()()]]{[{}{}][()()]}>]{<<(<>())[<>[]]>>[<(()())<[] +{<[[({<[{[{[({{}<>}<<>{}>){<{}[]><{}{}>}]{{<<>>}<(<>()){()<>}>}}]}{{<[({{}()})([()<>]{[]}) +(((([[(((<(<<(<>())[(){}]>([[][]]{()()})>{<[<>[]][()<>]>(([]{})[<>{}])})[({{()<>}({}())})]>([[[(()<>)][[<>() +[<({([[[<<([<<<>()>>{[<>()](<>{})}]){<[[{}<>]]<{{}<>}([]{})>>}>[<<<{{}()}>>[[([][])<<><>>]({<> +{<(<<{{<<[({{({}<>)[[][]]}(<()[]>[<>])}<{<()>{{}()}}>){{<[(){}][(){}>><{{}<>}[[]{}]>}}]<{<{ +{(<{<[<(<<(<[([][])<[]{}>]><{([]())(<>{})}{<(){}><[][]>}>><({({}[]){<>()}}{<{}>(())})>>{({{(<><>)[{}()]} +[(<{[<<[{((({[{}<>][[]<>]}){(<{}<>>({}<>))<(<><>)[<>]>})<({{<>[]}}}>)}]>([{{<<{{[][]}(<>())}<{{} +<<<[[{[<<{[{<(()[])<[]()>>}[(({}[]))(({}<>){<>})]](([{(){}}[<>]]<[{}{}]<{}<>>>))}>{{[(((()[]){(){}})(<(){}>{ +[{{<<([[[[<<[{(){}}{(){}}]{<{}()>(()())}>{{<{}()>}<[<><>][()()]>)>([{{()<>}<()[]>}[[<><>]{[]<>}]]{[{ +<[[{[{<[(({({[<>{}]}([<>[]]))<<[<><>]([]<>)>([{}()][()()))>}[((<{}>{[]{}}))[[{{}}[<><>]]]])(([{{[]()}<[] +{{{<{([[[<[<{{(){}}({}{})}>[[{()[]}<[]{}>]<<()<>>[()[]]>]}<{[[[]()]<<><>>]({<><>}<[][]>)}{(<[]()><{}<>>)}>> +([<<[(([{{[([{<>{}}])<[(()){<>{}}]>](<{([][])[<>()]}<{{}()}>>)}>{[{{(<()()>[<><>])((<><>){()()})}{([[][]])[[{ +[{((({<([{(<{(<>)[[]()]}({{}<>}<[]<>>)>)}(<<[({}{})]{({}<>)[<>()]}>>[<[[()<>]{<>()}][<[][]><<>{}>]>[<([][])[( +(<[{<[<((<{<[{<>[]}{{}<>}]([[][]]{{}[]})>[<[(){}]{[]()}>({<>}{<><>}}]}>[[(<{()[]}<()[]>>[{{}()}<<>[]> +({{<([{<<<<<{{()}({}())}<[()]{[]{}}>>[([()<>]([][]))<{()<>}>]>>>>}<{[[[<<<<>()>{[]{}}>[({}()){(){}}] +<[{([<<(<(<[(({}()){[][]})[[(){}][[]()]]][<[{}]([][])>]>}>(<{[({[]<>}{(){}})<(<>)({}())>]<[({}<>)<{ +(({[{<({<<[<{{[]<>}[<><>]}{{{}}<()[]>}>]<<<{()()}{{}<>}>([[]()][<>()])>>><[([(<><>)<()[]>] +{([<<[{[(({[{{()<>}({}{})}<[{}[]]<(){}>>]<{<[]<>>}<[()()][()()]>>}<<[[(){}](<><>)]><(<{}[]> +{([<{<([(<(<(<[]{}>{<>()}){{<>{}}}>({<[][]>(<>{})}))<[<[{}{}]<{}{}>>{(<>[])(<>())}][<{{}<>}(()[] +[{[(<(({{(<{(<[][]>){[<>{}]}}{<{(){}}{<><>}>({[]{}}{[]{}})}>)(<[(([]<>))[[[]()]<[]<>>]]<{({}[])<{}<>>}[ +[{<{({((<{[{[<<>{}>[[]]]{<{}()>[<>]}>]}>[{([(<[][]>{[]()}){<(){}>[<>[]]}][[([]<>)<[]{}>]{{{}}[{}]}])([ +{<(<({[{[(({((<>[])<{}{}>)({[]<>>[{}[]])}([{(){}}([])]{<<>[]>[{}()]}))[[<[<><>]<<><>>>{[()()]< +{{{<[<<{(<(([({}<>)<()>]{<()()><[]<>>})(<[()[]]{[]{}}>{{{}{}}(<>())}))({([[]()]{()[]}){{{}<>}[ +(<({{[{<{[<[[{[]()}]([[]()][<>{}])][[[<>]{<>}]<([]{})<{}[]>>]>{[{{<><>}[[][]]}<{[]{}}({}())>](<[[]()]({ +<<[{[<{<[[(<[<(){}>(<>)](<[]<>>[[]()])>{<<{}[]><{}()>>[(()[])(<>{})]})({({{}<>}[<>{}])}{({[][]}<<><>>)})]({<[ +[[([<{{(<({[{([][])(()<>)}]{{{[]<>}[()()]}[({}{})[()[]]]}}>><[[{{[()()]({}())}}({(()[])[[]()]}{ +<<{(<(([{((<([()()]){{[]<>}{{}()}}>)<<<({}<>)[<>{}]><({}[])<[]<>>>>(<[[]]{(){}}>(([][])([])))>)[{[{([]<>)[<>{ +[(<(<<{{[([[[({}{})<()())]({[]}{{}[]})]({[()()]([]{})}{({}[])[[]()]})]<[[{<><>}<[][]>][[[]()]{(){}}]]>){(([<( +[[<[<{<[{({{{{<>{}}<[]()>}<<(){}>>}<{{{}{}}{()<>}}[([]{}){<>{}})>})[[((<<><>>[{}[]])<{()<>}<() +((<(<<[[{{{(<<{}()>[()()]><((){})>)[[[[][]][()[]]][{[]<>}<{}{}>]])((([[]{}]<[]{}>))([{<>{}}(< +{{(({[{[({({<<<>[]><<>[]>>{{()[]}[{}()]}})[{(<{}<>><[]>)(({}[]){{}[]})}<<<[]()><[]{}>><{<><>}<()<>>>>]}) +[(<[{[<({{[{<[<>()]([]{})><{(){})[()[]]>}<(<()()>(()()))(<{}[]>({}[]))>]([([[]()]({}{}))({(){}}([]( +{({(({[<{<[<<{<><>}(<>[])>[<{}{}><[]<>>]><<{<>}>>](<<<()<>>(()<>)>{<{}[]>([]<>)>>)>}<{<{{<< +<([[[(({[{<(({<>[]}<<>[]>){<{}[]>([]()))){<({}<>)<[][]>>{<{}{}>{()[]}}}>{((({}{})[{}[]]))({[<><>]}<<<>{} +[{[[[{<<(({[({[][]}<[]<>>)<{{}()}{{}}>]{({[]}[<>{}]){<[][]>[{}{}]}}})[[([<<>()>(<>[])]<<<> +<({<<[(({[([{[()[]]({}{})}{{()[]}[()[]]}])[([((){}){<><>}]{<()[]>{{}{}}})]][[{<[()()]({}<> +[{<([<({{<<[((<>[])(<><>))((()[])([][]))][(([][])<<>()>)]>[<<{()<>}<{}<>>><<{}<>>{()<>}]><{[()[ +[<{[<([{((({<<[]{}><{}{}>>([{}<>]<<><>>)})[[(<{}<>>([]<>))<<{}()>{{}<>}>]{[<[]<>>][[{}<>]<{}[ +({<{<[<({([<{<()()>{{}[]}}({<>{}})><{[[]<>]<[]()>}<[{}()]{{}[]}>>])}([<<[{[]<>}<<><>>][<[]{ +{[({<[[<<<(<{<{}<>>(()())}[{()}{()<>}]>)[<{{(){}}(()<>)}>{[([]{})(()<>)]{[(){}]{()[]}}}]>{{[<<[]()><()<>>>{ +<[{{({({(<<{[(()<>){[]()}][<[]>(()())]}{<(<><>}{()[]}>}>(<<{{}()}<[][]>>[{()<>}{{}{}}]>)>)}<[(<((<( +[<{[<[{[[[([<(<>{}){{}<>}>(<<>{}>{{}{}})]{({<>[]}<{}()>)<({}<>)<{}{}>>}){<[[[]{}]{{}{}}]<<[]<>>(()[])> +{[{((<(<[(((<({}[]){[]()}>)))]([{<(<<>{}>[[]])<[[][]][(){}]>>[{[{}<>]{[]<>}}{(<>())(())}]}[{<{{}()}<<>[]>>}[[ +[[[{{(<<<<((<((){}){[]<>}><<(){}><()<>>>){[<[][]>({}[])](({}{})<[][]>)})[[{(<>>}([{}()][{}()])]]>>>((<{[ +[[({<[[<([<[((<>{})({}<>))({{}{}}(()[]))]<<((){})<()()>>[<[][]><{}{}>]>>({[<()()>[[][]]]})])> +([<(<{(<<[<{{([]<>)[<>[]]}<<()()>[(){}]>}><([[<>[]]](({}[])))({(()())<(){}>}<[<>>[()()]>)>]>>) +{(({([{[{(<[[((){})(<>{})]<(()())(()[]>>]{([{}]{[][]})}>)<((((()<>)[<><>])<((){})[()()]>)[[<()<>>][<{} +{{([{{<<({{<<<[]()><()[]>}{{()<>}}>[<{()<>}<[]{}>><{{}[]}[{}[]]>]}})({{({[<>{}]<(){}>}(<<>>(()<>)))(< +<[[{<(<{{<[<{({}())}({[][]}{<><>})>{[<<>{}><()[]>]<[<>[]]<<>[]]>}]>(({[{[]()}<[]<>>]{<<>><<>[]>}}))}([[< +([{<[{<({{[((<{}<>>[(){}])({()<>})){{<<>{}>}[<{}()>{()[]}]}]}[{(({()[]}(<><>))[<{}()>(<>[])])<[{()[]}[ +{<[{({<((<({[{[][]}{{}[]}]{[<>()][<>{}]}}((({}())([]()))<([][])[[][]]>)}({[[[][]]({}())]}{({{}}){(<>[]) +{{[{{({(<(<[[[[]{}](<><>)]([[]{}]{<>[]})]>({{{()[]}([])}[{[][]}(<><>)]](({[]}<<>[]>))))>)}({{[{{(([]) +[<[{[{<<({{[{[<>{}]<(){}>}]}<{(({}()){{}<>})(<{}()>{[]<>})}{<[[]{}]>}>}[<[[([][])[[]]]]{{([]())[{}<>]}<({ +([<({{[((<({(([]<>){[]<>))[({}())([]<>)]})[{{{{}<>}{{}[]}}}<<([]{})({}[])>[<()[]>]>]><([[[{}<>]<()>]([<>{} +<[<{[[[<{{[[([[]<>]{(){}))[[{}<>][[][]]]](([<>[]]<<>[]>)[(()<>){()<>}])]}[<<((())(<>{}))<{[]()}<[ +[{[[{[[(<<(<({{}[])[<>()])><[[[]()](<>())]<{[]<>}({}())>>){[<{<>{}}[[]<>]>]}>{{<[<<>()>[()[]] +[(([{(([{<[<[<{}[]>[<><>]]>({[{}{}]{[]{}}})]>}{{[[<[{}{})<()()>>{{<>}{{}[]}}]{{([][])[<>{}]}{ +(((<<<<[(<[<{{()()}<[]{}>}<{[][]}{<>[]}>>[[[()()]{{}{}}]]]({[<()()><[]{}>]{{[]{}}([]())}}<{<()<>>[<>]}<<{} +<([<[[<<[(({(({}())<{}>)<(()[])[{}[]]>})<<({{}}[[]{}])[({}{})((){})]><<{{}()}{[][]}>>>)]>[[( +<<<{(<{{(([{<{()[]}><<[]{}>{{}[]}>}{(<[][]>[[]<>])[{()<>}]}](<[[<><>][<>[]]]([()[]]<{}()>)>))<( +{[[([<<[[(<((<()()>(<><>))[[{}()]<()<>>]){[((){}){[]{}}][[{}[]]]}>([<((){}){(){}}>[([]{}){()[]}]]))]<[<<{<<>< +([{[{([<{{{[<(()[])({}())>{[<>{}]{{}<>}}]{(([]<>){<>}){[()<>]<()[]>}}}(<<[{}<>](()[])>{[[]()] +[<((<<<[{[((([<>{}]){[(){}]})<<{<>{}}({}[])>[[[]{}]<()[]>]>){<(<<>()>(<>[]))[(()[]){[]<>}]> +<(([({[[[[<<[[[]()]]<<()[]>>>>{{<[()[]]{{}{}}>{<[]()>{()[]}}}<[({}<>)[()<>]]>}]([([[()()]<<>{}>])<{<{ +<{([([((<{{[([()[]]{{}()})][(<<><>>){{{}[]}[[]<>]}]}}>[((<(<<>>[[]<>])[(()[]){()<>]]><<{{} +{<[[({{<<[<<<{()[]}<<>{}>>([[]<>]((){}))>[{[<>()]{{}<>}}[({}())]]>{[{{[]()}({}())>]({{(){}}<()<>>}{<(){}>{ +{(<[{[{{[<(<({(){}}<[]()>)(<<>[]>{<>{}})>)>]({[{[({}()){<><>}]<[[]<>]{<>{}}>}(<<{}{}>([]<>)>(({}{}){( +((<((((<<({[{{{}[]}(()())}{<()()>}]<[[<>[]][(){}]][{()[]}]>}(([<[][]>][<[]()>({}[])])[<<[]()>[{}<> +[[{<[(<{{<{<[{<>()}[[]]]({{}<>})>{{{()[]}<{}<>>}}}<({{()[]}}[[<>()](()[])])<[([]<>)[{}<>]][([][] +<{{[{[{(<<({{{{}[]}{[]<>}}<[[]{}]{{}[]}>}[({{}{}}<[]()>){[[]<>]}])((<{()()}[[]{}]>({()<>}< +({{{<({{<<[<[{()<>}[[]<>]]<[{}{}][<>[]]>>({[{}()]<<>>}[(<><>)({}())])][([{<>()}{<>{}}]{(<>()){()[] +[((<({(<<({[<(<>{})<[]<>>>[([])[(){}]]][{{()<>}(<><>)]<[{}{}][{}<>]>]}{<{(<><>)[{}[]]}(([])[[]{ +(([{<[<{<<{{({()[]}{<>{}})[[[]<>]<[][]>]}<{<()<>>[()()]}{<<>><()<>>}>}>>[<[[<[{}<>]{[]{}}><(< +(<<<[<<<(([{{<()<>>[<>[]]}{<()[]>([][])}}])(([{{{}{}}[<>()]}({<>()}{[]{}})]<[<<>[]>]{({}<>){[]<>} +{<<[<([[({({{<{}[]>([]{})}[<()<>>[(){}]]}{[(()<>)]{<()[]>({}[])}}){<([{}[]]({}<>))(({}{})(()<>))><([(){}]<{} +{{[[<(<({<([[{[]{}}(()[])]<(<>[])>])({[[{}[]]({}<>)]})>[(<<[{}{}]<[]<>>>>{{{[]<>}[{}()]}({<><>}<<>()])}){([< +{[[{{<(({(([[<()>{()<>}]([[]()]([][]))]<<({}[]){[][]}>([<><>]{()()})>)((<[<><>]{[]<>}>[[[][])[[]<>] +[[<<{[[{([<{({[]()}({}())){{{}<>}<()()>}}([{{}()}<{}()>][{<>}[()<>]])><{{{{}[]}(<><>)}{[[]<>]<[]<>>}}>])} +({(({(<({[{((<{}><{}>){<{}()>[{}[]]})}]{[<({<><>}({}()))>{{({}<>)(()<>)}{<{}{}>{<>[]}}}]}}({[{([[]{}])[<() +({[{<<[<<[{{{{[][]}[()[]]}<<{}()>{{}()}>}{({<><>}([]))[<{}<>>(<>{})]}}{[([<>{}][()<>])([()[]])]}]<{[(<<><> +{<{<(({[[{(({{()<>}[[]<>]}[[()<>][()()]])(<((){})[<><>]>{[[]<>][()<>}}))}<[<{{{}}[{}[]]}<( +{{<[[(<[{<<((<{}<>>{(){}}))((<[]<>><{}{}>)({<>()}<()<>>))>>({[{(()[])<{}<>}}(<()()>)][<[<>{}]{<> +<[<{((([<(<<((<>())<<>()>)>(<{<>()}{[]<>]>)>)[[{{{()[]}(()())}{({}())({}<>)}}](<[{()()}<()()>]((()){<>[]})><[ +(<([{[[[[[(<(<<>{}>)<{{}{}}>>(<<[]()><[]()>>(<(){}]{()()})))]]]({(<{(<()>([]{}))[{()<>}{[][]}]}([< +(([({{{<(<{[<[<>[]](<>())>(<{}{}>)]<(([]<>>(()[]))(<()()>(<>{}))>}>({{[{[][]}][{[]<>}([]{})]}(<(() +({({<{[{{([(<(()())><{[]{}}(<>())>)(<[()()]{()()}>[[[]()](<><>)])]{<<[[]<>](<>())>(({}{})<<><>>)> +((([[{[<[{(<[{<><>}{{}<>})>{<[<>{}](<>)>[<[][]><[]{}>]}){[{{()[]}<<><>>}<(<><>)({}{})>]{<{( +[[<({([{{[<{<(()())<[]<>>>{[[]{}]}}(<[{}<>]<<>()>><(()<>)[()()]>)>>{<{<[[]<>]{[]()}>{<[]<>>{[ +(({[[(([[<{([[{}<>]{()()}][[{}[]]{[]{}}]){[[()[]]<[][]>][<{}{}><{}{}>]}}[{[({}())[[]<>]]}{[({})<<>>]<{<>[]} diff --git a/2021/full/day11.txt b/2021/full/day11.txt new file mode 100644 index 0000000..146ee78 --- /dev/null +++ b/2021/full/day11.txt @@ -0,0 +1,10 @@ +6111821767 +1763611615 +3512683131 +8582771473 +8214813874 +2325823217 +2222482823 +5471356782 +3738671287 +8675226574 diff --git a/2021/full/day12.txt b/2021/full/day12.txt new file mode 100644 index 0000000..4a1ba87 --- /dev/null +++ b/2021/full/day12.txt @@ -0,0 +1,22 @@ +FK-gc +gc-start +gc-dw +sp-FN +dw-end +FK-start +dw-gn +AN-gn +yh-gn +yh-start +sp-AN +ik-dw +FK-dw +end-sp +yh-FK +gc-gn +AN-end +dw-AN +gn-sp +gn-FK +sp-FK +yh-gc diff --git a/2021/full/day13.txt b/2021/full/day13.txt new file mode 100644 index 0000000..12f173c --- /dev/null +++ b/2021/full/day13.txt @@ -0,0 +1,807 @@ +1094,19 +751,827 +323,890 +969,603 +301,10 +291,483 +1173,92 +1034,570 +460,732 +1222,191 +986,756 +430,480 +1057,129 +659,687 +514,803 +669,603 +234,133 +421,857 +343,725 +987,568 +232,735 +708,165 +421,737 +776,389 +1307,655 +1006,91 +259,350 +907,198 +651,80 +23,752 +629,519 +492,858 +905,110 +750,716 +184,821 +1103,171 +1307,351 +559,645 +85,485 +6,759 +459,91 +227,110 +977,835 +363,163 +437,12 +447,171 +552,417 +1094,215 +822,28 +1019,843 +621,100 +430,184 +385,571 +671,745 +1046,802 +16,175 +659,782 +907,288 +1083,784 +232,376 +269,228 +1068,82 +556,572 +870,403 +321,59 +987,288 +1007,702 +1062,705 +661,619 +1293,845 +257,77 +33,794 +684,299 +356,634 +18,592 +949,166 +1128,893 +1078,70 +490,624 +57,123 +202,133 +649,499 +22,355 +990,849 +701,842 +1077,381 +649,619 +758,480 +997,47 +363,178 +972,754 +370,201 +171,224 +328,512 +298,428 +8,515 +1041,584 +313,159 +303,779 +800,1 +1288,539 +273,588 +498,135 +796,803 +889,157 +884,546 +698,123 +1058,213 +1299,717 +648,583 +691,275 +425,466 +815,606 +144,1 +1216,600 +858,581 +1019,483 +950,5 +659,344 +888,742 +8,360 +1303,502 +380,10 +1121,731 +25,835 +291,850 +1052,126 +326,64 +669,791 +1091,709 +825,100 +627,255 +1108,514 +1062,581 +671,149 +273,59 +258,126 +291,716 +1242,574 +908,255 +70,441 +1253,571 +626,695 +703,835 +982,74 +460,221 +1108,380 +976,311 +546,236 +406,761 +1190,389 +651,687 +1190,133 +224,81 +975,616 +969,403 +1017,166 +351,219 +730,255 +412,812 +1237,801 +169,420 +1077,749 +1173,163 +303,491 +351,80 +484,759 +219,633 +652,285 +914,248 +1253,123 +16,623 +889,737 +107,204 +818,624 +728,235 +681,375 +1161,847 +233,749 +597,571 +85,37 +380,523 +276,162 +913,378 +639,337 +271,876 +1295,725 +291,411 +1222,703 +517,7 +396,752 +989,507 +333,835 +150,268 +708,298 +729,353 +303,627 +708,10 +658,138 +959,142 +780,761 +1303,54 +131,635 +179,333 +1186,380 +889,705 +1305,80 +547,409 +577,848 +94,406 +636,337 +969,495 +674,302 +455,843 +582,393 +619,275 +1275,611 +938,121 +938,773 +233,145 +313,291 +552,238 +28,199 +671,109 +746,870 +1053,77 +966,847 +612,123 +1071,390 +293,113 +1298,44 +233,189 +1031,278 +78,873 +276,732 +190,572 +1232,425 +1146,624 +490,176 +228,796 +1091,359 +487,8 +754,572 +1267,470 +679,192 +7,278 +1120,572 +1200,439 +629,234 +298,634 +315,493 +1178,513 +1019,402 +159,606 +6,79 +460,834 +897,894 +997,495 +55,87 +492,624 +880,529 +641,739 +31,707 +673,397 +800,753 +1245,297 +463,205 +1012,242 +631,432 +1275,731 +77,590 +157,786 +855,626 +826,759 +855,519 +492,270 +1200,455 +1154,31 +1268,469 +947,178 +564,870 +748,21 +199,71 +771,284 +1158,92 +50,194 +455,499 +672,623 +484,31 +218,695 +581,541 +251,59 +952,834 +1258,884 +885,428 +351,715 +1181,501 +455,338 +192,800 +497,100 +400,758 +1061,494 +1260,588 +1198,571 +986,285 +947,316 +1007,779 +426,572 +1151,606 +725,301 +144,753 +323,550 +663,54 +258,768 +324,609 +793,92 +870,732 +189,491 +586,198 +236,254 +1168,521 +708,212 +8,86 +676,32 +1292,592 +102,208 +1156,645 +137,851 +403,288 +137,802 +3,799 +683,255 +50,28 +232,824 +647,54 +669,644 +1082,796 +602,212 +1275,578 +846,572 +517,92 +199,556 +137,887 +117,362 +170,535 +323,127 +363,642 +826,863 +398,201 +1200,389 +813,49 +440,43 +800,893 +1238,235 +855,44 +909,801 +647,840 +641,644 +504,268 +607,835 +1275,316 +126,462 +383,652 +1004,696 +647,168 +28,746 +321,835 +251,835 +972,140 +987,550 +120,581 +623,259 +1160,122 +1290,696 +1026,201 +857,712 +488,28 +488,789 +922,822 +175,605 +484,135 +78,425 +512,221 +241,894 +422,152 +932,794 +584,474 +1277,794 +1009,522 +117,138 +227,784 +534,389 +1275,163 +1150,77 +741,448 +1091,466 +1178,289 +253,801 +681,234 +1238,841 +174,719 +1300,425 +661,275 +232,294 +884,348 +1275,44 +331,442 +619,163 +542,284 +189,403 +258,63 +326,830 +1176,298 +1263,840 +1260,28 +28,148 +930,10 +654,288 +256,411 +363,578 +109,56 +1297,644 +363,716 +65,752 +910,136 +1082,348 +464,572 +440,267 +967,725 +182,1 +199,395 +1004,449 +982,512 +1011,31 +962,248 +1019,716 +35,44 +497,794 +94,152 +253,577 +542,323 +281,836 +452,581 +1215,439 +319,278 +1118,800 +557,204 +564,864 +576,530 +1116,221 +239,390 +1215,455 +313,495 +1288,355 +564,248 +1263,507 +338,754 +768,571 +651,799 +1307,799 +125,182 +662,45 +644,364 +226,130 +1009,372 +197,112 +154,645 +88,703 +401,838 +505,663 +1019,411 +684,148 +806,122 +785,393 +438,837 +914,768 +1218,40 +465,611 +78,537 +363,130 +750,178 +1258,212 +1304,583 +264,473 +1176,596 +888,70 +1019,178 +1153,786 +577,366 +917,466 +1004,445 +1153,794 +254,192 +170,359 +888,152 +950,889 +1241,369 +870,715 +318,85 +855,395 +768,324 +720,572 +858,761 +248,581 +733,366 +930,371 +5,338 +341,119 +796,91 +264,802 +315,45 +954,260 +234,761 +348,646 +997,26 +688,889 +418,198 +691,619 +713,310 +1078,600 +504,570 +95,455 +125,712 +1068,530 +1113,336 +149,159 +94,600 +1014,386 +880,365 +947,700 +78,672 +405,110 +137,731 +577,304 +733,528 +962,646 +1057,765 +397,378 +959,640 +813,548 +554,354 +858,514 +1215,827 +669,103 +1009,884 +258,831 +52,212 +465,663 +233,516 +72,659 +992,361 +1175,689 +1232,537 +159,288 +50,588 +338,140 +725,605 +495,606 +788,157 +5,556 +301,884 +259,823 +363,194 +858,313 +306,445 +291,642 +1063,341 +858,133 +430,414 +952,60 +445,586 +585,605 +1019,611 +909,56 +662,583 +120,133 +651,95 +74,885 +35,731 +905,46 +1016,5 +248,189 +850,732 +915,350 +649,570 +544,10 +157,868 +1185,182 +1057,577 +388,822 +224,32 +393,466 +658,285 +321,387 +50,476 +706,570 +460,225 +1242,198 +636,302 +1081,128 +421,378 +905,784 +535,694 +582,640 +602,596 +189,439 +372,121 +266,865 +499,549 +47,840 +1140,863 +94,534 +797,399 +1307,80 +167,575 +542,324 +413,894 +1007,403 +969,851 +982,522 +331,452 +698,581 +323,568 +413,521 +318,361 +170,493 +396,696 +750,86 +602,165 +651,782 +338,469 +1304,759 +666,364 +170,759 +1153,845 +170,863 +1238,53 +884,572 +940,201 +661,324 +641,103 +1295,128 +855,338 +1220,248 +199,268 +303,563 +1121,491 +1069,894 +504,122 +741,409 +435,359 +889,378 +552,865 +542,603 +865,586 +402,639 +460,673 +1253,758 +1268,771 +947,163 +1044,29 +1078,626 +820,176 +330,285 +663,278 +709,835 +975,726 +72,841 +109,838 +1153,868 +1303,392 +995,493 +980,609 +1295,169 +912,5 +626,746 +398,693 +1153,627 +847,689 +959,219 +1007,627 +383,18 +7,616 +157,794 +1237,93 +1279,187 +982,382 +1007,675 +135,689 +1101,756 +262,572 +662,849 +455,395 +547,485 +363,252 +547,466 +641,791 +294,5 +908,191 +432,523 +107,485 +95,7 +464,322 +1146,36 +875,466 +1131,333 +440,162 +642,716 +306,198 +284,469 +969,291 +724,544 +232,268 +1128,1 +483,670 +422,600 +68,198 +1282,199 +120,761 +112,571 +258,696 +805,159 +741,37 +1307,528 +698,805 +1074,472 +1111,395 +1227,117 +663,168 +31,187 +406,581 +995,849 +639,745 +1084,764 +12,850 +1253,584 +1297,287 +328,74 +42,805 +979,792 +878,523 +734,805 +947,252 +703,333 +1297,159 +723,96 +560,178 +1279,707 +13,71 +124,380 +1166,753 +813,267 +403,507 +651,344 +1307,560 +95,887 +370,649 +530,828 +1077,378 +838,109 +162,596 +197,838 +334,364 +818,270 +510,305 +729,541 +845,611 +671,337 +783,71 +323,351 +1193,362 +1258,682 +351,752 +490,718 +261,466 +875,709 +89,166 +457,56 +69,525 +372,773 +363,499 +430,870 +589,590 +889,513 +914,70 +1092,695 +576,364 +1028,121 +1198,851 +522,605 +1143,575 +1111,402 +426,546 +1295,149 + +fold along x=655 +fold along y=447 +fold along x=327 +fold along y=223 +fold along x=163 +fold along y=111 +fold along x=81 +fold along y=55 +fold along x=40 +fold along y=27 +fold along y=13 +fold along y=6 diff --git a/2021/full/day14.txt b/2021/full/day14.txt new file mode 100644 index 0000000..e84aae5 --- /dev/null +++ b/2021/full/day14.txt @@ -0,0 +1,102 @@ +SNPVPFCPPKSBNSPSPSOF + +CF -> N +NK -> B +SF -> B +HV -> P +FN -> S +VV -> F +FO -> F +VN -> V +PV -> P +FF -> P +ON -> S +PB -> S +PK -> P +OO -> P +SP -> F +VF -> H +OV -> C +BN -> P +OH -> H +NC -> F +BH -> N +CS -> C +BC -> N +OF -> N +SN -> B +FP -> F +FV -> K +HP -> H +VB -> P +FH -> F +HF -> P +BB -> O +HH -> S +PC -> O +PP -> B +VS -> B +HC -> H +NS -> N +KF -> S +BO -> V +NP -> S +NF -> K +BS -> O +KK -> O +VC -> V +KP -> K +CK -> P +HN -> F +KN -> H +KH -> N +SB -> S +NO -> K +HK -> H +BF -> V +SV -> B +CV -> P +CO -> P +FC -> O +CP -> H +CC -> N +CN -> P +SK -> V +SS -> V +VH -> B +OS -> N +FB -> H +NB -> N +SC -> K +NV -> H +HO -> S +SO -> P +PH -> C +VO -> O +OB -> O +FK -> S +PN -> P +VK -> O +NH -> N +OC -> B +BP -> O +PF -> F +KB -> K +KV -> B +PO -> N +NN -> K +CH -> O +KC -> P +OP -> V +VP -> F +OK -> P +FS -> K +CB -> S +HB -> N +KS -> O +BK -> C +BV -> O +SH -> H +PS -> N +HS -> K +KO -> N diff --git a/2021/full/day15.txt b/2021/full/day15.txt new file mode 100644 index 0000000..19b5c2c --- /dev/null +++ b/2021/full/day15.txt @@ -0,0 +1,100 @@ +8278572114793756191833561127452853426929615899116958969481427593944191389121411192127899512211639555 +2495171585122426519281919685613271991924121543192937558138395964783255375528718245475125436917188379 +7961821999883965642974131223415952226122149135757469151378271261942142914126999286296912626324385126 +6441179418166119485338911954311735412134219517651998824469721124695113922376591228278111534398748579 +8424516666869191815919915114592841194492325941357613456911196292486835511835219129622871119578589971 +4934282611638317524366865197791637785138383929285174289723984228151951111983211626913556611911829937 +1151621499331229211126371681389432146113111191182949449598792179919361176214191999459113112713976728 +3543168652917496122811711414994886233243178481181718739884152128165181497816913243592225189281913243 +8119874956918529299886117198419866996469979678721168111546811425162192142928429419213182343144695232 +3715358458184981829314869115929193353913729251938123314814899961596542283596814884718213256699682795 +1457749119784391733139584826119658874912622938352136991922153247283117211453981321869218151772119241 +7179176958892653731299198523131231844957919593248775178121191579258731497841241367137171199591213113 +4471161421339111933369587973937292894188371915184619223639743975336137681191429298916799146143115252 +1931215141473344532681163495387852753769911119111496117891655513181516411521451328225794431126335749 +9151689756849234387443425922933377332991858479147517224818914914425732127251965496121942295591183172 +2566113547914162641599298843229739383828642848144944852282893912779288715932788642899891297329297335 +9922876696896994217561793182369411198699179871259954463871913115184734221799911711326923219223276139 +2411339863315612919718312194943949341228281651784525919132828782375965326712781781442989945125592185 +1418841118819719419136342692253322911243214985154999627192389816921612619549481134921215629682111939 +2991112471164498237119512836126148891288395561377883392312743919942937825816841441118322241659389277 +2369155536658248242446196714214179784918844181199991939119268159197418739116392138931189992188846971 +3139737615566929828592321519611921732953991396521141165811881293391199737587536111331331196419156798 +2473192981948227987111687486532119994897341114574629339124219164536824734799478832613111816588191148 +4311152779495176926527172116979937356891171332243361912427574933999759591533258454228319797436295139 +4296794597642297911762612592247759519869443198118291875988399937961162212147523611425284112262745711 +2919426121311135263324939726832931137973611199921321523791621141513222863567654962618137111392894422 +4634915181699181572153395211661987562131211481129117478131424114241178921227517288679722328986823922 +6297719121113669981592326191394834414485988819761166812197429119921315747318111218181992586126993919 +3318614241139113159116719411236593772715946293531825213649325427717633162144974482959899826716597521 +2383419157242919637211129811118515633215692397315115195991989124876193315459918971973489494911283217 +9521529194981517981232979669792487442129597979226311938488195924436928541121214639119337935199991117 +2192189971299175771117868563478533237938994962133199366951122734186711527399931794763686991514814662 +7881913138114955461135924149222738381179396843291244767312291267247642317671911986256995961422161959 +3843362141443222644212379314232847247972118224544224919819451911833619826719779527571929718196858145 +8385162537318633361137193897832962297676464912264123117394391829196261318841959998837814919924922953 +8221212119334729141984389191114483517898927112545166192711293823912553322553197819157776647516939141 +3255619572231874771181619628278542957284278985715127319521445711213483781683791875823115112171161593 +5128122983945275882694953934111585511282939925866973662677121821923965945796285431719542616138158188 +1114714187852179791925944829277928365391625896371297229279856697273911118484711381511757931867215649 +2136995112393969411115117811392578597296824186351393148827913317214177929268227343313353893923511632 +4425479887766493391898627186142951193972698451215519114983911227179622146954172418992341826112167866 +5111387196811253395631314459132217416234828743931596134128141969141158686811353152121616931964797891 +1281981853884141491129192211466222912384397781318376518318151569516738296599922374687193924811575151 +4214168945722211551589814173167426111979895615335479353741989719899321828311892898131998119379778971 +1698126514489399112929175994131914431611342772121934925432344544423913839915832992371361426254688971 +2611741223511697957256712677157994471229119912479116238329218159118319417112711251115741432298991675 +1986199322419269948123997119141417276181122386587573999448625998979137444139118661231916299216237816 +1192692299325547983953157273594191687111773574111831139919179117182211537317191492612996482125719135 +2618137369191556773571949529451551811187939855121392262981116194316131959155491562182411351259963197 +8291227832771244631183289512115145431921179351599239991889721749519277227819196284578312711114771933 +8981962179738463579242192181563523744938932338629418123118165383629833214199619655973411258287294111 +8619915743617939513929219214969281929991561391431128913883571199794329274227297771481964191959319854 +9661921896148816274329413191213247721642973365721833219284864558144513363393813619978321483549692113 +1221822379347999136211136218671719191161287539743533389111571921729981996951171917511894919222458338 +9179814439128882333169175926635746971123349598164185736129161426323644543783696391977888446282158193 +8919941115162197814112689589249939913122148387958484396667721419199788161191494147954329319451368227 +1283383939189511883998654629172448151128762184636314937172618589313123848776939135383681811654471522 +4715619189119739192634991921998844714396939583519299492337911136398474149811151145461933134874142828 +1117481573895941939424518349392997473449671461935946881181312652591682539197685834621162263218683198 +9394562899911652727388398568123241827141738357143277722124594366392682466191119988911992663238764771 +2585966996818144122959341112693718175511912678919195958899282312779823311945811917412189169191914619 +1848495443417266121112634424271555676396443373324838214497832614396187418192188918146284171173421749 +6219895897831829379714113972317818929697612535358251896324917772691898279896669612539591147152489338 +6115612912112113324242167994435148645911867787136267211781213917111546157212149287331129992317887151 +6118169128927892484311512131621967642919324341529263891337911411129492162612776899121931248882139644 +6884838296782692281158822326814131725184916187194546991912899824434812718735631819653791998193841264 +3485227759142991956221813281664289335731621123188291134995562639531863888211751951122552236997334852 +4845141111241192161537876516198782167269132581522211179712915387257181133491267199451122265499922659 +2477848488634968257491171291519224412581996417371411931394372219338545611181523931293424196381115936 +8911319712238921239948883419991938254319821221163746121194349641739831829966821897752722981537562291 +8292478573168677999812391286993666192914511399319138945554999392894819423181966166488181891969131749 +3264173311179517375193219491832914392218389931492941426132248467586919997529138838826141892437977563 +8319936993882457327125991956278814829118421321922375769776436683211313756211534968729618521882226127 +8638599994131461557113578449423472638334111745934214239234929925229712127897989732923483271191411596 +1523419968194149815212174333853151919128599116116518413315158689181119643842371922352598214112729111 +1224189161195993439421611631912867163999222335519879636723284419496865292871251261634369981276431216 +7917832715864343179944317954494748181747449119129421199134193985168143693142131121189224214116129789 +1995274614784214559849841188151381892312137231555881234712143592531781694159197143298119349576313288 +6872676869621987263257677493158696216232141889137144892149212252643429691459127525396618722228211355 +9529131312198127195146611139957169375945817199886385734424125668955254391749172287495221433939346271 +1317597221324639268821956316831718923818731193924341148895319223528139911981118618392281299815415484 +6311491136929625422264122934959537441311729119921619133219127391911591173775188988221145475286479247 +2214669476122959718451929746211392861541917917111355149672919182998486751591424875262899741911991966 +5487717296119894141568198141794929233554118134815419581752348188169498421912911863811199812577419228 +3287347189899116764139996172211718221461156348196278882293319458126326275182618429176619478622567138 +1217339827453222194178294713351137215119153323897976211844191311588753942221192915127591664618634566 +8391229721621914838897761141891492975212126113876523932971411182631292177219192741129962223763588181 +9281395981783715414967594956432849942278193925471491289523616222495169785232911414516328962999974978 +7536568137284691778271641238229711141621826181987912357983119929869911582296219171189725615212124465 +9595583261896818139583613922162716243317157921593921818213913993135811139511646138183273731177299744 +1478335243376975293521995994234166518112945289282915476547398231571885929451238161265918286396527143 +3589659231838871758533921821826411128778214875195493613897887818994186862452911921219752434728159178 +1519822318615118939492581148919717226195114292383874899669291852333991742198362725995259791943333211 +9795914596639922726274191923229243293291863125939211616969521549341942544782482711218467872852318217 +5613289519141121739839293878959282231316192133211496939347144791959915179746671957919621313595284142 +9181131731288744182367198138971923921179618862219412318217797142481389325923525313271629938185882472 +5551511368118741121367417369949814314261396112791258129753271621312272649275289184568199481948313935 +2241379916113999611116384261153791251196441711978721719853121261161249511335295434239192122475341439 +2953391923245469371889427113838314197862363197769418641714149439123119271299765999981554921212242232 +2429196117668731239983129261421913394811262338222177425225587612716828952193511255156792968133924511 diff --git a/2021/full/day16.txt b/2021/full/day16.txt new file mode 100644 index 0000000..b60e296 --- /dev/null +++ b/2021/full/day16.txt @@ -0,0 +1 @@ +E0529D18025800ABCA6996534CB22E4C00FB48E233BAEC947A8AA010CE1249DB51A02CC7DB67EF33D4002AE6ACDC40101CF0449AE4D9E4C071802D400F84BD21CAF3C8F2C35295EF3E0A600848F77893360066C200F476841040401C88908A19B001FD35CCF0B40012992AC81E3B980553659366736653A931018027C87332011E2771FFC3CEEC0630A80126007B0152E2005280186004101060C03C0200DA66006B8018200538012C01F3300660401433801A6007380132DD993100A4DC01AB0803B1FE2343500042E24C338B33F5852C3E002749803B0422EC782004221A41A8CE600EC2F8F11FD0037196CF19A67AA926892D2C643675A0C013C00CC0401F82F1BA168803510E3942E969C389C40193CFD27C32E005F271CE4B95906C151003A7BD229300362D1802727056C00556769101921F200AC74015960E97EC3F2D03C2430046C0119A3E9A3F95FD3AFE40132CEC52F4017995D9993A90060729EFCA52D3168021223F2236600ECC874E10CC1F9802F3A71C00964EC46E6580402291FE59E0FCF2B4EC31C9C7A6860094B2C4D2E880592F1AD7782992D204A82C954EA5A52E8030064D02A6C1E4EA852FE83D49CB4AE4020CD80272D3B4AA552D3B4AA5B356F77BF1630056C0119FF16C5192901CEDFB77A200E9E65EAC01693C0BCA76FEBE73487CC64DEC804659274A00CDC401F8B51CE3F8803B05217C2E40041A72E2516A663F119AC72250A00F44A98893C453005E57415A00BCD5F1DD66F3448D2600AC66F005246500C9194039C01986B317CDB10890C94BF68E6DF950C0802B09496E8A3600BCB15CA44425279539B089EB7774DDA33642012DA6B1E15B005C0010C8C917A2B880391160944D30074401D845172180803D1AA3045F00042630C5B866200CC2A9A5091C43BBD964D7F5D8914B46F040 diff --git a/2021/full/day17.txt b/2021/full/day17.txt new file mode 100644 index 0000000..cfc7e1b --- /dev/null +++ b/2021/full/day17.txt @@ -0,0 +1 @@ +target area: x=150..171, y=-129..-70 \ No newline at end of file diff --git a/2021/full/day18.txt b/2021/full/day18.txt new file mode 100644 index 0000000..c2b1c22 --- /dev/null +++ b/2021/full/day18.txt @@ -0,0 +1,100 @@ +[5,[7,[8,4]]] +[[[4,1],[6,[9,3]]],[[7,4],[5,[7,0]]]] +[[6,2],[[[8,6],[5,5]],0]] +[[[5,9],[3,[4,2]]],[[[1,2],0],2]] +[[[[4,3],2],0],[[[1,7],[1,2]],[[8,2],[6,7]]]] +[[[[0,1],9],3],[[4,7],[7,8]]] +[[[[8,7],4],[5,[9,2]]],[[8,[9,6]],[1,8]]] +[[[2,3],[[9,9],[7,0]]],[6,7]] +[8,[[9,9],[8,6]]] +[[[[5,7],[7,1]],[3,[7,6]]],[2,[[5,5],[8,3]]]] +[[[7,0],2],[[[2,2],7],[6,[2,9]]]] +[[6,2],[[0,8],8]] +[[[[2,9],4],9],[1,[[6,9],[7,5]]]] +[[[9,3],[[5,7],[3,1]]],[5,[6,[7,8]]]] +[0,[[8,9],1]] +[[4,[[4,3],4]],[7,[[4,0],0]]] +[[0,[[1,9],[6,1]]],[[[7,0],[5,2]],[[3,8],[0,4]]]] +[[[2,7],[7,[1,6]]],[6,[[8,7],[8,5]]]] +[[9,5],[[1,[2,5]],[8,[2,0]]]] +[6,[[8,[9,4]],[9,8]]] +[[[[2,0],[4,6]],3],[[8,0],4]] +[[[8,8],[[5,7],[5,6]]],5] +[[5,[[7,9],9]],[1,6]] +[[[[5,2],[4,9]],[[1,9],[2,9]]],[[[6,8],[7,5]],[[0,2],4]]] +[1,[5,[[5,5],[1,2]]]] +[[[1,4],[[0,3],7]],[[[9,1],9],[[2,3],7]]] +[[[[6,4],[4,0]],[[3,4],[7,0]]],[[8,7],[5,[0,6]]]] +[[3,[8,[2,8]]],[9,[0,[5,2]]]] +[[7,[[1,8],1]],[6,[6,6]]] +[[[3,[9,4]],[[3,2],[5,2]]],8] +[3,[[4,[4,3]],[5,[9,2]]]] +[[[1,8],[2,[7,5]]],[[0,[8,1]],[2,0]]] +[1,3] +[7,[[[9,6],[8,4]],9]] +[6,4] +[[[8,9],[[3,7],2]],[4,[[5,0],8]]] +[[[[1,8],[7,9]],0],[[[4,4],3],[4,[1,7]]]] +[[[[2,2],[0,9]],[1,2]],[[[9,1],[0,0]],[[1,6],4]]] +[[[[8,1],6],[[3,3],[6,7]]],[[2,3],5]] +[[[[9,0],7],6],[[[3,6],[6,7]],3]] +[[[[1,0],6],[5,[0,0]]],[[[9,7],7],5]] +[[[[5,1],4],[[7,7],[6,2]]],[[0,[6,0]],2]] +[[[[8,3],[0,4]],[[9,9],[3,7]]],[[[2,7],[2,9]],[[2,0],[4,7]]]] +[6,[[[4,8],0],8]] +[[[6,[5,9]],[[0,3],9]],[[[2,5],[9,5]],0]] +[[1,4],[6,[0,[6,2]]]] +[9,[[[3,7],1],7]] +[[[2,3],[[1,2],1]],[[[2,6],[0,1]],[0,[4,1]]]] +[[[0,1],[[0,3],[7,3]]],[[8,7],3]] +[[0,[[1,5],[5,3]]],4] +[[[5,3],[[5,8],6]],[[[6,0],3],[4,1]]] +[8,3] +[[[[5,5],[3,0]],6],[[7,5],[2,[9,4]]]] +[[[3,[3,3]],[[4,7],4]],[[2,0],1]] +[[[0,[2,8]],[4,[7,9]]],[[[5,4],2],2]] +[[3,[7,[1,8]]],[5,[[8,2],0]]] +[[1,9],[[6,[5,9]],8]] +[[5,[5,2]],5] +[[[1,1],[4,3]],1] +[[[[6,9],[4,1]],0],[[[3,0],6],7]] +[[9,[[7,3],6]],[[[7,2],0],[9,9]]] +[[5,4],[[[6,0],[5,1]],7]] +[[[4,0],0],[[[2,6],[4,4]],[[6,8],2]]] +[[[9,6],8],[[0,[9,5]],9]] +[[6,[2,5]],[[[1,8],[9,0]],[[4,0],[5,7]]]] +[5,[[8,[9,9]],[5,[6,8]]]] +[[[7,[9,0]],5],6] +[[9,[[3,7],[3,0]]],[[[7,2],[5,7]],[[0,5],[7,4]]]] +[[7,3],[[6,5],[9,4]]] +[[4,[4,3]],[9,[[2,6],0]]] +[[[6,[0,1]],9],[[7,[3,2]],[[0,1],[5,2]]]] +[[5,[0,[3,1]]],[[[1,1],[8,9]],[[6,3],[0,9]]]] +[[[[2,8],0],[[8,7],4]],[[[9,6],3],[[7,8],[2,3]]]] +[[[[1,0],1],4],[4,9]] +[[[7,8],5],[[[3,7],[5,7]],6]] +[[[8,[7,4]],[[1,6],[6,7]]],[2,4]] +[[7,8],3] +[[0,[4,[3,8]]],[[[1,0],1],6]] +[[[[6,3],7],2],[[4,5],6]] +[[[5,9],[[1,8],1]],[[[1,8],8],[[6,4],0]]] +[[3,[8,[2,8]]],[[[2,8],[4,4]],9]] +[7,[5,[[3,3],3]]] +[3,[1,[0,[3,0]]]] +[[[1,2],4],[9,[[7,1],[5,4]]]] +[[[5,8],[7,[0,7]]],[0,[[2,9],8]]] +[[[7,[2,0]],[1,[4,3]]],[0,[[1,1],[2,0]]]] +[[[2,[2,5]],[4,1]],[0,[6,0]]] +[[[8,3],9],[[[4,3],[5,8]],[[7,0],9]]] +[2,[1,4]] +[[[3,[2,6]],6],[[[3,2],[0,8]],[[3,5],[6,4]]]] +[[[1,[3,3]],[[0,8],[1,3]]],[8,[[3,8],[0,8]]]] +[[[[1,5],[0,1]],3],[[6,[1,7]],[4,7]]] +[[4,[5,7]],[6,[[6,2],7]]] +[[[[7,4],[3,1]],[5,6]],[0,[6,5]]] +[[[7,[0,0]],6],[5,[[0,0],[3,5]]]] +[[[[8,7],[5,8]],[8,[9,3]]],[[7,0],[[7,2],0]]] +[[[7,[4,2]],0],[[[4,0],1],3]] +[[[6,3],[9,[2,2]]],[[0,8],[1,2]]] +[3,[[3,1],[[7,1],1]]] +[[3,[[4,0],7]],[[[4,6],[2,3]],[[0,2],[1,8]]]] diff --git a/2021/python/09/day09.gif b/2021/python/09/day09.gif new file mode 100644 index 0000000..0378482 Binary files /dev/null and b/2021/python/09/day09.gif differ diff --git a/2021/python/day01.py b/2021/python/day01.py new file mode 100644 index 0000000..3f39f57 --- /dev/null +++ b/2021/python/day01.py @@ -0,0 +1,27 @@ +import shared + + +def pt1(inp): + count = 0 + for x in range(1, len(inp)): + if inp[x] > inp[x - 1]: + count += 1 + return count + + +def pt2(inp): + count = 0 + prev = 0 + for x in range(2, len(inp)): + window = sum(inp[x - 3 : x]) + if window > prev: + count += 1 + prev = window + return count + + +if __name__ == "__main__": + with open(shared.get_fname(1), "r") as f: + inp = [int(x) for x in f.readlines()] + print(pt1(inp)) + print(pt2(inp)) diff --git a/2021/python/day02.py b/2021/python/day02.py new file mode 100644 index 0000000..66e03f4 --- /dev/null +++ b/2021/python/day02.py @@ -0,0 +1,41 @@ +import shared + + +class Position: + def __init__(self): + self.horiz = 0 + self.depth = 0 + self.aim = 0 + + def parse_line(self, line: str): + direction, x = line.split(" ") + x = int(x) + + if direction == "up": + self.aim -= x + elif direction == "down": + self.aim += x + elif direction == "forward": + self.horiz += x + self.depth += self.aim * x + + def whereami(self): + return self.horiz * self.depth + + +def run(inp): + p = Position() + for i in inp: + p.parse_line(i) + return p.whereami() + + +def main(): + with open(shared.get_fname(2), "r") as f: + inp = f.readlines() + + print(run(inp)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day03.py b/2021/python/day03.py new file mode 100644 index 0000000..4d6721e --- /dev/null +++ b/2021/python/day03.py @@ -0,0 +1,39 @@ +import shared +from pprint import pprint as pp +from collections import Counter + + +def run(orig): + ox = grab(orig, 1, 0) + co = grab(orig, 0, 1) + return ox * co + + +def grab(orig, high, low): + idx = 0 + while len(orig) != 1: + matrix = _rot(orig) + c = Counter(matrix[idx]) + if c[1] >= c[0]: + orig = [o for o in orig if o[idx] == high] + else: + orig = [o for o in orig if o[idx] == low] + idx += 1 + return int("".join(str(x) for x in orig[0]), 2) + + +def _rot(m): + x = list(zip(*m[::-1])) + return [list(reversed(y)) for y in x] + + +def main(): + spl = lambda y: [int(w) for w in y] + with open(shared.get_fname(3), "r") as f: + rows = [x.rstrip() for x in f.readlines()] + matrix = [spl(x) for x in rows] + print(run(matrix)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day04.py b/2021/python/day04.py new file mode 100644 index 0000000..69cfd36 --- /dev/null +++ b/2021/python/day04.py @@ -0,0 +1,94 @@ +import shared +from itertools import groupby +from pprint import pprint as pp +from matrix import rotate, load_matrix_file, split_line_to_int_list, get_column +from copy import deepcopy + + +def all_equal(iterable): + g = groupby(iterable) + return next(g, True) and not next(g, False) + + +class Bingo: + def __init__(self, name): + self.parse(name) + + def parse(self, name): + with open(name, "r") as f: + lines = [x.rstrip() for x in f.readlines()] + self.rolls = [int(x) for x in lines.pop(0).split(",")] + lines.pop(0) + + self.boards = [] + current_board = [] + while len(lines) > 0: + line = lines.pop(0) + if line == "": + self.boards.append(current_board) + current_board = [] + continue + current_board.append(split_line_to_int_list(line)) + if len(lines) == 0: + self.boards.append(current_board) + self.board_snapshot = deepcopy(self.boards) + + def mark_roll(self, roll): + for idB, b in enumerate(self.boards): + breaking = False + for x, row in enumerate(b): + for y, col in enumerate(row): + if col == roll: + self.boards[idB][x][y] = -1 + breaking = True + break + if breaking: + break + for idB, b in enumerate(self.boards): + winning_board = self.check_remove(idB) + if winning_board: + return winning_board + + def check_remove(self, board_idx): + for row in self.boards[board_idx]: + if all_equal(row): + b = self.boards.pop(board_idx) + if len(self.boards) == 0: + return b + return + for col in zip(*self.boards[board_idx]): + if all_equal(col): + b = self.boards.pop(board_idx) + if len(self.boards) == 0: + return b + return + + def roll(self): + roll = self.rolls.pop(0) + self.last_roll = roll + return self.mark_roll(roll) + + def roll_all(self): + while len(self.rolls): + bingoCheck = self.roll() + if bingoCheck: + self.winner = bingoCheck + return + + def total(self): + total = 0 + for row in self.winner: + for col in row: + if col != -1: + total += col + return total * self.last_roll + + +def main(): + b = Bingo(shared.get_fname(4)) + b.roll_all() + print(b.total()) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day05.py b/2021/python/day05.py new file mode 100644 index 0000000..932dc81 --- /dev/null +++ b/2021/python/day05.py @@ -0,0 +1,79 @@ +import shared +from pprint import pprint as pp +from matrix import matrix_of_size + + +class Vents: + def __init__(self, name): + self.width = 0 + self.height = 0 + self.parse(name) + self.matrix = matrix_of_size(self.width + 1, self.height + 1) + + def parse(self, name): + def _split_line(line): + one, two = line.split(" -> ") + coords = list(map(int, one.split(","))), list(map(int, two.split(","))) + (x1, y1), (x2, y2) = coords + # set grid size + if max(x1, x2) > self.width: + self.width = max(x1, x2) + if max(y1, y2) > self.height: + self.height = max(y1, y2) + return coords + + with open(name, "r") as f: + self.coords = [_split_line(x.rstrip()) for x in f.readlines() if x.rstrip()] + + def draw_lines(self): + for coords in self.coords: + self.draw_line(*coords) + + def draw_line(self, pos1, pos2): + x1, y1 = pos1 + x2, y2 = pos2 + + if x1 == x2: # Straight + self.draw_horizontal_x(x1, (y1, y2)) + elif y1 == y2: # Straight + self.draw_horizontal_y((x1, x2), y1) + else: # diagonal + self.draw_diagonal((x1, x2), (y1, y2)) + + def draw_horizontal_x(self, x, y_coords): + coords = sorted(y_coords) + for y in range(coords[0], coords[1] + 1): + self.matrix[y][x] += 1 + + def draw_horizontal_y(self, x_coords, y): + coords = sorted(x_coords) + for x in range(coords[0], coords[1] + 1): + self.matrix[y][x] += 1 + + def draw_diagonal(self, x_coords, y_coords): + coords = self.generate_diagonal(*x_coords, *y_coords) + for x, y in coords: + self.matrix[y][x] += 1 + + def generate_diagonal(self, x1, x2, y1, y2): + x_dir, y_dir = 1, 1 + if x2 < x1: + x_dir = -1 + if y2 < y1: + y_dir = -1 + new_y = range(y1 + y_dir, y2, y_dir) + new_x = range(x1 + x_dir, x2, x_dir) + return [(x1, y1), *list(zip(new_x, new_y)), (x2, y2)] + + def count(self): + return len([item for sublist in self.matrix for item in sublist if item > 1]) + + +def main(): + v = Vents(shared.get_fname(5)) + v.draw_lines() + pp(v.count()) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day06.py b/2021/python/day06.py new file mode 100644 index 0000000..806236f --- /dev/null +++ b/2021/python/day06.py @@ -0,0 +1,44 @@ +import shared +from collections import Counter, defaultdict +from pprint import pp + + +class Lanternfish: + def __init__(self, name): + self.load(name) + self.new = 0 + + def load(self, name): + with open(name, "r") as f: + self.nums = list(map(int, f.read().split(","))) + self.fish = defaultdict(int) + self.fish.update(dict(Counter(self.nums))) + + def tick(self): + self.new = self.fish[0] + + # could do for loop from 0-6 then handle 6 specially + self.fish[0] = self.fish[1] + self.fish[1] = self.fish[2] + self.fish[2] = self.fish[3] + self.fish[3] = self.fish[4] + self.fish[4] = self.fish[5] + self.fish[5] = self.fish[6] + self.fish[6] = self.fish[7] + self.new + self.fish[7] = self.fish[8] + self.fish[8] = self.new + + def total(self): + return sum([v for k, v in self.fish.items() if k > -1]) + + +def main(): + l = Lanternfish(shared.get_fname(6)) + TIMES = 256 + for x in range(TIMES): + l.tick() + pp(l.total()) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day07.py b/2021/python/day07.py new file mode 100644 index 0000000..83e7c8c --- /dev/null +++ b/2021/python/day07.py @@ -0,0 +1,37 @@ +import shared +from pprint import pp +from scipy import stats +import numpy as np + + +class Whale: + def __init__(self, name): + self.load(name) + self.set_target() + + def load(self, name): + with open(name, "r") as f: + self.positions = list(map(int, f.read().split(","))) + + def set_target(self): + data = np.array(self.positions) + self.target = round(np.mean(data)) + + def calculate(self, target=None): + return int(sum([self.sigma(abs(target - pos)) for pos in self.positions])) + + def sigma(self, value): + return value * (value + 1) / 2 + + +def main(): + w = Whale(shared.get_fname(7)) + if w.target in w.positions: + target = w.target + else: + target = w.target - 1 + pp(w.calculate(target)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day08.py b/2021/python/day08.py new file mode 100644 index 0000000..fa557de --- /dev/null +++ b/2021/python/day08.py @@ -0,0 +1,96 @@ +import shared +from pprint import pp +from collections import defaultdict, Counter + +ACTUAL = [ + "abcefg", # 0 + "cf", # 1 --- l2 + "acdeg", # 2 + "acdfg", # 3 + "bcdf", # 4 ---l4 + "abdfg", # 5 + "abdefg", # 6 + "acf", # 7 ---l3 + "abcdefg", # 8 ---l7 + "abcdfg", # 9 +] +LENGTHS = list(map(len, ACTUAL)) + +SEGMENT_FREQ = { + "a": 8, + "b": 6, + "c": 8, + "d": 7, + "e": 4, + "f": 9, + "g": 7, +} + + +class Segments: + def __init__(self, name): + self.load(name) + + def load(self, name): + self.lines = [] + with open(name, "r") as f: + for line in f.readlines(): + l = line.rstrip() + signals, output = l.split(" | ") + row = [signals.split(), output.split()] + self.lines.append(row) + + def map(self, signals, output): + counts = Counter("".join(signals)) + segments = {"a", "b", "c", "d", "e", "f", "g"} + segment_mapping = {} + + for iw, c in SEGMENT_FREQ.items(): + if c in (7, 8): + continue + for rw, rc in counts.items(): + if rc == c: + segment_mapping[iw] = rw + + lengths = {len(signal): set(signal) for signal in signals} + k1 = lengths[LENGTHS[1]] + k4 = lengths[LENGTHS[4]] + k7 = lengths[LENGTHS[7]] + + segment_mapping["a"] = (k7 ^ k1).pop() + for wire in k1: + if wire not in segment_mapping.values(): + segment_mapping["c"] = wire + + for wire in k4: + if wire not in segment_mapping.values(): + segment_mapping["d"] = wire + + segment_mapping["g"] = (segments ^ set(segment_mapping.values())).pop() + + wiring = {} + for num, ideal in enumerate(ACTUAL): + key = "" + for wire in ideal: + key += segment_mapping[wire] + + key = "".join(sorted(key)) + wiring[key] = str(num) + + return wiring + + +def main(): + s = Segments(shared.get_fname(8)) + total = 0 + for sig, out in s.lines: + wiring = s.map(sig, out) + display = "" + for digit in out: + display += wiring["".join(sorted(digit))] + total += int(display) + print(total) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day09.py b/2021/python/day09.py new file mode 100644 index 0000000..bfb2873 --- /dev/null +++ b/2021/python/day09.py @@ -0,0 +1,132 @@ +import sys +from matrix import load_matrix_file, get_neighbors, get_size +import shared +from scipy import ndimage +import imageio +from skimage.measure import euler_number, label +from skimage.morphology import flood_fill, flood +import matplotlib.pyplot as plt +import numpy as np +from math import prod +import random + + +class Smoke: + def __init__(self, name): + self.footprint = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]]) + self.parse(name) + + def parse(self, name): + _split = lambda line: list(map(int, [l for l in line])) + self.mx = np.array(load_matrix_file(name, func=_split)) + self.mx = np.pad(self.mx, pad_width=1, mode="constant", constant_values="9") + self.set_values() + self.set_coords() + + def set_values(self): + self.lows = ( + ndimage.generic_filter(self.mx, np.min, footprint=self.footprint) == self.mx + ) + self.low_values = self.mx[self.lows][self.mx[self.lows] < 9] + self.highs = ( + ndimage.generic_filter(self.mx, np.max, footprint=self.footprint) == self.mx + ) + mask = self.mx != 9 + self.mask = mask.astype(int) + + def set_coords(self): + lc = [] + for idr, row in enumerate(self.lows): + if idr == 0 or idr == len(self.lows) - 1: + continue + for idc, col in enumerate(row): + if idc == 0 or idc == len(row) - 1: + continue + if col: + lc.append((idr, idc)) + self.low_coords = lc + + def total_low_values(self): + return (self.low_values + 1).sum() + + def find_chunks(self): + cell_sizes = [] + self.cells = [] + by_center = [] + for x, y in self.low_coords: + current = np.zeros_like(self.mx) + m = flood_fill(self.mask, (x, y), -1, connectivity=1) + current_cell = (m == -1).astype(int) + self.cells.append(current_cell) + cells = np.argwhere(current_cell == 1) + by_center.append((len(cells), (x, y), cells)) + cell_sizes.append(len(cells)) + cells_sorted = list(set(sorted(cell_sizes))) + self.by_center = by_center + largest = cells_sorted[-3:] + assert len(largest) == 3 + self.largest = largest + return prod(largest) + + def animate(self, save=False): + largest = [x for x in self.by_center if x[0] in self.largest][-3:] + current = np.zeros_like(self.mx) + shuf = self.by_center[:] + random.shuffle(shuf) + + last_file = 0 + + for idx, (length, xy, c) in enumerate(shuf): + last_file = idx + if length in largest: + continue + + for x, y in c: + current[y][x] = 1 + + fig, ax = plt.subplots() + ax.imshow(current, cmap=plt.cm.gray) + ax.axis("off") + if save: + plt.savefig(f"09/{idx:03}.png") + plt.close() + + lg = np.zeros_like(self.mx) + for _, _, c in largest: + for x, y in c: + lg[y][x] = 1 + + fig, ax = plt.subplots() + ax.imshow(lg) + ax.axis("off") + plt.savefig(f"09/largest.png") + plt.close() + + with imageio.get_writer("09/day09.gif", mode="I") as writer: + names = [f"09/{x:03}.png" for x in range(334)] + for filename in names: + try: + image = imageio.imread(filename) + writer.append_data(image) + except FileNotFoundError: + pass + + for x in range(15): + image = imageio.imread("09/largest.png") + for x in range(5): + writer.append_data(image) + image = imageio.imread(f"09/{last_file:03}.png") + for x in range(5): + writer.append_data(image) + + +def main(): + s = Smoke(shared.get_fname(9)) + print(s.total_low_values()) + print(s.find_chunks()) + if sys.argv[-1] != "--sample": + s.animate(1) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day10.py b/2021/python/day10.py new file mode 100644 index 0000000..99e153d --- /dev/null +++ b/2021/python/day10.py @@ -0,0 +1,67 @@ +import shared +from pprint import pprint as pp +import sys + +OPEN = "([{<" +CLOSE = ")]}>" +PAIRS = dict(zip(OPEN, CLOSE)) +PAIRS.update(zip(CLOSE, OPEN)) +BAD_POINTS = dict(zip(CLOSE, [3, 57, 1197, 25137])) +GOOD_POINTS = dict(zip(CLOSE, [1, 2, 3, 4])) + + +def load_file(name): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [x for x in my_file] + + +class Syntax: + def __init__(self, name): + self.parse(name) + + def parse(self, name): + self.mx = load_file(name) + self.good_lines = [] + + def find_all(self): + bad_points = 0 + all_points = [] + for idx, line in enumerate(self.mx): + c, bad = self.find_chunks(line) + if bad: + bad_points += BAD_POINTS[c] + else: + match_points = 0 + for x in c: + match_points *= 5 + match_points += GOOD_POINTS[x] + all_points.append(match_points) + + mp = list(sorted(all_points)) + print(bad_points) # pt1 + print(mp[len(mp) // 2]) # pt2 + + def find_chunks(self, line): + unpaired = [] + for idx, char in enumerate(line): + if char in OPEN: + unpaired.append(char) + if char in CLOSE: + if unpaired[-1] != PAIRS[char]: + return char, True + unpaired.pop(-1) + # Line is good here + unpaired = list(reversed(unpaired)) + return [PAIRS[u] for u in unpaired], False + + +def main(): + s = Syntax(shared.get_fname(10)) + s.find_all() + + +if __name__ == "__main__": + main() diff --git a/2021/python/day11.py b/2021/python/day11.py new file mode 100644 index 0000000..a0af8c3 --- /dev/null +++ b/2021/python/day11.py @@ -0,0 +1,90 @@ +import matrix +import shared +import sys +import numpy as np +from scipy import ndimage +from pprint import pprint as pp + + +class Syntax: + def __init__(self, name): + mx = shared.load_file_int_matrix(name) + self.mx = np.array(mx) + self.flash_count = 0 + self.step_count = 0 + + def check_syncronized(self): + cpy = np.copy(self.mx) + flat = np.ravel(cpy) + if np.all(flat == 10): + return True + + def step(self): + self.step_count += 1 + self.increment_all() + + # Get a 2darray of bools of whether it's flashing + self.flashed = (self.mx > 9).astype(int) + flash_coords = np.argwhere(self.flashed == 1) # get a list of any flashed + + if len(flash_coords) == 0: + return + + self.flash_count += len(flash_coords) + + if flash_coords.any(): + for coord in flash_coords: + self.flash({"c": coord[1], "r": coord[0]}) + + if self.check_syncronized(): + return True + self.reset_flashes() + #matrix.pmx(self.mx, self.flashed) # Print a pretty matrix + + def flash(self, coord: dict) -> np.ndarray: + neighbor_coords = matrix.get_neighbor_coords( + self.mx, c=coord["c"], r=coord["r"] + ) + + for c, val in neighbor_coords: + self.add_clamp(**c) + if self.flashed[c["r"]][c["c"]]: + continue + if self.mx[c["r"]][c["c"]] > 9: + self.flash_count += 1 + self.flashed[c["r"]][c["c"]] = 1 + self.flash(c) + + def reset_flashes(self): + for r, row in enumerate(self.mx): + for c, col in enumerate(row): + if self.mx[r][c] == 10: + self.mx[r][c] = 0 + + def add_clamp(self, c, r): + """ Clamp to 10, but add 1 """ + if self.mx[r][c] < 10: + self.mx[r][c] += 1 + + def increment_all(self): + for r, row in enumerate(self.mx): + for c, _ in enumerate(row): + self.add_clamp(c, r) + + +def main(): + s = Syntax(shared.get_fname(11)) + print(f"before any steps") + matrix.pmx(s.mx) + print("----") + for x in range(9999): + if s.step(): + print(x) + break + matrix.pmx(s.mx) + print(s.flash_count) + print(s.step_count) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day12.py b/2021/python/day12.py new file mode 100644 index 0000000..e214d24 --- /dev/null +++ b/2021/python/day12.py @@ -0,0 +1,51 @@ +import matrix +import shared +from collections import defaultdict + +START = 'start' +END = 'end' + +class Passage: + def __init__(self, name): + self.load(name) + self.parse_connections() + + + def load(self, name): + lines= [] + with open(name, 'r') as f: + for line in f.readlines(): + lines.append(line.rstrip()) + self.instructions = lines + + def parse_connections(self): + connections = defaultdict(list) + for edge in self.instructions: + node1, node2 = edge.split('-') + # Add bidirectional + connections[node1].append(node2) + connections[node2].append(node1) + self.connections = connections + + def traverse(self, multiple_entry, enter=START, seen={START}): + if enter == END: # we're done! + yield 1 + return + + for node in self.connections[enter]: + if node.islower(): + if node not in seen: + yield from self.traverse(multiple_entry, node, seen | {node}) + elif multiple_entry and node not in {START, END}: + yield from self.traverse(False, node, seen | {node}) + else: + yield from self.traverse(multiple_entry, node, seen) + +def main(): + p = Passage(shared.get_fname(12)) + print(sum(p.traverse(multiple_entry=False))) + print(sum(p.traverse(multiple_entry=True))) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day13.py b/2021/python/day13.py new file mode 100644 index 0000000..9a9c01f --- /dev/null +++ b/2021/python/day13.py @@ -0,0 +1,89 @@ +import scanf +import itertools +import matrix +from matrix import ppmx as pmx +import numpy as np +import pandas as pd +import shared +from pprint import pprint as pp + +class Oragami: + def __init__(self, name): + lines = [] + with open(name, "r") as f: + for line in f.readlines(): + lines.append(line.rstrip()) + splitter = lines.index("") + coords, folds = lines[:splitter], lines[splitter + 1 :] + self.coords = [list(map(int, c.split(","))) for c in coords] + print(self.coords[:6]) + self.parse_folds(folds) + self.max() + self.new_matrix() + + + def parse_folds(self, folds): + self.folds = [] + for fold in folds: + axis, index = scanf.scanf("fold along %s=%d", fold) + self.folds.append({'axis':axis, 'index':index}) + + def max(self): + by_x = max([x['index'] for x in self.folds if x['axis'] == 'x']) + by_y = max([x['index'] for x in self.folds if x['axis'] == 'y']) + self.max_width = by_x*2+1 + self.max_height = by_y*2+1 + + def new_matrix(self): + self.matrix = matrix.matrix_of_size(width=self.max_width, height=self.max_height) + for c, r in self.coords: + self.matrix[r][c] = 1 + + def process_folds(self): + for idx, fold in enumerate(self.folds): + print('---') + if fold['axis'] == 'y': + self.fold_y(fold['index']) + else: + self.fold_x(fold['index']) + self.count() + pmx(self.matrix,pad=False,space=False) + + def fold_y(self, cut): + #folding on y removes the y row + bottom = self.matrix[cut+1:] + bottom = list(reversed(bottom)) + self.matrix = self.matrix[:cut] + self.copy_from(bottom) + + def fold_x(self, cut): + #folding on X removes the x column + left, right = [], [] + removed = 0 + for r, row in enumerate(self.matrix): + left.append(row[:cut]) + right.append(list(reversed(row[cut+1:]))) + if row[cut] == 1: + removed += 1 + self.matrix = left + self.copy_from(right) + + def copy_from(self, source): + for r, row in enumerate(source): + for c, col in enumerate(row): + if col == 1: + self.matrix[r][c] = 1 + print("") + + def count(self): + flat = np.ravel(np.array(self.matrix)) + print(sum(flat)) + + +def main(): + o = Oragami(shared.get_fname(13)) + o.process_folds() + + +if __name__ == "__main__": + main() diff --git a/2021/python/day14.py b/2021/python/day14.py new file mode 100644 index 0000000..abbd7c8 --- /dev/null +++ b/2021/python/day14.py @@ -0,0 +1,66 @@ +import matrix +import numpy as np +import pandas as pd +import shared +from pprint import pprint as pp +from collections import Counter + +class Polymers: + def __init__(self, name): + self.load(name) + self.process() + + def load(self, name): + rules = [] + with open(name, "r") as f: + template = f.readline().rstrip() + f.readline() + for rule in f.readlines(): + rules.append(rule.rstrip().split(" -> ")) + self.template = template + self.rules = dict(rules) + + def process(self): + # make a counter with letters grouped together in twos + self.pair_counter = Counter([self.template[i:i+2] for i in range(len(self.template) - 1)]) + for x in range(40): + self.x = x + self.step() + self.totals() + + def step(self): + # Start a new counter + step_counter = Counter() + + # loop over the pairs in the old counter + for pair in self.pair_counter: + # expand a and c from the pair + a, c = pair + # get the new letter to add + b = self.rules[pair] + # increment the new pairs + step_counter[f"{a}{b}"] += self.pair_counter[pair] + step_counter[f"{b}{c}"] += self.pair_counter[pair] + # replace + self.pair_counter = step_counter + + def totals(self): + # start a new letter counter + c = Counter() + # loop over the pairs + for pair in self.pair_counter: + # increment the first letter in the pair, the 2nd letter is already taken care of + c[pair[0]] += self.pair_counter[pair] + # add the final letter of the template, because it + # never gets a right pair so its silently ignored + c[self.template[-1]] += 1 + + print(max(c.values()) - min(c.values()), self.x) + + +def main(): + p = Polymers(shared.get_fname(14)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day15.py b/2021/python/day15.py new file mode 100644 index 0000000..73d1c75 --- /dev/null +++ b/2021/python/day15.py @@ -0,0 +1,87 @@ +import matrix +import numpy as np +import shared +from pprint import pprint as pp +from queue import PriorityQueue +X = '.' + +class Chiton: + def __init__(self, name): + self.load(name) + self.y = 0 + self.x = 0 + self.values = [] + self.set_goal() + + def load(self, name): + self.base = np.array(matrix.load_matrix_file(name)) + self.mx = self.base.copy() + + def walk(self): + # Dijkstra from RedBlobGames + start = (self.x,self.y) + frontier = PriorityQueue() + frontier.put(start, 0) + came_from = dict() + cost_so_far = dict() + came_from[start] = None + cost_so_far[start] = 0 + while not frontier.empty(): + current = frontier.get() + if current == self.goal: + break + for _nxt in self.neighbors(current): + nxt = (_nxt['x'],_nxt['y']) + new_cost = cost_so_far[current] + _nxt['value'] + if nxt not in cost_so_far or new_cost < cost_so_far[nxt]: + cost_so_far[nxt] = new_cost + priority = new_cost + frontier.put(nxt, priority) + came_from[nxt] = current + print(cost_so_far[self.goal]) + + def neighbors(self, pos): + return matrix.get_neighbors(self.mx, x=pos[0], y=pos[1], _dict=True) + + def pp(self): + matrix.ppmx(self.mx,pad=False,space=False) + print(self.x,self.y) + + def grow(self, size): + ALL = [self.base.copy()] + for x in range(25): + n = ALL[-1].copy() + n = self.increment(n) + ALL.append(n) + + rows = [] + for x in range(5): + rows.append(np.hstack(ALL[x:x+5])) + + grid = np.array(rows.pop(0)) + for row in rows: + grid = np.vstack((grid,row)) + + self.mx = grid + self.set_goal() + + def set_goal(self): + h,w = matrix.get_size(self.mx) + self.goal = (h-1,w-1) + + def increment(self, row): + row += 1 + row = np.where(row > 9, 1, row) + return row + + + +def main(): + c = Chiton(shared.get_fname(15)) + c.walk() + c.grow(5) + c.walk() + + +if __name__ == "__main__": + main() diff --git a/2021/python/day16.py b/2021/python/day16.py new file mode 100644 index 0000000..7a3dbc3 --- /dev/null +++ b/2021/python/day16.py @@ -0,0 +1,90 @@ +import shared +from functools import reduce +from pprint import pprint as pp +from math import prod + + +HEX = { + (str(i) if i <= 9 else chr(ord("A") + i % 10)): bin(i)[2:].zfill(4) + for i in range(16) +} + +OPS_TYPES = { + 0: lambda *x: sum(x), + 1: lambda *x: prod(x), + 2: min, + 3: max, + 5: lambda *x: 1 if x[0] > x[1] else 0, + 6: lambda *x: 1 if x[0] < x[1] else 0, + 7: lambda *x: 1 if x[0] == x[1] else 0, +} + +class Packet: + def __init__(self): + with open(shared.get_fname(16), "r") as f: + val = f.read().rstrip() + self.binary = "".join([HEX[x] for x in val]) + packet, _ = self.get_packet(self.binary) + self.packet = packet + + def to_value(self, binary): + # print("to_value", len(binary)) + value = "" + while True: + value += binary[1:5] + if binary[0] == "0": + break + binary = binary[5:] + return int(value, 2), binary[5:] + + def get_subpackets(self, binary, packet, length_id_type): + # print("get_subpacket", len(binary), packet, length_id_type) + if int(length_id_type) == 0: + packet_length = int(binary[:15], 2) + checking = binary[15 : 15 + packet_length] + rem = binary[15 + packet_length :] + while checking: + subpacket, checking = self.get_packet(checking) + packet["children"].append(subpacket) + packet["version_sum"] += subpacket["version_sum"] + else: + subpacket_count = int(binary[:11], 2) + rem = binary[11:] + for _ in range(subpacket_count): + subpacket, rem = self.get_packet(rem) + packet["children"].append(subpacket) + packet["version_sum"] += subpacket["version_sum"] + return packet, rem + + def get_packet(self, binary): + # print("get_packet", len(binary)) + packet = { + "version": int(binary[:3], 2), + "type_id": int(binary[3:6], 2), + "version_sum": int(binary[:3], 2), + "children": list(), + } + # print(packet["type_id"], len(binary)) + if packet["type_id"] == 4: + packet["value"], rem = self.to_value(binary[6:]) + return packet, rem + return self.get_subpackets(binary[7:], packet, binary[6]) + + def calculate(self, packet): + if packet["type_id"] == 4: + return packet["value"] + + return int( + reduce( + OPS_TYPES[packet["type_id"]], [self.calculate(p) for p in packet["children"]] + ) + ) + +def main(): + p = Packet() + print(p.packet['version_sum']) + print(p.calculate(p.packet)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day17.py b/2021/python/day17.py new file mode 100644 index 0000000..a8afe05 --- /dev/null +++ b/2021/python/day17.py @@ -0,0 +1,85 @@ +import shared +from scanf import scanf +from dataclasses import dataclass + +@dataclass +class Probe: + x: int + y: int + x_vel: int + y_vel: int + + +@dataclass +class Box: + x1: int + x2: int + y1: int + y2: int + + @property + def max_x(self): + return max(self.x1, self.x2) + + @property + def min_y(self): + return min(self.y1, self.y2) + + +class TrickShot: + def __init__(self, target, x_vel, y_vel): + self.target = target + self.probe = Probe(0, 0, x_vel, y_vel) + self.y_max = -9999 + + def step(self): + self.probe.x += self.probe.x_vel + self.probe.y += self.probe.y_vel + if self.probe.y > self.y_max: + self.y_max = self.probe.y + self.probe.x_vel += towards_zero(self.probe.x_vel) + self.probe.y_vel -= 1 + + def check_in_target(self): + return ( + self.target.x1 <= self.probe.x <= self.target.x2 + and self.target.y1 <= self.probe.y <= self.target.y2 + ) + + def check_out_of_bounds(self): + return self.probe.y < self.target.min_y or self.probe.x > self.target.max_x + + +def towards_zero(value): + if value > 0: + return -1 + elif value == 0: + return 0 + else: + return 1 + + +def main(): + with open(shared.get_fname(17), "r") as f: + target = Box(*scanf("target area: x=%d..%d, y=%d..%d", f.read())) + + hits = [] + for x in range(target.max_x + 1): + for y in range(target.min_y, -target.min_y): + t = TrickShot(target, x, y) + while True: + t.step() + if t.check_in_target(): + hits.append((x, y, t.y_max)) + break + elif t.check_out_of_bounds(): + break + + hits = sorted(hits, key=lambda x: x[-1]) + highest = hits[-1][-1] + print("highest", highest) + print("hits", len(hits)) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day18.py b/2021/python/day18.py new file mode 100644 index 0000000..53b94a5 --- /dev/null +++ b/2021/python/day18.py @@ -0,0 +1,104 @@ +import shared +import itertools +import json +import math +from functools import reduce + +red = lambda word: f"\u001b[31m{word}\u001b[0m" +yellow = lambda word: f"\u001b[33m{word}\u001b[0m" +blue = lambda word: f"\u001b[34m{word}\u001b[0m" +green = lambda word: f"\u001b[32m{word}\u001b[0m" + +class Snailfish: + def __init__(self): + self.load() + + def load(self): + snailfish = [] + with open(shared.get_fname(18), "r") as f: + for line in f.readlines(): + snailfish.append(json.loads(line.rstrip())) + print(snailfish[-1]) + self.snailfish = snailfish + + def run(self): + reduced = reduce(self.add, self.snailfish) + print(green(reduced)) + self.magnitude_sum = self.magnitude(reduced) + permutations = itertools.permutations(self.snailfish, 2) + self.magnitude_max = 0 + for a,b in permutations: + print(red(a), yellow(b)) + fish_sum = self.add(a,b) + print("\t", blue(fish_sum)) + mag = self.magnitude(fish_sum) + if mag > self.magnitude_max: + self.magnitude_max = mag + print() + + def add_left(self, fish, value): + if value is None: + return fish + if isinstance(fish, int): + return fish + value + return [self.add_left(fish[0], value), fish[1]] + + def add_right(self, fish, value): + if value is None: + return fish + if isinstance(fish, int): + return fish + value + return [fish[0], self.add_right(fish[1], value)] + + def explode(self, fish, depth=4): + if isinstance(fish, int): + return False, None, fish, None + if depth == 0: + return True, fish[0], 0, fish[1] + x, y = fish + exploded, left, x, right = self.explode(x, depth - 1) + if exploded: + return True, left, [x, self.add_left(y, right)], None + exploded, left, y, right = self.explode(y, depth - 1) + if exploded: + return True, None, [self.add_right(x, left), y], right + return False, None, fish, None + + def split(self, fish): + if isinstance(fish, int): + if fish >= 10: + return True, [fish // 2, math.ceil(fish / 2)] + return False, fish + x, y = fish + split, x = self.split(x) + if split: + return True, [x, y] + split, y = self.split(y) + return split, [x, y] + + def add(self, x, y): + fish = [x, y] + while True: + exploded, _, fish, _ = self.explode(fish) + if exploded: + continue + split, fish = self.split(fish) + if not split: + break + return fish + + def magnitude(self, fish): + if isinstance(fish, int): + return fish + return 3 * self.magnitude(fish[0]) + 2 * self.magnitude(fish[1]) + + +def main(): + s = Snailfish() + s.run() + print('part1: sum', s.magnitude_sum) + print('part2: max', s.magnitude_max) + + +if __name__ == "__main__": + main() diff --git a/2021/python/day25.py b/2021/python/day25.py new file mode 100644 index 0000000..e69de29 diff --git a/2021/python/matrix.py b/2021/python/matrix.py new file mode 100644 index 0000000..a1e4504 --- /dev/null +++ b/2021/python/matrix.py @@ -0,0 +1,147 @@ +split_word_to_int_list = lambda y: [int(w) for w in y] +split_line_to_int_list = lambda y: [int(w) for w in y.split(" ") if w] + + +def rotate(m, right=True): # -90 + x = list(zip(*m[::-1])) + if right: + return x + return [list(reversed(y)) for y in x] + + +def load_matrix_file(name, func=None): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + if func: + return [func(x) for x in my_file] + return [split_word_to_int_list(x) for x in my_file] + + +def get_neighbors(matrix, x, y, _dict=False): + neighbors = [] + # left + try: + if x - 1 >= 0: + if _dict: + neighbors.append({'x':x - 1,'y':y,'value':matrix[y][x - 1]}) + else: + neighbors.append([(x - 1, y), matrix[y][x - 1]]) + except IndexError: + pass + # right + try: + if _dict: + neighbors.append({'x':x + 1,'y':y,'value':matrix[y][x + 1]}) + else: + neighbors.append([(x + 1, y), matrix[y][x + 1]]) + except IndexError: + pass + + # up + try: + if y - 1 >= 0: + if _dict: + neighbors.append({'x':x,'y':y-1,'value':matrix[y-1][x]}) + else: + neighbors.append([(x, y - 1), matrix[y - 1][x]]) + except IndexError: + pass + + # down + try: + if _dict: + neighbors.append({'x':x,'y':y+1,'value':matrix[y+1][x]}) + else: + neighbors.append([(x, y + 1), matrix[y + 1][x]]) + except IndexError: + pass + + return neighbors + + +def get_neighbor_coords(matrix, c, r, diagonals=True): + height = len(matrix) + width = len(matrix[0]) + if diagonals: + coords = ( + (-1, -1), (0, -1), (1, -1), + (-1, 0), (1, 0), + (-1, 1), (0, 1), (1, 1), + ) + else: + coords = ( + (0, -1), + (-1, 0), (1, 0), + (0, 1), + ) + neighbors = [] + + for _c, _r in coords: + try: + value = matrix[r + _r][c + _c] # Try to get a value error + if (r+_r>=0 and c+_c >= 0): + neighbors.append( + [{"c": c + _c, "r": r + _r}, value] + ) # woo, no error, this coord is valid + except IndexError: + pass # okay we out of bounds boizzzz + return neighbors + + +def get_column(matrix, col): + pass + + +def matrix_of_size(width, height): + return [[0] * width for x in range(height)] + + +def get_size(matrix): + height = len(matrix) + width = len(matrix[0]) + return height, width + + +def pmx(*matrices, pad=True, space=True): + if len(matrices) > 1: + matrices = list(zip(*matrices)) + for row in matrices: + r = [] + for col in row: + r.append("".join([f"{int(x)or '.'}".rjust(3) for x in col])) + print(" ".join(r)) + else: + for row in matrices: + for c in row: + if pad: + f = lambda x: f"{int(x)or '.'}".rjust(2) + if space: + f = lambda x: f"{int(x)or '.'}".rjust(3) + else: + f = lambda x: f"{int(x)or '.'}" + if space: + f = lambda x: f"{int(x)or '.'} " + print("".join([f(x) for x in c])) + +def ppmx(*matrices, pad=True, space=True): + if len(matrices) > 1: + matrices = list(zip(*matrices)) + for row in matrices: + r = [] + for col in row: + r.append("".join([f"{x or '.'}".rjust(3) for x in col])) + print(" ".join(r)) + else: + for row in matrices: + for c in row: + if pad: + f = lambda x: f"{x or '.'}".rjust(2) + if space: + f = lambda x: f"{x or '.'}".rjust(3) + else: + f = lambda x: f"{x or '.'}" + if space: + f = lambda x: f"{x or '.'} " + print("".join([f(x) for x in c])) diff --git a/2021/python/shared.py b/2021/python/shared.py new file mode 100644 index 0000000..07df547 --- /dev/null +++ b/2021/python/shared.py @@ -0,0 +1,31 @@ +def get_fname(day: int) -> str: + import sys + + if sys.argv[-1] == "--sample": + return f"../samples/day{day:02}.txt" + else: + return f"../full/day{day:02}.txt" + + +def load_file_char_matrix(name): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [list(x) for x in my_file] + + +def load_file_int_matrix(name): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [list(map(int, x)) for x in my_file] + + +def load_file_word_matrix(name): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [x.split(" ") for x in my_file] diff --git a/2021/samples/day01.txt b/2021/samples/day01.txt new file mode 100644 index 0000000..167e291 --- /dev/null +++ b/2021/samples/day01.txt @@ -0,0 +1,10 @@ +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 diff --git a/2021/samples/day02.txt b/2021/samples/day02.txt new file mode 100644 index 0000000..b7172ac --- /dev/null +++ b/2021/samples/day02.txt @@ -0,0 +1,6 @@ +forward 5 +down 5 +forward 8 +up 3 +down 8 +forward 2 diff --git a/2021/samples/day03.txt b/2021/samples/day03.txt new file mode 100644 index 0000000..a6366a8 --- /dev/null +++ b/2021/samples/day03.txt @@ -0,0 +1,12 @@ +00100 +11110 +10110 +10111 +10101 +01111 +00111 +11100 +10000 +11001 +00010 +01010 diff --git a/2021/samples/day04.txt b/2021/samples/day04.txt new file mode 100644 index 0000000..669a51d --- /dev/null +++ b/2021/samples/day04.txt @@ -0,0 +1,19 @@ +7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 + +22 13 17 11 0 + 8 2 23 4 24 +21 9 14 16 7 + 6 10 3 18 5 + 1 12 20 15 19 + + 3 15 0 2 22 + 9 18 13 17 5 +19 8 7 25 23 +20 11 10 24 4 +14 21 16 12 6 + +14 21 17 24 4 +10 16 15 9 19 +18 8 23 26 20 +22 11 13 6 5 + 2 0 12 3 7 diff --git a/2021/samples/day05.txt b/2021/samples/day05.txt new file mode 100644 index 0000000..cc61808 --- /dev/null +++ b/2021/samples/day05.txt @@ -0,0 +1,11 @@ +0,9 -> 5,9 +8,0 -> 0,8 +9,4 -> 3,4 +2,2 -> 2,1 +7,0 -> 7,4 +6,4 -> 2,0 +0,9 -> 2,9 +3,4 -> 1,4 +0,0 -> 8,8 +5,5 -> 8,2 + diff --git a/2021/samples/day06.txt b/2021/samples/day06.txt new file mode 100644 index 0000000..55129f1 --- /dev/null +++ b/2021/samples/day06.txt @@ -0,0 +1 @@ +3,4,3,1,2 diff --git a/2021/samples/day07.txt b/2021/samples/day07.txt new file mode 100644 index 0000000..18bd32a --- /dev/null +++ b/2021/samples/day07.txt @@ -0,0 +1 @@ +16,1,2,0,4,2,7,1,2,14 diff --git a/2021/samples/day08.txt b/2021/samples/day08.txt new file mode 100644 index 0000000..c9f629b --- /dev/null +++ b/2021/samples/day08.txt @@ -0,0 +1,10 @@ +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | fdgacbe cefdb cefbgd gcbe +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | fcgedb cgb dgebacf gc +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | cg cg fdcagb cbg +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | efabcd cedba gadfec cb +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | gecf egdcabf bgf bfgea +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | gebdcfa ecba ca fadegcb +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | cefg dcbef fcge gbcadfe +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | ed bcgafe cdgba cbgef +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | gbdfcae bgc cg cgb +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | fgae cfgab fg bagce diff --git a/2021/samples/day09.txt b/2021/samples/day09.txt new file mode 100644 index 0000000..6dee4a4 --- /dev/null +++ b/2021/samples/day09.txt @@ -0,0 +1,5 @@ +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 diff --git a/2021/samples/day10.txt b/2021/samples/day10.txt new file mode 100644 index 0000000..b1518d9 --- /dev/null +++ b/2021/samples/day10.txt @@ -0,0 +1,10 @@ +[({(<(())[]>[[{[]{<()<>> +[(()[<>])]({[<{<<[]>>( +{([(<{}[<>[]}>{[]{[(<()> +(((({<>}<{<{<>}{[]{[]{} +[[<[([]))<([[{}[[()]]] +[{[{({}]{}}([{[{{{}}([] +{<[[]]>}<{[{[{[]{()[[[] +[<(<(<(<{}))><([]([]() +<{([([[(<>()){}]>(<<{{ +<{([{{}}[<[[[<>{}]]]>[]] diff --git a/2021/samples/day11.txt b/2021/samples/day11.txt new file mode 100644 index 0000000..03743f6 --- /dev/null +++ b/2021/samples/day11.txt @@ -0,0 +1,10 @@ +5483143223 +2745854711 +5264556173 +6141336146 +6357385478 +4167524645 +2176841721 +6882881134 +4846848554 +5283751526 diff --git a/2021/samples/day12.txt b/2021/samples/day12.txt new file mode 100644 index 0000000..65f3833 --- /dev/null +++ b/2021/samples/day12.txt @@ -0,0 +1,18 @@ +fs-end +he-DX +fs-he +start-DX +pj-DX +end-zg +zg-sl +zg-pj +pj-he +RW-he +fs-DX +pj-RW +zg-RW +start-pj +he-WI +zg-he +pj-fs +start-RW diff --git a/2021/samples/day13.txt b/2021/samples/day13.txt new file mode 100644 index 0000000..282114c --- /dev/null +++ b/2021/samples/day13.txt @@ -0,0 +1,21 @@ +6,10 +0,14 +9,10 +0,3 +10,4 +4,11 +6,0 +6,12 +4,1 +0,13 +10,12 +3,4 +3,0 +8,4 +1,10 +2,14 +8,10 +9,0 + +fold along y=7 +fold along x=5 diff --git a/2021/samples/day14.txt b/2021/samples/day14.txt new file mode 100644 index 0000000..b5594dd --- /dev/null +++ b/2021/samples/day14.txt @@ -0,0 +1,18 @@ +NNCB + +CH -> B +HH -> N +CB -> H +NH -> C +HB -> C +HC -> B +HN -> C +NN -> C +BH -> H +NC -> B +NB -> B +BN -> B +BB -> N +BC -> B +CC -> N +CN -> C diff --git a/2021/samples/day15.txt b/2021/samples/day15.txt new file mode 100644 index 0000000..ab80887 --- /dev/null +++ b/2021/samples/day15.txt @@ -0,0 +1,10 @@ +1163751742 +1381373672 +2136511328 +3694931569 +7463417111 +1319128137 +1359912421 +3125421639 +1293138521 +2311944581 diff --git a/2021/samples/day16.txt b/2021/samples/day16.txt new file mode 100644 index 0000000..a7f8f25 --- /dev/null +++ b/2021/samples/day16.txt @@ -0,0 +1 @@ +38006F45291200 diff --git a/2021/samples/day17.txt b/2021/samples/day17.txt new file mode 100644 index 0000000..f40609b --- /dev/null +++ b/2021/samples/day17.txt @@ -0,0 +1 @@ +target area: x=20..30, y=-10..-5 \ No newline at end of file diff --git a/2021/samples/day18.txt b/2021/samples/day18.txt new file mode 100644 index 0000000..77bf4bc --- /dev/null +++ b/2021/samples/day18.txt @@ -0,0 +1,3 @@ +[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] +[7,[[[3,7],[4,3]],[[6,3],[8,8]]]] +[[1,2],[3,[4,5]]] diff --git a/2022/full/day01.txt b/2022/full/day01.txt new file mode 100644 index 0000000..dcd18ac --- /dev/null +++ b/2022/full/day01.txt @@ -0,0 +1,2236 @@ +2000 +12013 +5489 +11485 +2430 +7722 +5456 + +6693 +3867 +1645 +3924 +1545 +1910 +5443 +6276 +4574 +4147 +3942 +6322 +2904 + +3455 +4347 +3569 +1871 +2198 +4525 +1367 +4290 +3608 +1105 +3788 +2669 +4095 +4539 +5643 + +2604 +2317 + +14469 +11148 +21992 + +10429 +10440 +1343 +4878 +2948 +9949 +11600 + +5441 +9456 +6912 +5164 +8648 +1303 +6552 +2352 +3902 + +8892 + +5874 +5476 +5816 +6062 +4749 +7295 +5274 +3757 +4919 +1381 +2456 + +5666 +5732 +2628 +3367 +1078 +4688 +9294 +2707 +7664 + +5401 +5514 +2397 +2682 +4270 +4617 +4239 +3388 +3777 +4618 +3126 +3569 +2170 +2255 +2016 + +5280 +3530 +4338 + +5903 +3387 +4212 +4947 +6546 +2273 +3289 +1591 +3206 + +8124 +13697 +5396 +4215 + +10125 +3806 +1106 +3350 +3431 +5926 +7847 + +5469 +5422 +2685 +5531 +4385 +4847 +2398 +3642 +2325 +1926 +3775 +3297 +5138 +1024 +2836 + +25034 +3503 +5769 + +1671 +8174 +11469 +9030 +7977 +3121 + +2292 +2384 +2367 +2859 +5515 +1402 +3983 +2785 +4189 +3664 +2638 + +8501 +5749 +4371 +7714 +3618 +8797 +7521 +4810 +5952 + +11970 +3818 +8416 +2058 +3409 +5663 +2814 + +69727 + +17674 +13729 +3317 +9347 + +3510 +2853 +1174 +8648 +3013 +3180 +5821 +8659 +2097 +1476 + +6002 +5173 +7120 +7164 +7458 +1809 +3670 +7347 +5794 + +4942 +1785 +4233 +2135 +1376 +2520 +1378 +2773 +3397 +2282 +1569 +6008 +5744 +1410 +1262 + +6555 +21542 + +5022 +2557 +2845 +3449 +4442 +1529 +3932 +3888 +5702 +5524 +1829 +2792 +4951 +4197 +5339 + +4528 +7367 +7203 +3805 +3022 +2283 +5165 +4720 + +2529 +7119 +5022 +4026 +6782 +7010 +2746 +4621 +6460 +6438 +3916 +6198 + +8188 +7839 +1230 +7053 +5874 +1743 +6466 +3943 +4229 +3021 + +1633 +5005 +3953 +4288 +5359 +7236 +6473 +7179 +4113 +2967 +1069 +5298 + +9328 +8969 +1533 +7921 +3957 +7449 +9265 + +7288 +13654 + +13363 +10444 +7624 +5247 +4751 +13837 + +3745 +3728 +5915 +4513 +3818 +1513 +4459 +3653 +5544 +1338 +1238 +3669 +5828 +1106 +5085 + +6206 +1598 +4359 +2383 +2149 +6053 +3484 +3172 +1510 +2699 +5494 +5774 +2974 +3283 + +4445 +3583 +6550 +9320 +6905 +9518 + +1672 +6088 +1641 +4253 +5059 +1842 +5265 +5001 +2769 +3991 +4020 +5489 +2967 +4002 + +3001 +4264 +6668 +6710 +5047 +8208 +2616 +8105 +8447 + +18600 +8322 + +6235 +7323 +7792 +8248 +4100 +7035 +8449 +1210 +1192 +8322 + +7343 + +2856 +5366 +4283 +3323 +6541 +4019 +2086 +7435 +4204 +6713 +7217 +3566 + +6811 +11637 +15098 +12874 +5395 + +2458 +1446 +9495 +4442 +4083 +10324 +8491 +5798 + +4799 +7993 +9479 +9826 +4574 +5683 +7240 +3448 + +6258 +8840 +7347 +3031 + +2579 +5140 +4185 +2888 +1014 +1179 +1638 +7703 +2204 +2228 +3762 + +6131 +4685 +3479 +5372 +1684 +5034 +5408 +1289 +1485 +3238 + +5495 +4133 +7093 +1907 +1426 +6798 +1580 +4938 +5403 +6920 +6581 +2688 + +10432 +6345 +1313 +9521 +2652 + +11713 + +14255 +13867 +15482 +7519 + +5819 +4070 +7290 +12708 +10815 +3499 + +4093 +5266 +4175 +3484 +1079 +7116 +5720 +2947 +1490 +5802 +5832 +4027 + +5302 +4837 +4475 +6506 +2261 +5930 +4607 +4285 +2439 +1585 +5288 +4918 +4018 +4777 + +3993 +5624 +11935 +7174 +5086 + +20487 +32607 + +1000 +4167 +1648 +4736 +4700 +4988 +5027 +2712 +4757 +3660 +5855 +4279 +5947 + +16263 + +5100 +2601 +4242 +4474 +2536 +4038 +2529 +3851 +2317 +5986 +1252 +5888 +6087 +1136 +2814 + +6120 +5103 +4874 +5071 +2853 +3825 +1176 +6443 +5622 +4532 +6640 +5708 +4638 + +5743 +7765 +7447 +5287 +5795 +10093 +3239 +6527 + +1428 +3994 +1836 +4892 +1438 +1435 +5189 +6019 +4158 +5205 +5136 +1204 +2092 +4873 +1218 + +17476 +3121 +18812 +17122 + +9187 +14591 +13655 +7065 +15792 + +2341 +1577 +2445 +4855 +2657 +5445 +4048 +4569 +5963 +5044 +2136 +1759 +4685 +2679 +4660 + +9542 +9113 +7941 +13631 +11441 + +6754 +4063 +2779 +1508 +1170 +4159 +8253 +2180 +4129 +7077 + +4446 +4590 +1493 +1078 +5821 +4667 +3183 +4552 +4455 +5375 +1928 +5735 +4996 +5378 +2824 + +1548 +1205 +6097 +3363 +1700 +3600 +3328 +2977 +6557 +4861 +5367 +4588 + +3697 +5237 +3158 +2554 +3247 +4739 +4681 +1545 +5120 +5068 +4503 +5976 +6310 +2543 + +6680 +10760 +6051 +10641 +3566 + +8220 +7876 +9232 +7095 +2648 +5501 +6612 +3274 +2457 + +2712 +4371 +5504 +5360 +2857 +2830 +4816 +1280 +1656 +1684 +1486 +4828 +6423 +1417 + +1045 +9577 +3208 +4431 +4123 +9169 +2461 +10148 + +3064 +5159 +4043 +8403 +5156 +3064 +3536 +3217 +3155 +4971 + +10095 +1648 +3386 +7769 +8939 +12452 + +4251 +3782 +6474 +7009 +7544 +7002 +7021 +7772 +3741 +6936 +6434 + +5581 +2307 +5266 +2754 +6806 +6256 +2913 +4808 +4584 +4004 +5546 +4708 +5767 + +4983 +2055 +3830 +6590 +6740 +3801 +2573 +5583 +2100 +5639 +7335 +7202 + +4832 +2801 +2596 +2966 +2341 +1578 +5677 +1669 +2803 +3575 +1217 +1076 +1420 +1083 +3243 + +16734 +16781 +12618 +19292 + +15489 +4607 + +7462 +1425 +7387 +1314 +1882 +7505 +5348 +7688 +2949 +7299 + +14078 +9935 +11384 +5818 +5623 + +6522 +19523 +15630 +13173 + +3537 +6139 +1118 +1589 +4968 +5038 +5280 +4373 +7962 +4267 +1323 + +2307 +5224 +4833 +4980 +5326 +1991 +1244 +4500 +4363 +2821 +4733 +4762 +2921 +3086 +1901 + +2103 +13127 +11788 +13781 +8246 + +4062 +19254 +19281 + +3726 +3172 +3545 +2096 +5260 +4609 +6360 +3044 +3542 +3442 +2884 +6213 +3982 +4176 + +5618 +7100 +4100 +4484 +10523 + +4578 +21767 +18797 + +5804 +2039 +4951 +6614 +6712 +6601 +6723 +3273 +4967 +4251 +2717 +6879 +1130 + +3748 +1778 +2441 +2167 +6478 +6513 +1402 +5897 +5320 +1759 +3821 +1165 +2703 + +7785 +5718 +7591 +7405 +5215 +4948 +5360 +3833 +6676 +5336 +2322 + +9384 +5082 +8330 +3388 +7562 +9846 +6428 +2567 + +9425 +7189 +8053 +6364 +6519 +6651 +2533 +7207 +5083 + +9249 +3223 +13585 +5668 +1615 +4607 + +2413 +6755 +7232 +8941 +8094 +7381 +5055 +4533 +5926 + +5443 +3258 +2216 +1140 +1564 +3022 +4633 +6005 +3551 +2090 +4581 +3599 +5918 +2745 +2474 + +7269 +29961 + +24014 +1656 +15112 + +7256 +5880 +7761 +6115 +6998 +9817 +3909 +10327 + +7111 +7151 +14411 +7103 +4379 + +5629 +6790 +3207 +8582 +5495 +5001 +5746 +6514 +3874 +3418 + +48033 + +55352 + +17712 + +26192 + +4502 +2348 +5398 +1460 +3537 +1146 +5091 +5345 +4306 +5842 +2507 +1451 +2670 +5451 +3388 + +11840 +12162 +12739 +10712 +3310 +5666 + +1451 +3213 +3751 +11454 +1752 +3636 +1806 + +7334 +4388 +5412 +6933 +2190 +4459 +3381 +6348 +6496 +7301 +5371 +6646 + +3921 +5752 +4586 +1587 +5277 +4372 +2656 +5566 +5056 +3704 +4211 +1753 +3995 +2165 +5532 + +1727 +6476 +2534 +2477 +1148 +5239 +5307 +7327 +4054 +7851 +6930 + +4697 +2696 +2428 +5596 +2876 +1746 +4079 +7306 +2440 +4911 +1710 + +10476 +3062 +5844 +5147 +1883 +3752 +9934 +6027 + +8015 +6689 +3160 +2887 +1665 +2601 +8194 +4085 +1697 +2469 + +1753 +2578 +4683 +2644 +3087 +2515 +6491 +5682 +3961 +3249 +5121 +1165 +1473 +4068 + +5397 +5486 +5855 +5154 +8269 +1508 +1032 +7519 + +7692 +5792 +4375 +1173 +3946 +5005 +8464 +2453 +1922 +1893 + +1927 +1188 +6132 +1822 +8085 +6417 +6684 + +5178 +2048 +8063 +3690 +4662 +1628 +6887 +5722 +7857 +8631 + +8993 + +2860 +6116 +6941 +2070 +7288 +5318 +2652 +4299 +6755 +1441 +3203 +1748 + +5917 +2853 +4440 +3392 +3644 +2393 +1085 +6051 +2565 +2631 +4641 +2518 +1824 +5642 +5924 + +4764 +1055 +2484 +1925 +2232 +5127 +3225 +2121 +2186 +5038 +2716 + +24479 +8643 + +2867 +3981 +3058 +4040 +6531 +5535 +1039 +3116 +5489 +5158 +5460 +3323 +3215 + +10545 +6549 +4412 +6210 +8343 +10374 +5154 + +4381 +3278 +3891 +2751 +5091 +4845 +4298 +6630 +2909 +7551 +3107 + +4872 +4965 +4496 +3070 +1645 +4932 +5065 +2171 +2624 +5784 +4419 +5578 +4642 +2713 + +4642 +2714 +10705 +9640 +1399 +6387 +5252 +7016 + +9541 +1249 +5048 +9289 +9480 +8837 +4909 +7487 +8353 + +3978 +5490 +2898 +5709 +3938 +1814 +3809 +4040 +2176 +5688 +1884 +6412 +6864 + +9996 +32317 + +7417 +7170 +7507 +3805 +7964 +7075 +3843 +3455 +2809 +2909 +7161 + +4252 +1443 +5292 +3287 +5288 +5457 +3209 +3415 +1072 +5708 +4588 +1235 +2811 +3625 +5214 + +6408 +30501 + +5289 +7718 +6475 +2989 +2558 +4973 +7907 +4475 +8002 +4285 +7517 + +1989 +2992 +6113 +5009 +5438 +5115 +5923 +1605 +5285 +3161 +6176 +4008 +3803 +2853 + +6837 +13946 +6830 +2191 +5305 +6818 + +4630 +5907 +8041 +6326 +6155 +2804 +4927 +1890 +4410 +2479 + +8616 +12042 +7557 +9302 +3550 +5145 +9512 + +7975 +8541 +8278 +1930 +10634 +7828 +9461 +7555 + +4903 +4483 +6828 +7556 +5002 +5388 +7594 +3786 +5510 +1435 +2937 + +1652 +13742 +12057 +2081 +1835 +10753 + +9583 +7784 +10572 +5049 + +1825 +1844 +6445 +4803 +6480 +1823 +5178 +1785 +1964 +3261 +3736 +6179 +1474 + +2338 +7208 +4272 +3162 +8804 +1105 +3199 +8775 +9596 + +55557 + +1794 +6972 +9252 +7528 +9889 +8781 +6211 +5404 + +16416 +1570 +12987 +4782 + +4131 +1557 +5866 +5478 +2687 +6055 +2566 +2679 +3358 +4278 +3811 +2651 +3102 +5967 +5162 + +6250 +9703 +5470 +11096 +10740 +9661 +3837 + +4924 +4366 +5433 +2194 +5479 +4948 +4856 +2106 +5388 +3078 +2212 +5433 +2587 +4454 +5515 + +11890 +9537 +7022 + +6178 +4820 +4718 +1506 +3796 +4091 +2414 +2632 +2549 +5416 +2436 +4825 +2468 +4289 + +7074 +5761 +14281 +3437 +2925 + +2075 +4353 +4461 +9670 +8279 +8520 +4298 +6878 +8073 + +6162 +6378 +2835 +1313 +1321 +10490 +2249 +8191 + +6256 +3604 +2093 +3574 +5930 +2602 +1803 +8513 +6114 +3344 + +1430 +13233 +1690 +3032 +5910 +2246 + +6165 +2502 +5932 +6907 +7367 +6034 +1371 +2079 +5468 +4296 +6170 +1078 + +23178 +3808 + +27854 +19375 + +5861 +5506 +4757 +6075 +5432 +1111 +5629 +3145 +3755 +5346 +5442 +4707 +5765 +4569 +2783 + +2961 +3499 +6107 +2519 +1666 +1039 +4124 +1691 +6572 +3737 +1100 +5706 +3136 + +2962 + +15411 +6154 +8790 +12518 +7791 + +2242 +6736 +4039 +8306 +4600 +5255 +3039 +3580 +7944 +4855 + +3937 +2432 +2846 +2014 +3969 +4660 +2019 +2586 +3541 +5566 +5674 +4183 +2974 +5856 +1958 + +7021 +11044 +3687 + +6217 +2789 +6810 +4867 +7357 +5889 +6412 +7377 +3079 +1662 +5227 +6301 + +4362 +5552 +4927 +8808 +3339 +5795 +7918 +7131 +9104 + +11573 +21000 + +20018 +11773 +4418 +4415 + +4464 +3642 +5289 +4341 +3270 +3263 +3555 +1005 +5012 +4993 +6055 +7101 + +9336 +1496 +8827 +6642 +5093 +4205 +6397 +4493 +6916 + +6773 +4955 +5473 +4893 +3357 +7459 +3591 +7272 +3718 +6528 +6807 +2867 + +59816 + +6075 +1639 +15157 + +1665 +1561 +6003 +5483 +1795 +6164 +3933 +6998 +5216 +5136 +5143 +7065 + +4855 +5076 +2777 +1203 +6902 +2405 +3796 +8673 +6574 +6254 + +16039 +6855 +11922 + +18026 +8052 +16434 +14954 + +11381 +2762 +5314 +13850 +5874 +4704 + +2628 +1783 +2991 +7589 +7261 +8961 +8368 +4071 +3959 + +4984 +3604 +5401 +6458 +4894 +1871 +2268 +6735 +4139 +5772 +6534 +6199 + +2613 +4511 +14053 +15595 + +25475 +11850 +12168 + +34501 + +14232 +10228 +15816 +9481 +6643 + +5029 +7410 +3023 +2000 +7915 +5569 +1379 +2946 +7013 +4292 + +5447 +5243 +6352 +1660 +2347 +4029 +5794 +6723 +2073 +7518 + +7190 +1021 +1045 +5807 +4104 +4188 +5510 +3145 +2473 +3279 +1489 +2850 + +12531 +5773 +2373 +5971 +2821 +11792 + +6616 +1617 +6994 +2194 +7213 +5263 +4764 +2029 +6976 +6955 +1018 +3830 + +6011 +6522 +2785 +6336 +1221 +5433 +1998 +2990 +5341 +2213 + +15845 +16017 +6817 +2350 +9955 + +18485 +10512 +18191 + +10963 +18879 +1288 +12514 + +7206 +11431 +5079 +1767 +1478 +1173 + +1653 +1462 +5197 +3378 +3011 +6671 +5170 +2654 +6005 +7759 +5265 + +4457 +4696 +5685 +5934 +2295 +2864 +3115 +3941 +3921 +4557 +4973 +2993 +2151 +2311 + +6867 +7819 +4407 +2792 +1571 +3345 +1642 +7461 +5816 +6697 + +3291 +3084 +4832 +1195 +8411 +7009 +3863 + +6455 +5008 +7351 +5320 +3745 +3554 +4741 +1938 +6275 +6867 +6466 + +48508 + +6790 +4190 +1003 +5524 +5145 +3348 +1088 +5249 +6326 +3637 +5766 +4961 +3031 + +24120 +1811 +6650 + +3129 +4133 +3814 +2893 +3749 +6315 +2418 +2726 +3483 +3877 +2043 +5079 +4440 +1787 + +8110 +5553 +6158 +4811 +3133 +3737 +2611 +2075 +4188 +5086 + +19318 + +5872 +6372 +5416 +1309 +6321 +7020 +3273 +4175 +3717 +5140 +7438 +5079 + +1336 +9155 +6709 +2722 +4065 +1618 +1492 +6562 + +5440 +4334 +4617 +3830 +2468 +2110 +1474 +2171 +4903 +5984 +3652 +3808 +4988 +3253 +5376 + +9374 +3614 +1620 +1340 +9642 +4596 +2325 +3680 +6480 + +6328 +1140 +4212 +4673 +6003 +3907 +1897 +5136 +5398 +5164 +1340 +6152 +5189 +5705 + +4086 +4307 +4252 +3336 +2311 +1017 +5877 +2410 +2087 +2151 +2581 +3720 +4578 +3279 +2417 + +14837 +8046 +6307 +12835 + +6737 +5747 +5476 +3975 +8761 +1607 +3930 +5819 +6597 + +2404 +4632 +9393 +2482 +7537 +10334 +6698 +1194 + +7778 +11298 +6485 +1039 +11800 +4406 +4824 + +1317 +7026 +8237 +6529 +5450 +8785 +4565 +5485 +2066 +5517 + +15025 +18252 +18684 +11672 + +4554 +1621 +2494 +4759 +7009 +2702 +6973 +1681 +7204 +2369 +5719 +5105 + +7942 +3730 +9426 +12559 +11015 +2978 + +1535 +9079 +1988 +7192 +7933 +1625 +7926 +1389 +3112 + +3316 +1145 +4696 +7752 +8697 +3344 +11835 + +1354 +1589 +7545 +6150 +6746 +2918 +6788 +4965 +5385 +6289 + +16280 +7614 +19318 +10871 + +1389 +5027 +2440 +10135 +13799 + +1323 +5820 +5780 +4612 +3452 +4654 +2567 +1202 +1445 +1458 +3210 +4807 +2684 +1996 +1384 + +4093 +8449 +1615 +5801 +4196 +6076 +7989 +5862 +6156 +4328 + +18948 + +3089 +7778 +7239 +5381 +2587 +1405 +4676 +6439 +7005 +2918 + diff --git a/2022/full/day02.txt b/2022/full/day02.txt new file mode 100644 index 0000000..cd1c629 --- /dev/null +++ b/2022/full/day02.txt @@ -0,0 +1,2500 @@ +B Z +A X +C X +C X +C Z +C X +C X +A Z +C X +B Z +B Z +C X +A X +C X +C X +C X +C Y +C X +C Z +C X +C X +C X +C X +C X +C Z +C X +C X +A X +C X +B Y +A X +B X +A Z +C X +B Y +A X +C Z +C X +C Z +A X +A Y +B Z +A Z +C X +A Z +A Z +A Y +C Y +A Y +A Z +C X +A Y +B Y +A Z +B Y +C Z +A X +C X +C Z +B Z +C X +B Y +C X +A Z +C X +A X +C X +C X +A Z +B Z +C X +C X +C Z +C X +B X +C X +A Z +A X +A Y +A Y +A Z +C X +C Z +C X +B Y +C X +C X +A X +A X +C Z +C X +B X +C Z +C X +C X +C X +B Z +B Y +A Z +C X +A Z +C X +C Z +A Z +C X +A X +C X +C Z +C Z +C X +C Z +A Y +C X +A X +A Z +A X +C Y +B X +C X +A X +A Y +A X +B Y +A X +C X +B Y +A Z +C X +B X +C X +A Y +C Z +C X +C Z +C X +A Y +A Z +C X +A Z +B Y +C X +A Z +C X +C Z +B Z +C X +C Z +C X +C Z +C X +A Y +C X +C X +A Z +C Z +C X +A X +C X +C X +B Y +C X +C X +C X +C X +C X +A Y +C Z +C X +C X +C Z +B X +C X +C X +C Z +B Y +B Y +C X +C X +A Z +C Z +C X +C Z +C X +A Y +A X +A X +A Y +C X +C X +C X +A Z +B Z +C Z +A Y +A Y +C X +C X +B Y +C X +C X +C X +A Z +B Y +B Y +C X +C Y +C X +C Z +B Y +C X +C X +C Z +A X +B Y +C X +A Z +C X +A Z +C X +A Z +C X +C Z +C X +A Z +C X +A X +C Z +A Z +A Y +C X +C Z +B Y +A Z +C X +B Y +B X +A Z +C X +C Y +A X +C Z +A X +C Z +C Z +C Z +A Z +C X +C X +A Z +C X +A X +C X +B X +C X +C X +C Z +C X +C X +C Z +C X +A Y +C Z +C Z +A X +A Z +B X +C X +C X +B X +C Y +C X +A Y +C Z +A X +C X +A Y +A Z +C X +A Y +A Z +A Z +C Z +C X +A Y +C X +A X +C X +C X +C X +A Z +C X +C X +A Z +A X +C X +B Y +B X +C X +C X +A Y +A Z +B Z +C Z +A Z +A X +C Z +A X +C X +B X +C X +B X +C X +A X +C Z +C X +A Z +A Y +C X +C Z +C X +A X +C X +B Y +A Z +C X +C Z +A X +C X +A Z +C X +B Y +C X +C Y +C Y +B Z +C Z +A X +B Z +C X +C X +A Z +A X +C X +A X +B Z +A Z +B Y +B Y +C X +C X +A Z +A Z +B Z +A Z +A Z +A Z +B Y +C Z +A Y +A X +C X +C X +C X +C X +C Z +B Y +C X +A Z +B Y +B Y +C X +C X +A X +C X +C Z +C X +A X +A Z +C Z +C Z +B Z +B Y +C Z +C Z +A X +B Y +C X +C Z +B Y +C X +C X +C X +C X +B Z +C X +B X +C Y +C Z +A Z +C X +C X +C X +A Z +C X +B Z +C Z +C Z +C X +C Z +A Z +C X +C X +C X +C Z +C Z +C X +C X +C Z +C X +C Z +C X +A Z +C X +B Z +B X +B Z +A Z +A Z +B Y +C Y +C X +C X +C X +C X +A X +C X +A X +C X +C X +A Z +C X +C X +B Y +C Z +C X +C X +A Y +A X +C Z +C Z +C X +C X +C X +B X +C Z +C X +C X +C X +B X +A Y +B Z +C X +B Y +C X +C X +C X +B X +B Y +A Z +A Z +A Z +C X +A Z +C Z +B Z +C X +A Z +C X +C X +C X +A Y +B Y +C X +B Y +C Z +C X +B X +A Z +C X +A X +C X +C Z +C Z +B Y +C Z +C X +C X +B X +C X +C X +C X +C X +A Z +B Y +A X +C X +A Y +B X +A Z +A Z +C X +A Y +C Z +A Z +A X +A Y +C X +C Z +C Z +C Z +C X +B Y +C X +A Y +C X +A Z +C X +C Z +C X +B X +C Z +C Y +C X +B Z +A X +B X +C X +B Y +C Z +C Z +C Z +C X +A Z +C Z +C X +C X +C X +B Z +C X +C X +A Z +C X +A Z +C Z +A Z +A Z +A Z +C X +A X +C X +A Z +A Y +C X +A Z +C X +B Y +A X +C Z +A Z +C Z +A Y +C X +A Z +C Z +C X +C X +C X +C Y +C X +A Y +A Z +A X +C Z +C Z +A Y +C X +C X +B Y +B Z +C X +B Y +C Z +C Z +C X +C Z +B Y +C Z +B Y +C Z +B Y +C X +A X +A X +C X +A Z +A Z +C X +C X +B Y +A Z +C Z +A X +C Z +C X +C Y +A Z +A Z +C X +C X +A X +C X +C Z +C X +B Z +C X +A Z +A Z +C X +A Z +A X +A Z +C Y +B Y +C X +C X +C Z +C Z +C Z +C Z +C X +A X +C X +B Y +C X +B Y +B Y +B X +C X +C X +C X +C X +C X +C Z +A X +C X +C X +A Z +A Z +C X +A Z +C X +C Z +C X +B Z +A Z +C X +C X +C X +C Z +A Z +B Y +C X +C X +C Z +C X +C X +C X +A Z +B Z +A X +C Z +C X +C X +A X +C X +C X +C X +A Z +A Y +C Y +C Z +C X +C Z +C Z +A Z +C X +C X +B X +C Z +A Y +C X +C X +C X +C Z +C X +C Z +C X +C X +C X +B X +C X +A Z +B X +B Y +C X +A Z +A Z +C X +A Y +C X +C Z +A Z +B Z +A Z +B Y +A X +A Y +B X +C X +B Z +C Z +B Y +C X +A Z +C Z +C Z +C Z +B X +C X +A X +B Y +C X +C X +A X +B Z +B X +C X +C X +A X +C X +C X +C X +C X +C Z +C X +A Z +B Y +A Y +B Y +A X +C X +A Y +A Z +C X +C X +B Y +C X +B Y +C Z +C X +C X +B Y +C X +A Z +C Z +C X +C X +C Z +C X +C X +B Y +B Y +C X +C X +C X +C X +C X +A Z +C X +C X +B Z +B Y +A Z +C X +C X +C X +A Y +C X +A Y +A X +A Z +B X +C X +A X +B X +A Z +C Z +C X +A Z +A X +C X +C X +C X +C X +B Z +A X +A X +C Z +C X +C X +A Y +C Z +C X +B Y +C X +B Y +C X +C X +B X +C X +A Z +C Z +C X +C X +C X +C X +A Z +A Y +C Z +C X +B X +A Y +A X +A X +B X +C X +C X +A X +C X +C Z +A X +C Z +C X +B Y +C X +C X +C Z +C X +B Z +C X +C X +C Z +B Z +C X +C Z +A Z +C X +B X +C X +C X +C X +C X +C X +C X +A Z +A Z +B Z +A Y +A Z +B X +A Y +B Y +C X +C X +C Z +C X +C X +C X +A Y +C X +C X +B X +C Z +C X +C X +C X +C X +B Y +A Y +C X +A Z +C X +C X +C Z +C X +C Z +C X +C X +B Y +A Z +B X +A X +C X +C Z +C X +C X +C X +C X +C X +B Z +C X +C X +C Z +B Y +C X +B Y +C X +C X +C X +C X +C Z +C X +A Y +C X +C Z +A Y +A X +B Z +C Z +C X +A X +C X +A Y +C X +C X +B X +C X +B X +B Z +A Z +A X +C X +A Z +C X +C X +C X +C X +A Y +C Y +A X +C Z +A Y +C X +A Z +C X +C X +C X +A Y +C X +C X +C X +C X +A X +C X +A Z +A Z +A X +A Z +C Z +C X +B Y +A Y +C X +C X +C X +C X +A Z +C X +A Z +B X +B Y +C X +A Z +A X +C X +C Z +C X +C X +C Z +C X +C Z +B X +C X +C X +C X +A X +A Z +C Z +C Y +C X +A Y +B Y +C X +B Y +C X +C X +C X +A Z +C X +B Z +A Y +C X +C X +B Y +A X +C Z +C X +B Y +C Z +A Y +B Y +B Z +C X +C X +A Z +C X +C Z +C Y +A X +B Y +C Y +A X +C Z +C Y +C X +A Y +B Z +C X +A Z +C X +B Y +C X +C Y +C X +C Z +C X +A Z +C Z +C X +C X +C X +B X +A Z +C X +C X +C Z +C Y +C Z +C X +C X +C Z +A X +C Z +C Y +B Y +C X +B Y +C Z +C X +C X +C X +A X +B X +C X +B Z +A Y +C X +C Z +B Y +C X +C X +C X +C Z +C X +C X +C X +C X +A Y +C X +B X +C Y +A X +B Y +A Z +C X +C X +A Z +C Z +C X +C Z +A Y +A X +C Z +A Z +C Y +A Z +B Y +C X +A Z +C X +C Z +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C Z +B X +A Y +C X +C X +C Z +A Y +A Z +A Z +B Y +C X +C Z +C X +C Z +C X +C X +C X +C X +A Z +A X +A Z +C X +A Y +B Y +C X +C Y +A Z +B X +C Z +A X +C X +C X +C X +C X +C X +A Y +A Z +C X +C X +A X +C Z +A Z +A X +C X +B Y +A X +C Z +B Y +C X +A Z +B Z +C X +C Z +C Z +B X +B Y +C Z +A X +C Z +C Z +A Y +A Y +C X +C X +C X +C X +A Y +C X +A Z +C X +C X +C X +C X +C X +B Y +C Z +C X +C X +C Z +C X +C X +B Z +C X +A Z +A Z +C X +A X +C X +C X +B Z +C X +A Z +C X +B X +C X +C Z +C X +A X +C X +B Y +A X +C Z +C Z +C X +C X +C Z +C X +C X +C X +A Z +A X +C X +B X +C Z +A Z +C Z +B Z +C X +A X +C X +C X +C Z +C X +A Y +A Y +C Z +C X +B Y +B Z +C X +B X +C X +C X +A Z +C Z +C Z +C X +B X +A Z +C X +C Z +A X +C Z +C Z +A Z +A Y +A Z +C X +C X +C X +A Z +A Y +C X +A Z +B Z +C X +B X +B X +C Z +C Z +C Z +C X +C X +C X +A Z +C X +C X +C X +C X +A Z +C X +C Y +A X +C X +C X +B Y +C X +C X +A X +C Z +C Z +C Z +A Z +C X +C X +C X +A Y +C Z +C X +C X +C X +C Y +C Z +C X +C X +C X +C X +A Z +C X +C X +A X +C X +A X +C X +C X +A Z +C X +C X +A Y +C Z +A X +A Y +C X +A Z +B Y +B Y +A X +C Z +C X +C X +C X +A X +A Z +B Y +C X +A Y +C X +C X +B Y +C X +C X +C X +B Y +C X +C Z +C X +C Z +A Y +B Y +C X +C Z +C X +B X +A Z +C Z +C Z +C Z +C X +B Z +C X +B X +C Y +C Z +C X +C X +C Z +A Z +B X +C X +C X +A Z +C X +A Z +C X +A Y +C X +C Z +A Z +A X +C X +B X +C X +C X +C X +C Y +B X +C X +B Y +C X +C Y +A Z +A Y +C X +A Z +C Z +A Y +B Y +C Z +A X +A X +B X +C X +C X +C Z +A X +B Y +A X +C Z +C X +C X +C X +A X +C X +C X +C X +C Y +C X +C X +C Z +C X +C X +C X +A Z +B X +A Z +C X +A X +C X +B Y +B Z +C X +C X +A Z +C X +A Y +B X +C X +C X +C Z +B Y +C X +A Y +C X +B Z +C X +A Z +C Z +C X +C X +C X +C Z +A X +B X +C Z +B Y +C Z +C X +B Y +A Z +C X +C X +C X +C X +C Z +A X +A Y +A Z +C X +C X +B Y +B Y +C X +A X +B Y +A Y +C X +C X +C X +A X +B X +B Y +A Z +C X +C X +C Z +A X +C X +A X +A Z +C X +A Z +C X +C Z +C Z +B Z +C X +B Y +C Z +C X +A Z +C X +C X +C X +C X +C X +C Y +C X +C X +A Z +C X +A X +A Y +B Y +C X +A Y +B X +C Z +C X +A Z +C X +C X +C X +A Z +B Z +C Z +B Z +C X +C X +C Y +C Z +C X +C Z +C X +C X +C X +B X +C X +C X +A Z +B Y +C Z +C Z +C X +A Z +B Y +A X +C X +A Z +C Z +C X +C X +A Z +A X +C Y +B Z +A X +C X +A Z +C X +C Z +A Z +C X +A Y +C X +C X +B Z +C X +C Z +A Z +A Z +C X +B Z +B X +A Z +A X +C X +C X +C X +C Z +C X +A X +C X +C X +B X +C Z +C X +C X +C Y +A Z +B Y +A Z +B Y +C X +A Z +C Z +C Y +B Z +A X +C X +C X +A Y +B Y +A X +C Z +A Z +C X +C X +B Y +B Y +C X +C X +C X +C X +C X +C Z +A X +A X +A X +C Z +C X +A X +C Z +B Z +C Z +C X +A X +A Y +C X +A Z +C X +C X +C Z +C Z +C X +A X +A X +C Y +A Y +C X +C Z +A X +A Y +A Z +B Y +C X +B Y +A Z +B X +C X +C Z +C X +B Z +A Z +A Z +C Z +C X +C X +C Y +C X +B X +C X +C Z +A X +C Y +A Z +C X +C X +A Z +A Z +A Z +C Z +A Z +C X +B X +B Y +C X +A Z +C Z +C X +C X +C X +A X +B Y +A Z +B Y +C X +B Z +A Z +C Z +C Z +C X +C X +C X +A Z +C X +A X +C Z +A Y +C X +A Y +C X +C Z +C X +C X +C X +B Y +C X +B Y +C Z +B Y +B Z +A Z +A X +C Z +C X +C X +B Y +B Y +A Z +C X +C Z +C Z +C Z +B Z +B Y +B X +C X +C X +C X +C Z +C X +C X +B Y +C X +C X +B Y +C X +C X +C X +C X +A Y +C X +C X +A Z +C Z +A Z +A Z +A Y +A Z +C Z +C X +C X +C X +C X +B Y +A Z +C X +C X +B Y +A Y +A Z +A Z +C Z +C X +C Y +C X +C X +B Y +C X +A X +B X +B Y +C Z +A X +C X +C X +A X +C X +A Y +A Y +C X +C X +B Y +C X +A Z +C Z +A X +C X +A Z +C X +C X +C X +C Z +A Z +B X +C X +A Z +C Z +B Y +C X +C X +B X +C X +C X +A Y +B Z +B Y +C X +C X +C X +C Z +C X +C X +C X +B Y +C X +C Z +C X +A Z +B Y +A X +B Y +A Z +C X +C X +A Z +B Y +C X +A Z +C X +A Z +A Z +B Z +A Y +A Z +C X +C Z +C X +A X +C X +B Y +B X +C Z +C X +B Y +C Z +C X +B Y +C X +C Y +C Z +A X +B Z +C X +C X +C Z +A Z +C X +C Z +A Z +C X +C X +C Z +C Z +B Y +A Z +C X +B X +B Y +C X +C X +C X +C X +B Z +A Z +C X +A Z +A X +A Z +C X +A X +C Z +A Z +C Z +B Z +B Y +C X +A X +C Z +C Z +A Y +B X +C X +C X +A X +C X +C X +C X +A Z +A Z +C X +A Z +C Z +C Z +C X +C Z +B Y +C X +C X +C X +A Z +A Z +C X +C X +C X +C Z +A Z +C X +A X +C Z +C X +B Y +C X +C Z +C X +C X +A X +A X +B Y +C Z +C X +C Z +A Z +C X +A X +A Z +C X +C X +C Y +C X +A Z +C X +A Z +B X +A X +A Z +A Z +A Z +A Y +A X +C X +C X +A Z +C Z +C X +C X +A Z +C Z +C X +C X +C X +C X +C X +C X +A Z +A Y +C Z +C X +A Z +A X +C X +C Z +A Z +C X +B Y +A Z +A Z +C X +A Z +C X +C X +A Z +C X +C Y +C X +C X +B Y +A Y +A Z +C X +C X +B Y +C X +C X +C Z +C Z +C X +B X +C X +C Z +A Y +C Z +B Y +C X +C X +B Y +A Z +B Y +C Z +A Y +A Z +B Y +A X +C X +C X +C Z +C X +A X +C X +C X +C Z +A Z +A Z +A Z +C Z +B X +A Z +A Z +C X +C X +C X +A Y +A Z +C Z +C X +C Z +C X +A Z +C Z +A Z +C X +B Y +C Z +C X +C X +A Z +C Z +C Z +B X +C Z +C Z +A Z +A Y +C X +C X +C Z +C X +A X +C X +C X +C X +C Z +B Y +B Y +C X +B Y +C X +C X +C X +A Z +B Z +C X +C X +C X +C X +C Z +C X +C X +C X +A Z +C X +B Y +C X +A Y +B Z +A Z +C X +B X +A Y +C Z +C X +C X +C X +C Z +A Y +C Y +C X +A Y +A Y +C X +C X +C X +C X +C Z +B X +C X +C X +C X +A Z +B X +C X +C X +B Y +C X +C X +C X +A Z +C X +C X +C X +B Y +C X +B Z +B X +C Z +C X +C Z +C X +B X +A Z +C X +C X +A Z +C Z +C X +A Z +B Z +C X +A X +A Z +C Z +C X +C X +B X +B X +C X +B X +C X +C Z +C X +C X +A Y +A X +A X +C Z +C Z +A Z +C Z +C X +C X +C X +C Z +A X +C Z +A X +C Z +C X +C X +A Y +C Z +A Z +A X +A Z +B Y +C X +C Z +C X +C X +A X +A X +C X +C X +C X +C X +A Z +C X +C Z +A X +C X +B Y +C Z +C X +A X +C X +C Z +C X +A X +A X +A X +C X +A Z +A X +C Z +C Z +C X +C Y +A Y +C X +C X +B X +C X +C X +C Z +B Y +A Z +C X +B Y +A Z +C Z +A Z +A Y +C Z +B Z +A X +B Z +C Z +A X +C Z +A Z +A Z +B Z +C X +C X +C X +C X +A X +C X +C X +C X +C X +C X +B Y +C X +C X +C X +B Z +A Y +A X +C Z +C X +A Y +B Y +C X +A Y +A Z +B X +A Z +C X +B Y +C X +A Z +A Z +C X +A Z +A Z +C X +A X +A Z +C Z +B Z +C X +A X +C Y +A Y +C X +A Z +C X +C X +C X +C Z +C X +C X +C X +A Y +B Z +A X +A Z +A Z +C X +A X +B X +C X +B X +C X +A Z +A X +C X +A X +A Y +A Y +A Z +A Z +C X +B X +C X +A Y +C Z +A Z +C X +C X +A Y +A Z +B Y +C X +C X +C X +C X +C X +A Z +C Z +C X +C X +C Z +C X +C Z +B Y +C X +A Z +B X +C Z +C X +C Z +C Z +C Z +C X +C X +C Z +C X +C Z +B Y +C X +C X +A Z +C X +C X +B Y +C X +C Z +C X +B X +C Z +A X +C X +C Z +C X +C Z +B Y +C X +A Z +A Y +C X +C Y +B Z +B X +C X +C X +C Z +C X +B Y +C X +A Z +A Y +C X +B Y +C X +C Z +B Y +C X +A Y +C X +C X +C X +A Z +C Z +C X +C X +A X +A Z +C X +C X +A Y +C X +B Y +C Z +C Z +C Z +B Y +C X +C X +C X +C X +A Y +A Z +A X +C Z +A Z +A Z +A Z +C X +A Y +B X +A Z +C X +C X +B X +C X +C X +C X +B Y +A Z +A X +A Z +C X +B X +A X +C X +C X +C X +C X +C X +C Z +A Z +C X +C X +C Z +C X +A Y +A Z +C X +A Z +C X +A Z +C Z +A Z +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +B Z +C X +A X +C Z +C X +A X +C Z +A X +B Y +A Y +C X +A Z +C X +C X +C X +C X +C X diff --git a/2022/full/day03.txt b/2022/full/day03.txt new file mode 100644 index 0000000..0087426 --- /dev/null +++ b/2022/full/day03.txt @@ -0,0 +1,300 @@ +QJRBMDMtRDCtJzBtJMfjNjhwvmNDvwjLVVgh +TPSNNPZGTjgmSmvfjL +bPlpZZbpsTlTsWprpGFCJtRtzMNdMMBBcWnJQB +tppvbQBhpQQdrzMMcLwhMc +gZnWRccRNgFGRGRFRNNgZgJMddddLLLMCPqwLCNPwqPJ +nRRmFSnWmlgZlTlTllSlSWWWTsfvfDQpBfBcpQvpVQpTfQQf +lRlsVFgTlMgRNsSNTlFgmbWnMPppPnMqWZMWPPWW +fDjgBJdCfCHHBnfLWpqnmnpZmf +GjQHHcdvJHQBHSSNsFQFslwwRg +NPwDLDHNwjLLHWjbdSbDfJJQTZsZDS +BcFBcvgFvghnFLrBpvrgcgrJSZJpQdfSTZbCsSdfZZfbCf +VrngVFRmrVWHLGVMlL +SNBBBDlfZDLqNGmgFjjmBsQgCFtF +VPPVbhpbhMhRhncnScRncbrQtCgQQFmjjjsgtRtQHmFQ +nhWcPJVhpbvMvwvwllvSlGlD +wNlNNqtqHHHPhqCz +MMMMcQSWSpQCWFnRRPchLVvPLLzhmhLzhh +CrgRSWrnrQpppRQrCTnRTRtGtBDBfbNBllbTJlZtfNBN +QNbbNrnNnCwHmNPQmzqQNPsCCfBFFGtsBBddBDtCJDJd +gvVgpZWgTWvRvlvLPDDJjGBfdsdpDDJGdd +ZRMWWRMVgRZghTggPSMZzQwwnqwmnzhNnNwHcQHm +VmPHzBmpmQHbVHSpNHBVQCtRPPCPvFFMqqntZCZqMR +dWlDcfcfcjcfDWjlsZfjJhdGvFLGnLsLqsRnvRvRGGRttC +wfJhZTllcfdZdfjJfjdmQzHVSzHzgHQTpHpmpV +qNnqmzmCBfvmDvBm +HcdhtQdttbbhtVcrVVDMfZvdMBTqsWZMBsWZ +HQGtctRblwqpNwRN +SBtBLBMZzPDDNFFDQnVVVnnDmf +dgCjblRdgRvrbwjJGzQQQzwJVJ +WpWbCWWvlgrcCHdvvCdvWbSLZzhhZhtLBPPStSPhMSpM +PlPnGGGzCqqlrqTRsbTmFRWgDPmR +wwpLtjwpzjDwFWRsWTWW +NZtJjHNNhHfnCBcJMBlCSz +wSrwggPrhJhCdddw +tLMNvMTFhDZdhTBh +LtMvFttGbNcWRsLFLsccRRgfnSrPjPnfljSfPWlnPhrS +TSZlwZSSccSHZLHVcllSvmDLmJhjDDffJmGjQjgQQJ +sdBdzsNnBMBstNNMFhNPNbPzgGfDgJrtrfjCjDrCfJmmDQJf +BnnBznRsFRFBsspzzbZpSTqVTpHVhpTvlqVW +VtVjjhdFmCCfhRRzzSDbDzpmgzmvgb +CHJqrswsWvbvJbpD +CqCPcZHGHTcsCBQsBrTGHMFnLVQjMjLVVhdhnFQVRL +tvlPSrlNNvtglTtPccldQdhbQbZdcqqZ +mRmBGHWmDFRsZqHrfbdhqhZZ +jjMGjWrJpttNjtgg +HPtCMJNjvJLMDZRdBgLSBSfsWBgG +VmnrhwwqhbbzrwnDrqpdWBgfdSdfBGgffGWRdh +qmnTFbVnpqVzpnvlDFJZDClNZPZN +NNRFQfzbNWhLHTVh +dGjptnrPqgvqjccvndnnPPhlHrVVTHLWMHlwmrlHMmVTWm +tDggGnPqDcPPpPpddjGhggtJCCSssfJbQsDfbZsbsbRZFQ +bqZWhbvvvqfvhqvQCChhZlllGwlwGjNRrNGrwGwNRQ +PmspSscJVJStzSVzWJlgwlwNlGRLDGrPgNwN +pdHmWMVStWJWFBBCCbMhCfbC +wtwbctGLwGWhGwfWwhNrnLrlrQFNmPNNVrrl +CSdqZRsMStdJMMSZqPnFmVqPQlnjNjqj +TMtsTBSSRZBCJStMJSZTHtfvpgvzzWwhbpwhggbzHpbW +HncMbCwCncHlcbMDMnMFGsNsJVFJGchVTTcmcG +RRfBRNjRLLJTLTThsq +zpBRjWRrRvBpNtRWrgwbrwQPDPMDwCnn +TDcPLTVRjntFwDwDnb +SJJhffHqHZZgHGSFFbdrGTGnGv +NQHWZgJQHNHgHQhlLLLBjpRTjLjMNNLM +sMNnNRNrlGlsZBrGsrFQpclWlWLfpWjtzTfDtpzj +gvhPgwTgdSHtHDtpDPLp +gwhSwdvTSTbSgRrZNrrNFFNBGb +rtZnDHJrrDtGtGHvGHDWfdfwCjcBhjBCffwwLv +lzVlzsTRsmzVNTspVsMMsmwCLcmjmcdbBBChwfBbCW +sVTMpTpppsVMsPRPVzMNFqMFwZtQrHZDGqgHZrSQQrQQJDGn +wGQQMMQvCTPPQnHPBS +FsWdJddszWrrRRJRTmRmpppRHBNPBppNHp +rWdFWlFJzbzzMTwcvvMbGMgc +WTnnTpqSnCLmjGgSgjztgg +rQRHQvbNLwrgtGtrmDglJt +PwHRNvQPsvHvPTTpLTcCLVnq +qTsqJDJHjjfMCSDj +RnGGNFGznzGVnBCWmfSMSLwWRwSj +NnBbVQFVCClctHQc +BHzmfDHfJLGcQBGgQLDcstNttlZgdlltldshgZZg +PwPPSJwPvSNZlvSl +CJwwjnJFFnWRMcMzcHMHRzGL +rmZpvcZcqccsqmqzzzcBRLBZbBBRLBlRGVdfZR +PwjFggwMDgNFwPgTwNFgtFJjfGLhBLsGRGbfBfBLbbTVLbdf +DWJwgDWMJJDWCCNHmrnscmqqcnpWSQ +bsRlVgMhtzHvhRvpzcLSZcTWLGzTTrGc +QJnDjmqjJdmDqqrGWWsZsZTc +nQPsnwCJdBDJDDJvhHhpMRCVlhlgRV +NBNwMCtNgqCHClHClq +JpQmFrQQfHfWjJTfLTjfLRRFRvnvhvnDGDcRcvVGGV +HTzzpzzdHgbBZZtdMB +SWcVvBFBVBjShWhGQtZnHFDHRGGQsR +pMZpmmJPbwbTTQttrDrRrttT +mZflqdlbMVcNjdWLSj +tvjdccdbLjhvhlcjRMvRTCQJmBPBCFRG +qgnqZfHpZDVnCpZzZJQFQBgmmPFJBmRQJQ +SHDZDDzpNVpfsNsHqpDSjLwCbbWLChwtwjtCWc +FsWTbcwmGfFFFrpl +LMhzdfqjLdHQQnSvldGvnS +VZjVNzfNLtjzDMhVDNtqDqwJwRmmmZJgmgcbWgRRwCbJ +ZJbPwwfJcGlwCrrZrMMddMMMtt +pTNvvSSHmmnbpFRp +SLSjSLDSQNLHNDbJbcfJclBzjGsz +WSQCWQWstCWCCgNNsDCZMZDBjjlLPnHMMLPrHlcrcLHHTjTh +bVFJFwfdRFFgjTPgnc +GmzRRqvRddbdRRdfJRJfsqsSSsZDsDBQZtCSgpgt +FPjprPpPCCFpFPHWsWvqnnllQsdLQMMlLtslLQMc +wmzJgzRSRRJghBbwGBBSbtGfLfGlcNnlltdddQtrMd +zDmRBmwDrpVFDTVDVp +FPGqjsZGlDJmzsHcTcTMMs +SQNLSvdbvVbrSbHcftGcrpHGfMmf +CNNGSCCdSCZqjqljZF +GvqpqrpqdqdsdGshSMhhRsSMhhlSlJ +DLCzzjzBwCbQWtQlRRFRRJFptfffgM +WzpLbLDbBcLPjWQWDBzzmnvNndHNqZqZNZNvcrNT +scHCGfWHsvWHVfGsggHfgvVcSLwLLPRwwDLPLllRPDzlPr +tbjqqNNTlPDTTSrD +QntmNbNnnddqJqqbFJHZWWHWJWvZHGVJsSsp +WZjpjwwGBGZQsqBLBHLHSRLP +mJhtdfVtDVJtvVLSmNRSccPPPlNHcH +JJLCFDhLCfVGGwbGGCwrGC +nBnsGSCrptmsLWGhWRvVRJVJ +rllMZZbcWWLJvhTl +MHwzczHwwHqZcdzMdbqSmwsssmtNCrBmtrnQNB +LzwrZNrNzBMrJBzJsfqqntMlVlSfhnhb +HTDPWDHPTgGHWTGcPFRgFpPPtfqmsfqlccmlSmnblbshqnmm +jWGgpRGPFRHjzdBBsrBJvj +hjNghjlwqjzGhwhGwLrMMrsMdsMfczPfsr +ZJQSFZFZpCTQSZHTTFbcWWPbWsWrdLVmrMWMfr +tttHSCpFQBQQpJZSJLgBNNDhqhBqvBvvRq +hLLJJJLcLPLfLwcJDchfhpSmqGbmdQGmGSdbqdbmqGGGdG +zgCCVVvVCNVssdbqmtMWvbnndD +rCCZZCVTjVZNzFZJBlflBLccDhBFFB +wwPPHfCMHQsrcwPbMPMcvQFJvqWgFTZgDFJltgZt +jRBVLhpNqpBmRhhRdNJZJgWTBBtgZWltZJJJ +mSjndhSzphjLRVqmhphNShrGMGrcbGbnGCHGwrwGfbbG +PVBRhBdlwRtRhRBwtBlVzDcGpVcZnggGzGMMsg +fFFWQqbFbLWCWvvFbTjjGnsZMfgsZcZzSZGMpSgD +QJTCCLFFLjFqFbHTbbltmhBNwwcNmthNhlHr +qwPJJsJdbPdwJddQCRCgCTMTRGGwMG +cLFcFBZNWWQLSQRfZjpljTGRCgGR +cFvrcNBFJDhzdQzv +zTsVTqDqQNtNwwMVmN +pHpSzPbRrvbRrGzGMwZwlBJmNtclwJpB +SjHRPfRbffPHqzCCCdTsTzqj +jnbMBnPjjjFtBtMjFPRtGfvvfzgWWHMfWHTlGgHH +dCpdqrVrmdpHfTJTCWGJgG +qVdrppqSTddqNwZcDPPPhZRBPBLBRLjF +VbHqLlGQlgjLjjQsNvCZTsNjMtCZvT +SJtttppwwpwBwdPvsvCvBZrvNrTrvM +JDnWJpDSSpmSwmpPzSwznhDlqGqqtqqHGHLlhblGbR +RqRJJVMPdRVVpqMdFwmvnSMwZcfCGfDSZc +CssQgjssvZvjffmS +zNlbbWTBLWCbCPPFPbVH +nvQsHSsGvNvnQghTRMrrjpjM +ttlLDlzPtGDcRRtpZTFjtgMj +PBLBwPPDzzLwblzffzLlVHHsCCHqsfvCCSsGSNWC +jHrTrThrtHgttThgHTtfgTgsmZZmBSZGSGsSGfZBZFFmQs +qCCPdbcCJddbRcsQSGhFzmZqZGmq +VVNNdVvclDcPbMWMwnnlwhphjp +ZdBgJqFWNNNqnZZNGsBCCCRvrCwCjCssCB +htDPMSPtMPzPTLMzMTMbRRbTbvwRCjfRfsbWWs +LhMmtMDWmHlpppplJZJgNd +mhtsjtbChcpLqmpmzL +DPlPprrfBrpGHHVGNVHRqcNvvLLqLcvJzzTvLc +VFfVPrrBQFPlDDwDwBpBtSgQjnghMhCdbSnnhtMM +DPDMpbsHPDPNtdtrgMtdnQ +WShWlSCJVlzccSBvBvhVZZWlgTNTrNrrQTjQjjjjgDSgSdNt +cvmCDvCJCcsRbmpFmqms +sSfFssmLnLwPtrrmttsFbDvWgCvddVgfgWdRDWlChD +nnGnHBzqHjqBJGChlRClhvghJWDd +jNzNcczMcGntPMwwSsSr +GGPCThCCvCTVWBCBGMVMsTgZJsrZtHNNtrsHJrgH +zjRwcwwfvSjmwznfzQSHDJtgrNrRNrLDsRrHtD +fjvzmcfSlSznwcnmnSQnhdlhWBpGpdBqhGhqhVPd +sHGGqpRqfNRVbDDtVwwzWf +CCLQZllTQLTcSShTQvjhQLnnWrDzVpwtDDwVDnczwMwM +vggZLZTldlhpCTlZlZCRRPNRmqdmGBHPFqsGqN +wwFDFLMDjjCNgNwNlwwgvR +frPbSJMSSPBqrfppSqrBZqMQhHlmNsRZmmslvghsmhsgggtZ +TPSPfBQrdJSfTTqSbbBfTfdcGWjFWWFDWnGMjLjGVFCj +LZRZbHtqnVztHTTTjMBQjQHH +rJcDGpwwgDwCCWFGSFMSffVWfF +cNNNgvhNglDnhdzsbLbmVs +RwmrGVPmNLzdmVpmrVtHDjjgDHHRqjFtngFt +CBlWhQWlTWshsblFGntjHtGbHG +WsTSGZSTQZZJpPNdzSrzwvpr +CVsggSgdwSwghVSTCgVZjJlRvlQNJHJGZVvjvj +qrrnzrrpDFMzbDbbzrMbBcNjRBHHQHGRRllHHPBNBljl +rnFppcpWcqnWMLDNsggSmWmsWfggdg +wjQzPjJcplwmDDBL +vghWhhnfWqzhftWtfnbFBmnGDnLGDbDmmC +zZNvZrNsWfgVftNZhQcSdPHPTcPHQQTTJV +WjvPVbWnbbFvjfLlcplQvLQvCwCl +sJhmrrTRTDDJHhhsmJhmrNDdQwLQQlHllHwwLpCLclBBlcPC +RJTRDdmPmmzNTDhnWtzMfMWtqjqqWM +vvpjqtllDMlHDtDBsPSSfBJFlSffNS +gwTmJrTcJWrNSmsNBBPfmf +VzzJzgTnddzWrwngnWqbHqbtLqjqvpvqhbMd +TlpzwGZGGFmZJdPpRtpHPrpcPs +CMJCMgQjMQvrfMHtMfHv +DjnNjCBqCCNnWWgDBQQDnCZwFJwmwwTznmFVwFmzTJJm +CcDPppDCFdDrFcFsMsdlLVjjLsMHvM +fqSmmtNGqLNffhHHbsMsbjbjNjbv +SthSGmLnmfwfWGWhSQGSQRnGpDpJPCDJrBPTcPrDwPzFcpFT +FdqjDtPWzqPdnPPtPFbssllqLJlqNppsJGppLp +TwfrcvwRgvfTBWRgBssJhspHfffJHlHNGh +MMZCQrrRBwQCCZMQwcTMwPztnFZSDWVWPttPSZzdzd +prHlrpJbdccllrrPbFdrgPzZfZhZVhRZVScNRNWtSZjWRW +LmwCCnvqwGCLMnsWtGRZWVfbfbftRW +bwnvBnLBvbsBvszHzpgBlPzHHlzg +grSJNTSgBHgpqhvCGbbZddGCGbbT +nDLMssQMRLwMtMWRWCZdQfqjfGvZQfCjCc +PqsDWPMLnwlRllJzghmgmSNhpgrl +TQGcWQBDnSzzsBSL +mJJlqJwVJdbSrhlrlhhsLL +JPtwMtdPbJbVqVNpPtmbpwZcQDFFcCccFjCQjpQWSWZg +JfbfpZJmzffmpZnZZwsrwDFvwHPP +RDdQtWTWQQSTGNRhsFsjnvjwrhPjtH +QccddTVQQldcGGRdGlgmVmBzfVpDmbgggmpL +HVnhVcHvpVFWDpmP +QswNZblTTwmqlntDPdqD +sGZzNwsGNThhMrhBBhzn +fQllBlVQncgwLlfWwWDvppZZggZqGpZgpGdvGG +shPTRsFbNFJmvqpGjrpvPDdr +RNFDtRRRssRTStRmTlnzwSVQlVVWfWzcQc +WmCpPCWTjQPCWWSjSTmrqRLGDRFGrTFDRFDLDD +gJnVcnVzdfnZgchvrslMDZGlRRDZLR +fdHhfncwfbfzJbnJzJfcczhhSmLCCNBjSpjmpjHjBQjpmpNW +BDvDPGRwRvCmLssGLmsL +frRjjlldrqtNspLWpqFcCmzm +ndSnVNtllldrdfSjfNvgVRHBwbbVMRbVPJgH +PpgjhpVLghPZhSgZVVzzcJWccPNCrcJzrFsJ +BdBNNMqMdfDnDNTFHHJCqHrJHzrFzF +wfMNtMndlBTlmTBndRpgghhjZRjvSZVjRw +ZQnQMWMcjHDHrWNF +TvtCvvBVgdRdmvBVNzDHlGFjFHjfRfDD +dvtCCbdJmhvhhhhbhVBPMwqZswnZqZjjMccsZJ +DDMzRBBSzRDTMQRZsbvssCbhZtCDtP +dLmwNplnmmwjGvPVCRtVVvVd +NNmjLmqWJjFRwFSrgcrSHBzcTz +TwTwTMBWcWBJJBtTWHddCmfgzlCzClsvmfsM +PPLDnNqPRLQNVnGNVsDQnNmzdhvdddlvdlqgqmdlrfvv +SQQsjPPLGLbDSnGLLNnWTFZJHbcpFctHZpwJWB +FzMltgtMzFpZtmzdjPpnvRTQTvRWTDfnnTlvwW +JcbVcBrqLCVJHJSNCcZVqVqqTRQRWWfNsTfTvDfsWvwTsnwv +rcZqVJVhmhgPmhmd +ttvSnlWvWWgcScMDsHHMPMjPmH +pzLGLfNRpJsvmmfvMDfs +GhpzRqqpZppNrhvFgwSlWnnBFn +sbQcDJQJJDbQhwchSctVnVnqTMvMWSqTMPSMlP +jtjCtNRLNCRgRnlTPPWg +pzpHdLtFNdJbDhJHsQhs +pSqnfqDnWPHNPCCHCp +GdJZQdgZbBvgQLcCZZCCZlPLRH +PzBgQggbvBthtMdMvbzvVfFfzTWqDmWDqzqWrfff +nnJdrfgfrdMCMdgrqMnWdgwNTTTzFhPSSHfSHhllzjzNFT +vBRvmvGZsLZZsHFNFFzTNPzb +LZVRmcDRvpQLmvvVGDGmpntJJwCWCnCPJwgJDrPDqM +QddMvdzlVfvdSQmGhmwLbGbmzbns +JtCCWqqZDsLpGhbGjD +FNrhqCTWMSRSrQQg +ZsBZJFsZSmmJsJSmrJrJrvsrdGdCQGQphMGwRMGQRGdbBChM +FlgfqNNNWnNnHfVnnHdbGwpwGWQhGdRMMdRM +LFnggHlDqDLvjDmZPcPmvP +CRHJWfvJvrQfrCsDlGGBszQBjjGB +LmPHVnMmpLlPssBPlDtd +MmMSZmVnncMFcmSVHvfSrffCwSvfbHWv +wsrJrpdJLsMCZDWL +BbLtGGbNmLQggqgQQtGgMmDCTnWZCZWZTmMmCZnT +qNBGNNgQcbbtGbbFBLVjfcfwHvrHHJHJcr +pCZCpdjBljhjBlpVccCpbDDwRWDsLhLbwDsDwsDw +HNgFSSNvSmdqwsFLFWLGttbw +gMMndNrzNHnzJZVlMCMCTcpc +CfsFNszCrrGzrsggsPfPVNVlqTdSjSqMTdSVTdLL +vRhcHllwJDmnJmDMMdhqSqpVMhdjdp +cvHRvwQBPZZlrQgz +TsFhCtQtQsBBLtBLPvgz +jjWZZjZSMNlNNjljNnlmjjfJLMBGGLvBdzPQpggJJLQzpg +wjbcmmlnQZmlrTsCFVwshwTr +nRGFnFjcdlwLSHSpNNnBfWHN +TgQvPbCMPRhbMPQvtQPvMCRBSHNQHBrQSNfWqpHHrWNWSf +PCgMbPvTZVDgtPRggtCCbgmmFJJLmcGFLjdmJFcDwJmm +dgWPssfdvQCLPLhL +pMtSMtpSmpMpFSMMFZjQCLbLQZZbVbVhNTLblZ +mpqcpzncfWwhzfRf +vntvVnRCsvpBpMjCpTpj +rQdZfhzczNzWcNLTpWgSvjjjpGpMSB +ZqNDQhfcNchLchQqcDqRHJtHVwnwbtvHsbVs +qtJGQgTrqtqQdQDgbGjPzZHWWzVjslPZlG +vBShwRRvvSRSvFvwLSvfcnfBWmHZHVWWHPzlNPWVWjZsWnWV +cLBFBFhCBLlwpFccFBFftqJDQdgdTDJJCbJgCCdg +wfmsPvPwNfvmfLNFvzzJbRMnllhlnLhRLC +gjtqDDTtjgpJcbnMTzCRnCCWhC +SDqtpGSStVtdqpgBVjBGZmFPJNJmffvfPsHZPZQd +HQMBBWrQQmPBvmBWnvrTnMSsbFfcfwgfCgscsmGgwgcJGg +NzzlJLthtlgswGFcwGst +JqNNRqpzhVRWTSQrrvSQ +mFpDZjvmtPPGvFjmmGTzTcFRbHczHTbzQgRS +fNdqhJsNrnnVNhwNVdrdsVczQCcwCMHSTCHgHCRzHgcM +JlgnNhsqVqNqNpPlvZvDDDGlZZ diff --git a/2022/full/day04.txt b/2022/full/day04.txt new file mode 100644 index 0000000..b52da37 --- /dev/null +++ b/2022/full/day04.txt @@ -0,0 +1,1000 @@ +75-76,18-75 +2-54,1-50 +82-83,78-82 +13-37,37-75 +79-80,2-80 +29-90,30-89 +13-16,12-15 +20-93,20-94 +90-95,33-90 +16-77,76-92 +42-52,15-52 +6-34,9-89 +13-77,12-76 +18-81,17-81 +2-34,2-33 +17-92,20-93 +24-89,7-11 +6-49,27-49 +17-69,16-69 +34-57,35-58 +71-76,73-87 +69-72,70-72 +30-70,29-69 +48-85,52-84 +14-69,13-15 +2-61,3-70 +17-86,17-85 +7-98,8-98 +8-93,12-94 +16-35,35-49 +13-59,13-79 +5-95,4-95 +2-40,2-39 +16-44,22-60 +8-26,9-27 +48-89,88-91 +19-97,18-20 +10-81,9-9 +3-40,58-73 +2-93,92-92 +77-83,73-84 +7-84,6-6 +35-45,38-59 +28-79,57-74 +52-82,55-83 +60-60,9-60 +63-86,40-64 +44-80,13-26 +17-67,19-75 +33-69,5-68 +5-31,4-54 +81-82,64-81 +55-92,55-95 +28-29,29-82 +34-93,33-33 +88-95,62-88 +64-81,65-81 +81-82,64-81 +28-94,28-94 +9-76,6-75 +34-36,35-58 +86-89,12-89 +29-31,30-31 +46-78,83-87 +11-77,1-11 +27-34,37-68 +3-4,4-93 +7-89,89-90 +18-94,14-16 +28-89,10-88 +89-91,33-89 +17-53,17-52 +70-87,70-86 +1-33,1-86 +67-68,33-67 +13-75,14-27 +26-73,26-72 +28-57,17-19 +65-65,3-65 +5-92,28-29 +2-19,19-81 +29-42,29-37 +16-70,47-87 +5-77,1-2 +28-40,28-41 +98-98,10-98 +11-21,3-74 +4-32,5-31 +5-98,4-4 +23-99,22-97 +77-99,82-94 +8-91,9-91 +1-60,59-93 +9-11,10-37 +88-88,11-89 +71-89,48-70 +6-77,6-76 +82-91,84-90 +7-97,47-96 +54-64,54-67 +7-34,16-35 +5-97,4-97 +1-1,3-18 +42-51,42-45 +69-70,69-80 +16-86,16-88 +58-59,58-58 +56-86,57-57 +11-35,10-35 +15-20,37-98 +4-97,96-98 +32-34,32-34 +53-66,12-33 +65-65,3-66 +82-83,9-82 +5-59,2-5 +74-90,43-91 +34-86,35-87 +65-91,5-92 +7-86,8-87 +46-48,47-56 +87-92,8-83 +21-21,22-54 +50-97,50-93 +8-74,8-96 +45-46,46-57 +82-98,34-79 +29-62,29-55 +15-68,16-69 +26-88,37-88 +45-78,46-46 +60-65,60-61 +3-36,36-37 +55-84,56-91 +7-99,7-97 +2-98,1-99 +51-89,63-90 +4-99,3-99 +6-50,6-51 +37-98,62-98 +38-86,38-39 +1-96,1-95 +88-90,78-84 +44-61,4-45 +6-89,89-90 +7-93,19-93 +56-94,93-97 +5-25,13-28 +28-35,29-63 +62-70,63-76 +20-20,21-48 +13-48,45-72 +13-50,50-89 +25-79,25-78 +44-74,33-73 +87-87,62-87 +30-57,54-56 +30-64,20-65 +4-95,5-96 +22-54,13-88 +11-11,8-9 +66-84,67-83 +6-95,7-74 +36-84,23-36 +18-35,18-35 +96-97,42-96 +10-11,11-91 +9-96,95-98 +8-68,8-8 +15-18,13-20 +37-50,8-98 +9-10,10-98 +12-93,13-13 +6-79,7-79 +18-59,18-41 +25-52,41-53 +6-82,6-80 +74-74,6-74 +1-98,1-99 +51-94,93-98 +84-98,5-85 +26-35,23-35 +45-89,34-88 +36-78,37-37 +2-11,17-59 +20-96,20-97 +30-46,13-47 +15-86,15-88 +30-60,12-29 +82-97,12-82 +2-2,3-87 +60-89,59-87 +5-85,6-86 +16-84,15-16 +10-29,18-73 +64-93,65-99 +37-60,37-67 +2-98,1-96 +7-14,8-14 +29-64,29-29 +34-58,33-58 +1-97,2-97 +13-20,23-59 +64-64,65-76 +16-48,6-47 +81-90,81-89 +76-91,23-40 +22-46,21-46 +13-74,74-74 +34-35,18-34 +38-90,37-37 +34-61,36-61 +41-52,42-42 +3-12,3-87 +96-97,43-96 +97-98,4-96 +24-67,40-68 +13-31,4-23 +27-57,26-26 +3-84,84-85 +16-94,93-99 +16-16,17-74 +34-60,2-34 +17-98,17-30 +45-61,34-40 +12-17,11-14 +95-95,3-94 +48-69,11-68 +8-51,50-99 +44-80,44-76 +4-4,5-94 +31-47,30-55 +27-35,36-36 +3-57,3-98 +2-90,3-90 +22-79,22-80 +28-46,27-46 +1-1,3-30 +36-81,36-50 +19-40,19-41 +22-93,11-22 +32-58,31-58 +35-44,24-43 +1-8,1-80 +7-27,9-19 +78-90,14-78 +1-37,36-51 +32-36,30-37 +43-45,30-44 +65-80,66-79 +96-97,43-96 +62-94,61-92 +4-96,96-97 +15-75,14-76 +39-82,38-82 +3-95,3-57 +22-98,32-96 +2-93,3-93 +25-62,62-63 +6-58,57-87 +3-25,2-80 +50-54,51-52 +2-91,1-86 +97-98,38-97 +54-74,3-96 +6-31,31-87 +37-39,38-97 +8-55,8-42 +6-33,7-33 +18-96,81-97 +9-95,94-99 +6-13,5-46 +14-73,34-73 +7-94,7-89 +56-86,57-86 +12-53,11-53 +25-60,24-59 +39-75,28-28 +52-53,52-54 +6-35,12-34 +57-88,38-58 +57-58,7-58 +45-64,4-63 +26-84,3-80 +15-84,15-85 +16-89,17-89 +34-91,33-90 +24-67,94-95 +43-45,44-73 +29-65,66-74 +23-83,22-84 +2-99,1-99 +24-52,25-52 +4-6,5-87 +5-96,1-5 +5-18,24-31 +49-93,55-94 +11-94,43-95 +18-41,17-40 +86-88,85-87 +12-56,16-57 +45-71,45-54 +65-73,62-73 +93-93,61-92 +33-94,34-93 +7-62,14-62 +4-99,1-2 +6-69,1-1 +5-84,83-87 +6-82,93-99 +81-81,1-81 +2-81,1-74 +23-93,22-93 +9-11,3-3 +13-40,12-40 +10-87,9-94 +53-63,54-54 +25-72,45-71 +1-2,5-98 +63-67,23-64 +98-98,63-97 +63-87,50-58 +9-80,10-75 +1-1,3-40 +11-75,76-99 +32-98,33-97 +44-44,34-43 +49-52,33-51 +1-97,2-97 +82-82,82-82 +84-97,4-96 +1-95,13-96 +31-87,4-30 +15-40,5-7 +87-91,40-79 +6-99,5-99 +6-67,55-84 +56-94,83-99 +5-48,49-49 +14-25,24-35 +21-66,22-66 +93-96,94-95 +64-65,18-64 +69-96,68-84 +3-98,2-99 +3-95,2-95 +35-98,94-98 +19-28,29-88 +48-94,49-94 +29-47,29-35 +3-50,1-3 +1-4,1-61 +20-63,19-89 +11-96,11-50 +2-2,5-94 +76-97,76-95 +14-33,47-75 +88-91,12-87 +12-64,12-89 +4-84,3-84 +13-98,6-13 +65-75,64-75 +30-30,19-30 +99-99,39-99 +18-70,18-44 +1-31,1-42 +49-84,83-90 +94-95,54-94 +9-94,95-95 +69-69,68-94 +10-82,10-81 +98-99,63-93 +82-82,75-81 +59-66,25-64 +28-88,88-88 +50-81,81-98 +80-80,27-81 +11-95,10-72 +23-96,22-95 +15-73,14-73 +13-13,3-13 +29-77,29-71 +52-89,78-96 +6-52,25-53 +16-87,15-87 +37-85,63-86 +2-26,11-27 +27-48,28-28 +17-29,9-17 +21-70,21-76 +85-99,85-86 +47-77,48-77 +4-35,36-36 +92-96,58-92 +48-80,47-79 +4-29,82-90 +26-88,27-89 +37-92,36-38 +10-93,11-94 +72-72,17-73 +58-66,60-67 +19-46,19-19 +39-78,30-39 +61-99,39-60 +8-92,8-91 +7-83,5-7 +3-80,1-1 +90-99,5-91 +5-92,92-93 +6-88,6-89 +57-95,19-94 +30-76,31-31 +12-94,93-93 +35-49,36-49 +15-67,16-66 +88-91,63-89 +56-79,55-55 +1-5,4-12 +31-87,30-88 +72-79,73-80 +69-81,70-91 +20-42,43-43 +3-65,15-66 +46-46,45-72 +16-21,15-22 +98-99,34-97 +10-28,48-80 +1-97,3-98 +14-99,15-99 +25-25,25-75 +12-91,12-92 +94-98,11-79 +9-90,9-92 +50-54,49-51 +64-82,64-83 +8-10,9-59 +9-96,96-96 +1-17,23-86 +66-91,66-98 +3-93,2-82 +7-8,8-83 +24-28,25-28 +94-95,7-94 +38-86,38-93 +4-50,32-49 +7-61,61-88 +86-86,9-85 +10-94,7-10 +96-96,10-96 +13-67,40-68 +21-53,22-53 +12-38,13-39 +4-7,21-63 +26-90,91-96 +56-99,56-98 +19-20,18-19 +86-90,7-85 +18-59,18-32 +73-75,69-75 +24-77,25-77 +28-94,25-26 +17-79,79-80 +55-57,54-80 +8-22,8-22 +96-96,7-96 +51-63,53-63 +14-99,15-99 +20-98,20-97 +93-95,9-66 +79-93,78-79 +20-48,20-53 +43-81,44-82 +28-93,29-94 +1-28,28-29 +81-86,56-86 +30-86,89-89 +79-79,78-90 +87-93,27-62 +37-87,37-87 +95-96,4-95 +40-72,38-41 +67-80,48-79 +63-63,19-63 +3-98,16-99 +64-93,37-43 +8-85,16-83 +66-69,50-68 +11-87,12-86 +77-92,5-92 +99-99,96-98 +3-94,2-4 +29-97,28-96 +57-76,65-76 +58-75,58-63 +67-88,66-88 +77-88,57-86 +5-84,84-97 +10-71,8-70 +7-17,3-18 +42-89,43-89 +30-31,3-30 +42-87,41-43 +68-93,67-94 +3-85,3-86 +26-81,27-27 +82-99,74-83 +50-88,51-89 +7-9,11-81 +17-53,25-53 +5-95,5-99 +34-73,74-90 +34-40,35-40 +10-68,46-69 +28-96,95-98 +58-59,5-58 +1-99,2-99 +4-98,5-87 +3-96,2-98 +84-88,83-85 +11-96,10-97 +19-88,2-87 +19-72,23-51 +6-96,2-96 +18-64,14-16 +96-99,3-97 +75-91,13-75 +18-57,32-58 +17-33,17-37 +43-64,63-63 +97-97,14-84 +89-99,9-89 +63-85,64-85 +77-78,47-77 +20-21,1-16 +23-33,23-28 +58-90,59-67 +39-80,20-40 +15-46,3-15 +13-82,81-89 +1-4,9-92 +15-45,3-15 +18-78,12-12 +3-3,2-61 +1-9,1-3 +7-7,6-99 +5-35,4-34 +5-74,6-74 +18-55,17-55 +92-94,11-68 +27-97,27-83 +14-57,57-58 +25-69,26-36 +72-94,72-95 +4-80,4-94 +7-77,7-99 +42-91,42-92 +38-67,22-37 +40-93,40-87 +31-65,5-64 +34-96,96-97 +1-28,27-27 +12-63,13-13 +97-99,71-91 +17-69,16-68 +56-67,56-65 +5-68,6-68 +17-93,23-99 +8-14,7-14 +18-89,18-18 +3-38,39-62 +4-4,5-39 +27-85,84-84 +32-95,96-99 +7-68,17-67 +20-69,19-70 +92-92,32-91 +3-18,4-46 +13-94,13-94 +52-80,52-81 +29-87,3-86 +79-80,35-79 +23-67,47-68 +22-96,24-95 +7-68,4-4 +5-98,3-5 +84-89,84-99 +18-21,1-15 +41-85,40-85 +38-63,60-60 +43-89,43-43 +11-83,10-84 +43-61,11-43 +25-91,26-26 +23-23,22-95 +2-2,1-92 +79-94,9-79 +6-96,34-96 +58-75,57-67 +11-14,14-15 +20-93,19-21 +7-85,7-85 +19-56,20-55 +87-89,6-87 +90-90,2-91 +23-50,22-49 +78-92,22-77 +75-77,74-76 +81-90,81-94 +26-81,81-81 +12-58,41-90 +14-84,13-84 +38-89,39-90 +66-73,65-73 +8-75,8-63 +6-67,3-4 +2-69,3-68 +15-61,15-69 +57-75,57-76 +9-98,98-99 +6-6,20-67 +47-91,46-90 +26-96,26-97 +25-56,24-56 +28-53,27-53 +26-55,25-55 +25-68,26-68 +6-11,11-37 +24-27,25-25 +44-56,8-57 +29-30,29-98 +28-33,27-67 +7-17,7-11 +4-5,25-77 +33-35,34-75 +1-72,73-73 +10-92,92-93 +2-22,83-94 +4-97,96-99 +38-50,18-51 +39-42,41-41 +55-57,55-58 +19-89,36-88 +47-67,48-68 +83-90,83-85 +3-80,46-81 +22-92,48-61 +19-93,33-94 +2-3,1-72 +98-99,30-97 +35-54,54-54 +4-97,5-98 +7-90,8-91 +31-61,4-29 +14-18,15-25 +26-27,26-63 +26-26,9-26 +25-60,60-60 +66-97,63-96 +70-91,6-71 +21-88,22-22 +18-92,14-18 +11-87,4-7 +57-88,58-88 +37-81,3-44 +67-89,55-98 +25-91,24-90 +68-82,67-67 +70-72,43-71 +4-74,74-75 +18-83,9-19 +16-80,81-81 +3-75,2-74 +3-71,11-72 +38-55,7-38 +19-65,20-49 +17-98,16-18 +45-95,24-94 +11-16,15-89 +28-68,29-43 +26-26,25-48 +4-98,3-30 +9-95,95-96 +31-54,31-58 +31-43,30-30 +8-10,10-89 +2-15,1-90 +26-76,46-77 +63-91,62-91 +4-62,19-63 +36-88,36-87 +19-98,19-97 +2-98,98-98 +11-84,11-85 +26-29,6-28 +22-61,26-72 +38-56,38-57 +9-73,1-72 +24-73,23-73 +80-80,9-79 +31-33,32-96 +3-94,4-93 +26-26,25-83 +1-99,1-97 +7-94,7-99 +10-52,3-51 +39-47,42-47 +44-96,43-44 +3-94,2-94 +30-44,29-43 +60-99,60-92 +18-69,69-69 +20-32,1-20 +2-81,13-82 +16-75,9-16 +69-79,80-91 +12-90,12-15 +55-67,56-93 +17-45,3-17 +3-3,2-78 +12-27,28-28 +42-90,59-90 +30-96,31-98 +47-68,63-64 +1-97,2-97 +28-81,22-81 +10-88,1-88 +15-84,15-81 +67-72,68-68 +1-72,1-72 +90-91,86-90 +89-94,79-93 +92-98,15-92 +2-99,1-99 +1-99,99-99 +16-99,17-99 +11-17,17-95 +38-87,39-87 +24-47,28-46 +38-94,38-99 +58-85,59-67 +20-22,21-21 +82-88,59-87 +90-99,89-98 +12-21,20-91 +64-99,61-64 +6-43,5-44 +23-23,24-76 +4-95,3-3 +23-71,24-71 +39-47,38-38 +73-91,92-92 +23-93,87-96 +46-76,27-77 +78-79,65-78 +27-46,26-46 +77-82,83-85 +2-54,54-55 +1-3,6-99 +42-42,22-43 +7-96,8-96 +28-33,28-87 +1-31,1-85 +2-93,3-94 +4-96,2-96 +30-30,29-99 +30-39,30-30 +4-18,34-88 +68-69,68-87 +30-95,30-76 +10-63,10-99 +2-98,98-98 +12-37,11-11 +9-80,9-81 +37-37,38-83 +95-99,7-95 +3-26,60-98 +3-99,4-28 +5-95,6-95 +41-86,42-85 +72-95,39-94 +1-51,1-62 +3-95,95-96 +73-83,74-79 +93-97,93-96 +33-93,32-93 +22-40,21-39 +11-14,18-79 +96-97,58-95 +16-40,40-89 +1-88,2-88 +5-51,5-29 +20-48,31-49 +3-95,95-96 +23-89,23-90 +55-80,56-79 +43-43,42-59 +55-84,54-83 +13-76,76-77 +22-94,9-35 +23-96,68-91 +1-85,60-84 +27-27,11-27 +33-35,33-64 +9-77,10-10 +69-81,90-91 +16-95,16-96 +21-94,21-22 +7-95,3-94 +47-79,1-57 +5-39,5-39 +12-82,13-82 +70-70,63-70 +64-64,26-63 +2-4,4-94 +80-80,79-97 +38-75,37-38 +54-91,92-92 +63-83,63-65 +8-56,8-55 +98-98,27-97 +26-91,28-92 +24-85,20-72 +13-18,30-84 +29-67,29-68 +87-95,8-87 +13-26,11-41 +16-99,17-99 +16-98,17-98 +18-54,18-83 +63-80,64-87 +63-63,58-63 +37-91,37-85 +6-12,4-7 +6-58,30-59 +18-52,53-96 +17-61,17-75 +49-72,71-97 +11-69,11-36 +22-84,22-83 +1-64,1-65 +27-39,38-38 +48-49,49-88 +1-1,3-74 +55-92,55-98 +51-51,8-52 +2-26,1-26 +23-64,64-64 +57-82,57-81 +91-91,26-91 +6-97,41-98 +1-94,1-95 +56-83,16-99 +8-8,10-88 +38-43,6-42 +22-84,2-89 +14-76,72-88 +31-93,30-93 +72-92,73-92 +57-58,21-57 +4-94,6-94 +11-85,86-86 +9-61,8-61 +69-91,69-69 +27-77,77-78 +10-52,10-51 +9-9,8-49 +66-67,65-78 +2-90,2-98 +42-42,41-79 +3-86,3-42 +15-93,25-73 +26-94,27-95 +16-99,15-99 +1-1,3-65 +97-98,4-96 +25-87,26-97 +3-20,20-96 +32-81,32-80 +22-85,22-95 +4-96,97-98 +97-99,62-75 +87-99,46-87 +98-99,44-76 +26-93,26-33 +56-87,34-63 +1-91,95-98 +12-97,11-80 +19-36,19-91 +19-25,25-98 +99-99,7-92 +37-46,38-43 +73-75,73-78 +18-97,97-97 +4-98,4-94 +88-88,25-88 +95-95,4-95 +3-70,9-71 +20-54,19-21 +34-40,24-39 +3-3,2-95 +5-37,4-37 +5-81,5-80 +2-95,9-95 +12-87,13-13 +2-3,2-96 +19-63,19-94 +64-84,35-35 +8-96,5-95 +37-69,38-52 +91-98,12-92 +66-87,66-83 +36-58,20-57 +8-82,82-83 +11-71,13-70 +40-43,39-43 +1-73,1-1 +12-91,12-92 +73-97,41-57 +6-83,7-7 +20-36,19-41 +15-91,14-90 +18-51,13-50 +12-97,97-97 +1-89,89-89 +13-34,12-34 +46-52,46-79 +34-36,34-35 +22-76,76-76 +3-93,4-76 +34-35,22-34 +7-20,20-20 +16-47,2-27 +59-60,2-59 +96-99,37-94 +4-92,4-94 +12-30,8-29 +22-32,22-22 +1-99,2-98 +61-70,53-70 +45-96,46-96 +84-99,2-85 +1-2,1-99 +19-99,20-94 +77-86,86-88 +25-83,3-82 +6-70,5-70 +38-85,85-86 +55-83,55-84 +87-98,86-97 +29-31,29-74 +5-42,5-41 +21-99,21-77 +47-71,46-51 +33-51,50-50 +52-60,5-40 +28-94,29-29 +6-23,11-14 +31-33,32-48 +74-75,44-74 +84-96,84-96 +38-38,37-45 +53-90,92-94 +12-32,2-8 +39-70,38-70 +93-96,17-93 +43-60,33-37 +4-22,3-95 +1-89,2-90 +27-76,26-77 +34-71,57-71 +49-62,20-62 +48-97,2-95 +11-72,2-5 +72-72,72-92 +22-65,64-78 +24-96,24-25 +38-93,32-94 +70-71,59-70 +38-76,38-76 +31-50,30-50 +22-97,21-69 +22-79,24-80 +69-88,88-88 +47-48,46-87 +27-29,28-42 +24-24,25-71 +11-94,20-95 +1-10,29-85 +32-52,32-86 +15-72,73-93 +15-28,15-47 +14-64,15-64 +88-88,25-89 +80-80,15-80 +3-58,58-59 +19-96,95-99 +39-74,40-87 +64-71,71-72 +49-80,36-80 +61-79,49-78 diff --git a/2022/full/day05.txt b/2022/full/day05.txt new file mode 100644 index 0000000..988dbdd --- /dev/null +++ b/2022/full/day05.txt @@ -0,0 +1,512 @@ + [V] [C] [M] +[V] [J] [N] [H] [V] +[R] [F] [N] [W] [Z] [N] +[H] [R] [D] [Q] [M] [L] [B] +[B] [C] [H] [V] [R] [C] [G] [R] +[G] [G] [F] [S] [D] [H] [B] [R] [S] +[D] [N] [S] [D] [H] [G] [J] [J] [G] +[W] [J] [L] [J] [S] [P] [F] [S] [L] + 1 2 3 4 5 6 7 8 9 + +move 2 from 2 to 7 +move 8 from 5 to 6 +move 2 from 4 to 5 +move 1 from 4 to 5 +move 1 from 5 to 8 +move 5 from 9 to 2 +move 7 from 1 to 6 +move 7 from 3 to 8 +move 1 from 4 to 6 +move 2 from 5 to 6 +move 6 from 7 to 5 +move 2 from 2 to 4 +move 4 from 5 to 2 +move 10 from 8 to 1 +move 2 from 7 to 4 +move 4 from 2 to 8 +move 2 from 9 to 8 +move 1 from 8 to 4 +move 2 from 4 to 9 +move 5 from 8 to 2 +move 1 from 4 to 6 +move 1 from 8 to 9 +move 1 from 7 to 2 +move 2 from 4 to 2 +move 1 from 7 to 3 +move 13 from 2 to 1 +move 1 from 2 to 4 +move 1 from 2 to 3 +move 2 from 5 to 4 +move 17 from 6 to 4 +move 3 from 4 to 9 +move 14 from 1 to 4 +move 4 from 6 to 8 +move 1 from 9 to 8 +move 23 from 4 to 8 +move 6 from 1 to 7 +move 3 from 1 to 5 +move 1 from 3 to 8 +move 5 from 7 to 8 +move 1 from 3 to 4 +move 1 from 5 to 3 +move 1 from 5 to 1 +move 1 from 3 to 2 +move 1 from 9 to 4 +move 9 from 4 to 9 +move 1 from 1 to 2 +move 11 from 8 to 2 +move 1 from 4 to 5 +move 13 from 2 to 3 +move 7 from 9 to 6 +move 1 from 5 to 6 +move 1 from 5 to 2 +move 1 from 9 to 4 +move 1 from 4 to 9 +move 2 from 8 to 9 +move 1 from 7 to 8 +move 8 from 9 to 1 +move 8 from 1 to 4 +move 4 from 6 to 7 +move 1 from 9 to 4 +move 2 from 3 to 9 +move 1 from 9 to 1 +move 6 from 4 to 1 +move 2 from 1 to 3 +move 22 from 8 to 6 +move 1 from 2 to 5 +move 3 from 7 to 8 +move 15 from 6 to 4 +move 7 from 3 to 7 +move 4 from 6 to 9 +move 2 from 9 to 2 +move 6 from 3 to 5 +move 3 from 9 to 5 +move 5 from 5 to 8 +move 1 from 2 to 1 +move 6 from 8 to 2 +move 1 from 1 to 2 +move 3 from 5 to 3 +move 1 from 7 to 2 +move 4 from 7 to 8 +move 4 from 6 to 1 +move 1 from 5 to 1 +move 4 from 8 to 7 +move 2 from 3 to 2 +move 1 from 1 to 3 +move 15 from 4 to 2 +move 3 from 7 to 3 +move 4 from 7 to 2 +move 1 from 4 to 9 +move 5 from 3 to 8 +move 29 from 2 to 1 +move 1 from 9 to 5 +move 1 from 2 to 1 +move 11 from 1 to 5 +move 1 from 4 to 5 +move 2 from 6 to 3 +move 1 from 3 to 4 +move 16 from 1 to 9 +move 4 from 8 to 4 +move 3 from 6 to 9 +move 1 from 3 to 7 +move 1 from 7 to 3 +move 6 from 1 to 6 +move 3 from 4 to 3 +move 3 from 8 to 5 +move 3 from 1 to 8 +move 3 from 1 to 4 +move 2 from 4 to 9 +move 3 from 6 to 3 +move 15 from 5 to 2 +move 3 from 2 to 3 +move 4 from 2 to 7 +move 2 from 5 to 9 +move 10 from 3 to 6 +move 11 from 9 to 5 +move 2 from 4 to 9 +move 8 from 9 to 4 +move 1 from 9 to 6 +move 7 from 4 to 6 +move 3 from 5 to 8 +move 22 from 6 to 9 +move 4 from 7 to 8 +move 8 from 5 to 8 +move 2 from 4 to 3 +move 1 from 8 to 1 +move 17 from 8 to 3 +move 3 from 3 to 4 +move 13 from 3 to 9 +move 20 from 9 to 7 +move 2 from 2 to 9 +move 19 from 9 to 5 +move 1 from 1 to 4 +move 3 from 2 to 7 +move 4 from 4 to 3 +move 1 from 9 to 8 +move 18 from 5 to 1 +move 1 from 9 to 4 +move 1 from 9 to 7 +move 2 from 4 to 8 +move 1 from 5 to 4 +move 3 from 2 to 7 +move 3 from 3 to 1 +move 2 from 1 to 3 +move 3 from 3 to 8 +move 1 from 4 to 8 +move 6 from 8 to 2 +move 1 from 3 to 9 +move 1 from 3 to 9 +move 10 from 1 to 9 +move 7 from 1 to 7 +move 4 from 7 to 4 +move 29 from 7 to 3 +move 6 from 2 to 9 +move 25 from 3 to 6 +move 5 from 3 to 9 +move 13 from 6 to 9 +move 12 from 6 to 2 +move 1 from 8 to 9 +move 10 from 2 to 6 +move 7 from 6 to 5 +move 20 from 9 to 3 +move 11 from 3 to 6 +move 1 from 7 to 9 +move 2 from 2 to 9 +move 19 from 9 to 2 +move 14 from 6 to 8 +move 4 from 5 to 2 +move 2 from 4 to 6 +move 3 from 5 to 1 +move 13 from 8 to 5 +move 1 from 6 to 1 +move 2 from 4 to 2 +move 8 from 2 to 4 +move 6 from 4 to 7 +move 1 from 9 to 8 +move 2 from 4 to 7 +move 5 from 2 to 4 +move 4 from 4 to 2 +move 10 from 5 to 6 +move 1 from 1 to 7 +move 1 from 5 to 4 +move 1 from 4 to 9 +move 4 from 7 to 8 +move 5 from 1 to 7 +move 1 from 9 to 7 +move 7 from 3 to 2 +move 2 from 5 to 2 +move 8 from 6 to 9 +move 1 from 4 to 6 +move 3 from 7 to 4 +move 5 from 9 to 7 +move 2 from 4 to 3 +move 20 from 2 to 4 +move 2 from 4 to 8 +move 14 from 4 to 2 +move 12 from 7 to 4 +move 8 from 2 to 1 +move 10 from 2 to 4 +move 6 from 8 to 5 +move 1 from 7 to 8 +move 4 from 4 to 3 +move 1 from 3 to 9 +move 1 from 2 to 7 +move 1 from 6 to 8 +move 5 from 3 to 5 +move 1 from 3 to 2 +move 7 from 4 to 5 +move 6 from 1 to 7 +move 5 from 7 to 6 +move 1 from 6 to 5 +move 2 from 7 to 8 +move 1 from 2 to 6 +move 2 from 8 to 2 +move 5 from 5 to 7 +move 6 from 6 to 8 +move 16 from 4 to 9 +move 16 from 9 to 4 +move 11 from 5 to 4 +move 5 from 8 to 3 +move 2 from 5 to 2 +move 14 from 4 to 2 +move 1 from 6 to 3 +move 1 from 6 to 9 +move 1 from 5 to 3 +move 3 from 8 to 2 +move 10 from 4 to 7 +move 5 from 9 to 2 +move 3 from 4 to 7 +move 1 from 1 to 4 +move 3 from 2 to 5 +move 2 from 3 to 7 +move 1 from 4 to 2 +move 18 from 2 to 8 +move 3 from 8 to 4 +move 5 from 3 to 1 +move 1 from 3 to 9 +move 1 from 9 to 3 +move 8 from 8 to 7 +move 2 from 5 to 4 +move 1 from 5 to 6 +move 1 from 2 to 5 +move 1 from 5 to 8 +move 1 from 6 to 9 +move 3 from 2 to 7 +move 27 from 7 to 4 +move 2 from 2 to 4 +move 4 from 8 to 4 +move 1 from 9 to 8 +move 3 from 1 to 6 +move 1 from 3 to 5 +move 3 from 8 to 3 +move 1 from 1 to 4 +move 1 from 8 to 1 +move 3 from 1 to 4 +move 2 from 8 to 2 +move 2 from 6 to 2 +move 8 from 4 to 9 +move 1 from 7 to 1 +move 1 from 5 to 4 +move 1 from 7 to 3 +move 4 from 2 to 7 +move 1 from 8 to 6 +move 8 from 9 to 7 +move 1 from 6 to 3 +move 3 from 3 to 4 +move 37 from 4 to 1 +move 1 from 4 to 5 +move 13 from 7 to 8 +move 6 from 8 to 4 +move 5 from 8 to 3 +move 1 from 7 to 6 +move 4 from 1 to 5 +move 1 from 6 to 5 +move 2 from 8 to 4 +move 32 from 1 to 5 +move 1 from 1 to 4 +move 5 from 3 to 5 +move 1 from 3 to 2 +move 1 from 2 to 9 +move 19 from 5 to 2 +move 1 from 9 to 1 +move 16 from 5 to 1 +move 7 from 5 to 6 +move 1 from 3 to 1 +move 11 from 1 to 2 +move 18 from 2 to 4 +move 1 from 5 to 9 +move 8 from 6 to 1 +move 10 from 2 to 6 +move 7 from 4 to 9 +move 2 from 2 to 1 +move 7 from 4 to 2 +move 5 from 4 to 5 +move 2 from 9 to 6 +move 9 from 6 to 3 +move 5 from 5 to 3 +move 8 from 4 to 9 +move 7 from 9 to 8 +move 4 from 2 to 9 +move 10 from 3 to 1 +move 6 from 8 to 1 +move 2 from 6 to 3 +move 5 from 3 to 8 +move 3 from 2 to 7 +move 1 from 9 to 5 +move 1 from 3 to 5 +move 2 from 7 to 8 +move 1 from 8 to 9 +move 1 from 6 to 1 +move 23 from 1 to 4 +move 2 from 5 to 3 +move 1 from 8 to 2 +move 2 from 8 to 5 +move 2 from 5 to 6 +move 1 from 2 to 7 +move 1 from 7 to 5 +move 4 from 9 to 7 +move 1 from 7 to 5 +move 1 from 3 to 6 +move 3 from 7 to 4 +move 1 from 3 to 8 +move 1 from 4 to 6 +move 6 from 1 to 8 +move 4 from 6 to 4 +move 2 from 9 to 1 +move 1 from 5 to 1 +move 19 from 4 to 2 +move 2 from 9 to 3 +move 1 from 9 to 3 +move 9 from 1 to 8 +move 1 from 5 to 8 +move 1 from 9 to 3 +move 2 from 3 to 9 +move 3 from 8 to 4 +move 1 from 4 to 9 +move 1 from 9 to 5 +move 2 from 3 to 4 +move 6 from 4 to 7 +move 3 from 9 to 5 +move 4 from 4 to 7 +move 1 from 5 to 6 +move 18 from 2 to 7 +move 13 from 7 to 9 +move 3 from 5 to 1 +move 1 from 2 to 1 +move 1 from 6 to 5 +move 3 from 1 to 7 +move 1 from 1 to 5 +move 7 from 9 to 6 +move 8 from 7 to 4 +move 11 from 7 to 6 +move 5 from 9 to 2 +move 17 from 6 to 1 +move 2 from 5 to 1 +move 11 from 8 to 1 +move 20 from 1 to 2 +move 3 from 8 to 1 +move 1 from 9 to 8 +move 1 from 6 to 1 +move 11 from 1 to 7 +move 18 from 2 to 3 +move 12 from 4 to 8 +move 11 from 7 to 3 +move 7 from 2 to 3 +move 2 from 1 to 5 +move 1 from 1 to 3 +move 1 from 8 to 1 +move 1 from 5 to 9 +move 1 from 9 to 6 +move 1 from 8 to 7 +move 1 from 5 to 3 +move 1 from 6 to 7 +move 2 from 8 to 1 +move 8 from 3 to 2 +move 7 from 2 to 9 +move 6 from 8 to 6 +move 1 from 9 to 3 +move 2 from 6 to 4 +move 5 from 9 to 6 +move 7 from 6 to 2 +move 8 from 2 to 9 +move 2 from 1 to 9 +move 2 from 7 to 2 +move 2 from 4 to 8 +move 1 from 2 to 7 +move 25 from 3 to 7 +move 7 from 9 to 7 +move 1 from 2 to 5 +move 1 from 1 to 4 +move 3 from 8 to 1 +move 3 from 1 to 8 +move 3 from 7 to 8 +move 15 from 7 to 3 +move 10 from 8 to 3 +move 1 from 5 to 7 +move 1 from 8 to 5 +move 3 from 9 to 2 +move 1 from 6 to 4 +move 2 from 2 to 7 +move 1 from 2 to 5 +move 14 from 7 to 9 +move 1 from 6 to 2 +move 1 from 7 to 1 +move 1 from 5 to 4 +move 3 from 4 to 3 +move 1 from 7 to 6 +move 1 from 2 to 7 +move 1 from 1 to 2 +move 3 from 9 to 1 +move 1 from 6 to 2 +move 2 from 2 to 6 +move 17 from 3 to 6 +move 1 from 8 to 3 +move 1 from 5 to 4 +move 2 from 7 to 2 +move 9 from 9 to 8 +move 1 from 9 to 3 +move 16 from 3 to 2 +move 1 from 7 to 5 +move 5 from 6 to 5 +move 1 from 1 to 6 +move 1 from 4 to 1 +move 1 from 9 to 3 +move 9 from 8 to 6 +move 3 from 1 to 5 +move 1 from 9 to 1 +move 16 from 2 to 1 +move 2 from 2 to 7 +move 2 from 3 to 9 +move 2 from 7 to 4 +move 2 from 9 to 3 +move 3 from 3 to 5 +move 1 from 4 to 5 +move 1 from 4 to 2 +move 1 from 1 to 7 +move 1 from 7 to 1 +move 1 from 3 to 6 +move 2 from 5 to 1 +move 3 from 6 to 2 +move 2 from 5 to 8 +move 8 from 5 to 4 +move 1 from 5 to 3 +move 1 from 3 to 2 +move 1 from 8 to 3 +move 1 from 3 to 8 +move 4 from 1 to 7 +move 9 from 1 to 7 +move 6 from 1 to 8 +move 3 from 7 to 4 +move 7 from 6 to 7 +move 11 from 4 to 3 +move 2 from 3 to 8 +move 8 from 3 to 8 +move 4 from 6 to 1 +move 1 from 7 to 4 +move 2 from 1 to 2 +move 8 from 7 to 2 +move 1 from 4 to 8 +move 10 from 8 to 2 +move 2 from 6 to 1 +move 1 from 1 to 4 +move 1 from 4 to 8 +move 2 from 1 to 4 +move 6 from 6 to 5 +move 1 from 1 to 9 +move 2 from 6 to 8 +move 1 from 4 to 5 +move 1 from 6 to 9 +move 4 from 8 to 9 +move 1 from 7 to 1 +move 6 from 8 to 6 +move 1 from 6 to 1 +move 1 from 4 to 9 +move 2 from 9 to 5 +move 5 from 5 to 9 +move 8 from 9 to 5 +move 2 from 8 to 5 +move 3 from 6 to 9 +move 8 from 5 to 7 +move 5 from 5 to 6 +move 1 from 9 to 2 +move 1 from 3 to 1 +move 1 from 6 to 7 +move 1 from 5 to 6 +move 24 from 2 to 4 +move 3 from 9 to 7 +move 16 from 4 to 5 +move 2 from 1 to 3 +move 12 from 5 to 6 +move 1 from 9 to 5 +move 4 from 5 to 9 +move 1 from 1 to 6 +move 1 from 5 to 2 +move 2 from 9 to 8 +move 1 from 8 to 1 +move 5 from 4 to 5 +move 2 from 3 to 5 +move 1 from 8 to 3 +move 1 from 1 to 6 +move 3 from 5 to 7 +move 1 from 9 to 1 +move 1 from 2 to 8 diff --git a/2022/full/day06.txt b/2022/full/day06.txt new file mode 100644 index 0000000..4d2ae34 --- /dev/null +++ b/2022/full/day06.txt @@ -0,0 +1 @@ +wzsspbssbhshchmmrmprmrfrsfrrjhjphjjtppbfflqfqppdhdbhdhbbjgghgzgsgfsfhfhvvwcwhwwnppsbsggqnnvvtffpssjfjnnltntdtdddptprppjmmqssrlrplllfrrzggbmmlmnmtnnzddfdgfdfsstbstbbzcbbcjcvvfwwwzlzssglsgllnbnmbnmbbgmmppmwwsrrzqqvgqgnqnmmswwrnnbsnnbdbwwqnwqnwwzzqwzqzjqqwbqbccjcwwjlwjwppqfqjffwddrzrjzrjzzzhchjjlqqrggzvvnlvnvjvhvnvjvbbvdvldldbbwddtsscbbhccmbmbppbmmgjggcjjlrrwjwtjwwmffgddwvdvbdbvvhchmhmdmwwbjbjcbbcmbmmslmlslsjjrnrjrjpjcjgcjcjbbwsbsbfssjzsjsggcmcsswgssbbqpbqqdsdqqztzmzpmpbmbvbjjtrjtthwhbhnbhnbnssvpvsppgrrcwrrmqqhpphrpphchvhphqhbqbtttllsrlsrshrrmhmvvrmrnngbgnbnpbprrrftfjtjwwmrmvmcmvmrmwmssrccfbbhppjbpbwbqwbqbzzfmzmtttjbbvcvppmwwrbbzsbzbfzfdzzhrhzhvvsqvsqsnslljwllqlwllvccnttzhtzzpspqspqsqgsssvnsvshvsvqvnvlldbbfdfmmpbpgphhpqhpppchhbfbrfrllntnznrrhdrdhhdhjjgwwqhhfssjbjwjqqbffvvcrchccwmcwcllljtjrrqgrrdcrddvfvwvzzjqqcffgjgzzdhdwdssffjjhccggmtmltlhtthzhvhlvlddsfsbbtjbjcbjcjzcjjpfjfzzpnnbtbqtbqtqptpnplllbzbllhbllnqnttpddqvdqvqmmjnjggnnnhqqfcqcffqppdgpddvqddmhmrhrtrmrzmzhzpzlzqlqpqhphrpppjqqppzbzmmjgggqtggtjthhlclnclcnccmcppdcpddqrrfgrgbbhwhdhrrqtqpqjpqjpqjqqmcqmccnngqqqmtqtssnvnzvvpcpwcwwqcqqqfcqffsvsmvmttttmrrzssghgssjmsmbmvvwggggzhhfvdpgjmmvzbfjghqhrfbpmbvjzwvfmcthrqwdhghpwsspmhpqnmwhjzpnlzfnvhdnnrqwnvctbmjqzhqrpjlwrssdlwqzmsfrfzmgjhnwwnwczswnhsdbvqbmdlvntsdrhrjjcjjhpbblgwhjwdcdjtpvtmslwvncwdjbwzvbpzbvddvssnrhtshrcvnhqnpmjzfswqbbrztnwjcpflfbhnphfwmjvnvtswgfttgjcqcngmmwjlfsprwfcfwcmgrgbnqmzbtzbtbztngvrzpsnrzvhbsdjnzpwwzllgnfdrlwpmnrznqsqcmvnfbnhqjddvcjmtgbpbmsgqdqzflmlmqncmhwltrmdmgnwpfwddrdpfhsgsnggchzjhgpwrsmdzgjtrgmnprhbwbcbpzbdvvstfqcnqzbdjqpmrdbtgcthtclftghhmnrzrjqqsbndhpvmdpfpwdlhvmczvdfgvpqclssvlhqnhlcfnfbvtspdzmgzdctvpdcwchtqhpsgmmblspjdlvgblbpgrfrgnqqsphcsrgfsdmpqscbjmnqrfbcwfthdtswbzthpnvsfbntnbmmgpfzlqwhppvvdrmwbqzbgppbgsqmjfqtmntgwpnccthftwdmvwmnchlbjhsnmbhndczbrhhjpbvnjdzrcndbbmfwfwsjwfgbqhwhrsvlngsbhhlrdjzzbmjpsqhlpzwcsntjhlmngblspmsjrjwsjsrqwnrcwsmcsbmpjwrthbqhrschrmrppnnbmjbvjzlmzsrfdwqlfnfjljftjvzsqdwlhbblqcdlqjbprpcllhlhmwrbrlgfrcqshrtjpnmhljttdvpfnhdjqvjhhfczwvbzqgnzgljcfrbpgwnfhfchwzqmqqzpbcdpqmnbrppzblnnzqrfnmgtljwnfgzwvnjppdbdhbznvpgwhbdjjvlspgwgjsmfsvllpgwlfnnptmwnfsshjjvqzjwrqpvmsphpmftqdllqqdzcjwfvpftgvspprdwvvcnglmbpntghntdwpjvvsppgjvnbjgvtzchtqtwbddncsbrfcvrnvlggvwgmmnfzrswnzjrwthzmdsmzqmzsnrqsnslnhmfqljnnnzshqfqshrhhjmnhdgphctswdbhnrcgnzmmzqpjqbtdfhhltsmvvtntbgsznshhsghblhlhqpmdcfhmnfzvhgnfsfflcfwbfqzmccrjdpfvphtqbrdnzjfmfhbzqcpdnjdcgwprvchlzrcvrghgjqncjvnndbcshntrfsbsnmjlhclnzpfdgztflcpwqpnvlscfndwqzfvcmpgfncszpmwcsrdbrrhdjvmthslfvmlgpqhlgwhqnjljcvhswbsbqfrfhvzwjvdmhzsgbmbmfnbpclqdwhvrlpppszptjvwtvdmfltfqqgjttdggcvllblnnhjqnjzhvpgpzzpzwbpjqbthnjjlmsjgjzqwnjlqrcdmmvsldtcrzqdrcmwqhnhfghdlmzwcspgmlpzhbdsmlwlqnhhvcvdfzmvfwpbfmjtdllprfqzzjpbrshdzgspsrlrwrhdpmznzzqngwrzqpmtwgbsswrnnnfctjhbcftnslsqwjvmfwfdvfqcnsvfsvgstgbzpmljjtlvtnfsdzpvcgbjqwgbgzqbjfgltqvnhffflsbjzfqfrfbssrvvwqvqptmhrbgllqjwptrzgvqgccsrvbgtvmzfzlmtqrgfwhzddsptclbhjlwqfntvjqdvcddnffmbtqrnsvtmlvljcqdsrpggcmqvmmlzwwbgznhblwzjdppvtqzjvcmtfzhdzjplrdbrfrgzpldvnsgqlbwbmfvrbgwzmjmmqdfgwtbgtzmdqnvqbwvcfjhddqvnjtjlhhjnltbtqqvblwlmglrqcrcfjvdntrnqzzbmrjqglmrdcjgnshcghtprjqqsdrmgdnzmzcfqqdtjtrqgtqtgrpmmgzjtcrznmqccjbdpbvrnnbmbzvgdcnrczbctbrsrrqrjnfcdpzlnngwvcdtbbgssvhpptntqdzhcqtlpvzjbfgzggrgrcgtdfjbwdcrpztnfcdbscnlmqmwcbmtnddgbmhwsgvcfdcmhlsvtnqtmrnsjzhppgwvzlmhwwmpfjzrfbhsgntzrdhwswrnfmmmczqrvdrqnhgrvqbdddhglwsftsljvgbnjqfwfzsspdqvgsnlgfsfpvdrjhzcldtrmjjrmdhvvfrjldhhtqnvsvlldjpjbpwstfsmrpmbqbnnpvqtbgjvblthbmwqtfcfgnjscvtbvlqcmlhffpzgjzfscsqwnhrjhvbrrzwqvbjwtwhtqsdbssfgncppnsfgfltdcbjqjzqqtprsbvjzhmchnltvmbsvpvhgzhfhbrnttsqbcmwpdnwqqgdrjrdwdhtzwsmcdffqgsddvbzfjhtfhtnfdbfrwmdtcqshfjrcpswzcptgwgmctpmzjdbqlmqwthmnfplmctpsslcsdtqpqhjtmjdnmnqnjgchwstsmtpvsmgpsbfgwqnzhrdgdvcdlcldfcmjvsdldgbmhltjhczffwmzqssnhfnwftfgpshntjbpjdffjpcmcpwhclrrwqcqzmntjglzgcfrplfpvprtpvpjdlcrfwrtrzdzmhsrsmdcpqqrqgvfpdbmzbzqdfhpplmgfrdghclbclgswvwhhdvcpmpzflpffmptcrwglftztccrpbrvmpnqmqdgjgrrlbtqtvgcjpljttwtdslqjqlsdpblgrqbrtbmtblfbqtbvsqhpqzpqfhjqpmjrmcvqmsbbpjpdncgnjftclbltwszrrfzqbjcdtphcvpmbhppvwjwlprgmghrjzzgnvzlvghnjbzqjpdgzfsnjchpbzqdzpsjmsrvvqwjcpwznlpbjldlrdfqtrzhqzcnpjqbbbf diff --git a/2022/full/day07.txt b/2022/full/day07.txt new file mode 100644 index 0000000..d72a875 --- /dev/null +++ b/2022/full/day07.txt @@ -0,0 +1,1318 @@ +$ cd / +$ ls +0 FAKE +165965 cmwllbzl.jlm +68612 ggb.qgd +dir gwnwqcgq +dir pdlpwdp +211084 qgcn.rbj +dir sbps +179881 sdpjprfb.ls +0 FAKEh +318082 tdhgd.lwf +dir wvdlv +$ cd gwnwqcgq +$ ls +0 FAKE +dir btddw +310195 cqsblt.jwb +dir ggb +dir hhdfbj +dir hrj +dir mdhln +dir nwbndtgl +dir pjmc +dir rgb +dir sdpjprfb +169518 tbswl.btw +$ cd btddw +$ ls +0 FAKE +315327 hjs.dcw +dir pjmc +99361 pmqmgjsw.rqn +$ cd pjmc +$ ls +0 FAKE +227980 cfbfmprt +dir hml +310835 mmcrfwdr.sps +170798 rhgmnqz +dir sdpjprfb +178337 vphwlqqw.dlt +dir wnmh +dir zqcnhs +$ cd hml +$ ls +0 FAKE +dir fjtwgcw +194693 ggb +175159 ldbhqdbd +dir mzthvdms +90811 qgbrczz.dhh +118942 qvfdwcpn.cmv +227596 rhgmnqz +dir tnvsdr +dir vplhff +$ cd fjtwgcw +$ ls +0 FAKE +16046 gfr +277037 jwpzm.vhn +291671 trpvvs.zgh +$ cd .. +$ cd mzthvdms +$ ls +0 FAKE +244911 cqsblt.jwb +37587 gpls +0 FAKEqzr.nwn +313958 tqrz.wfd +$ cd .. +$ cd tnvsdr +$ ls +0 FAKE +185961 qgbrczz.dhh +85515 wjgvlj.qcq +$ cd .. +$ cd vplhff +$ ls +0 FAKE +dir trjdm +$ cd trjdm +$ ls +0 FAKE +244126 nhv.vgt +795 vlnwhgsc.tzm +$ cd .. +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +dir htvgnrrl +$ cd htvgnrrl +$ ls +0 FAKE +240529 cfbfmprt +$ cd .. +$ cd .. +$ cd wnmh +$ ls +0 FAKE +dir gccwr +322372 qgbrczz.dhh +dir rlhn +184351 tpfzqcs +$ cd gccwr +$ ls +0 FAKE +290656 tswtgpd.jsp +$ cd .. +$ cd rlhn +$ ls +0 FAKE +208348 gfr +$ cd .. +$ cd .. +$ cd zqcnhs +$ ls +0 FAKE +dir dtfrbzgn +dir phhdmp +11336 pjmc.jwv +5056 qgbrczz.dhh +$ cd dtfrbzgn +$ ls +0 FAKE +132783 gbvcnv +dir ghbwbc +298563 pjmc +81684 sdpjprfb +$ cd ghbwbc +$ ls +0 FAKE +dir zgvwrms +$ cd zgvwrms +$ ls +0 FAKE +296919 tlm.rlb +$ cd .. +$ cd .. +$ cd .. +$ cd phhdmp +$ ls +0 FAKE +dir ggb +$ cd ggb +$ ls +0 FAKE +316842 jrmgt.mqw +196423 qrb.hpd +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd ggb +$ ls +0 FAKE +108630 cqsblt.jwb +dir fdmst +216771 fzvcgf +135624 gfr +dir pdwln +dir sdpjprfb +$ cd fdmst +$ ls +0 FAKE +dir gcq +20042 ldgpzcbr +dir nnp +dir pjmc +dir qng +dir sdpjprfb +$ cd gcq +$ ls +0 FAKE +132662 lvg.jpb +$ cd .. +$ cd nnp +$ ls +0 FAKE +229401 css.qfj +17421 pjmc.hgp +$ cd .. +$ cd pjmc +$ ls +0 FAKE +317512 pjmc.qph +$ cd .. +$ cd qng +$ ls +0 FAKE +241771 cvlnwltp +91504 qgbrczz.dhh +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +82422 sdpjprfb.ljt +$ cd .. +$ cd .. +$ cd pdwln +$ ls +0 FAKE +dir sdpjprfb +$ cd sdpjprfb +$ ls +0 FAKE +285618 ltfcmg.chw +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +58655 cqsblt.jwb +$ cd .. +$ cd .. +$ cd hhdfbj +$ ls +0 FAKE +2937 pslftrf.nqf +$ cd .. +$ cd hrj +$ ls +0 FAKE +25769 bcpl.shg +dir dfdtszr +dir ggb +3722 hdwqmgwf +dir nssjjtp +300324 qrvtsrs +100487 rhgmnqz +dir sdpjprfb +dir tmdtrqsl +248216 tswtgpd.jsp +$ cd dfdtszr +$ ls +0 FAKE +dir hfmnrlvj +dir plzr +dir zpspcph +$ cd hfmnrlvj +$ ls +0 FAKE +237362 cqsblt.jwb +$ cd .. +$ cd plzr +$ ls +0 FAKE +295398 bjw.nlg +$ cd .. +$ cd zpspcph +$ ls +0 FAKE +87660 pjmc +$ cd .. +$ cd .. +$ cd ggb +$ ls +0 FAKE +dir jtpb +dir rsptqbh +$ cd jtpb +$ ls +0 FAKE +249820 bfdl.jmv +dir dggzszwn +dir ggb +dir whms +$ cd dggzszwn +$ ls +0 FAKE +233228 lrhwrh.mqm +$ cd .. +$ cd ggb +$ ls +0 FAKE +dir tcrjcmq +88734 tsbggqvp.fjl +$ cd tcrjcmq +$ ls +0 FAKE +36677 wfdtbgf.hft +$ cd .. +$ cd .. +$ cd whms +$ ls +0 FAKE +dir ggb +dir pjmc +dir vtgcdprq +$ cd ggb +$ ls +0 FAKE +dir sdpjprfb +$ cd sdpjprfb +$ ls +0 FAKE +177878 jhbdqn +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +35345 swmcmqq.clm +$ cd .. +$ cd vtgcdprq +$ ls +0 FAKE +293766 gfr +$ cd .. +$ cd .. +$ cd .. +$ cd rsptqbh +$ ls +0 FAKE +dir csvpjd +239634 fszzvprc.phh +240240 tswtgpd.jsp +dir zjvc +$ cd csvpjd +$ ls +0 FAKE +218253 rndllvcd +$ cd .. +$ cd zjvc +$ ls +0 FAKE +98002 cqsblt.jwb +$ cd .. +$ cd .. +$ cd .. +$ cd nssjjtp +$ ls +0 FAKE +63947 tswtgpd.jsp +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +dir cgczvvbg +30257 flbhswlb.ccd +dir qdqdv +dir vqhps +$ cd cgczvvbg +$ ls +0 FAKE +dir bntjhfd +22048 ggb.jrv +142476 qgbrczz.dhh +dir rchlvjb +dir vfrrnf +164431 wjfll.zdw +$ cd bntjhfd +$ ls +0 FAKE +217858 hpt.jll +$ cd .. +$ cd rchlvjb +$ ls +0 FAKE +208149 qrdrwtfw.dbd +100353 vhs +$ cd .. +$ cd vfrrnf +$ ls +0 FAKE +3071 jdz +$ cd .. +$ cd .. +$ cd qdqdv +$ ls +0 FAKE +26265 nvtr.ndw +$ cd .. +$ cd vqhps +$ ls +0 FAKE +288263 gfr +317973 gfvsbqc +284249 lqpwzz +dir njstt +dir rbhd +185897 vssw +$ cd njstt +$ ls +0 FAKE +313561 jgq.mvw +110742 qgbrczz.dhh +$ cd .. +$ cd rbhd +$ ls +0 FAKE +11259 cqsblt.jwb +dir gchzg +286309 ltfcmg.chw +dir qmsntzj +dir sdpjprfb +281719 srfgltg.nrz +83632 tswtgpd.jsp +141859 vrv.sll +dir vsg +dir wbqshdm +$ cd gchzg +$ ls +0 FAKE +dir phnz +$ cd phnz +$ ls +0 FAKE +212607 mdrgcdl.vfp +$ cd .. +$ cd .. +$ cd qmsntzj +$ ls +0 FAKE +87958 gfr +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +110482 ggb.wnf +$ cd .. +$ cd vsg +$ ls +0 FAKE +232499 sdpjprfb +$ cd .. +$ cd wbqshdm +$ ls +0 FAKE +dir pjmc +$ cd pjmc +$ ls +0 FAKE +273630 pjmc +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tmdtrqsl +$ ls +0 FAKE +139366 sqfj.hrg +$ cd .. +$ cd .. +$ cd mdhln +$ ls +0 FAKE +dir bftszdgn +dir crhbc +dir ggb +dir jhmvgjrr +dir pjmc +dir sgpnzv +$ cd bftszdgn +$ ls +0 FAKE +206539 cplch.dsb +201607 cqsblt.jwb +207839 gdz.plv +dir ggb +72021 ltfcmg.chw +dir nddh +106046 wvf.zvc +$ cd ggb +$ ls +0 FAKE +242347 cqsblt.jwb +272603 ltfcmg.chw +273519 nrrz.dfj +5628 pjmc +$ cd .. +$ cd nddh +$ ls +0 FAKE +243243 ltfcmg.chw +$ cd .. +$ cd .. +$ cd crhbc +$ ls +0 FAKE +dir ccw +dir ggb +120001 ltfcmg.chw +dir pcqcswz +120308 qgbrczz.dhh +dir sscfn +dir vpsj +$ cd ccw +$ ls +0 FAKE +dir fgghhg +dir pjmc +$ cd fgghhg +$ ls +0 FAKE +238488 czpsmdm +150925 ggb +134050 qgbrczz.dhh +$ cd .. +$ cd pjmc +$ ls +0 FAKE +138343 sdpjprfb.bmh +$ cd .. +$ cd .. +$ cd ggb +$ ls +0 FAKE +157435 rffmjwpm +dir sdpjprfb +dir tbd +dir zgmffgdz +$ cd sdpjprfb +$ ls +0 FAKE +dir jwjpwbdj +$ cd jwjpwbdj +$ ls +0 FAKE +88782 tswtgpd.jsp +$ cd .. +$ cd .. +$ cd tbd +$ ls +0 FAKE +203640 vcls +0 FAKEjppl.jws +$ cd .. +$ cd zgmffgdz +$ ls +0 FAKE +203870 ggb +dir jhcrw +$ cd jhcrw +$ ls +0 FAKE +70775 gfr +$ cd .. +$ cd .. +$ cd .. +$ cd pcqcswz +$ ls +0 FAKE +260246 zlwc.rnh +$ cd .. +$ cd sscfn +$ ls +0 FAKE +75162 bjtwwgf +dir cfthmzh +265717 ggb +230679 gsbj.nzd +17708 ltfcmg.chw +dir pdgwcshp +dir ztrpvlbh +$ cd cfthmzh +$ ls +0 FAKE +296793 chgws.qfd +187701 pjmc +29681 qgbrczz.dhh +$ cd .. +$ cd pdgwcshp +$ ls +0 FAKE +dir cfbfmprt +dir lqbh +dir rrtpqd +$ cd cfbfmprt +$ ls +0 FAKE +dir rwflz +$ cd rwflz +$ ls +0 FAKE +33792 gtt.qcl +dir jrblfq +dir rldtppt +$ cd jrblfq +$ ls +0 FAKE +224257 cqsblt.jwb +$ cd .. +$ cd rldtppt +$ ls +0 FAKE +dir nzgg +$ cd nzgg +$ ls +0 FAKE +139560 fhbw.vhm +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd lqbh +$ ls +0 FAKE +dir mhdbp +dir nqsz +$ cd mhdbp +$ ls +0 FAKE +dir ggb +28344 wtc.cfd +$ cd ggb +$ ls +0 FAKE +dir hwdtp +220117 rvdpjmgt.szq +$ cd hwdtp +$ ls +0 FAKE +288606 cqsblt.jwb +$ cd .. +$ cd .. +$ cd .. +$ cd nqsz +$ ls +0 FAKE +197106 dpjfbs.rvc +55173 pjl +$ cd .. +$ cd .. +$ cd rrtpqd +$ ls +0 FAKE +178 pjmc +$ cd .. +$ cd .. +$ cd ztrpvlbh +$ ls +0 FAKE +201371 bhb.pmw +188328 ddqjnzvw.rdd +206451 tswtgpd.jsp +$ cd .. +$ cd .. +$ cd vpsj +$ ls +0 FAKE +5614 cqsblt.jwb +300968 ctmdnwgt.pgj +$ cd .. +$ cd .. +$ cd ggb +$ ls +0 FAKE +dir ggb +14512 hzgq.tsb +302375 pjmc.tlj +dir thhgz +282216 zdsbj +dir zrzmb +$ cd ggb +$ ls +0 FAKE +180980 brpqch.plw +42195 ltfcmg.chw +322227 qgbrczz.dhh +$ cd .. +$ cd thhgz +$ ls +0 FAKE +74145 cfbfmprt.cmp +253851 gfr +272552 gsb +dir pgfqw +276958 tswtgpd.jsp +$ cd pgfqw +$ ls +0 FAKE +193634 ggb.zjg +185688 qrml.bvv +$ cd .. +$ cd .. +$ cd zrzmb +$ ls +0 FAKE +dir chjmbq +84603 gfr +dir rbms +253620 sbscbqg.jfg +$ cd chjmbq +$ ls +0 FAKE +dir svmvlm +$ cd svmvlm +$ ls +0 FAKE +251057 nhjwcjj.dgz +$ cd .. +$ cd .. +$ cd rbms +$ ls +0 FAKE +72618 tswtgpd.jsp +$ cd .. +$ cd .. +$ cd .. +$ cd jhmvgjrr +$ ls +0 FAKE +189022 cqsblt.jwb +172682 djp.npm +dir gdfgtz +147256 ggb +dir ghv +dir pjmc +110715 rhgmnqz +dir sdpjprfb +dir tjlf +183342 tswtgpd.jsp +$ cd gdfgtz +$ ls +0 FAKE +268771 cqsblt.jwb +190140 dgrwz +248802 sdpjprfb.dpw +$ cd .. +$ cd ghv +$ ls +0 FAKE +dir ggb +dir npqbngg +304352 qzjtnr.qcf +dir sdpjprfb +$ cd ggb +$ ls +0 FAKE +285635 ltfcmg.chw +dir vzfdbtg +$ cd vzfdbtg +$ ls +0 FAKE +dir pqmb +$ cd pqmb +$ ls +0 FAKE +219019 ggb.nmh +$ cd .. +$ cd .. +$ cd .. +$ cd npqbngg +$ ls +0 FAKE +dir cfbfmprt +242286 cqsblt.jwb +dir hrqfqpzr +dir nsnfq +dir rggzmfqm +dir wjdnwg +$ cd cfbfmprt +$ ls +0 FAKE +34347 cqsblt.jwb +dir gpnzggqb +dir nvdqw +dir qdtcwm +dir ssgg +$ cd gpnzggqb +$ ls +0 FAKE +dir pjmc +dir pqbf +dir qjpwm +192404 tswtgpd.jsp +88344 vdb.rzm +dir zjglfpt +$ cd pjmc +$ ls +0 FAKE +dir pjmc +142330 psbppvhn +168892 qgbrczz.dhh +18858 vzzc.mtd +135911 zmjhz.tdv +$ cd pjmc +$ ls +0 FAKE +197370 mlf +36218 nwq.njv +$ cd .. +$ cd .. +$ cd pqbf +$ ls +0 FAKE +233005 gfr +$ cd .. +$ cd qjpwm +$ ls +0 FAKE +129132 qqmrm.jrj +6309 tswtgpd.jsp +$ cd .. +$ cd zjglfpt +$ ls +0 FAKE +186963 qgbrczz.dhh +$ cd .. +$ cd .. +$ cd nvdqw +$ ls +0 FAKE +147955 fcgrqq +224829 gfr +$ cd .. +$ cd qdtcwm +$ ls +0 FAKE +36443 ltfcmg.chw +$ cd .. +$ cd ssgg +$ ls +0 FAKE +250574 jddfdj +$ cd .. +$ cd .. +$ cd hrqfqpzr +$ ls +0 FAKE +143568 pjmc +dir sdpjprfb +dir shcrrpc +$ cd sdpjprfb +$ ls +0 FAKE +88050 rhgmnqz +$ cd .. +$ cd shcrrpc +$ ls +0 FAKE +dir pjmc +dir pwnnmpm +$ cd pjmc +$ ls +0 FAKE +dir wbj +$ cd wbj +$ ls +0 FAKE +196127 gfr +$ cd .. +$ cd .. +$ cd pwnnmpm +$ ls +0 FAKE +dir cgghrf +dir rhgmnqz +dir vnbvq +$ cd cgghrf +$ ls +0 FAKE +108742 lbpfnccl.mtj +$ cd .. +$ cd rhgmnqz +$ ls +0 FAKE +89791 qgbrczz.dhh +$ cd .. +$ cd vnbvq +$ ls +0 FAKE +48961 ltfcmg.chw +241813 qgbrczz.dhh +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd nsnfq +$ ls +0 FAKE +dir tgdqz +$ cd tgdqz +$ ls +0 FAKE +dir ggb +$ cd ggb +$ ls +0 FAKE +dir rhgmnqz +$ cd rhgmnqz +$ ls +0 FAKE +268661 cfbfmprt.tbl +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd rggzmfqm +$ ls +0 FAKE +177501 qqn +55857 sdpjprfb.srj +$ cd .. +$ cd wjdnwg +$ ls +0 FAKE +147729 ls +0 FAKEjvsmsv +242095 pjmc +237172 sdpjprfb.cwf +dir sqh +203791 tswtgpd.jsp +dir zgfz +$ cd sqh +$ ls +0 FAKE +44848 cfbfmprt +214010 cqsblt.jwb +175692 gfr +107978 lgsncr +$ cd .. +$ cd zgfz +$ ls +0 FAKE +184114 cfbfmprt.gpf +207186 qgbrczz.dhh +$ cd .. +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +73238 hfbvz +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +210824 cqsblt.jwb +dir pllr +dir tqqjp +$ cd pllr +$ ls +0 FAKE +dir fshjdzp +210365 ltfcmg.chw +dir rfbdg +96591 rhgmnqz.wbc +dir rzzwcb +123059 tswtgpd.jsp +dir zzcw +$ cd fshjdzp +$ ls +0 FAKE +143719 sdpjprfb +$ cd .. +$ cd rfbdg +$ ls +0 FAKE +242103 wllggqm.wcg +$ cd .. +$ cd rzzwcb +$ ls +0 FAKE +dir rhgmnqz +$ cd rhgmnqz +$ ls +0 FAKE +80525 cqsblt.jwb +$ cd .. +$ cd .. +$ cd zzcw +$ ls +0 FAKE +260646 jtgzqh +$ cd .. +$ cd .. +$ cd tqqjp +$ ls +0 FAKE +245089 vszrfcc +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +7514 cfbfmprt.dvj +$ cd .. +$ cd tjlf +$ ls +0 FAKE +dir pjmc +$ cd pjmc +$ ls +0 FAKE +230234 cfbfmprt.mqf +197486 gfr +$ cd .. +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +19935 fbls +0 FAKEvg.btt +dir fgvv +dir ggb +222906 gjl.zrv +84255 jfqqjzbd +dir pjmc +$ cd fgvv +$ ls +0 FAKE +94831 dgn +312078 tswtgpd.jsp +132961 vzbl.mnq +$ cd .. +$ cd ggb +$ ls +0 FAKE +dir hfcr +310301 msdr.wnh +$ cd hfcr +$ ls +0 FAKE +318041 dnp.lcn +dir mjrhdq +dir qwvfg +$ cd mjrhdq +$ ls +0 FAKE +18541 ctrrm.ljc +247841 pjmc +$ cd .. +$ cd qwvfg +$ ls +0 FAKE +128875 clvgmp.cvb +138276 cqsblt.jwb +26303 tswtgpd.jsp +$ cd .. +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +106609 ltfcmg.chw +$ cd .. +$ cd .. +$ cd sgpnzv +$ ls +0 FAKE +218397 ltfcmg.chw +233365 sdpjprfb.mfd +$ cd .. +$ cd .. +$ cd nwbndtgl +$ ls +0 FAKE +dir fsdvzvvv +198516 sdpjprfb.shs +$ cd fsdvzvvv +$ ls +0 FAKE +209527 ggb +dir llwbm +dir lzz +99039 msgsztv.hnq +104248 rhgmnqz +$ cd llwbm +$ ls +0 FAKE +187895 ghr.crq +274721 qpr.gnm +dir qrrs +$ cd qrrs +$ ls +0 FAKE +260559 mnmhqww +$ cd .. +$ cd .. +$ cd lzz +$ ls +0 FAKE +dir tnmwncgl +dir wrjjmhz +$ cd tnmwncgl +$ ls +0 FAKE +301449 hqz +$ cd .. +$ cd wrjjmhz +$ ls +0 FAKE +145193 mdv +73533 zjwlt.vqf +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +40049 cqsblt.jwb +169928 gvwcdhvn +314117 qgbrczz.dhh +$ cd .. +$ cd rgb +$ ls +0 FAKE +dir bvwn +57953 cqsblt.jwb +240228 fvdpqr.vdz +173344 ltfcmg.chw +dir pjmc +28301 sdpjprfb.qlh +$ cd bvwn +$ ls +0 FAKE +dir cfbfmprt +dir fjmbvhh +dir ggb +dir pdgsf +dir sdpjprfb +$ cd cfbfmprt +$ ls +0 FAKE +dir vndbzj +234044 zmlrt.zwb +$ cd vndbzj +$ ls +0 FAKE +dir cfbfmprt +$ cd cfbfmprt +$ ls +0 FAKE +dir ptzpcqh +$ cd ptzpcqh +$ ls +0 FAKE +141535 cqsblt.jwb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd fjmbvhh +$ ls +0 FAKE +244287 gfr +146029 rhgmnqz.bsq +$ cd .. +$ cd ggb +$ ls +0 FAKE +279627 tswtgpd.jsp +$ cd .. +$ cd pdgsf +$ ls +0 FAKE +dir fjdlhn +21454 qncpwnsw.jnc +49920 sdpjprfb.mmp +318538 tswtgpd.jsp +$ cd fjdlhn +$ ls +0 FAKE +dir rhgmnqz +$ cd rhgmnqz +$ ls +0 FAKE +209357 wggmwlfm +$ cd .. +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +39774 rhgmnqz.wrv +$ cd .. +$ cd .. +$ cd pjmc +$ ls +0 FAKE +115169 flhtvnq.gzc +147102 ltfcmg.chw +279604 rnn.cpc +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +170481 rhgmnqz +48045 szgwfcl.tlh +110279 tnfdmgfl +$ cd .. +$ cd .. +$ cd pdlpwdp +$ ls +0 FAKE +dir fwsbsprp +dir gjjjwznz +dir jzpwnpmc +dir qlvfslzp +dir sdpjprfb +59208 tswtgpd.jsp +$ cd fwsbsprp +$ ls +0 FAKE +177666 rhczscsq.gmb +$ cd .. +$ cd gjjjwznz +$ ls +0 FAKE +163647 cpft.fvj +60316 gfr +$ cd .. +$ cd jzpwnpmc +$ ls +0 FAKE +dir cfbfmprt +dir gpd +46041 ltfcmg.chw +$ cd cfbfmprt +$ ls +0 FAKE +16870 cqsblt.jwb +dir slj +$ cd slj +$ ls +0 FAKE +291893 gdjb.rfv +$ cd .. +$ cd .. +$ cd gpd +$ ls +0 FAKE +159168 qgbrczz.dhh +$ cd .. +$ cd .. +$ cd qlvfslzp +$ ls +0 FAKE +dir clnms +102746 ggb.tth +35817 pjmc.hsc +dir sdpjprfb +296043 sgf.ssl +dir sqhbbsbj +134188 wbhbmbm.bpz +153495 zdjmnjt.smn +$ cd clnms +$ ls +0 FAKE +dir ggb +$ cd ggb +$ ls +0 FAKE +305684 rhgmnqz.bht +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +29970 ghsjjc +$ cd .. +$ cd sqhbbsbj +$ ls +0 FAKE +150243 pjmc.mzd +$ cd .. +$ cd .. +$ cd sdpjprfb +$ ls +0 FAKE +dir cfbfmprt +dir qnhl +$ cd cfbfmprt +$ ls +0 FAKE +dir ggb +$ cd ggb +$ ls +0 FAKE +158203 jtcfv.mvc +dir qnqcb +$ cd qnqcb +$ ls +0 FAKE +71245 cqsblt.jwb +$ cd .. +$ cd .. +$ cd .. +$ cd qnhl +$ ls +0 FAKE +dir sdpjprfb +$ cd sdpjprfb +$ ls +0 FAKE +306685 cqsblt.jwb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd sbps +$ ls +0 FAKE +251286 cqsblt.jwb +dir pjmc +213946 rhgmnqz.nzh +13484 zhzslc.bvp +$ cd pjmc +$ ls +0 FAKE +9892 tswtgpd.jsp +249059 wjb.rwq +$ cd .. +$ cd .. +$ cd wvdlv +$ ls +0 FAKE +314303 qlbqgp.njq diff --git a/2022/full/day08.txt b/2022/full/day08.txt new file mode 100644 index 0000000..d46e623 --- /dev/null +++ b/2022/full/day08.txt @@ -0,0 +1,99 @@ +313213123212200312011243203120214010202554420335045116203101005212525131015305511140012431022113113 +222021333112322244231542054023354511304431216312534453560105660253445311020244233130144313440030322 +200012220300132310233100025524032003355144536126232161330106115213441450552235514000243120210031130 +102111124044033113241415155401056014506203413216651520206613342353052505445000321043121021430440021 +221134021010031320101542213340113552161113350123516154134654046250223033000413443321231233142213010 +112241233114245202523201433013460320664034202602144006022621253536213222400131120345151014014131133 +132211130114141401325141212460540656525106651152012063404633651340223361443201520054113541144043031 +323140320024314005210155316202152552621415660063112177564603241212312025036551350313225504314404112 +014013242041230510442265205625331115540222744516266167254216354043533020346502032534231121044441220 +233414030101315255335126055263144512111777464611565216157441673706100506241423030403420343112342030 +133144314412553330012446404244433465434666762135116677765213463444460612511131340332552424201204120 +010320402332512110363213044530335655613562223756572424746437567672262256431540210005310544243444101 +324403411232230200215144254550257275144535323452276762234354361552536153612012260502425410505314212 +044143021304533036524115200363122146144443357746134567133417572143572217253466665420004544002052304 +031301205442313664253200353721523337451137554555385833341715227554331566151244334446363035232422032 +412021132254126340642250212415471513377143653545744364662761514364426436251422450305502445230351142 +423013525424334650512351242132544127615655738268233852527877887577454317715373566210510633013145020 +314013042244622602006117664713652263528475833433263846468763678447134716635345050225504112315124312 +210530032555051320514661111414734263472852682724485772623266565822423365264512541061226540103142223 +202523210140346233027372362557125436368725536228624865344774378537888747171665564143331101501212340 +312102150200503360534132445517484678583587678756766763747725475724228724317675166660536246102044404 +014501150514404506226424155762432386227846258625478334768375862827476433553651311460116133631440213 +145345025402132601222234271268834838244287765994936689397836424284644676342577451356463132062234232 +030520533600060465674743543832435622275594666933473957864637427284284528866426734257033413611153542 +111125222126126664625217555874224623337857863456948836785373353757744683247375632677514312554402024 +454344234313551645731724622525365832657894545768964536939387863978465673442253722125752553236132004 +141351656653224237252122854224855258938593946648537669944575478986734723225856761571634036114323202 +301354130411223555466416844555847677853855433636774857897563386873392265447728545634555234214003555 +324351500351156142554654722557458488698547355994463766454687489898485753473777574124613414652504004 +000202526603566624271288867428799685358698759656849978553895836996388433252545546266753551322305123 +142140450656776227714466585833798874975635767795445874946645465477849772464684527525213236023524220 +324262353505673315724236445748536388973668654588599896854469535494838643744387872721615221063235321 +552206463167666154577658258569744567339446596474586868848866645743399869362886626547344767533546153 +352323434663437355725427826449799477395999565764668865854945787936654594832633678767541225131001503 +440166362233562667478335763956389857755767497475848959778498799895595785387844464757513162265652640 +104122124642766642664452283555537376598457767558647554969995685645795999475473687336165523560052001 +255352243015641217534667849769975859955778464876555786747474774794864778373768452562637255330444232 +456220432747476336866782246873698697677699688678997975678548856759743777979632262638565415133210633 +354641641663166247236463863687744889449497969668886767686756898498698544578857834482516366746042103 +125201564115437683566423743488648645944969969766988857659599646944656843556585768447477145122536100 +565166453317161563746425435958546648857589858689866779576599554476785965354884443284615264253254316 +121246126671552573824643637663796768749697876859599686798755755668478994537789677336675255111501306 +360355134677155672632437676667797548778989878956585555755888869798448799556895227877387243567410342 +201045427623176635776469999883749944896899977995889968875595559556975886998744463243563112165201326 +352250115546124536536769454447786744475757988989886986985776968688899563536676844455461472345336201 +444012305276547277522595375654994558855859877987996678887769879954854599865599846623773465534004160 +003621673437674224248486547979885878957565757686996887766986595599447858644667462254244517674205046 +045265132276456334554365893935749649965989576778789869677576755756899986563778785582684657425224532 +256151375615717542563666894835779554876779596976976699887778577957456866545674477228666746346403631 +161152464371764263643334333389748956969597666797767878866755966565484647664843525828682412373755454 +502011544714165463843278447485479797867666888668797796768977767569575788836334565474627531473704246 +151460364232447443233565968759985868786557997798976867676959589967898874545836432537554441566122314 +325354014323767722264889584534897666569996596668678778968696799996649764974489874252576563221244356 +300165663442414468382638967476995984959988868887699967676597986577798947648889527728225341345144126 +523044146537227284236854867884546566896896589678689877799567996884747789569869374746443236356121631 +623520016256236672238393557665746588457977578897867867689877778857948885353767526367472655634211324 +513112323743777428355697564974758755988785986568979868979685685997847967586943842248473255451053311 +450020506764535784366644976997588757498856779786876686775868855996746554394579645638756632417635430 +333302106653766675873339799535474646879996789788987875587977755587884588498366525263657241244563411 +021603345313213632267754575346995947848565695878969885767869775868759846376874235783854235221066060 +451051105676415353834239879477689664878678578559658579558858859685656646333643282578751361221450043 +323133151167312457234657559765757999468467698869969666865897797857485499569838464565771443341433624 +351226435216677645378442636393858569688464696659679658777559879978765539986842833528347477142364355 +312522015134552576843564246393479975856585945659576986575979678487794748787843877358147735663364153 +436221405132742616333723774335457748498747869445768557777496645469557694497322763335217424704452516 +531453464276746646458848784658447874499485559877948986585644748765566863496685884585514544145343261 +124004035175455643547236885494794479865464946999998568586788689967343377758845738571672264321061003 +200155306351543777457257657968974568856495865454798449784799858884637386375422526864243565062364102 +445601414321444235648773664866559437996644487476459565964785659539635568456223755627145663416360463 +450034302502443262354377457789598776596746648495968457946465588399656898646426472411777146341644150 +023146264504256441756645634487555664987468946766784647877558359936934483654774826324735714633603030 +333342045300642417421427522458538378785933374679488696549488964673985948667688553344343522163201010 +455545402043235615564685485576228935958544883643955984493945756635487843653852747147246556553523510 +521503005555124536565566284723484688885348465998948435535997783785742684873228712152117622054235215 +312504066020457274731625463858577544637764966338466339435677364997568623562286441516367015430243140 +205031053461063473777474186844553532897797357638539497889554739476455778658267742121765420506102155 +234254241452503617412556672484735427269749864873783849964559983463526474536714377341620430652445005 +005122256601541121767617243673775345873688335643477574686454362545566824655271216641353663405312143 +433412443503526366274346321587248483458325774873734889987843368227357425636513234740304061623033442 +150425005143315445343366357776572258884478742563678357783845862235758564513525337622046146253440425 +225155323264631456635462325511885764326675428846268646575225734474437376612544667111053406332354205 +035014011000365630427277363261244836668367562448734772533252234588746775752633154601553624254020455 +012332415442566650666617225747354638747746384682743326746678826728355131225614470132623462424342514 +013524113311511615516563562155256314453777643324383464236254565752742637247411046651633511302344051 +212122212430404140032134131564756752725322885466434352224875446515552517267614410524244004301240143 +311400235445132520254065617566464245641623888587556667385287735312776421161334445544251524420400232 +440215452341344043062300567544524332733611636552822742567416277354477557756312354353622415135520342 +212430430313114143406656305336551452762327233736172563224242725162751616161102623013055041203553040 +321010353433305435042151016603142762425754273737777221111751751754217734105034366116400050235001301 +141012030043441152515110066520525231112547624256173331346341451761472053411546323404310404443302411 +133133034522454043232213312145664546126452755453724144154261454733124054403605004150535010413000334 +331412441152240551104612131344064131112564126362561532523311462604061151623121543003234021543312303 +010301442302500534021525552205536466144454523741535255444641345430402356234514221410435324321440211 +222301014410242404221240250563134040056104626021173454550103400400616550340400310015454450242211021 +233412422204111420244300456264320032401430366334634641441411125102262216452333414201235210001133200 +132244430320123233143125240232350142156620032556633233042303530460352401020133104323414224314240333 +003213243020203044035550441012322051645661162162123160565554312321050133555533333123214002014231123 +000032030402033315113220225514041611664662663525144303562161423513133325130431534323303033322212313 +101211324120322333355055001035515221630532526633042003421442155144120444232152535003241233413001002 diff --git a/2022/full/day09.txt b/2022/full/day09.txt new file mode 100644 index 0000000..28ee116 --- /dev/null +++ b/2022/full/day09.txt @@ -0,0 +1,2000 @@ +R 2 +U 2 +L 2 +U 1 +L 1 +U 1 +R 1 +L 2 +U 2 +R 1 +D 2 +U 2 +R 1 +D 1 +L 1 +R 1 +L 2 +U 2 +L 2 +D 1 +R 1 +U 2 +L 2 +U 2 +R 1 +D 1 +L 2 +U 2 +R 2 +L 2 +U 2 +R 2 +L 1 +U 2 +R 2 +D 1 +L 1 +R 2 +U 1 +R 2 +D 2 +L 1 +R 1 +U 1 +R 2 +L 1 +U 1 +R 1 +L 2 +D 2 +R 2 +D 1 +L 2 +R 2 +L 1 +R 2 +D 1 +R 2 +D 2 +L 1 +R 1 +U 2 +L 2 +R 2 +D 1 +R 2 +U 2 +L 1 +D 2 +R 2 +L 2 +D 2 +U 1 +R 2 +U 2 +R 2 +D 2 +R 1 +U 2 +D 2 +R 1 +L 1 +R 1 +U 2 +D 2 +R 1 +U 1 +R 1 +L 1 +U 2 +L 2 +D 2 +U 2 +D 2 +R 2 +D 2 +L 1 +U 2 +L 1 +R 1 +D 2 +L 1 +U 1 +D 2 +U 2 +D 2 +R 2 +U 1 +R 1 +U 2 +D 1 +R 2 +D 2 +L 3 +U 1 +D 2 +U 3 +R 3 +L 1 +D 2 +R 1 +D 3 +L 3 +R 1 +D 3 +L 3 +D 1 +R 3 +D 1 +L 1 +D 2 +R 3 +D 1 +U 2 +R 2 +L 1 +D 1 +R 3 +U 2 +L 3 +U 2 +D 2 +R 2 +D 3 +U 1 +D 3 +L 3 +R 2 +L 2 +D 3 +L 2 +U 3 +R 2 +D 1 +R 2 +U 3 +R 3 +U 3 +L 1 +R 3 +D 2 +R 1 +L 3 +R 1 +D 3 +L 3 +D 1 +U 2 +R 3 +U 3 +D 1 +L 2 +R 3 +L 1 +D 2 +L 3 +D 1 +L 3 +D 1 +U 2 +D 3 +R 2 +U 1 +L 3 +R 3 +L 2 +R 1 +L 2 +D 2 +R 3 +U 3 +R 3 +D 2 +U 3 +D 2 +R 3 +D 3 +R 2 +U 1 +L 3 +U 2 +R 2 +L 2 +U 1 +L 3 +D 2 +U 2 +R 1 +L 2 +D 2 +U 3 +R 2 +D 2 +L 3 +U 1 +L 1 +U 2 +R 2 +U 1 +D 2 +U 2 +R 3 +L 1 +U 1 +D 3 +U 4 +L 3 +D 2 +L 3 +U 4 +D 2 +R 4 +L 4 +U 2 +D 3 +U 2 +D 3 +L 3 +U 2 +D 3 +L 1 +U 1 +R 1 +L 4 +R 3 +D 3 +L 2 +U 3 +R 2 +L 1 +U 4 +D 3 +U 1 +L 2 +D 4 +L 1 +R 3 +D 4 +R 1 +L 1 +U 3 +L 3 +D 3 +R 3 +U 1 +L 4 +U 3 +R 3 +L 3 +U 2 +R 3 +L 3 +R 1 +D 3 +R 3 +L 4 +R 3 +D 4 +L 3 +U 2 +R 4 +L 1 +U 1 +R 4 +D 3 +U 1 +R 1 +D 1 +U 3 +R 2 +L 1 +D 1 +L 3 +D 4 +R 4 +U 4 +D 1 +R 3 +D 3 +R 3 +L 4 +R 4 +L 2 +R 2 +D 3 +R 4 +D 2 +U 4 +L 3 +D 1 +R 2 +U 2 +R 3 +D 1 +R 3 +D 1 +L 1 +U 4 +L 2 +U 4 +L 4 +U 3 +R 4 +L 3 +R 3 +L 4 +U 4 +R 4 +D 2 +R 2 +D 3 +U 4 +D 1 +U 1 +D 5 +U 3 +D 5 +U 5 +D 3 +L 3 +U 3 +D 3 +R 1 +D 3 +R 4 +U 4 +D 1 +R 5 +D 5 +R 2 +U 5 +L 2 +U 2 +D 2 +U 4 +R 1 +D 1 +L 2 +R 2 +D 1 +L 5 +R 5 +D 4 +R 5 +L 1 +D 2 +L 3 +U 2 +D 3 +L 1 +R 5 +U 3 +R 1 +D 3 +R 1 +U 1 +R 3 +U 2 +D 5 +L 5 +R 1 +U 3 +L 4 +D 2 +R 1 +D 3 +U 4 +R 3 +L 4 +U 2 +D 3 +U 1 +R 5 +D 3 +L 2 +U 3 +L 5 +U 3 +L 3 +D 5 +L 5 +U 3 +R 2 +D 5 +U 4 +L 5 +U 1 +D 5 +R 3 +D 1 +L 5 +R 2 +D 2 +U 5 +R 1 +D 2 +L 3 +D 2 +L 5 +D 2 +U 5 +L 2 +R 3 +L 3 +D 3 +U 2 +R 5 +L 1 +U 5 +R 5 +L 2 +D 5 +R 3 +L 2 +U 2 +D 3 +R 4 +L 1 +R 3 +D 5 +R 3 +D 4 +R 2 +D 5 +R 3 +L 3 +R 2 +U 2 +L 1 +R 6 +U 6 +L 6 +U 2 +R 6 +D 4 +U 1 +L 1 +R 1 +D 1 +L 6 +D 6 +U 4 +L 6 +D 3 +R 1 +U 1 +D 3 +R 3 +D 5 +U 1 +L 2 +R 6 +U 5 +D 6 +L 6 +R 2 +U 1 +D 1 +L 4 +D 5 +L 6 +U 1 +L 6 +R 5 +U 5 +D 3 +L 5 +R 2 +U 3 +D 1 +L 2 +U 2 +D 1 +L 5 +D 1 +U 5 +R 4 +L 2 +R 5 +D 3 +U 3 +R 2 +U 3 +D 6 +L 5 +R 1 +U 5 +L 1 +R 6 +D 6 +R 6 +L 1 +D 2 +R 5 +L 4 +D 3 +L 5 +R 4 +L 6 +U 1 +L 2 +U 3 +R 4 +D 3 +R 3 +L 1 +D 4 +L 2 +R 5 +D 2 +R 2 +D 5 +U 2 +L 4 +R 4 +U 4 +R 1 +D 3 +L 6 +U 5 +L 5 +D 6 +U 3 +D 6 +R 6 +D 3 +U 6 +L 6 +D 3 +L 6 +R 3 +D 2 +L 4 +D 5 +L 5 +D 2 +L 6 +R 1 +D 1 +L 4 +U 6 +R 1 +L 5 +D 7 +U 2 +R 6 +D 7 +L 2 +R 3 +U 1 +L 3 +R 2 +U 7 +D 7 +U 7 +D 4 +R 2 +L 7 +R 7 +L 5 +R 4 +U 5 +L 5 +U 6 +R 2 +D 3 +L 2 +U 6 +D 5 +R 2 +D 2 +R 5 +U 7 +R 3 +D 1 +L 5 +R 1 +U 3 +D 6 +U 6 +L 7 +U 4 +L 6 +D 1 +L 7 +U 4 +D 7 +L 1 +D 6 +L 2 +R 5 +L 7 +U 3 +D 2 +R 7 +L 2 +U 6 +L 3 +U 6 +L 5 +R 2 +L 7 +D 3 +L 7 +R 1 +L 1 +R 5 +D 6 +L 2 +D 5 +L 4 +D 3 +U 5 +D 1 +R 4 +U 1 +L 2 +R 3 +U 7 +D 6 +U 2 +D 4 +U 5 +D 5 +U 7 +R 2 +D 1 +U 2 +L 2 +U 3 +D 1 +R 4 +D 1 +R 3 +U 1 +R 7 +D 4 +R 3 +D 2 +L 2 +U 4 +L 2 +U 6 +L 4 +D 6 +U 3 +L 1 +U 4 +R 7 +D 6 +L 2 +D 7 +R 4 +U 5 +R 4 +D 5 +R 6 +D 4 +R 4 +U 2 +R 3 +L 7 +R 8 +D 8 +R 5 +U 2 +D 6 +L 2 +R 4 +U 3 +L 1 +R 2 +D 5 +L 1 +D 5 +L 5 +U 1 +R 8 +D 1 +U 1 +L 1 +R 8 +L 3 +R 6 +L 1 +U 3 +R 6 +L 5 +U 2 +L 8 +R 4 +U 4 +R 6 +U 5 +R 1 +L 2 +R 5 +D 1 +U 4 +L 3 +U 3 +R 1 +U 3 +R 8 +L 1 +U 2 +L 7 +D 6 +L 6 +R 4 +D 2 +R 2 +L 8 +D 4 +R 4 +U 4 +L 6 +D 3 +R 7 +D 8 +U 4 +R 4 +U 2 +L 8 +D 5 +L 4 +U 7 +D 8 +U 6 +R 6 +L 5 +D 5 +L 2 +D 1 +R 1 +D 4 +R 5 +L 7 +D 8 +U 2 +D 3 +L 5 +R 4 +L 7 +R 3 +L 1 +D 8 +R 5 +L 8 +R 8 +D 1 +R 4 +D 1 +L 2 +D 5 +L 7 +U 1 +L 4 +R 5 +L 3 +R 9 +D 9 +L 4 +R 6 +L 6 +R 1 +L 3 +R 5 +D 8 +L 1 +U 2 +R 8 +U 7 +D 6 +L 8 +D 1 +L 9 +D 5 +L 1 +D 6 +L 8 +R 2 +L 6 +R 4 +U 1 +R 6 +L 5 +R 5 +L 6 +R 8 +D 5 +L 4 +R 2 +L 7 +R 2 +U 9 +L 6 +R 2 +U 7 +D 4 +U 2 +L 2 +U 8 +R 8 +U 3 +R 6 +D 6 +L 2 +D 4 +L 4 +R 2 +L 1 +U 8 +D 2 +R 2 +L 1 +R 7 +L 8 +D 8 +L 4 +U 4 +R 5 +U 1 +D 8 +L 8 +R 9 +D 6 +L 1 +D 5 +L 9 +U 6 +D 6 +U 3 +D 5 +R 5 +U 9 +L 2 +R 5 +U 9 +L 1 +D 4 +U 4 +L 5 +D 6 +R 3 +L 6 +U 3 +R 4 +U 5 +L 5 +D 8 +L 6 +U 4 +D 1 +U 7 +D 2 +L 3 +R 7 +U 1 +R 4 +U 4 +R 9 +U 3 +D 2 +L 6 +R 9 +U 3 +L 8 +R 10 +U 3 +R 8 +D 8 +L 1 +U 4 +R 5 +U 8 +D 10 +U 10 +L 7 +D 5 +L 2 +R 7 +L 1 +U 10 +R 1 +D 1 +L 5 +R 7 +U 6 +L 3 +R 7 +U 4 +R 3 +U 3 +R 4 +U 8 +L 8 +D 6 +L 5 +U 10 +L 9 +R 3 +U 10 +D 9 +U 5 +D 10 +U 7 +D 6 +U 9 +L 8 +U 3 +D 6 +R 9 +U 9 +D 4 +R 8 +U 7 +R 6 +U 5 +R 5 +U 3 +D 4 +R 9 +L 7 +D 7 +U 1 +L 3 +R 4 +D 8 +L 4 +D 6 +U 1 +R 7 +D 4 +L 9 +D 2 +R 4 +U 10 +D 5 +U 6 +D 6 +R 5 +U 6 +D 6 +L 7 +U 4 +D 1 +L 6 +R 8 +L 7 +U 8 +L 2 +R 6 +L 9 +D 2 +U 9 +D 5 +U 10 +D 1 +R 9 +L 6 +D 7 +U 1 +D 4 +L 3 +R 7 +U 1 +R 6 +D 4 +R 1 +D 4 +L 8 +R 1 +U 10 +D 1 +U 5 +R 6 +U 5 +D 2 +U 10 +R 8 +L 7 +U 6 +L 4 +R 6 +L 7 +U 3 +R 4 +D 1 +L 4 +R 7 +D 2 +L 4 +U 3 +D 6 +U 10 +D 5 +R 8 +U 5 +L 9 +D 4 +L 4 +D 8 +U 9 +R 2 +U 4 +R 4 +U 9 +D 1 +R 7 +U 5 +L 2 +U 10 +R 4 +D 1 +L 3 +R 11 +D 7 +U 7 +D 7 +L 11 +U 2 +D 1 +U 1 +R 1 +U 3 +L 6 +U 10 +L 4 +U 5 +L 10 +D 1 +U 8 +R 7 +L 4 +U 7 +L 9 +U 6 +L 11 +U 3 +R 8 +L 6 +D 9 +L 9 +D 1 +R 7 +L 11 +D 9 +R 7 +U 2 +D 11 +L 4 +D 4 +R 11 +D 7 +U 2 +D 7 +R 2 +D 1 +L 6 +D 11 +R 3 +U 7 +L 10 +U 7 +D 2 +R 2 +U 1 +L 9 +R 11 +L 3 +R 7 +L 2 +D 11 +R 1 +D 4 +R 3 +L 10 +U 5 +D 3 +R 10 +D 8 +U 1 +D 2 +R 10 +L 8 +R 1 +D 8 +U 6 +R 8 +D 8 +L 2 +D 7 +U 4 +L 5 +R 4 +D 4 +U 7 +D 11 +U 11 +R 4 +L 6 +U 3 +L 10 +U 1 +L 11 +U 3 +D 6 +L 11 +R 4 +L 3 +D 12 +L 7 +R 9 +L 9 +U 10 +L 1 +D 6 +L 10 +U 3 +R 6 +D 5 +L 6 +R 8 +D 4 +R 6 +L 6 +D 9 +L 1 +D 11 +U 6 +L 3 +R 10 +U 12 +R 11 +D 10 +U 5 +R 6 +D 12 +U 12 +R 8 +U 5 +D 1 +R 12 +D 1 +R 7 +U 8 +D 5 +U 7 +D 3 +R 7 +D 8 +U 11 +R 2 +U 4 +L 2 +R 1 +L 3 +U 9 +L 5 +D 11 +R 10 +L 3 +U 3 +D 3 +R 1 +L 8 +D 6 +R 7 +U 11 +L 6 +D 1 +R 12 +D 8 +U 7 +R 2 +U 5 +R 4 +U 10 +L 8 +D 5 +U 10 +D 3 +L 6 +R 4 +L 9 +D 6 +R 7 +D 4 +U 10 +D 1 +L 6 +R 1 +L 7 +U 5 +L 9 +U 12 +L 7 +U 6 +D 6 +U 9 +L 7 +U 4 +D 5 +L 1 +U 5 +D 1 +L 10 +D 2 +R 3 +D 13 +U 11 +L 1 +U 1 +D 1 +R 12 +U 13 +L 5 +D 11 +L 9 +U 11 +L 2 +R 6 +D 7 +L 2 +U 5 +R 2 +U 10 +L 9 +D 7 +R 12 +D 10 +L 12 +D 8 +L 8 +R 12 +D 11 +U 12 +L 1 +U 2 +D 6 +R 3 +D 2 +U 9 +L 10 +R 4 +U 2 +D 10 +U 7 +R 6 +U 9 +R 4 +L 3 +U 13 +R 9 +U 6 +D 8 +L 5 +R 11 +L 6 +R 12 +D 5 +U 7 +R 11 +D 1 +L 9 +R 12 +U 2 +R 5 +U 1 +R 9 +U 6 +D 4 +R 2 +U 2 +D 5 +L 9 +R 6 +U 4 +L 6 +R 9 +L 4 +U 3 +L 9 +R 6 +L 5 +D 6 +L 3 +R 6 +L 3 +D 9 +U 5 +D 1 +R 5 +L 3 +U 9 +R 7 +L 8 +R 6 +L 7 +U 4 +D 13 +U 2 +L 1 +U 11 +R 8 +L 13 +D 1 +U 4 +L 13 +D 1 +L 8 +D 13 +L 2 +R 2 +D 1 +L 14 +U 7 +R 11 +L 1 +R 4 +L 5 +R 11 +U 7 +D 8 +L 3 +U 1 +L 12 +U 13 +D 9 +R 1 +L 11 +U 12 +D 5 +U 10 +D 10 +R 9 +L 1 +D 5 +R 7 +L 1 +D 13 +R 10 +U 2 +R 3 +L 14 +D 7 +R 12 +U 13 +L 2 +U 13 +L 3 +U 5 +L 11 +R 8 +D 11 +R 6 +L 11 +R 5 +L 3 +U 1 +L 5 +R 13 +L 12 +D 10 +R 8 +D 6 +L 1 +R 10 +U 5 +R 3 +D 11 +L 8 +R 4 +D 2 +L 1 +R 7 +U 3 +L 14 +R 3 +L 4 +R 13 +L 10 +U 3 +D 1 +L 11 +U 1 +D 6 +R 10 +U 1 +R 2 +L 7 +U 3 +L 5 +U 4 +D 7 +R 8 +U 12 +R 6 +L 2 +D 5 +L 11 +R 4 +L 4 +R 6 +L 3 +R 10 +U 4 +D 9 +U 1 +D 4 +L 12 +D 13 +L 1 +D 6 +R 8 +L 1 +D 9 +L 8 +U 3 +D 3 +U 2 +R 11 +U 10 +L 5 +D 11 +U 12 +D 3 +R 15 +L 1 +R 5 +D 9 +U 15 +D 2 +L 9 +U 9 +D 15 +R 4 +L 9 +R 8 +L 12 +D 5 +R 12 +U 9 +L 9 +U 7 +L 12 +R 11 +U 9 +L 15 +D 9 +L 4 +R 4 +U 13 +D 7 +R 7 +D 8 +U 5 +D 5 +L 15 +D 2 +R 8 +D 10 +R 5 +U 13 +R 1 +L 8 +D 12 +R 2 +L 4 +D 9 +L 9 +D 7 +R 5 +U 15 +R 9 +L 2 +R 8 +U 11 +D 15 +U 13 +D 5 +U 5 +R 11 +U 7 +R 11 +D 12 +U 6 +D 6 +L 8 +D 8 +R 14 +U 13 +R 11 +D 1 +R 4 +U 14 +R 11 +L 8 +D 2 +U 13 +R 15 +L 10 +D 2 +L 3 +R 9 +U 2 +R 8 +U 15 +R 3 +D 4 +L 7 +D 7 +R 1 +D 13 +R 1 +L 13 +U 9 +L 13 +U 10 +L 15 +D 5 +R 11 +D 3 +U 3 +R 4 +L 7 +R 1 +U 13 +R 9 +U 7 +R 10 +D 5 +U 7 +R 6 +L 14 +U 2 +R 8 +D 2 +U 16 +D 12 +R 11 +D 4 +L 8 +U 8 +L 13 +D 5 +R 4 +U 8 +D 15 +R 8 +D 13 +R 16 +U 4 +D 3 +U 5 +D 8 +R 16 +L 13 +U 3 +D 6 +L 9 +R 10 +D 6 +R 16 +D 15 +R 11 +L 8 +D 8 +U 4 +R 16 +D 1 +U 11 +L 15 +R 7 +D 2 +R 1 +D 4 +L 1 +U 15 +D 16 +R 3 +U 10 +D 9 +U 6 +D 15 +R 11 +L 6 +R 2 +U 14 +R 4 +L 15 +R 15 +D 16 +U 9 +D 2 +L 8 +D 15 +R 5 +U 13 +L 15 +D 1 +R 4 +U 14 +D 15 +L 15 +U 13 +R 16 +L 7 +R 4 +D 13 +L 15 +D 3 +L 7 +D 4 +R 12 +D 10 +U 8 +D 6 +L 13 +R 15 +U 12 +L 4 +R 16 +D 1 +R 14 +L 9 +D 13 +U 2 +D 9 +U 16 +L 15 +R 12 +L 14 +R 6 +D 1 +R 2 +L 15 +U 7 +L 16 +U 15 +D 11 +R 11 +L 3 +R 11 +L 15 +U 17 +L 14 +R 4 +U 15 +D 6 +L 2 +R 7 +L 16 +U 4 +L 14 +U 9 +L 7 +D 16 +R 4 +D 2 +R 15 +L 6 +R 6 +D 1 +U 5 +D 14 +U 4 +D 11 +R 5 +U 16 +L 3 +D 7 +R 10 +L 3 +D 8 +L 10 +U 1 +D 16 +L 6 +R 6 +L 14 +R 6 +U 11 +L 17 +D 7 +R 2 +L 12 +D 15 +U 16 +R 2 +U 3 +R 16 +U 12 +L 3 +U 5 +D 1 +R 12 +U 17 +D 11 +L 16 +U 13 +L 5 +D 1 +R 2 +L 10 +U 12 +D 7 +U 6 +R 4 +U 5 +L 3 +R 16 +D 1 +U 14 +R 15 +D 6 +U 14 +R 4 +L 6 +D 11 +R 16 +L 15 +U 7 +L 10 +R 5 +L 15 +R 12 +L 17 +U 5 +D 14 +L 6 +R 2 +U 5 +R 10 +L 8 +D 2 +U 17 +L 13 +D 17 +L 5 +R 11 +L 3 +U 11 +R 1 +L 3 +D 1 +L 7 +D 14 +R 13 +U 9 +D 7 +L 15 +U 5 +D 4 +R 7 +L 10 +D 6 +R 18 +U 5 +R 18 +U 6 +D 17 +U 8 +R 16 +D 12 +R 12 +D 9 +R 9 +U 4 +R 16 +L 1 +D 12 +L 12 +R 11 +D 15 +U 13 +L 8 +R 4 +L 1 +R 1 +D 11 +R 15 +D 3 +L 17 +D 17 +R 11 +U 13 +D 11 +R 4 +D 17 +U 8 +L 1 +D 2 +L 16 +D 6 +L 15 +D 17 +L 8 +U 5 +D 15 +L 15 +U 11 +D 9 +L 18 +U 18 +R 14 +L 4 +U 17 +R 11 +D 18 +U 2 +R 9 +D 15 +R 5 +L 13 +R 2 +L 18 +D 5 +U 14 +L 17 +R 3 +U 4 +R 15 +U 1 +D 15 +U 12 +D 17 +U 11 +L 3 +R 10 +U 13 +R 12 +L 10 +R 1 +D 4 +U 2 +D 14 +R 14 +U 5 +R 16 +U 17 +R 16 +U 18 +R 6 +U 5 +R 18 +U 12 +D 7 +R 9 +L 1 +U 15 +D 10 +L 4 +U 9 +L 3 +U 1 +R 12 +D 14 +U 13 +L 10 +R 8 +U 5 +D 7 +U 1 +L 13 +U 14 +D 18 +L 13 +D 12 +R 2 +L 6 +D 17 +L 18 +R 6 +U 4 +L 7 +R 8 +U 5 +D 1 +L 3 +U 10 +R 5 +D 7 +U 16 +R 12 +U 8 +L 18 +R 1 +L 11 +D 14 +L 19 +R 15 +U 14 +L 8 +R 14 +U 13 +D 18 +U 14 +L 14 +U 11 +L 10 +D 11 +L 11 +R 15 +L 12 +R 10 +L 9 +R 9 +L 9 +D 3 +R 9 +L 6 +R 8 +D 7 +L 18 +D 12 +R 3 +U 7 +R 18 +U 9 +L 14 +D 12 +L 10 +U 15 +L 11 +R 17 +D 7 +R 5 +L 3 +U 13 +D 7 +U 13 +R 16 +D 2 +L 7 +R 15 +L 14 +U 19 +D 3 +L 19 +D 11 +R 8 +D 6 +U 12 +R 5 +U 6 +L 7 +R 4 +L 3 +D 6 +L 17 +U 16 +D 11 +U 12 +D 4 +R 6 +D 10 +L 3 +D 15 +R 5 +L 6 +D 11 +U 17 +L 14 +D 15 +L 1 +D 6 +R 16 +D 11 +U 2 +D 2 +U 7 +D 10 +L 11 +D 19 +L 12 +D 3 +L 18 +U 3 diff --git a/2022/python/_sample.py b/2022/python/_sample.py new file mode 100644 index 0000000..3b20b90 --- /dev/null +++ b/2022/python/_sample.py @@ -0,0 +1,14 @@ +import shared +from pprint import pprint as pp + +def run(SOMETHING): + pp(SOMETHING) + +def main(): + spl = lambda y: [int(w) for w in y] + rows = [row.rstrip().split() for row in shared.load(3)] + print(run(rows)) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day01.py b/2022/python/day01.py new file mode 100644 index 0000000..5ce2f92 --- /dev/null +++ b/2022/python/day01.py @@ -0,0 +1,33 @@ +import shared +from pprint import pprint as pp + + +def run(rows): + elves = [] + current_elf = 0 + for row in rows: + if row == '': + elves.append(current_elf) + current_elf = 0 + continue + current_elf += int(row) + + three = 0 + + for x in range(3): + most = max(elves) + idx = elves.index(most) + elves.pop(idx) + three += most + print(three) + + + +def main(): + with open(shared.get_fname(1), "r") as f: + rows = [x.rstrip() for x in f.readlines()] + run(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day02.py b/2022/python/day02.py new file mode 100644 index 0000000..f371bce --- /dev/null +++ b/2022/python/day02.py @@ -0,0 +1,75 @@ +import shared +from pprint import pprint as pp + +rock = "rock" +paper = "paper" +scissors = "scissors" + +lose = "X" +tie = "Y" +win = "Z" + +Moves = { + "A":rock, + "B":paper, + "C":scissors, + + "X":rock, + "Y":paper, + "Z":scissors, +} + +Scores = { + rock: 1, + paper: 2, + scissors: 3 +} + +LosesTo = { + rock: paper, + paper: scissors, + scissors: rock +} +WinsTo = { + paper: rock, + scissors: paper, + rock: scissors +} + + +def winner(opponent, me): + if opponent == me: + return 3 + Scores[me] + + # wins + if (opponent == rock and me == paper) or (opponent == paper and me == scissors) or (opponent == scissors and me == rock): + return 6 + Scores[me] + + return 0 + Scores[me] + +def which_move(opponent, me): + if me == lose: + return WinsTo[Moves[opponent]] + if me == win: + return LosesTo[Moves[opponent]] + if me == tie: + return Moves[opponent] + + +def run(moves): + score = 0 + for move in moves: + opponent, me = move + my_move = which_move(opponent, me) + o_move = Moves[opponent] + pts = winner(o_move, my_move) + score += pts + print(score) + +def main(): + rows = [row.rstrip().split() for row in shared.load(2)] + run(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day02_golf.py b/2022/python/day02_golf.py new file mode 100644 index 0000000..a114691 --- /dev/null +++ b/2022/python/day02_golf.py @@ -0,0 +1,33 @@ +import shared + +R = "A" +P = "B" +S = "C" + +X = "X" # lose +Y = "Y" # tie +Z = "Z" # win + +Moves = { + R: {X:S, Y:R, Z:P}, + P: {X:R, Y:P, Z:S}, + S: {X:P, Y:S, Z:R}, +} + +Scores = { + R: 1, P: 2, S: 3, X: 0, Y: 3, Z: 6, +} + +def run(moves): + score = 0 + for o, a in moves: + score += Scores[Moves[o][a]] + Scores[a] + print(score) + +def main(): + rows = [row.rstrip().split() for row in shared.load(2)] + run(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day03.py b/2022/python/day03.py new file mode 100644 index 0000000..8b561e2 --- /dev/null +++ b/2022/python/day03.py @@ -0,0 +1,32 @@ +import shared +import string + + +def part1(rucksacks): + total = 0 + for comp1,comp2 in [(r[:len(r)//2], r[len(r)//2:]) for r in rucksacks]: + c1 = set(x for x in comp1) + c2 = set(x for x in comp2) + match = list(c1.intersection(c2))[0] + total += string.ascii_letters.index(match) + 1 + print(total) + +def part2(rucksacks): + total = 0 + for idx in range(0, len(rucksacks), 3): + r1,r2,r3 = rucksacks[idx:idx+3] + c1 = set(x for x in r1) + c2 = set(x for x in r2) + c3 = set(x for x in r3) + match = list(c1.intersection(c2).intersection(c3))[0] + total += string.ascii_letters.index(match) + 1 + print(total) + + +def main(): + rows = [row for row in shared.load(3)] + part1(rows) + part2(rows) + +if __name__ == "__main__": + main() diff --git a/2022/python/day04.py b/2022/python/day04.py new file mode 100644 index 0000000..acae2fb --- /dev/null +++ b/2022/python/day04.py @@ -0,0 +1,38 @@ +import shared + + +def part1(x): + internal = 0 + for pair in x: + l,r = pair.split(",") + l1,l2 = map(int, l.split("-")) + r1,r2 = map(int, r.split("-")) + if l1 <= r1 and l2 >= r2: + internal += 1 + elif r1 <= l1 and r2 >= l2: + internal += 1 + print(internal) + + +def part2(x): + internal = 0 + for pair in x: + l,r = pair.split(",") + ll = list(sorted(map(int, l.split("-")))) + rl = list(sorted(map(int, r.split("-")))) + + set1 = set(range(ll[0], ll[1]+1)) + set2 = set(range(rl[0], rl[1]+1)) + if bool(set1 & set2): + internal +=1 + print(internal) + + +def main(): + rows = [row for row in shared.load(4)] + part1(rows) + part2(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day05.py b/2022/python/day05.py new file mode 100644 index 0000000..413d98b --- /dev/null +++ b/2022/python/day05.py @@ -0,0 +1,82 @@ +from pprint import pprint as pp +from shared import load_rows +from scanf import scanf +from string import ascii_letters +import re + + +def load_crates(x): + done_crates = False + crates = [] + instructions = [] + for row in x: + if done_crates: + instructions.append(row) + else: + if row == '': + done_crates = True + else: + crates.append(row) + crates.pop() + return crates, instructions + +def to_lists(crates): + parsed = [] + reg = re.compile(r"[\([{})\]]") + for row in crates: + parsed.append([x for x in reg.sub(" ",row)]) + parsed = list(zip(*parsed[::-1])) + parsed = list(zip(*parsed[::-1])) + parsed = list(zip(*parsed[::-1])) + cleaned1 = [[x for x in y if x.strip()] for y in parsed if y] + cleaned2 = [x for x in cleaned1 if x != []][::-1] + return cleaned2 + +def parse_instructions(crates, instructions): + for instruction in instructions: + count,_from,_to = scanf("move %d from %d to %d", instruction) + print(count,_from,_to) + _from -=1 # 1 based yo + _to -=1 + for x in range(count): + value = crates[_from].pop(0) + crates[_to].insert(0, value) + return crates + +def parse_instructions_pt2(crates, instructions): + for instruction in instructions: + count,_from,_to = scanf("move %d from %d to %d", instruction) + _from -=1 # 1 based yo + _to -=1 + moving = crates[_from][:count] + print(instruction, moving) + for x in range(count): + crates[_from].pop(0) + for x in reversed(moving): + crates[_to].insert(0, x) + + return crates + + +def part1(x): + crates, instructions = load_crates(x) + crates = to_lists(crates) + crates = parse_instructions(crates, instructions) + print([c[0] for c in crates]) + + +def part2(x): + crates, instructions = load_crates(x) + crates = to_lists(crates) + crates = parse_instructions_pt2(crates, instructions) + print("".join([c[0] for c in crates])) + + +def main(): + rows = load_rows(5) + #part1(rows) + part2(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day06.py b/2022/python/day06.py new file mode 100644 index 0000000..0994c38 --- /dev/null +++ b/2022/python/day06.py @@ -0,0 +1,20 @@ +from shared import load_rows + +def part1(row, group_size=4): + for x in range(len(row)): + if (len(set(row[x:x+group_size])) == group_size): + print(x+group_size) + break + +def part2(row): + part1(row, 14) + +def main(): + rows = load_rows(6) + for row in rows: + part1(row) + part2(row) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day07.py b/2022/python/day07.py new file mode 100644 index 0000000..a75fc56 --- /dev/null +++ b/2022/python/day07.py @@ -0,0 +1,153 @@ +from pprint import pprint as pp +from pathlib import Path +import json +from shared import load_rows +import re + +from functools import reduce +import operator + +PWD = [] +FS = { "/": {".":{"size":0, "files":[]}} } + +def get_keys(input_dict): + for key, value in input_dict.items(): + if isinstance(value, dict): + for subkey in get_keys(value): + yield key + ',' + subkey + else: + if key in ("files"): + continue + yield f"{value}" + +def getFromDict(mapList): + return reduce(operator.getitem, mapList, FS) + +def setInDict(mapList, value): + getFromDict(mapList[:-1])[mapList[-1]] = value + +def addInDict(mapList, filename, value): + try: + v = getFromDict(mapList[:-1])[mapList[-1]] + v += value + getFromDict(mapList[:-1])[mapList[-1]] = v + except KeyError: + getFromDict(mapList[:-1])["."] = {"size": 0, "files":[]} + v = getFromDict(mapList[:-1])[mapList[-1]] + v["size"] += 0 # Value + v["files"].append(f"{filename}:{value}") + getFromDict(mapList[:-1])[mapList[-1]] = v + except TypeError: + v = getFromDict(mapList[:-1])["."] + v["size"] += 0 # value + v["files"].append(f"{filename}:{value}") + getFromDict(mapList[:-1])[mapList[-1]] = v + + + + +def part1(rows): + build_fs(rows) + #calculate_directories() + +def calculate_directories(): + keys = list(get_keys(FS)) + new_FS = {} + for key in keys: + pwd = key.split(",") + size = int(pwd.pop()) # split out size + pwd.pop() # remove . + pwd_key = ",".join(pwd) + parent = ",".join(pwd[:-1]) + new_FS[pwd_key] = {"size":size, "full_size":size, "parent":parent} + print("made") + + #pp(new_FS) + #print("----") + #for pwd, directory in new_FS.items(): + # print(pwd, "\t", directory['parent']) + print(new_FS.keys()) + print("keys^") + for pwd, directory in new_FS.items(): + parent = directory['parent'] + if parent: + print(parent) + #print(f"{pwd}:{parent} Adding {directory['size']} to fullsize {new_FS[parent]['full_size']}") + new_FS[parent]["size"] += directory["size"] + print("added sizes") + + sizes = [] + for k,v in new_FS.items(): + sizes.append(v['size']) + total = 0 + + for size in sizes: + if size <= 100000: + print("+", size) + total += size + + print("=" ,total) + +def build_fs(rows): + LS_ING = False + for row in rows: + parts = row.split(" ") + if parts[0] == "$": + if LS_ING: + LS_ING = False + + # Action + if parts[1] == "cd": + if parts[2] == "..": + PWD.pop() + else: + PWD.append(parts[2]) + #print(PWD) + elif parts[1] == "ls": + LS_ING = True + continue + if LS_ING: + if parts[0] == "dir": + add_directory(parts[1]) + else: + add_file(parts[1], int(parts[0])) + jp(FS) + +def jp(d): + output = json.dumps(FS, indent=4) + output2 = re.sub(r'": \[\s+', '": [', output) + output3 = re.sub(r'",\s+', '", ', output2) + output4 = re.sub(r'"\s+\]', '"]', output3) + print(output4) + + +def add_directory(dirname): + temp_new_path = PWD + [dirname] + setInDict(temp_new_path, {".":{"size":0, "files":[]}}) + +def add_file(filename, size): + #print(".", PWD, filename, size) + mapList = PWD + ["."] + addInDict(mapList, filename, size) + curr = getFromDict(mapList[:-1]) + print(curr) + #print(curr) + s = curr["."] + s["size"] += size + print(size,s) + tmp = mapList + ["size"] + setInDict(mapList, s) + print("-----") + + +def part2(row): + pass + +def main(): + rows = load_rows(7) + part1(rows) + part2(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/day08.py b/2022/python/day08.py new file mode 100644 index 0000000..d52f630 --- /dev/null +++ b/2022/python/day08.py @@ -0,0 +1,136 @@ +from pprint import pprint as pp +from shared import get_fname +import matrix + + +def part1(mx): + SIZE=len(mx) + MAX_IDX = SIZE -1 + data = matrix.matrix_of_size(SIZE, SIZE) + data = matrix.set_matrix_dict(data) + + for row in range(SIZE): + for col in range(SIZE): + data[row][col] = { "l": True, "r": True, "u": True, "d": True } + + for row, _row in enumerate(mx): + # Skip outer edges + if row == 0 or row == MAX_IDX: + continue + for col, _val in enumerate(mx[row]): + # Skip outer edges + if col == 0 or col == MAX_IDX: + continue + + # TODO: slice + # Get a list of indexes in the current direction to check + trees_u_indexes = list(range(0, row)) + trees_l_indexes = list(range(0, col)) + trees_d_indexes = list(range(MAX_IDX, row, -1)) + trees_r_indexes = list(range(col+1, SIZE)) + + # Get the trees in the line + trees_u = [mx[y][col] for y in trees_u_indexes] + trees_l = [mx[row][x] for x in trees_l_indexes] + trees_d = [mx[y][col] for y in trees_d_indexes] + trees_r = [mx[row][x] for x in trees_r_indexes] + + # find tallest tree in line + highest_u = max(trees_u) + highest_l = max(trees_l) + highest_d = max(trees_d) + highest_r = max(trees_r) + + # if there's anything as tall, or taller than this tree in that line + # then it's not visible + if highest_u >= _val: + data[row][col]["u"] = False + + if highest_l >= _val: + data[row][col]["l"] = False + + if highest_d >= _val: + data[row][col]["d"] = False + + if highest_r >= _val: + data[row][col]["r"] = False + + # count visible + count = 0 + for row in range(SIZE): + for col in range(SIZE): + u = data[row][col]["u"] + l = data[row][col]["l"] + d = data[row][col]["d"] + r = data[row][col]["r"] + if any((r,l,u,d)): + count += 1 + print(count) + + +def part2(mx): + SIZE=len(mx) + MAX_IDX = SIZE -1 + data = matrix.matrix_of_size(SIZE, SIZE) + data = matrix.set_matrix_dict(data) + + high_score = 0 + + for row in range(SIZE): + for col in range(SIZE): + data[row][col] = { "value": mx[row][col]} + + for row, _row in enumerate(mx): + for col, _val in enumerate(mx[row]): + # Get a list of indexes in the current direction to check + # TODO: slice + trees_u_indexes = list(range(0, row)) + trees_l_indexes = list(range(0,col)) + trees_d_indexes = list(range(MAX_IDX, row, -1)) + trees_r_indexes = list(range(col+1, SIZE)) + + # Grab the trees potentially in sight + trees_u = [mx[y][col] for y in trees_u_indexes] + trees_l = [mx[row][x] for x in trees_l_indexes] + trees_d = [mx[y][col] for y in trees_d_indexes] + trees_r = [mx[row][x] for x in trees_r_indexes] + + # Reverse everything but r, as everything is "away" from the tree + data[row][col]["u"] = list(reversed(trees_u)) + data[row][col]["l"] = list(reversed(trees_l)) + data[row][col]["d"] = list(reversed(trees_d)) + data[row][col]["r"] = trees_r + + # Calculate score + score = 1 # identity yoooo + cell = data[row][col] + val = cell['value'] + # Get the score of visible trees in each direction + for direction in ("u","l","d","r"): + in_line = cell[direction] + if not in_line: + # we're on an edge + score = 0 + break + + line_score = 0 + for idx, tree in enumerate(in_line): + # for every tree, check if its as tall or taller, + # stop countig after that + line_score += 1 + if tree >= val: + break + score = score * line_score + if score > high_score: + high_score = score + print(high_score) + +def main(): + mx = matrix.load_matrix_file(get_fname(8)) + part1(mx) + part2(mx) + + + +if __name__ == "__main__": + main() diff --git a/2022/python/day09.py b/2022/python/day09.py new file mode 100644 index 0000000..993687f --- /dev/null +++ b/2022/python/day09.py @@ -0,0 +1,152 @@ +from pprint import pprint as pp +import shared +import matrix + +MATRIX_SIZE = 500 +#MATRIX_SIZE = 40 # sample +HALF = MATRIX_SIZE // 2 + +H = [HALF,HALF] +T = [HALF,HALF] + + +# returns (x,y) - so remember to take dx,dy lower +DIRS = { + 'U': matrix.M_U, # (0, -1) + 'D': matrix.M_D, + 'L': matrix.M_L, + 'R': matrix.M_R, + + 'UR': matrix.M_UR, # (+1, -1) + 'DR': matrix.M_DR, + 'UL': matrix.M_UL, + 'DL': matrix.M_DL, +} + +def part1(steps): + field = matrix.matrix_of_size(MATRIX_SIZE,MATRIX_SIZE) + + for direction, amount in steps: + # move HEAD + amount = int(amount) + for x in range(amount): + + dx,dy = DIRS[direction] + H[0] += dy + H[1] += dx + HY,bX = H + # head is in new position + kY,kX = T + field[kY][kX] = 1 # 'T' + + # Check if same + if kY == HY and kX == bX: + continue + touching = False + for _, d in DIRS.items(): + dx,dy = d + t_y, t_x = H[0]+dy, H[1]+dx + if kY == t_y and kX == t_x: + touching = True + break + if touching: + continue + + # assume the same row/column, no movement needed + tY = 0 + tX = 0 + + # if Head X is less than Tail X, move Tail X 1 left + if bX < kX: + tX = -1 + # if Head X is greater than Tail X, move Tail X 1 left + elif bX > kX: + tX = 1 + + + # if Head Y is less than Tail Y, move Tail Y 1 up + if HY < kY: + tY = -1 + # if Head Y is greater than Tail Y, move Tail Y 1 down + elif HY > kY: + tY = 1 + + T[0] += tY + T[1] += tX + + field[T[0]][T[1]] = 1 # mark visited tails + print(matrix.sum_matrix(field)) + + +def part2(steps): + field = matrix.matrix_of_size(MATRIX_SIZE,MATRIX_SIZE) + S = [[HALF,HALF],] # HEAD ONLY + for x in range(9): + S.append([HALF,HALF]) + + for direction, amount in steps: + # move HEAD + amount = int(amount) + for x in range(amount): + HEAD_dx,HEAD_dy = DIRS[direction] + S[0][0] += HEAD_dy + S[0][1] += HEAD_dx + #print(HEAD_dy,HEAD_dx, S) + # HEAD MOVED one step + + for knot_idx, _ in enumerate(S): + if knot_idx == 0: + # Skip Head + continue + knot = S[knot_idx] + kY,kX = knot + + bY,bX = S[knot_idx-1] + + # Check if same + if kY == bY and kX == bX: + continue + + touching = False + for _, d in DIRS.items(): + dx,dy = d + t_y, t_x = S[knot_idx-1][0]+dy, S[knot_idx-1][1]+dx + if kY == t_y and kX == t_x: + touching = True + break + if touching: + continue + + # assume the same row/column, no movement needed + tY, tX = 0,0 + + # if Head X is less than Tail X, move Tail X 1 left + if bX < kX: + tX = -1 + # if Head X is greater than Tail X, move Tail X 1 left + elif bX > kX: + tX = 1 + + # if Head Y is less than Tail Y, move Tail Y 1 up + if bY < kY: + tY = -1 + # if Head Y is greater than Tail Y, move Tail Y 1 down + elif bY > kY: + tY = 1 + + S[knot_idx][0] += tY + S[knot_idx][1] += tX + + field[S[-1][0]][S[-1][1]] = 1 # mark visited tails + print(matrix.sum_matrix(field)) + + + +def main(): + rows = [x.split(" ") for x in shared.load_rows(9)] + part1(rows) + part2(rows) + + +if __name__ == "__main__": + main() diff --git a/2022/python/matrix.py b/2022/python/matrix.py new file mode 100644 index 0000000..b732a03 --- /dev/null +++ b/2022/python/matrix.py @@ -0,0 +1,163 @@ +split_word_to_int_list = lambda y: [int(w) for w in y] +split_line_to_int_list = lambda y: [int(w) for w in y.split(" ") if w] + + +def rotate(m, right=True): # -90 + x = list(zip(*m[::-1])) + if right: + return x + return [list(reversed(y)) for y in x] + + +def load_matrix_file(name, func=None): + with open(name, "r") as f: + my_file = [] + for line in f: + my_file.append(line.rstrip()) + if func: + return [func(x) for x in my_file] + return [split_word_to_int_list(x) for x in my_file] + + +def get_neighbors(matrix, x, y, _dict=False): + neighbors = [] + # left + try: + if x - 1 >= 0: + if _dict: + neighbors.append({'x':x - 1,'y':y,'value':matrix[y][x - 1]}) + else: + neighbors.append([(x - 1, y), matrix[y][x - 1]]) + except IndexError: + pass + # right + try: + if _dict: + neighbors.append({'x':x + 1,'y':y,'value':matrix[y][x + 1]}) + else: + neighbors.append([(x + 1, y), matrix[y][x + 1]]) + except IndexError: + pass + + # up + try: + if y - 1 >= 0: + if _dict: + neighbors.append({'x':x,'y':y-1,'value':matrix[y-1][x]}) + else: + neighbors.append([(x, y - 1), matrix[y - 1][x]]) + except IndexError: + pass + + # down + try: + if _dict: + neighbors.append({'x':x,'y':y+1,'value':matrix[y+1][x]}) + else: + neighbors.append([(x, y + 1), matrix[y + 1][x]]) + except IndexError: + pass + + return neighbors + +def sum_matrix(mtx): + total = 0 + for row in mtx: + total += sum(row) + return total + + +M_UL, M_U, M_UR = (-1, -1), (0, -1), (1, -1) +M_L, M_R = (-1, 0), (1, 0) +M_DL, M_D, M_DR = (-1, 1), (0, 1), (1, 1) + +def get_neighbor_coords(matrix, c, r, diagonals=True): + height = len(matrix) + width = len(matrix[0]) + if diagonals: + coords = ( + M_UL, M_U, M_UR, + M_L, M_R, + M_DL, M_D, M_DR + ) + else: + coords = ( + M_U, + M_L,M_R, + M_D + ) + neighbors = [] + + for _c, _r in coords: + try: + value = matrix[r + _r][c + _c] # Try to get a value error + if (r+_r>=0 and c+_c >= 0): + neighbors.append( + [{"c": c + _c, "r": r + _r}, value] + ) # woo, no error, this coord is valid + except IndexError: + pass # okay we out of bounds boizzzz + return neighbors + + +def get_column(matrix, col): + pass + + +def matrix_of_size(width, height, default=0): + return [[default] * width for x in range(height)] + +def set_matrix_dict(m): + for x in range(len(m)): + for y in range(len(m[x])): + m[x][y] = {} + return m + + +def get_size(matrix): + height = len(matrix) + width = len(matrix[0]) + return height, width + + +def pmx(*matrices, pad=True, space=True): + if len(matrices) > 1: + matrices = list(zip(*matrices)) + for row in matrices: + r = [] + for col in row: + r.append("".join([f"{int(x)or '.'}".rjust(3) for x in col])) + print(" ".join(r)) + else: + for row in matrices: + for c in row: + if pad: + f = lambda x: f"{int(x)or '.'}".rjust(2) + if space: + f = lambda x: f"{int(x)or '.'}".rjust(3) + else: + f = lambda x: f"{int(x)or '.'}" + if space: + f = lambda x: f"{int(x)or '.'} " + print("".join([f(x) for x in c])) + +def ppmx(*matrices, pad=True, space=True): + if len(matrices) > 1: + matrices = list(zip(*matrices)) + for row in matrices: + r = [] + for col in row: + r.append("".join([f"{x or '.'}".rjust(3) for x in col])) + print(" ".join(r)) + else: + for row in matrices: + for c in row: + if pad: + f = lambda x: f"{x or '.'}".rjust(2) + if space: + f = lambda x: f"{x or '.'}".rjust(3) + else: + f = lambda x: f"{x or '.'}" + if space: + f = lambda x: f"{x or '.'} " + print("".join([f(x) for x in c])) diff --git a/2022/python/shared.py b/2022/python/shared.py new file mode 100644 index 0000000..6ca3b93 --- /dev/null +++ b/2022/python/shared.py @@ -0,0 +1,58 @@ +from pathlib import Path + +spl = lambda y: [int(w) for w in y] + +def load_rows(day): + return [row for row in load(day)] + +def load(day): + path = Path(get_fname(day)) + return path.read_text().rstrip().split("\n") + +def get_fname(day: int) -> str: + import sys + + if sys.argv[-1] == "--sample": + return f"../samples/day{day:02}.txt" + else: + return f"../full/day{day:02}.txt" + + +############# +def load_char_matrix(f): + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [list(x) for x in my_file] + +def load_file_char_matrix(name): + with open(name, "r") as f: + return load_char_matrix(f) + + +def load_int_matrix(f): + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [list(map(int, x)) for x in my_file] + +def load_file_int_matrix(name): + with open(name, "r") as f: + return load_int_matrix(f) + +def load_word_matrix(f): + my_file = [] + for line in f: + my_file.append(line.rstrip()) + return [x.split(" ") for x in my_file] + +def load_file_word_matrix(name): + with open(name, "r") as f: + return load_word_matrix(f) +############# + +def rotate(WHAT, times=1): + what = WHAT + for x in range(times): + what = list(zip(*what[::-1])) + return what diff --git a/2022/rust/day01 b/2022/rust/day01 new file mode 100755 index 0000000..2ade6fa Binary files /dev/null and b/2022/rust/day01 differ diff --git a/2022/rust/day01.rs b/2022/rust/day01.rs new file mode 100644 index 0000000..6b11cf8 --- /dev/null +++ b/2022/rust/day01.rs @@ -0,0 +1,53 @@ +use std::{ + fs::File, + io::{prelude::*, BufReader}, + path::Path, +}; + +fn lines_from_file(filename: impl AsRef) -> Vec { + let file = File::open(filename).expect("no such file"); + let buf = BufReader::new(file); + buf.lines() + .map(|l| l.expect("Could not parse line")) + .collect() +} +// --- + +fn main() { + let lines = lines_from_file("../full/day01.txt"); + part1(&lines); + part2(&lines); +} + + +fn part1(lines: &Vec) { + let mut totals: Vec = Vec::new(); + let mut total = 0; + for line in lines { + if line.is_empty(){ + totals.push(total); + total = 0; + } else { + total += line.parse::().unwrap(); + } + } + totals.sort_by(|a, b| a.partial_cmp(b).unwrap()); + println!("{:?}", totals[totals.len()-1]); +} + +fn part2(lines: &Vec) { + let mut totals: Vec = Vec::new(); + let mut total = 0; + for line in lines { + if line.is_empty(){ + totals.push(total); + total = 0; + } else { + total += line.parse::().unwrap(); + } + } + totals.sort_by(|a, b| a.partial_cmp(b).unwrap()); + let last3 = &totals[totals.len()-3..]; + let total: i32 = last3.iter().sum(); + println!("{:?}", total); +} diff --git a/2022/rust/day02 b/2022/rust/day02 new file mode 100755 index 0000000..f5782fc Binary files /dev/null and b/2022/rust/day02 differ diff --git a/2022/rust/day02.rs b/2022/rust/day02.rs new file mode 100644 index 0000000..ba69c34 --- /dev/null +++ b/2022/rust/day02.rs @@ -0,0 +1,159 @@ +use std::collections::HashMap; +use std::{ + fs::File, + io::{prelude::*, BufReader}, + path::Path, +}; + +fn lines_from_file(filename: impl AsRef) -> Vec { + let file = File::open(filename).expect("no such file"); + let buf = BufReader::new(file); + buf.lines() + .map(|l| l.expect("Could not parse line")) + .collect() +} +// --- + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +enum Move { + Rock, + Paper, + Scissors, + INVALID, + Win, + Lose, + Tie, +} + +fn main() { + let lines = lines_from_file("../full/day02.txt"); + part1(&lines); + part2(&lines); +} + +fn to_enum(s: &str, part: i32) -> Move { + if s == "A" { + return Move::Rock; + } else if s == "B" { + return Move::Paper; + } else if s == "C" { + return Move::Scissors; + } else if s == "X" { + if part == 1 { + return Move::Rock; + } else { + return Move::Lose; + } + } else if s == "Y" { + if part == 1 { + return Move::Paper; + } else { + return Move::Tie; + } + } else if s == "Z" { + if part == 1 { + return Move::Scissors; + } else { + return Move::Win; + } + } + return Move::INVALID; +} + +fn parse(lines: &Vec, part: i32) -> (Vec, Vec) { + let mut oppt: Vec = Vec::new(); + let mut mine: Vec = Vec::new(); + for line in lines { + let split = line.split_whitespace().collect::>(); + oppt.push(to_enum(split[0], part)); + mine.push(to_enum(split[1], part)); + } + return (oppt, mine); +} + +fn score_1(o: &Move, m: Move) -> i32 { + let mut score: i32 = 0; + let scores: HashMap = HashMap::from([ + (Move::Rock, 1), + (Move::Paper, 2), + (Move::Scissors, 3), + (Move::Win, 6), + (Move::Tie, 3), + (Move::Lose, 0), + ]); + // For my choice + score += scores[&m]; + + // for which outcome + if o == &m { + //println!("Tie"); + score += scores[&Move::Tie]; + } else if (m == Move::Paper && o == &Move::Rock) + || (m == Move::Rock && o == &Move::Scissors) + || (m == Move::Scissors && o == &Move::Paper) + { + //println!("Win"); + score += scores[&Move::Win]; + } else { + //println!("Lose"); + score += scores[&Move::Lose]; + } + + return score; +} + +fn part1(lines: &Vec) { + let (oppt, mine) = parse(lines, 1); + let mut score: i32 = 0; + for (idx, el) in oppt.iter().enumerate() { + score += score_1(el, mine[idx]); + } + println!("{}", score); +} + +fn score_2(o: &Move, m: Move) -> i32 { + let mut new_move: &Move = &Move::INVALID; + let mut score: i32 = 0; + let scores: HashMap = HashMap::from([ + (Move::Rock, 1), + (Move::Paper, 2), + (Move::Scissors, 3), + (Move::Win, 6), + (Move::Tie, 3), + (Move::Lose, 0), + ]); + // For my choice + if m == Move::Tie { + new_move = o; + } else if m == Move::Lose { + if o == &Move::Rock { + new_move = &Move::Scissors; + } else if o == &Move::Paper { + new_move = &Move::Rock; + } else { + new_move = &Move::Paper; + } + } else if m == Move::Win { + if o == &Move::Rock { + new_move = &Move::Paper; + } else if o == &Move::Paper { + new_move = &Move::Scissors; + } else { + new_move = &Move::Rock; + } + } + + score += scores[new_move]; + score += scores[&m]; + + return score; +} + +fn part2(lines: &Vec) { + let (oppt, mine) = parse(lines, 2); + let mut score: i32 = 0; + for (idx, el) in oppt.iter().enumerate() { + score += score_2(el, mine[idx]); + } + println!("{}", score); +} diff --git a/2022/rust/day03.rs b/2022/rust/day03.rs new file mode 100644 index 0000000..2c9ce15 --- /dev/null +++ b/2022/rust/day03.rs @@ -0,0 +1,34 @@ +use std::collections::HashMap; +use std::{ + fs::File, + io::{prelude::*, BufReader}, + path::Path, +}; + +fn lines_from_file(filename: impl AsRef) -> Vec { + let file = File::open(filename).expect("no such file"); + let buf = BufReader::new(file); + buf.lines() + .map(|l| l.expect("Could not parse line")) + .collect() +} +// --- + + +fn main() { + let lines = lines_from_file("../full/day02.txt"); + part1(&lines); + part2(&lines); +} + + + + +fn part1(lines: &Vec) { + println!("{:?}", lines); +} + + +fn part2(lines: &Vec) { + println!("{:?}", lines); +} diff --git a/2022/samples/day01.txt b/2022/samples/day01.txt new file mode 100644 index 0000000..2094f91 --- /dev/null +++ b/2022/samples/day01.txt @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 diff --git a/2022/samples/day02.txt b/2022/samples/day02.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/2022/samples/day02.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/2022/samples/day03.txt b/2022/samples/day03.txt new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/2022/samples/day03.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/2022/samples/day04.txt b/2022/samples/day04.txt new file mode 100644 index 0000000..9f9e9cf --- /dev/null +++ b/2022/samples/day04.txt @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 diff --git a/2022/samples/day05.txt b/2022/samples/day05.txt new file mode 100644 index 0000000..84933bb --- /dev/null +++ b/2022/samples/day05.txt @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 diff --git a/2022/samples/day06.txt b/2022/samples/day06.txt new file mode 100644 index 0000000..3ef83c6 --- /dev/null +++ b/2022/samples/day06.txt @@ -0,0 +1,5 @@ +mjqjpqmgbljsphdztnvjfqwrcgsmlb +bvwbjplbgvbhsrlpgdmjqwftvncz +nppdvjthqldpwncqszvftbrmjlhg +nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg +zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw diff --git a/2022/samples/day07.txt b/2022/samples/day07.txt new file mode 100644 index 0000000..09a921e --- /dev/null +++ b/2022/samples/day07.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k diff --git a/2022/samples/day08.txt b/2022/samples/day08.txt new file mode 100644 index 0000000..16d6fbd --- /dev/null +++ b/2022/samples/day08.txt @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 diff --git a/2022/samples/day09.txt b/2022/samples/day09.txt new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/2022/samples/day09.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..add9451 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +black +imageio +matplotlib +numpy +pandas +scanf +scikit-image