From 4dec21f362c03136e9811a4f4c162fcd8c50544e Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Thu, 2 Dec 2021 17:39:03 +0100 Subject: Added day 10 --- Pipfile | 11 - Pipfile.lock | 20 - aoc/__init__.py | 3 +- day1/__init__.py | 28 +- day1/example.txt | 16 +- day1/input.txt | 2166 +++++++++++++++++++++++++++++++++++++++++++++++++----- day2/__init__.py | 63 -- day2/example.txt | 3 - day2/input.txt | 1000 ------------------------- day3/__init__.py | 43 -- day3/example.txt | 11 - day3/input.txt | 323 -------- day4/__init__.py | 107 --- day4/example.txt | 13 - day4/input.txt | 1023 -------------------------- day5/__init__.py | 40 - day5/example.txt | 3 - day5/input.txt | 815 -------------------- day6/__init__.py | 47 -- day6/example.txt | 15 - day6/input.txt | 2148 ----------------------------------------------------- day7/__init__.py | 58 -- day7/example.txt | 9 - day7/input.txt | 594 --------------- day8/__init__.py | 75 -- day8/example.txt | 9 - day8/input.txt | 624 ---------------- day9/__init__.py | 63 -- day9/example.txt | 20 - day9/input.txt | 1000 ------------------------- 30 files changed, 2005 insertions(+), 8345 deletions(-) delete mode 100644 Pipfile delete mode 100644 Pipfile.lock delete mode 100644 day2/__init__.py delete mode 100644 day2/example.txt delete mode 100644 day2/input.txt delete mode 100644 day3/__init__.py delete mode 100644 day3/example.txt delete mode 100644 day3/input.txt delete mode 100644 day4/__init__.py delete mode 100644 day4/example.txt delete mode 100644 day4/input.txt delete mode 100644 day5/__init__.py delete mode 100644 day5/example.txt delete mode 100644 day5/input.txt delete mode 100644 day6/__init__.py delete mode 100644 day6/example.txt delete mode 100644 day6/input.txt delete mode 100644 day7/__init__.py delete mode 100644 day7/example.txt delete mode 100644 day7/input.txt delete mode 100644 day8/__init__.py delete mode 100644 day8/example.txt delete mode 100644 day8/input.txt delete mode 100644 day9/__init__.py delete mode 100644 day9/example.txt delete mode 100644 day9/input.txt diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 5d44a48..0000000 --- a/Pipfile +++ /dev/null @@ -1,11 +0,0 @@ -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - -[packages] - -[dev-packages] - -[requires] -python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index 4cee413..0000000 --- a/Pipfile.lock +++ /dev/null @@ -1,20 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "e2a8a78582d100dc86a0694f5ad982ca341a6b861fd871c6306733562f9e16cc" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": {}, - "develop": {} -} diff --git a/aoc/__init__.py b/aoc/__init__.py index 70c3ac0..07a5fe7 100644 --- a/aoc/__init__.py +++ b/aoc/__init__.py @@ -1,7 +1,6 @@ import os from abc import ABC -from collections import Iterator -from typing import Generator, Any +from typing import Generator, Any, Iterator class BaseAssignment(ABC): diff --git a/day1/__init__.py b/day1/__init__.py index cf48f78..bc44089 100644 --- a/day1/__init__.py +++ b/day1/__init__.py @@ -8,29 +8,23 @@ class Assignment(BaseAssignment): return int(item) def read_input(self, example = False) -> List[int]: - return sorted(super().read_input(example)) + return list(super().read_input(example)) class AssignmentOne(Assignment): def run(self, input: List) -> int: - front_position = 0 - end_position = -1 + result = 0 - while True: - sum = input[front_position] + input[end_position] + for i in range(1, len(input)): + result += 1 if input[i - 1] < input[i] else 0 - if sum > 2020: - end_position -= 1 - elif sum < 2020: - front_position += 1 - else: - break + return result - return input[front_position] * input[end_position] class AssignmentTwo(Assignment): def run(self, input: List) -> int: - for a in input: - for b in input: - for c in input: - if a + b + c == 2020: - return a * b * c \ No newline at end of file + new_input = [ + input[i - 2] + input[i - 1] + input[i] + for i in range(2, len(input)) + ] + + return AssignmentOne(path='').run(new_input) diff --git a/day1/example.txt b/day1/example.txt index 0bb977d..59dad67 100644 --- a/day1/example.txt +++ b/day1/example.txt @@ -1,6 +1,10 @@ -1721 -979 -366 -299 -675 -1456 \ No newline at end of file +199 +200 +208 +210 +200 +207 +240 +269 +260 +263 \ No newline at end of file diff --git a/day1/input.txt b/day1/input.txt index 0546883..523d802 100644 --- a/day1/input.txt +++ b/day1/input.txt @@ -1,200 +1,2000 @@ -1511 -1344 -1925 -1970 -1864 -1951 -1557 -1984 -1743 -1526 -1972 -1945 -1969 -1760 -2008 -1592 -736 -1963 -1994 -2009 -1777 -1856 -1899 -1926 -1850 +171 +173 +174 +163 +161 +157 +156 +154 +152 +156 +151 +153 +132 +135 +151 +143 +141 +149 +145 +147 +142 +143 +139 +141 +144 +147 +137 +144 +147 +153 +151 +153 +157 +185 +186 +185 +181 +161 +177 +179 +177 +178 +173 +175 +183 +181 +191 +189 +186 +189 +192 +191 +189 +199 +208 +218 +216 +210 +209 +208 +215 +207 +198 +202 +204 +205 +204 +203 +205 +207 +208 +209 +218 +234 +231 +245 +244 +243 +265 +264 +279 +282 +283 +274 +276 +279 +281 +279 +258 +256 +289 +297 +300 +304 +308 +298 +302 +317 +316 +315 +314 +296 +298 +301 +298 +293 +300 +293 +290 +286 +282 +278 +280 +283 +292 +297 +315 +323 +324 +321 +324 +332 +334 +366 +375 +382 +388 +395 +400 +410 +405 +407 +408 +405 +403 +426 +425 +423 +440 +444 +469 +471 +472 +498 +501 +498 +499 +500 +502 +514 +515 +516 +518 +517 +516 +507 +514 +521 +523 +521 +513 +518 +531 +543 +546 +540 +528 +529 +520 +530 +533 +534 +532 +535 +538 +545 +550 +548 +534 +552 +555 +570 +571 +589 +595 +594 +598 +594 +597 +585 +568 +558 +545 +549 +543 +544 +548 +528 +533 +511 +510 +511 +504 +505 +510 +511 +514 +486 +506 +508 +474 +475 +485 +501 +498 +499 +500 +504 +502 +510 +507 +512 +508 +515 +517 +521 +537 +536 +532 +533 +532 +531 +535 +547 +558 +547 +546 +573 +591 +593 +576 +577 +580 +581 +588 +595 +594 +589 +586 +600 +602 +594 +593 +598 +586 +587 +583 +571 +564 +561 +562 +559 +569 +568 +547 +551 +554 +565 +575 +574 +573 +568 +567 +570 +578 +575 +573 +555 +557 +571 +572 +579 +593 +609 +611 +612 +614 +613 +614 +616 +615 +616 +610 +621 +626 +620 +621 +620 +622 +623 +627 +625 +628 +618 +615 +606 +597 +602 +603 +601 +624 +623 +621 +633 +643 +638 +641 +642 +641 +643 +633 +632 +642 +649 +636 +642 +662 +670 +683 +702 +712 +713 +714 +720 +725 +726 +724 +723 +722 +691 +692 +693 +674 +671 +664 +665 +678 +681 +682 +680 +681 +693 +694 +691 +693 +694 +691 +692 +691 +692 +691 +692 +693 +684 +686 +706 +705 +696 +683 +688 +698 +701 +700 +708 +691 +689 +688 +693 +680 +681 +683 +701 +709 +715 +716 +706 +686 +683 +676 +680 +681 687 -2005 -1094 -1949 +676 +691 +705 +702 +703 +704 +709 +713 +716 +717 +715 +716 +715 +703 +714 +720 +708 +692 +665 +654 +664 +663 +649 +652 +676 +666 +682 +683 +687 +679 +680 +699 +706 +730 +729 +728 +732 +733 +727 +728 +738 +741 +744 +742 +722 +725 +722 +716 +717 +713 +712 +703 +704 +705 +699 +700 +706 +709 +692 +693 +688 +689 +698 +695 +696 +700 +701 +688 +689 +696 +678 +669 +674 +675 +663 +664 +675 +662 +667 +671 +679 +683 +682 +716 +717 +720 +724 +737 +727 +737 +739 +716 +733 +728 +723 +741 +743 +732 +727 +729 +732 +724 +721 +717 +716 +730 +743 +742 +740 +743 +734 +735 +733 +734 +747 +741 +713 +721 +719 +743 +745 +768 +769 +775 +774 +773 +785 +789 +788 +784 +773 +809 +808 +807 +808 +809 +806 +790 +785 +806 +811 +809 +812 +814 +817 +821 +822 +823 +829 +826 +827 +828 +830 +832 +827 +828 +827 +828 +843 +844 +843 +842 +829 +830 +834 +841 +843 +863 +858 +867 +871 +888 +890 +873 +874 +860 +874 +871 +877 +878 +877 +885 +886 +893 +888 +887 +888 +889 +876 +871 +855 +850 +851 +853 +850 +855 +868 +870 +871 +886 +896 +878 +882 +893 +867 +862 +860 +861 +862 +859 +871 +875 +874 +870 +864 +867 +864 +867 +868 +872 +880 +866 +867 +874 +878 +864 +872 +870 +859 +852 +857 +869 +872 +876 +882 +894 +872 +873 +860 +861 +862 +858 +859 +865 +858 +834 +830 +801 +804 +799 +802 +804 +800 +776 +779 +790 +793 +796 +800 +804 +803 +799 +790 +788 +783 +785 +807 +802 +783 +796 +808 +782 +778 +779 +794 +800 +809 +821 +828 +826 +827 +835 +836 +840 +857 +855 +859 +870 +861 +838 +837 +843 +823 +821 +812 +811 +827 +828 +818 +819 +811 +813 +799 +801 +784 +788 +793 +797 +803 +785 +786 +785 +774 +776 +777 +778 +776 +774 +775 +778 +779 +772 +776 +774 +773 +777 +778 +779 +777 +781 +769 +760 +746 +752 +748 +754 +758 +768 +786 +784 +783 +769 +770 +782 +796 +785 +774 +775 +781 +779 +780 +769 +757 +758 +774 +790 +792 +795 +805 +804 +803 +802 +792 +795 +800 +801 +796 +797 +790 +791 +797 +801 +797 +807 +801 +796 +799 +794 +783 +759 +784 +809 +810 +824 +815 +812 +845 +846 +848 +849 +869 +868 +886 +888 +896 +904 +902 +905 +900 +907 +912 +890 +891 +892 +893 +911 +912 +916 +924 +926 +897 +885 +886 +881 +878 +879 +908 +907 +901 +902 +919 +915 +905 +906 +941 +939 +944 +945 +946 +939 +936 +952 +951 +963 +958 +972 +1000 +1017 +1003 +1002 +1004 +1005 +990 +989 +992 +993 +987 +1003 +1004 +1003 +1006 +1011 +989 +1000 +999 +1001 +1008 +1012 +1013 +1024 +1038 +1039 +1024 +1027 +1021 +1036 +1034 +1053 +1061 +1064 +1104 +1105 +1106 +1085 +1086 +1090 +1097 +1098 +1101 +1086 +1087 +1084 +1069 +1070 +1069 +1074 +1071 +1070 +1074 +1060 +1058 +1068 +1054 +1060 +1054 +1055 +1053 +1054 +1042 +1043 +1045 +1044 +1042 +1043 +1027 +1030 +1031 +1030 +1029 +1041 +1045 +1048 +1049 +1043 +1040 +1049 +1050 +1051 +1054 +1056 +1048 +1045 +1044 +1043 +1046 +1063 +1077 +1105 +1108 +1110 +1126 +1127 +1131 +1133 +1130 +1135 +1141 +1168 +1175 +1172 +1156 +1136 +1137 +1136 +1135 +1137 +1156 +1154 +1158 +1163 +1151 +1152 +1168 +1176 +1177 +1172 +1173 +1187 +1196 +1197 +1192 +1191 +1180 +1186 +1185 +1186 +1189 +1198 +1196 +1195 +1196 +1197 +1191 +1171 +1172 +1154 +1184 +1170 +1171 +1169 +1179 +1178 +1186 +1187 +1189 +1196 +1183 +1180 +1182 +1170 +1155 +1133 +1126 +1127 +1126 +1118 +1117 +1126 +1128 +1147 +1148 +1144 +1160 +1171 +1177 +1179 +1180 +1162 +1152 +1150 +1149 +1156 +1169 +1165 +1164 +1165 +1179 +1178 +1179 +1181 +1191 +1186 +1187 +1179 +1180 +1181 +1177 +1182 +1185 +1189 +1201 +1243 +1242 +1239 +1240 +1242 +1243 +1231 +1232 +1242 +1254 +1264 +1267 +1268 +1271 +1272 +1265 +1260 +1263 +1266 +1254 +1266 +1261 +1251 +1252 +1214 +1212 +1222 +1225 +1226 +1235 +1245 +1255 +1256 +1255 +1252 +1254 +1250 +1252 +1257 +1259 +1270 +1271 +1281 +1279 +1286 +1273 +1290 +1291 +1290 +1297 +1295 +1294 +1289 +1300 +1307 +1304 +1305 +1311 +1301 +1306 +1310 +1306 +1305 +1306 +1308 +1310 +1316 1326 -2002 -1805 -1493 -1341 -1828 -1778 -1767 +1330 +1336 +1318 +1337 +1313 +1316 +1329 +1324 +1331 +1338 +1337 +1335 +1336 +1340 +1350 1364 -1973 -1768 -1929 -1377 -2000 -1726 -1913 -2001 -1574 -1859 -1793 -1957 -1959 +1365 +1366 +1352 +1353 +1354 +1361 +1375 +1367 +1371 +1372 +1375 +1390 +1393 +1392 +1391 1388 -1593 +1391 1392 -724 -1962 -1999 -252 -1982 -1662 -1892 -1610 -1343 -1831 -1862 -1991 1394 -1946 -1935 -1986 -1911 -1358 -1322 -1956 -1988 -1758 -1490 -1998 -1744 -1844 -1294 -1764 -1543 -1560 -1562 -1747 -1870 -1292 -1989 -1752 -1471 -1980 -1897 -1544 -1914 -1923 -1944 -1375 -1987 -1993 -1742 -1975 -1479 -1977 -1934 -1939 -1950 -1992 -1983 -1474 -1643 -2010 -1814 -1942 -322 +1396 +1420 +1421 +1424 1425 +1427 +1420 +1421 +1426 +1428 +1432 +1430 +1439 +1444 +1446 +1435 +1437 +1438 +1437 +1444 +1448 +1453 +1469 +1473 +1476 +1477 +1464 +1457 +1460 +1476 +1479 +1477 +1479 +1495 +1494 +1499 +1504 +1502 +1494 +1508 +1507 +1508 +1506 +1504 +1492 +1503 +1512 +1511 +1493 +1500 +1509 +1527 +1542 +1547 +1542 +1551 +1555 +1557 +1566 +1610 +1611 +1616 +1620 +1616 +1635 1646 -1878 -1410 -1927 -1761 -1948 +1647 +1645 +1666 +1667 +1656 +1654 +1645 +1648 +1651 +1666 +1670 +1673 +1671 +1669 +1680 +1669 +1670 +1693 +1696 +1698 +1697 +1722 +1727 +1740 +1743 +1742 +1743 +1744 +1762 +1785 +1788 +1777 +1778 1779 -1753 -1847 -274 -1659 -1773 -1960 -1772 -1674 +1784 +1811 +1806 +1824 +1791 +1792 +1793 +1795 +1792 +1791 +1789 +1790 +1802 +1803 +1811 1809 -1568 -1978 +1842 +1843 +1854 +1857 +1842 +1847 +1856 +1859 +1865 +1867 +1868 +1883 +1875 +1874 +1877 +1878 +1877 +1862 +1876 +1882 +1864 +1865 +1868 +1867 +1869 +1850 +1849 +1839 +1840 +1845 +1843 +1855 +1856 +1877 +1875 +1877 +1880 +1861 +1889 +1891 +1894 +1889 +1905 +1907 +1911 +1894 +1897 +1908 +1909 +1911 +1913 +1918 +1919 +1916 +1915 +1918 +1919 +1924 +1941 +1942 1952 +1962 +1963 +1948 +1947 +1949 +1955 +1950 +1949 +1938 +1940 +1950 +1948 1947 -1976 -1953 -1961 +1935 +1936 +1935 1937 -1932 -1781 -2007 -1941 -1393 -1573 -1745 -169 -89 -1408 -1974 -1810 -1979 -1967 -890 -1958 +1929 1930 -1954 -1759 -720 -1936 -1576 -1407 -2004 -1964 -1462 -1875 -1943 +1931 +1937 1938 -2006 -1739 -1378 -1922 -1924 -2003 -1792 -1985 -1729 -1966 -1355 +1932 +1933 1940 -1928 -1357 -1955 -1896 -1115 -1836 -1971 -1329 -1807 -1997 -1359 -1801 1933 -1965 -1981 -1711 -1905 -1625 -1968 \ No newline at end of file +1957 +1958 +1983 +1987 +1986 +1985 +1991 +1992 +2006 +2007 +2008 +2007 +2021 +2022 +2033 +2035 +2025 +2029 +2037 +2053 +2052 +2053 +2044 +2048 +2055 +2043 +2033 +2002 +2006 +2007 +2009 +2008 +2010 +2012 +2015 +2006 +2007 +2008 +2007 +2025 +2022 +2036 +2049 +2075 +2076 +2046 +2050 +2052 +2067 +2068 +2069 +2059 +2077 +2079 +2098 +2101 +2106 +2107 +2106 +2108 +2117 +2100 +2094 +2093 +2092 +2091 +2089 +2098 +2096 +2098 +2109 +2112 +2113 +2116 +2111 +2115 +2122 +2120 +2116 +2117 +2123 +2140 +2145 +2125 +2117 +2118 +2116 +2120 +2133 +2135 +2178 +2192 +2189 +2194 +2196 +2198 +2199 +2193 +2195 +2187 +2189 +2205 +2218 +2203 +2207 +2206 +2204 +2210 +2209 +2230 +2229 +2226 +2222 +2255 +2250 +2275 +2276 +2277 +2299 +2304 +2307 +2306 +2320 +2324 +2340 +2341 +2344 +2343 +2348 +2349 +2351 +2331 +2334 +2333 +2337 +2339 +2344 +2357 +2355 +2356 +2340 +2325 +2324 +2340 +2351 +2352 +2350 +2379 +2386 +2387 +2388 +2382 +2358 +2354 +2360 +2361 +2367 +2358 +2356 +2353 +2339 +2342 +2343 +2342 +2343 +2345 +2347 +2350 +2347 +2349 +2347 +2348 +2355 +2324 +2322 +2321 +2322 +2336 +2337 +2338 +2342 +2358 +2359 +2363 +2347 +2332 +2322 +2320 +2327 +2329 +2319 +2300 +2305 +2308 +2311 +2310 +2309 +2314 +2321 +2326 +2324 +2342 +2344 +2360 +2322 +2323 +2314 +2309 +2300 +2299 +2300 +2295 +2296 +2309 +2316 +2315 +2319 +2316 +2319 +2318 +2327 +2328 +2330 +2336 +2338 +2345 +2361 +2350 +2352 +2360 +2363 +2401 +2398 +2407 +2403 +2388 +2390 +2377 +2392 +2389 +2394 +2402 +2399 +2388 +2393 +2397 +2395 +2404 +2418 +2432 +2412 +2436 +2430 +2459 +2454 +2452 +2453 +2446 +2448 +2445 +2454 +2448 +2454 +2464 +2454 +2464 +2491 +2504 +2503 +2513 +2514 +2516 +2511 +2517 +2505 +2508 +2509 +2507 +2513 +2517 +2515 +2522 +2533 +2548 +2549 +2553 +2552 +2554 +2557 +2562 +2565 +2566 +2567 +2573 +2574 +2570 +2573 +2575 +2580 +2583 +2584 +2589 +2592 +2593 +2592 +2594 +2595 +2594 +2584 +2588 +2595 +2573 +2572 +2581 +2589 +2591 +2595 +2589 +2615 +2628 +2640 +2651 +2650 +2636 +2637 +2606 +2609 +2614 +2620 +2623 +2632 +2635 +2645 +2647 +2642 +2643 +2644 +2650 +2649 +2660 +2634 +2627 +2628 +2634 +2636 +2638 +2628 +2627 +2631 +2629 +2628 +2638 +2628 +2627 +2628 +2630 +2640 +2649 +2656 +2657 +2679 +2680 +2684 +2694 +2693 +2694 +2693 +2704 +2714 +2720 +2735 +2753 +2758 +2767 +2768 +2772 +2761 +2762 +2760 +2740 +2738 +2757 +2758 +2793 +2795 +2793 +2794 +2803 +2808 +2802 +2811 +2807 +2813 +2817 +2818 +2826 +2830 +2867 +2855 +2860 +2864 +2843 +2838 +2842 +2840 +2849 +2845 +2837 +2841 +2837 +2833 +2823 +2820 +2829 +2853 +2860 +2861 +2862 +2883 +2888 +2852 +2863 +2862 +2860 +2864 +2865 +2870 +2869 +2874 +2863 +2872 +2874 +2882 +2893 +2903 +2907 +2936 +2940 +2945 +2956 +2972 +2989 +2988 +2974 +2976 +2977 +2979 +2980 +2981 +2983 +2971 +2970 +2973 +2974 +2976 +3004 +2999 +3001 +3008 +3009 +3013 +3016 +3027 +3043 +3026 +3031 +3034 +3040 +3055 +3054 +3080 +3082 +3090 +3092 +3091 +3090 +3089 +3082 +3084 +3081 +3086 +3084 +3086 +3083 +3090 +3094 +3096 +3102 +3110 +3111 +3094 +3100 +3123 +3134 +3135 +3142 +3136 +3134 +3113 +3112 +3111 +3123 +3124 +3121 +3120 +3126 +3127 +3126 +3127 +3113 +3111 +3126 +3141 +3142 +3137 +3139 +3098 +3103 +3115 +3119 +3117 +3114 +3119 +3120 +3093 +3092 +3099 +3104 +3105 +3106 +3121 +3122 +3124 +3131 +3141 +3131 +3132 +3147 +3149 +3156 +3123 +3122 +3108 +3117 +3119 +3139 +3157 +3152 +3146 +3112 +3113 +3112 +3114 +3091 +3071 +3072 +3082 +3083 +3084 +3098 +3102 +3109 +3111 +3109 +3110 +3101 +3100 +3102 +3103 +3108 +3114 +3113 +3115 +3116 +3117 +3120 +3119 +3117 +3150 +3152 +3153 +3155 +3154 +3157 +3150 +3143 +3144 +3139 +3127 +3102 +3123 +3122 +3138 +3140 +3145 +3146 +3139 +3141 +3153 +3154 +3155 +3127 +3129 +3131 +3132 +3130 +3131 +3161 +3190 +3200 +3179 +3178 +3169 +3167 +3171 +3191 +3205 +3203 +3208 +3214 +3215 +3217 +3218 +3224 +3228 +3229 +3215 +3214 +3237 +3246 +3223 +3220 +3209 +3207 +3220 +3233 +3238 +3234 +3211 +3216 +3220 +3221 +3216 +3219 +3218 +3217 +3221 +3223 +3228 +3224 +3244 +3245 +3251 +3250 +3256 +3257 +3258 +3262 +3264 +3265 +3263 +3272 +3274 +3255 +3254 +3266 +3267 +3264 +3267 +3280 +3282 \ No newline at end of file diff --git a/day2/__init__.py b/day2/__init__.py deleted file mode 100644 index 1d65d13..0000000 --- a/day2/__init__.py +++ /dev/null @@ -1,63 +0,0 @@ -import re -from dataclasses import dataclass -from typing import Generator - -from aoc import BaseAssignment - - -matcher = re.compile( - pattern=r'(?P\d+)-(?P\d+) (?P\w): (?P\w+)' -) - - -@dataclass -class Item: - min: int - max: int - letter: str - password: str - - -class Assignment(BaseAssignment): - def parse_item(self, item: str) -> Item: - match = matcher.match(item).groupdict() - return Item( - min=int(match['min']), - max=int(match['max']), - letter=match['letter'], - password=match['password'], - ) - - def valid_password(self, item: Item) -> bool: - raise NotImplementedError('Implement Valid Password') - - def run(self, input: Generator): - valid_passwords = 0 - - for i in input: - if self.valid_password(i): - valid_passwords += 1 - - return valid_passwords - - -class AssignmentOne(Assignment): - def valid_password(self, item: Item) -> bool: - return item.min <= item.password.count(item.letter) <= item.max - - -class AssignmentTwo(Assignment): - def valid_password(self, item: Item) -> bool: - return ( - ( - item.password[item.min - 1] == item.letter - and - item.password[item.max - 1] != item.letter - ) - or - ( - item.password[item.min - 1] != item.letter - and - item.password[item.max - 1] == item.letter - ) - ) diff --git a/day2/example.txt b/day2/example.txt deleted file mode 100644 index 2eab335..0000000 --- a/day2/example.txt +++ /dev/null @@ -1,3 +0,0 @@ -1-3 a: abcde -1-3 b: cdefg -2-9 c: ccccccccc \ No newline at end of file diff --git a/day2/input.txt b/day2/input.txt deleted file mode 100644 index 1332648..0000000 --- a/day2/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -4-6 b: bbbdbtbbbj -1-6 g: ggvggbgggstg -1-4 s: lssss -13-14 v: hvvcvvvvvvvvvsvvv -3-5 m: lcmmm -3-4 t: stht -5-6 b: dbkbhb -4-7 p: ppfppppq -4-5 j: jjjjj -3-12 s: sskssssssssss -14-15 z: zrndzbmrzzpzzqzj -12-18 l: tllllllllllllplllbl -8-10 b: bdbvqbtbrb -1-3 c: tcqccc -1-2 n: nbnj -5-7 c: ccccccccc -9-10 l: hpmslrlgll -6-9 n: nnnnnnnnb -6-10 r: rmzjlrsxkbw -6-8 r: bzqnnrrrj -4-14 c: mfffvcbtchzrqcn -1-6 f: ffffffffffffff -2-5 f: wxtkf -8-12 b: rdcbbjbzbbpb -8-18 d: ddtdddddddwvdfdsdd -5-8 s: sssmsgpgszms -6-11 x: xxxxxvxxxxxt -17-18 n: jhrnnzpxzngfqrntmnc -13-14 r: rrrmrrrrlrrshvrrr -4-5 h: hhhhrhh -8-10 d: dgwtdsxnncd -9-13 q: qqbpqmqgmqwqbqqqxcgq -2-5 g: gjjcpgg -6-12 t: ttttvttttttrtt -3-9 h: hhhhhhhhsh -15-16 p: ppppsppppppppppz -2-5 c: csccctcccc -11-14 p: pppppppppppppnp -8-9 j: jvbjjjjrjbjj -8-16 b: qklbmbntmvbhxplbbcb -12-13 j: jjjjsjmfjjjkhj -2-13 t: llckxhfmtznptndcsx -6-8 x: dxxxxvxxtt -3-4 d: ddht -3-4 t: ttdtt -11-12 r: rrrrrrrrrrrd -9-10 h: hhhhhhhhgh -3-16 h: hhhhhhhhhhhhhhnhhh -10-11 h: hxhhhdhhhsh -1-7 n: jnfnjnn -3-4 m: msmnpmpf -15-17 t: tpdtttgltvtttztlv -7-10 v: vvpsvpgjzvvvvjs -1-5 p: pxppg -2-7 w: jwhgkgvxcv -13-14 m: pxxmjznmrzdsbbmmfj -1-4 d: ddddd -14-16 r: rrrrrrrrrrrrrwrr -2-5 l: klbtzzlrlslgswhljtq -6-12 c: qccrcpccccccdccccc -2-18 l: llllllllvllllllllkll -18-20 z: zzzzzzzzszqzwzrzzzzn -5-16 c: cbccclcfcncvqztqc -7-11 m: fnwmtsmgpxncnr -6-7 h: hpjrhbhkshnchbhpph -11-12 s: ssssssssssps -6-9 s: jfsmmssssqz -1-15 l: llllllllllllllbll -2-6 g: gggggwgggpggggggg -6-9 j: jjjpjjjjn -9-13 n: nnnnnnnnnnnnnn -10-13 t: cgntllxnvpkjwxtght -2-11 f: xcftbcdcndkgm -10-13 j: jjjjjjjjjjjjvj -9-17 f: rfrffnsffxqflbffvv -6-11 k: kkkkkrwkqckmk -5-7 q: zfqqqqqn -12-13 c: cfcccvccccckccccv -5-15 z: xhzzzzzzzzfzzknzz -18-19 f: jkfksvmfjbdffffffff -8-11 h: hhhhmhhkhsfdg -14-16 s: ssssssdjssssssssssss -15-16 t: jtmjhsxqqmmthmtttm -5-7 h: hkbjhjhh -2-6 n: knprnfnfhhrcnk -3-4 w: snwd -5-11 w: wwwwnwwwwwwwwwwww -2-12 k: bkqjghpktfsk -14-15 v: vvvsvvvvvvvvvxv -8-9 w: fxwwwwwscwl -9-15 c: sbjvvsmdvqknbccxxx -6-15 t: tpwjtdnnldthxvn -13-15 t: tttttrzmzttjttt -3-11 m: mmvmlmmmwfmjx -13-14 s: gskssssssscssssqjssl -5-10 l: bfnmqlldllp -17-18 q: qkwqqqqqqqqqqqrqqqqq -2-5 r: rsvrrq -3-4 j: jjjdj -3-4 m: mtmk -8-9 k: vsvkvkrkc -10-12 t: ttttttcttttgttt -3-4 n: trzw -5-11 q: qqmpsqbxkqq -13-15 s: sqsssnmwqszfsmv -5-6 b: bbbbzvb -5-13 p: pjjhpnqpzpmpfpfp -4-5 l: mgnwlrw -1-7 k: fkzxwkj -1-10 q: qgxqqqqqqg -8-9 s: ssqssssfss -7-8 c: xxcscclccdvcmqcc -2-6 d: xdlmzdzxrpmlnt -3-9 s: sssssnssgbs -7-10 h: sblrrhqrhh -3-5 n: xnndnnnfnw -9-10 l: vllllqlllhllljxlp -2-5 d: ddxzbxk -10-14 m: mmmmmmmmmmdmmmmsmmm -1-2 f: ffffw -14-15 g: wdjhplhrbcxdgpnt -1-2 l: klllllll -10-11 k: ckkhkkvkkkmkkjkwkkwk -7-9 f: ffrhdvftfpjfqffhnfsf -4-5 c: kkjksrmkccg -5-9 r: rrrrhrrrrr -5-6 p: pppppth -4-10 t: kpfwzjtchtbndblrvst -1-5 l: mllllllnllll -13-16 r: rrrvrrrrrrrrzrrg -17-18 x: xxfxxxxxxxxsxxxxxsxx -8-11 w: rwbnqrngcvpgwwww -4-8 z: zzzzzzzzzz -4-9 b: bbvvbbbbr -2-5 x: qlfhxkx -3-8 t: wvptttttttt -1-3 m: hmmmmqmm -17-19 h: nhhhdvhnhrhhhhnhmdh -11-12 s: psszbdpsgfks -6-7 s: sssssshs -10-15 l: mnkdvnvmxljjtggwcl -1-13 j: qjjjjjjjjjjjdj -4-9 l: jxvkwhlmlhdtgwvgsdzz -5-9 c: ccfghhccccgc -10-11 v: vvvvvvvvvvv -7-8 t: cntwzshkzvmrnnkr -1-11 l: tllllllltllll -15-17 l: lllglvctrvllzkllt -3-5 n: ncnnp -2-3 q: jsqqh -4-10 h: hhhhhhhhhvh -16-18 b: bbnbbbbbtbbkktbbzdr -4-6 g: kbggdhgggggggggggfc -12-13 p: cpvcppqpplwpt -5-10 h: fvhhbrhpghchhhhhh -2-5 b: bbvzn -14-15 x: xxxbxnwxxxxzxxh -13-15 n: nnfgdglfnntnjqn -2-4 c: cfccc -3-5 v: vrvvzdvv -17-19 v: vvvvvvvvvvvvvvvvvvsv -1-20 h: hhhhhhhhhhqhhhhhhhhh -4-15 q: qqqtqqqqqqqqqqqqlq -11-13 h: hhkhvhhhhwhgk -8-11 p: ppvppppppptspf -8-9 m: mmmpmmkmdmpkspmg -1-7 m: lcmvggm -6-12 v: tvfstvvpvzsvcv -8-9 n: nnnqnnwrrdzlmnwlznrn -1-5 s: msssms -1-3 v: vpdzvdvgv -6-9 g: drgrfggcg -6-16 x: djpxhxvncxfghsxx -1-3 b: sjbwwxbvtvbkt -6-8 c: cccccstccjhv -1-11 q: qqqpqqqqqqwqqq -9-11 m: vsbmmmmmmmqmmsm -2-7 g: gqggggggg -2-3 m: mrgvm -6-7 c: cccpcfcc -6-10 w: swbngwswnxnww -13-14 r: rrrrrrrrrrwrrgrdr -3-9 v: vctxhxtfvq -2-9 r: jrrcslgplcprlvgthg -2-3 n: hnnnsxclvdj -10-11 h: zrhghhqhgzh -15-18 z: zzzlzzzzzzzzpzqzpzzz -3-8 f: fffffrfl -1-4 l: rllllfl -1-2 n: nnnnnvtnv -17-19 z: zzzzzzzzzzzzzzzzzzqz -13-15 n: nnnznnnnnnznnnn -2-5 c: gcccncjmsncfcntjc -8-9 h: hhhhhhhhbpsfh -7-11 r: lzvvlbrgjgrr -5-11 x: xxxxqxxxxxxx -4-7 p: gqpkmppzpsmtzhfdfpl -3-4 j: jjdjdg -14-16 z: zzzzzzzgjzzzzpzf -1-2 n: nnnvnwnnnnh -4-5 z: jhzzz -5-7 k: kkkkkkf -8-18 z: khzzrzjzmzzvzzpcclm -5-10 m: kjrhwkhmsm -10-16 v: vvvvvvvvvvvvvvvwv -9-10 l: xhvjsmllkcdtldfxlw -8-10 p: ppjvppbpqhpwhppgbp -4-6 m: jlmkhm -1-3 k: gvpklkkkk -15-16 g: ggjggggvgmgtpgcg -1-4 j: jbjwj -1-3 x: xxxpxxdxxhfx -14-16 v: vxmhhdvvfjjqwhtv -6-7 l: lnkchzlwxlp -3-4 v: vvvcv -13-14 p: pbqpppppzbmppc -6-12 p: glqwzprpqbqf -6-12 l: lllllglllllll -8-9 n: nnsnnnndcn -6-8 p: prwppppp -1-10 q: dqqqqqqqqjq -12-16 w: kwtbdnjqmwwxhwcwswkl -11-14 r: rrnjghfrrrshlrq -2-14 w: vwbbvcvgnxdmxl -7-8 g: sqmggkgslkwlvggg -1-6 q: tqqqqqq -2-3 b: bbbr -7-9 b: jnwbswfpbn -4-5 n: nnlct -3-11 s: ssssssssssp -2-6 f: wjlpwf -5-10 g: gggghqgqgb -1-3 p: ppdg -4-7 j: pjnkjjljjj -1-2 v: ghmjzxmtxjxnv -6-14 k: klgdzfmgdwhqdkhcnzm -6-11 z: tgzpzzzzztc -2-12 b: cxsmjbdgdnrb -4-6 v: lxdvvh -3-8 l: pnpdnrll -7-8 m: mzmswvmmbxmzlmwhdvq -13-14 s: khzssssssssszsssss -10-18 d: dmfdlgcxdbzznbrlqn -13-14 j: jjjjjjjjjjjjdpjj -15-17 j: jjjjjjjjjwjsqjwjj -10-15 x: xxfxkzxxhxxxxxvxxw -7-14 c: wcccwcmmcccccxhcccc -2-7 z: zmzvfzlszr -7-8 k: jjkrklrkkv -8-9 r: rrrrrjrtz -2-3 w: tvws -1-5 b: bbbjm -1-2 q: tqqjf -5-10 j: wlgjghjhjljwtpcdkqwk -2-5 c: dzpkc -5-6 m: mbvmkm -4-15 k: stjkjvvxrmwdpkwsjqvc -6-9 h: hwkgjplmhxwgvnbhwh -12-13 z: zzzzzzzzzzzzz -7-8 q: qqqqqqqqq -2-5 c: clcwmccczclcccc -2-5 l: jlcgfbflklvpfqxtwgg -5-7 n: nnnnnnvnnnnnn -3-5 f: gfktfffqvgltsbff -10-16 p: jppbttppzpqppppp -2-3 m: zmdm -4-6 j: zsmtjjdnrpp -17-18 j: hvvmrkfnnkvrjtjhjj -12-15 d: dtddddddddtwxgld -8-12 r: rdzrwfgrmxwttknxz -6-7 s: rssbktxsgd -11-13 d: ddddmwddddxddndc -3-6 p: ppcpspfp -12-15 j: jjjjjjgjjjjcjlzj -8-12 v: tgjkwfbsxzzvvpmfs -6-7 z: trbfbdz -4-6 v: vvvvvpvv -8-16 p: pnvppdpjppppppph -8-9 z: lzzzzpdzk -1-4 t: qttzz -2-3 d: dhdd -5-8 m: mmmkmmxmkj -2-12 f: hfhzkwdmrlqvfkn -5-6 h: hhhhhph -14-15 b: bbbbxbbbbbbbbbh -2-3 v: vvcj -12-19 d: ddvdwwqdddcdtdmwdqp -3-4 s: ssjssssssss -2-6 c: wzzxqcdcnlgcph -11-12 j: jjdrcjzjkjcs -4-9 z: bzzzzzzxzz -2-8 b: gjbfkxhb -1-3 c: cpksst -1-5 h: hhjhh -14-15 j: jjjjjjjjjjjjjjr -8-9 n: pcndxcfknfbnnls -10-13 k: kkkqzkwbkkkrtn -4-5 r: rzrrrnrj -13-15 p: ppppppppppppppt -3-6 j: fjqqzzzjm -2-9 m: zmjhctkmf -5-6 s: ssmjss -3-4 c: jlfd -8-12 d: qbddfhnddzgvddddd -6-7 p: xfppppcppppxgp -8-13 s: sssssssfssssssss -13-17 g: xskktsjxlvgfxtzzgfj -2-4 q: qqtwfqqnkvbvbhzs -1-5 j: cjmjs -4-5 c: tvccnc -3-14 m: kkfhmnkkmztxtmn -11-15 x: xxxxxpxmxxvbxxxvx -9-11 l: nhgzwmmrkqhblnk -7-10 x: xxxxxdmxxxxxxxx -13-14 v: vvvvvvpvvvjvvcvv -16-17 n: nnnnqnnbnnnnnnnpn -3-4 j: jvjj -15-16 q: zlqsgvpztknqjqqwqvf -3-4 s: sssrsssdss -11-13 g: ggqggmggswggdk -1-4 t: jmtzttztqt -2-3 v: vvvv -11-13 g: cgjgxgggkgbggxg -4-6 g: ggggqlhgmz -8-15 g: prvxwzkvdhgkjlg -6-9 g: gggggnsjlg -12-14 p: mmvlpzkmpgtpvj -7-10 k: kkkxkkjkkkdkkkp -14-16 b: zmztqsrgvjjmswzkbnk -1-2 x: xxbxxxxhx -2-5 l: tlhsx -3-5 x: xxxxn -4-12 c: vdnmtmqwnxkcldc -4-8 x: xxxxjglx -5-13 s: vsssspszssssnsss -3-6 k: kkhkkkknb -3-5 t: pttqtwnprt -10-14 m: ttjqvzmgmmjqzkd -1-5 b: bbbbpbbb -10-15 d: wdjrhvfngdtlkdl -6-7 w: trxwdwww -2-4 n: snxqlgtsmdnnjgwrgmms -16-18 l: klslpljllqlcslqqll -4-7 t: tttwzttjt -9-10 f: ffffffffwf -8-15 h: trhgxjchhxvvhqp -8-12 w: wwwwwwwqwwwg -12-13 x: xxxxxxxxsffqlxx -5-7 k: kkkklkkkktkk -1-7 m: wkmmqmmhf -12-13 h: mhhchwhhhzhhcvh -7-11 k: kkkkkkwkkkgkk -4-6 l: hdlbll -8-12 v: fvvvvvvvrvvv -2-9 h: hzhhhhhhhhhhhhr -6-8 b: qbqjpbbbdsshv -2-3 h: hwhl -4-7 l: mdllxjgdw -3-9 f: rwffzfkpwbzp -3-5 t: ttnttt -7-10 c: mpcccpndqc -6-7 h: fhhhljh -2-7 v: pnvzcns -1-3 v: vvgv -5-9 s: ssssshsspsssssss -4-6 j: mjjjjq -5-14 h: hwbqghmvmmnvhhrqmj -5-6 s: wctjsh -7-8 s: sssscsjs -14-17 v: vvvvvvvvvvvvvvvvv -14-15 w: wxwwwwwwfwwwwsw -6-7 v: ksvvvlpvv -7-18 s: cssstsvsscshsstsss -5-6 b: zzwbpm -6-7 r: bvtmpkxspskr -6-7 v: lvxrvqv -15-17 c: ccccccccccccccccccc -8-12 r: ghxpwhxcqjrr -6-10 k: kzbcdkndqm -5-6 s: tpsxss -1-5 p: qlrlp -4-8 q: qqqkqqqz -7-11 v: vgvsxvwvlxv -2-5 b: bgkbb -3-18 j: jjsplxjxgqjfjrjxjjlx -6-10 k: kxkhkkjkkrvkkk -7-16 t: ttttttzttttttttbtttt -1-7 l: ptzptslrjgwlfgwq -8-10 v: vvqvvvvvvvv -3-5 z: zzzhz -6-7 c: cbrctgc -5-16 l: llllxlllllllllllll -6-7 c: chxclqcdrh -1-10 c: jcmcccccwcccccjbvc -8-14 h: zhhvhhhhhhhhhv -4-7 n: rnnnnnfnnnnnvn -10-12 w: wwwwwwwsgtwww -5-8 c: cmbcctzcj -5-7 f: fffskrf -5-6 l: lllmzl -7-14 m: mmmmmmmmmmmmmmmmmmm -1-9 f: jfffffffzvffff -2-5 g: ggmng -16-17 x: xxxxxxxxxxxxxxxlx -4-10 n: npkgjcfnnnnn -1-13 d: bhkjgsnzxkdgwbdv -6-7 f: ncqfzff -7-10 h: hqhhhhhjhhh -2-4 v: vnvvv -1-6 w: thlmdwgwgtswvtx -3-7 d: ddlkhvfdnpbdr -1-4 q: qbfq -2-6 f: rzfmfrjgcfjk -10-16 b: bbbbblbbbkbbbbbbwqb -13-14 j: jjhcjnkgvrnwjp -5-12 l: lgqwvrlwcllllv -4-8 j: jjgpdjssspjfdbt -1-9 h: hhhhhhhhwhhh -4-6 p: psmppt -2-3 h: zhhhk -2-6 b: bbbbbmbbvb -7-9 z: zzzzzzgzdzz -8-9 d: ddgdmdwddd -2-6 s: nssssv -18-20 x: xxxxxxxxxxxxxxxxxvxx -9-10 m: dzckmrbhcmwvkcxmlx -10-11 v: vwvvvvwvvghvn -3-6 d: wcwxddjhnljfntj -13-15 v: vvvvvvvvvvvvcvc -1-5 x: xxfxfxxkx -7-8 w: wqzjzwwwtw -2-4 f: flgl -3-6 n: ncfngngdnm -5-7 k: kdkmbkkkkxk -5-6 x: xxvxth -5-6 r: rrhhzr -4-6 b: bbbrbbbbbmb -12-13 q: qqqqqqqqqzqkqp -6-14 n: mlbflnrbhlhpdrfln -9-12 q: qqqqqqqqqqqwq -3-4 k: rkncnbk -1-3 j: jjpj -8-9 v: vjvczrvvm -9-16 m: tmnmmmxmbmmmrtmmr -9-11 q: qqqqqzqqsjxq -3-5 h: hhhhcs -11-12 k: kkkkkkkkkkkvqk -11-12 x: xlxxxjjxxxpx -1-12 n: nngtnhlnjfnf -5-7 p: ppptppppp -13-14 l: lllmlflllhllpm -13-14 m: vdkmrdfzmkknmp -13-15 s: ssssssqssssscssss -5-11 h: hhhlxhhhhhhshh -10-11 s: ssssssssssgsssss -6-7 q: kqqqqmqnqq -8-13 l: llllllltlllljll -9-12 j: jjjjjjjjjjjlj -7-11 s: gstcncsssscssssss -4-6 x: lrtjfnhmpmxj -9-20 c: cttccccccnccclcccccc -1-8 w: cwwwwwwwwww -12-13 n: nnnnnnnngnnnnn -1-5 p: pfqwcpnppppwwpqppp -7-8 g: gggsgglghg -6-7 g: gggggggg -4-10 s: ssssssssssss -1-2 n: njsnnln -7-8 z: gzczzwdzkkzz -2-8 b: bbbwjfbh -6-8 r: rrrrbrrbr -2-5 k: lkkkkl -2-3 c: swcgjcm -2-10 t: ttttttttttt -12-13 l: lllllxllllllqhl -2-9 l: qtqxdpqqlwhqwlr -1-5 q: qqxrn -10-11 k: kkkkkkkkkckk -1-2 f: ffff -3-4 r: rrxr -8-9 p: lppppxpsp -2-5 s: ssstchlrds -11-15 m: mmmmmmmmmmmmmmmmm -14-17 k: kkkkkkkkkkgkkkktbkk -1-2 x: xlxx -9-10 w: wwcwptczwzzd -1-3 c: ccgcccccccccccccc -4-5 h: nhhhvh -8-16 l: hlllfllllmltlhlldl -4-5 w: wgwfw -6-15 p: pjpbfrmxqgkxkbqhj -12-17 l: llmtllnlllllllllnns -8-15 n: zjnxzndnznklxzjlx -6-9 r: wpsmstnkgtrmng -3-7 s: csvhxhsgvrsrn -10-15 h: hchhhdhkhghlhgsh -2-9 c: mzbmtccktc -3-4 x: xlzvxg -12-14 k: zmkskknwkkkmkkwkgkkk -4-9 r: vqrrrrdzpl -3-4 g: ggvbxg -5-8 q: xtrqrmqq -16-18 l: zllllllllllllllwlnll -6-7 s: zsqszss -3-4 g: wghgpg -1-6 z: hzzzzrz -3-8 h: hthfqtccnq -15-18 p: ppppppcpppppppnppppp -3-4 l: qplkdmjntlghjlpxlq -10-12 q: xzqkxdvgrqxqqzzxgjj -6-9 q: qqqvsvqqxq -12-13 g: shgcnjlgvcgqg -5-10 l: llklplllmlsl -3-12 l: vllqfzwnsqslpnvrbkh -14-16 g: gjggggggggggggbzcggg -5-11 m: ssmsmbnspmm -11-13 v: mkqvvvvvmcvvz -2-3 k: mkkchtzqsvkbclgxn -4-7 r: rphrrnrrqwknrktrgsg -6-10 z: vpjhzzzkqzjl -16-18 c: ccccccccccccccchccc -1-10 v: qvvvvzvvvvvv -5-7 j: jjrjjjj -14-16 l: zlgdrlqllgpllfhh -3-6 l: llmllll -3-4 l: smdl -4-11 h: kgqhcpvrbldrhbq -1-15 j: ljjjjjjjjjjjjjjj -7-14 c: ccccccccccccccc -2-10 v: vzvjvvvvvvvvv -4-9 p: flbpmqmhkpt -10-12 q: rtdrqmpcsqrhqqchqczw -16-19 w: vlwxgtmjwrzvqgdwbdw -8-15 c: gkcccslctcmszhc -3-7 f: hhffhbbtbwzw -4-9 s: msbsxssds -13-15 p: pppppppppcpppxldp -6-7 m: mmmmmqmm -11-12 m: mxmmzwmmmdqpmp -7-12 l: gncmgzxlqcllqgt -12-14 t: tttttttttttdtt -2-6 f: ffffffbrfffp -14-17 h: hhdhpphhhhhhkhhxqph -7-9 x: xxxxxxxxqxxxxxx -5-18 j: vlwgjljtljtrdbxjnjwm -5-7 n: jmncnsndnbwx -8-9 r: rrrrrrrrr -11-17 j: jjjjjjjjjjjjjjpjr -5-6 x: xxxxjt -13-15 l: nshmnjgzhmjdzvl -9-10 r: wmsvzxsrqnnhfr -8-11 k: kkkxxrkpktg -1-7 r: rrrrrrrfrrrjwrd -5-7 t: rztvtvplbrk -2-7 w: wwwwwwsw -1-2 g: sgggk -12-13 j: jjjjjwjjjjvvjjjrjs -1-2 c: cccccc -3-5 g: khgzr -9-16 b: bbbbbbcbsbbbbbbb -12-13 z: zzzzzzzzzszkz -4-5 r: rkrrrr -1-2 t: tgbqtddbmq -1-2 w: wkwwwww -14-15 q: qqdqqqqqqqqhqnb -6-7 r: rrrrrdmrr -8-9 j: jjjjjjjqhjjjjj -3-6 t: gwmlntffstzllvs -6-8 h: hhhhnhhhqh -9-11 w: cwcwwwwwgxwwbw -5-9 w: wwwwcwwww -8-12 k: snjmkkhrgkkzkkpskk -3-6 q: lvqjqlq -3-4 z: zzzn -9-12 t: dvmvhttxtmzhrr -3-7 k: kkkkkkskkkkkk -6-15 v: vqvvvdvvvvbvvvvvvvvv -3-4 z: jzzzzzdk -8-12 b: bbbbbbbbbbbs -3-9 m: nvhwmwgmmqkbmmmzb -8-10 r: npwjcgwrwcrx -1-5 r: rxdrr -6-9 p: ppppppsbkmppkp -1-4 j: jjjqjjjz -6-7 b: rblbbbbbbp -5-9 t: tttttttttf -8-9 c: czcccccccc -13-14 j: jjjbjjtbjjjjjj -3-8 p: pwppzqvp -3-12 m: mmzmmmmmmmmmmm -3-9 d: ddjddddddqddd -3-4 q: qqfq -6-14 m: mmmmmbmmmmwmmlmmmm -3-4 c: glgzc -6-7 t: ttttttt -1-4 s: sssbs -5-8 r: drrkrrrzrrrr -10-12 q: rvqfqqkllqqqlfrq -11-13 s: szsssssssssssss -8-11 t: tttttttsttvt -11-15 j: zjjjjjjjjjjjjjjjjj -2-4 s: dvfs -3-4 q: zhpq -10-11 c: cccccccccckc -5-11 h: pnrjhtdlkzvhh -5-9 l: nlllxgnrlllllllmq -3-4 f: gfff -8-9 g: grgggggbg -3-4 j: pfwjhh -2-5 l: jlfjr -2-4 l: lblv -3-10 q: qqvzhnqqhqvqq -11-15 t: tfttttttktwttts -12-14 b: gqptrzwclbdbfqd -1-4 r: crrprr -5-13 v: qvdvvvdnrqmrqp -9-12 r: rwrrlsrrsrrjgdnrrr -4-6 c: ccldccnp -16-17 q: qqqqqpqqqqlqqqqmlq -2-8 w: wwwwwwwhwmwws -3-6 m: dmmbmmdmkxm -6-13 t: xflrtblvcvfxnlf -2-6 m: pmnsmm -13-15 k: kstfvnkkgfvvkbk -4-10 w: jqwcwlcwcwvqbfzfzfm -1-5 d: ddndbmjxhfqqn -13-16 p: pzvbszhqtpklpkpdw -2-4 t: thttwmxjsbtp -8-10 s: zbsvjcssfmf -3-5 l: lltlwlllll -12-14 g: hgfvvfpnrvpfggnss -3-13 q: cjmbvgxchmqdqcvc -12-16 j: cjjjjjjjjjjqjjjjjj -1-5 m: kqrgm -11-14 x: xcjpwbrrffxkfxh -12-14 c: kgfnccxqczkcjkcc -3-4 f: sfftf -1-3 f: ffdz -12-14 t: xftfxmkttdsttg -4-9 f: ffhcgfffffff -9-10 b: zjlbbsbzbx -9-14 m: hhxmlmmmzmmtmm -3-5 t: tkcpzjwr -6-9 k: wkfdwflgrntrknsr -1-4 l: gfml -9-10 z: zzzzzzzzzrzzzz -9-11 h: hhhhhhhhhhzhh -1-9 k: kkkkkkkkzkkkkkkk -2-7 h: sswmmkhkvhw -2-5 m: pmbnnmzrkk -9-12 f: xhpfbfdffkfw -3-4 g: gfwg -11-12 n: nnnnnnnnnnnpnnnxn -5-6 d: dddddgddd -7-9 j: cbjgnjqjgj -9-14 r: rrrrrrrhrrrrrzbrr -4-5 p: prphk -2-4 d: dpdd -5-15 p: zjsppzhqqgqspcppqpps -2-7 r: rrrrrrfwrr -1-3 h: hhqh -14-16 g: zgvdgspkjrrvcgdlxg -4-6 c: psgqccccvc -9-14 q: qdqjqmttdtcqggqpqn -13-18 f: ffffffffffffgffffff -8-9 g: gggggggggggg -11-12 x: xxxxxxxxxxxr -2-17 c: cxcccfchcccccccbbcm -7-11 b: nwbrzndvrfxwt -3-4 x: xhwxxxv -16-17 r: rzrrnrrrvxrrzrrrrrr -2-3 f: zcvgbmxvwp -5-6 b: fwbbbf -6-10 m: mmmmmpmmmw -2-4 n: bnnvndbpvzj -3-4 t: dftfhdngqp -1-2 v: vtvvvvvvvvv -2-3 v: vgvv -9-10 s: tsvsshsssgssssmsksss -6-7 t: ttttttxt -3-4 c: jcrc -5-8 l: ztlmjljlb -4-5 w: bwwwww -11-14 r: rrrbrrrrrrnrrrs -10-16 z: zzzzznzzzwzzzzzzzz -7-13 m: mmmmmmfmmmmmmmmmmmmm -15-19 w: fflzcwftmcswcwwnwts -10-19 b: bjbbbbbbmwbbbbbbbbtb -14-16 x: xxxxpxxpxxqxdqxxxx -8-13 r: rkzrjbxrgwkhnb -5-18 r: rrrzfkrrrrrrrrtrrnrr -4-5 b: bbbfzb -6-10 q: qnscxqqfqb -8-13 w: wwwwwwwfwwwwwwwwww -10-11 n: scvnsnpgnjnmdpnwct -7-11 p: pjpppppdqpjpfppsptp -7-9 n: jfsvclhfm -3-8 h: whsggqscd -2-12 r: mrmpxhrqsdmqpjshvck -2-4 g: gdgggg -7-12 s: ssssssssgsss -7-11 l: dlklllnjlslbl -5-11 k: kkkkkkkkkkkkkkk -6-9 g: dhtvcgmfrjhk -4-5 m: lmmmhmsmmmmmcmmmmzmm -11-13 t: zgtnkjzmtkttmtkc -6-7 b: bbbbbbv -3-4 q: qqcq -12-16 z: zzzszjzszzczmxtzzcl -2-5 w: wwfhp -1-2 d: gddkd -5-12 f: fwqgbvrcfmwb -2-5 w: bnxcw -3-15 t: ncwftppphsxvztttjs -7-10 p: ppnsppkcppsp -5-6 v: vvrdvv -5-6 z: hczwbzz -3-12 p: gcphfgmzfkflspmxg -14-19 m: jmfmfjpvbmfmmrdkdnzp -6-7 p: pdwzppppp -4-7 b: bbbnbbqbb -7-8 r: frrrrrxxr -8-18 b: jbphpzgvnppwhkxfzs -1-5 c: pvhcc -4-8 z: fzznzjzztstzxrz -5-10 v: jvvwvvvlvlvqc -7-14 p: svgrzfpxkdpbhph -5-7 n: nncmvkn -11-12 r: rrlrbrrrvrrr -1-5 r: vtngrndhqf -2-4 k: knjp -11-14 h: hhghhhhhhhxhhwhhh -16-18 r: rrrrrrrrrrrrrrrpnb -10-14 d: dpddbvdtdmxfdddd -2-4 t: cztt -5-6 r: rzrprd -2-5 n: ngwdngc -1-6 q: qqqzzwwqqqkqqq -7-8 l: lllzllpxl -1-4 b: kmltzzjzbppgwq -1-4 t: ttttb -3-4 p: dkxpcph -7-15 z: zzzzzzhzzzzzzzzzz -4-7 c: cdljfccm -3-8 p: hbpxhlmc -4-5 w: wwwlw -14-15 b: lbqbbbkgbbwfbdb -6-10 j: jtjjvpwwthwcsj -5-8 t: ltvtttbtqxtzq -12-13 t: ttttttttjttztxt -16-18 p: ppppppppppppppxpxbpp -4-7 n: nnnrnnnnt -1-2 r: rfrr -5-6 g: ggggvggg -3-4 s: ssbw -3-4 l: ldll -8-10 m: mmmmvmmcjkmg -10-18 w: wwvwwvwwhwwjwwwlwxcm -1-2 x: cxxxxxxxxxxxxx -1-5 b: bbbbkbbb -12-14 z: zwqzrrzzvqqzzszrx -1-5 z: lzzfzzzfz -16-17 t: ftgstrgptwmptxrzt -9-10 b: bbbbbbbzbbbb -8-14 w: wwwwwwwjwwwzwzww -3-4 h: qhnh -2-12 d: dnddddkddddzdxdddd -5-17 x: xxxxxxxxxxxxxxxxx -9-10 h: hhhhtqhhhrh -6-7 p: pfmppppp -5-8 v: vbvvvvvs -4-5 h: qhfhqcb -3-12 d: dlddlhhwvcrdrxwpt -2-3 n: nnwnp -4-8 g: ggggjgfgzgdglgg -4-9 h: vrghsphxhxzsxw -12-18 z: qrzzzfwdcwnzdzkckz -6-8 v: zvmlqwwh -10-14 p: pppxwpndfpwppdpptmpp -12-15 q: qqnqkqkqjgrcqfq -2-4 n: pnszjnnn -2-3 c: zkctcfc -17-20 l: lvjlcclllslzllllwgll -16-17 k: dfgskkfkkkfjhfvfks -1-3 t: tjttltt -2-3 b: bbzbb -8-15 t: dtttttsttlttttzlttj -13-14 v: vvkvvjvgwvvvkvf -7-8 v: tvvvvvvhv -3-10 d: bxktdrtddtdtsh -4-12 j: npwxjjjjbjkq -1-4 l: tlllll -12-13 b: lbhpxbbbvbbbqbbbsbb -9-15 v: vqhsggmpvmqtbzzlq -12-14 f: ffhfjfffqfxqff -15-16 m: jtnsjwpggbpxlhqmk -2-4 n: xptncjsstcl -5-8 q: dmwklqjqnzb -3-4 c: vcgl -1-6 h: hhhhhh -8-9 x: ckblstcdx -5-7 w: vwphwwmwwwww -2-4 x: kxxxdh -10-11 m: kmmvmmmfmksmj -4-7 v: zvrvvvdvvv -1-8 p: npxbwqpxbjrnrv -5-11 t: jfkwttkstrxlgts -1-2 g: ggggg -5-7 p: tpppppr -15-17 v: vvvvvvvvvvvvvvvvvvvv -17-19 w: dwjwjznczwgfmkmhdtw -10-13 f: fffffbqfffffffffff -4-14 g: ggggggggggggggg -2-3 d: bdkfd -7-8 x: xxxxxxxx -6-9 h: hmshdhvvhkhbhcshs -14-15 g: gggggggggggggghg -2-16 q: qqsxqqqdgqqghqqk -3-17 p: ppbppprppppppppphppp -8-18 v: vczfvqcvvcspndvxwjdv -1-3 d: fdddd -9-11 j: gfjjnjsdnhb -8-10 s: hkhshttssl -5-10 f: ffsffffffqxfff -7-10 w: wwlwwckwwf -4-8 x: blxxmtbgnblfgnfwz -4-5 p: rlpkprppp -13-14 s: ssssssssssssswss -4-8 h: hhhdhmhhhjhlhh -6-7 h: chhhhhfhzqhdhhh -15-17 m: msvrmwzkzvmmgrmmpm -4-6 x: qgtwwxhgsxxmklgmn -4-7 p: rpzkdpp -3-4 v: vvvhvjv -16-18 p: pppppppppppppppppmp -15-17 k: kpkkkkkhqkkkkklktk -5-7 s: ssbxxsk -2-4 l: cwllll -6-9 v: cvvrrkvrvsdvfwcv -1-7 w: qwwwwslwwwwwwwwrww -2-12 c: clcccccccccccccc -5-10 m: ftcmrpmvrzc -7-11 w: wwwwwwwwwwtwwwww -2-3 n: jngdlvgcvtkmn -1-8 v: hvvvvvvvvv -3-17 p: jrpvltxlcqgpfxwsj -1-5 k: kkkkfkk -1-10 c: cccccccccfc -13-19 f: flfffffxfvffffprfmcb -3-6 g: htglsbvrzcghjmd -9-11 h: wrwghhhhnzhxl -5-12 z: zzkzzhnjpmkvzzzw -7-11 w: qrwcwwstwddw -15-19 m: mmmmmmmmmmmmmmmmmmmm -15-16 m: mmmmmmmmmmmmmmhmm -12-16 x: xxxxxcxxxxxlxxxxxxx -5-10 l: qwfqlllgsdjrlspll -3-4 f: hffmfffg -6-7 l: lwlllbllnl -11-20 t: tttkrtlpttwftmwttttt -11-12 d: ddbdddddddpktdd -4-11 w: sxkmkwdwwnlwxmdvfx -4-5 k: kkzkpk -13-20 n: nnnnnntnnnnnbnnnbnnn -5-7 c: ccccwcc -1-6 h: cckkhhdhhwmhhmzchhwx -1-15 b: hbbbbbbbbhbbhbbbbnbb -1-2 w: mwwww -1-2 f: sfzgwtf -3-4 s: sssj -1-3 w: xwww -1-16 p: ppppppppdppppppp -1-6 c: ccxmccccc -4-8 b: rtpbcfbr -9-10 s: sszssstshss -15-16 x: xxxtxxxxxxxmxxxzx -9-15 k: kkkkkkkkkkgrkkkkk -11-13 x: xtxxxxxxxxrxkxx -1-5 f: rffflfffnf -14-16 n: nnxnnnnnnnnnbnzbnnn -3-6 d: ddddddndbdfdhd -14-15 q: sbqqhvqqqvqgxfq -5-6 b: jglbfjb -1-10 l: llllllcllsll -3-5 z: lwzzz -5-12 k: kkkkmkkkkkkkkkkl -8-12 v: vvtsvfvnzvhpm -5-7 l: llllllll -4-7 f: nqfffkbdf -4-8 j: jjjljkhj -9-15 h: vgzpgfhfhmwdhbqc -1-5 p: ptpsjqpnp -5-8 q: qbqqwqnq -5-7 w: wwswwxsb -3-6 h: nnhrnhkmxqkt -1-3 w: jwwww -2-14 x: cxxxxdxxxxxxxbxx -12-14 x: xxxfxxxxqxxrxt -4-9 f: fffkffbsfkxv -12-13 m: mmmmmmmmmmmwm -6-10 p: ppppphpppxppp -9-12 v: vsvvvvkmjvvvn -3-12 r: shngvhbmjrpr -12-13 w: wqwcwxclwwwfw -4-5 r: nnrrdz -4-19 c: vbcpwzvxssccqkqgmxvj -1-6 g: tglxhggng -9-10 z: lvzhvtglzf -10-16 f: gddxfftggfbmxwts -4-12 k: kkkklkkkkkkpkkk -7-11 m: mmmmmmmmmmtm -2-10 z: vkfpjrrvlwlbjwk -3-7 w: dtdzwjqgxdwjhchwwd -13-14 v: vvvvvvvvvvvvvvvv -11-12 c: cjccccqccccc -14-15 h: hzhrhkhfthrhxht -3-5 v: dtwvvvvvcvvvrvsvvv -10-14 q: qhqqkqcqqqqqlfqgsqq -3-14 f: ffvffffffffzffffff -1-12 x: xxtxjxzxxxxxlxxxxxxx -2-4 c: pgpc -1-4 r: fdrr -5-7 r: rrrrrrt -10-11 d: drdddddddmddddpd -2-5 f: gfrlctftzr -10-13 z: nrzjjrzjzzplzmzzbn -8-10 c: cccccccgbc -5-8 g: fgggcndwgggbjnfgb -6-9 d: ddddghdgbddm -3-7 j: ftjjjvjqcp -5-6 s: sqvfstz -5-18 k: kkkwkkkkkkbkkkkkkkbk -3-6 f: djffffkff -4-6 p: pqppppr -5-9 h: hhkhjhmgcqvfhqvhn -8-12 t: tttttttvttttt -14-15 z: pzrzhjqmtbcnzdzr -1-17 s: ssssssssssssswsss -1-4 s: ssqh -1-5 r: rrrrrrr -17-18 h: hhhhhrhcxhhhhhhhhb -7-9 t: dttttjmtv -1-3 c: mcccp -4-5 x: xprbxql -1-5 q: cqqqqqq -3-4 g: ggggw -1-7 f: ffffffnf -7-9 t: ttttttttttt -11-15 m: mmlmfmmmmmmmmmmqm -4-5 n: npnnnn -4-5 b: zvbbvbjhlkf -11-16 c: gnqmcvtzwpcbvncwcc -12-18 q: qbqkwqqvqwqqnljsqpqt -6-10 r: wcrtdrlkgjr -16-17 p: gppppppppwvlgpptp -1-13 g: gqghbwqqzwwdk -1-6 l: rlllll -3-7 j: pdjjtcqwbqtpfkjbwgq -7-17 z: zzhsnjrhrzzfrqszdhdg -6-7 n: xnvnhnrn -6-7 r: rrrrrrzr -2-3 c: ccmcccc -2-3 v: vvdv -3-9 f: mlfffshbfdff -11-13 v: dfvkltvjvvvvx -12-13 c: mqrccccbccbgcccccvc -9-13 w: wwwwwwwwwwwwcwtww -6-8 d: pdvgddtmvwdkvdtzf -1-9 s: hsssssssssdsls -1-5 c: zbsslcd -1-4 p: bpppppppppp -13-16 s: sssxslsscssbqsspcs -1-10 p: pskwpppzpppppks -3-5 c: ccppccmcc -10-11 b: rhbbbbbbbzbb -2-3 d: ndhjhd -3-4 s: sscs -5-6 d: dtwwnt -4-5 d: dddddddd -5-9 z: zztzvzzzz -2-6 v: vpqdll -13-14 d: nxkmbkkpxkcdld -1-3 s: ssss -8-14 z: zzzzzzzzzzzzzbz -16-17 f: fffnffffffftbzffpkf -3-4 m: mtcm -3-4 r: mrdrd -11-13 k: ljkmhdkkkcpjzlmkkzkk -2-3 d: tdqnxpd -3-7 h: mrvdlthxchpvwvssqpk -13-17 j: jjfjjvjjjjjzjsjjksxr -1-4 n: rnnx -7-10 m: mmmmzmxfmm -1-6 r: lrrvrrrrm -4-18 r: rrrdrrrrrrrrrkblrr -6-7 k: kkkkkkl -4-6 v: vmnfvvvvmcmlh -6-9 g: jgcgggkbbmgbs -7-8 t: ttcfwtgjtcttv -3-4 j: tjjj \ No newline at end of file diff --git a/day3/__init__.py b/day3/__init__.py deleted file mode 100644 index 4954c15..0000000 --- a/day3/__init__.py +++ /dev/null @@ -1,43 +0,0 @@ -from functools import reduce -from typing import List, Generator - -from aoc import BaseAssignment - - -class Assignment(BaseAssignment): - def read_input(self, example = False) -> List: - return list(super().read_input(example)) - - def slope(self, input: List, dx: int, dy: int) -> Generator: - for y, row in enumerate(input[::dy]): - x = (y * dx) % len(row) - yield (x, y) - - def get_trees_for_slope(self, input: List, dx: int, dy: int): - trees = 0 - - for x, y in self.slope(input, dx, dy): - if x == 0 and y == 0: - continue - - if (input[y * dy][x]) == '#': - trees += 1 - - return trees - - - -class AssignmentOne(Assignment): - def run(self, input: List): - return self.get_trees_for_slope(input, 3, 1) - -class AssignmentTwo(Assignment): - def run(self, input: List): - return reduce(lambda accumulator, value: accumulator * value, [ - self.get_trees_for_slope(input, 1, 1), - self.get_trees_for_slope(input, 3, 1), - self.get_trees_for_slope(input, 5, 1), - self.get_trees_for_slope(input, 7, 1), - self.get_trees_for_slope(input, 1, 2), - ]) - diff --git a/day3/example.txt b/day3/example.txt deleted file mode 100644 index 8f551de..0000000 --- a/day3/example.txt +++ /dev/null @@ -1,11 +0,0 @@ -..##....... -#...#...#.. -.#....#..#. -..#.#...#.# -.#...##..#. -..#.##..... -.#.#.#....# -.#........# -#.##...#... -#...##....# -.#..#...#.# \ No newline at end of file diff --git a/day3/input.txt b/day3/input.txt deleted file mode 100644 index 6cfcb73..0000000 --- a/day3/input.txt +++ /dev/null @@ -1,323 +0,0 @@ -...#...#....#....##...###....#. -#.#...#...#....#.........#..#.. -.#....##..#.#..##..##.......... -.....#.#.............#..#...... -.......#...#.##.#......#..#.#.. -#.#....#......##........##..... -.....##.#....#..#...#...##...#. -...#...#..#.......#..#...##...# -..........#...........##....... -..#..#..#...................#.. -#..#....#.....##.#.#..........# -.#.##.......###.....#.#...#.... -.#..##....##....#.......#...### -#.#..##...#.#..#............... -.........#....#.......##.#.#... -...###...##....##...#..##.#..#. -....#.........#..#...#.......#. -....................#..#.#.#... -..#....#..........#...........# -.#.....#..#.....##........##..# -#..##..#...##............#..##. -.#..##....#..........#..#.##.#. -..#####..#.#............##..... -...###.#....##..#.#....#.....#. -.#.......##....#...#.#.....##.. -...#....#...##.#...#..#........ -.####.....#....#.#.#...#....... -...#....#.....#.......#........ -#..#.#.......#...#............# -...#.....###.##....#.#.###.#... -.#.........#.......#.#....##... -#.#..#...#.#...##......#..#.... -.....#...#..#.#...#..###..#.... -......#.........#...###........ -.....#..##...#..........#.....# -..#..#.#.##.#...#....#....##..# -##....#.##...#.##.#..##....#... -.....#.#.#.#..#....##.#...#.#.. -.....##.......#........#....... -...#.#.....#...#...##.#......## -........#..#.#...#.#.....#.#..# -#..##...#.#...##..##...#.#...## -.##.#.#..#...#.....#.#.##.#...# -.#.####.........##.........#..# -.##..............#....#...#...# -......#...#..#...#..#..###.#... -.......##...#.#.#..##..#......# -.....#....#..##..#.........#... -.....#..#.#.#........#.#.####.. -#..#.......###....##........... -#..##..........#.#......#.#.... -.....##........#...#..##....... -###...#.##.#.#.#.#.##...##..... -....#...#........##.#.##..##... -.#..#.#.#......#.......##..#..# -.#...#.................#....#.. -.##..#..........#..##.......#.. -.#.#.#.....#..#.#.........##..# -...#......##...#.......#...##.. -##...###....#.###.............# -#.....#.#..#.#..#........#.#.#. -.....#.#......##..#.#.....#.##. -.......#...........#..#.......# -..#....#.#.#......#.....#...#.. -.....##........#..##..#..##.... -#.#........#...##....#.#..##... -#......#......#....#..#...#.##. -....#.#.......#.#.#............ -......####.#.##...#.#.##.....## -..###.#.#..#.........#.####.... -.#.......#..#.#....#.#..#.#.##. -#....#....#............##...##. -....#....#............#....#..# -..#........#..#....#..#..#...#. -.#......##....#..........#....# -#.##.....#..........#.###.#.... -....##...#.....#.#......#.##... -#.#.....#.......###.###..#..#.# -..###..##.............#.####.## -#....#.....#....#..##.......#.. -.....#....#...#.#.#.#..#...#.## -...#.....#..#....###......#.#.# -##.........#.#..#..#.#..#.....# -.#.....#.#....#.........##..#.# -.#.#..#.###..#..#..........#... -.##....#.#.#...#......##.....#. -#.#....#....#...#...##...#..#.. -#...#........#....#....#......# -#......#...#..#.#.##.....##..#. -....#...#......##...#..#....#.. -.#......##.##.......#.......#.. -.#...#..####...........#.#.#... -.........#...#.#.........#..... -#.##.....#.#..#.#.###...###..#. -#...##.###......#.###..##.#.##. -...##.#.....#....#..#......#... -#....###.#..#...##.....#......# -........###...#...#............ -........#....#...#...#....#...# -#....#..#..#....#.#........#.#. -##...#.....#.#..........#..#..# -#.#...##.....#........#...#...# -##.#.#.......#...#..#.###....#. -.#.......#....##..##...#.....#. -#....#....#.....#.......#...... -.##.##.##...##...#.#.#..#..#... -#..#..#.##....#......##....###. -.......#.#.........#..##.#...## -.#..##...#....#.....#.......... -..#.#...#......#.#..#.......... -.##....#.#.#.##.......###...#.. -..##.#...#.#.#.#.......#..#.... -#..#.......#...#........#.....# -.....#.......#......###..#..... -...##.#.......#.....##.....##.. -##..#.......#.#.....#....#..... -..#....#.##.##...#...#......#.. -.#..#.###.#....###........#...# -....##.##...##..#..#.#....#.... -..###...##.....##.............. -#....#...##...#....#..........# -.##........#......##...##...#.# -..#.#.##..........#......#..... -...#...#.........#.##........## -..#.#..#.#..#...#....#...#..... -...##...#..#.###.#..#.#...#.... -....###........#..#..##...#.... -#.#....##.......#.#........#... -.###...#..#.#.#.#..#...#..##.## -..#.........#####.#......#..#.. -#.....#.....##..#....#...#...#. -...#..#....##....##.....##.#... -.........#............#.##..... -....##.#..#....#.##.......#..## -.###....#.#..#......#.#.......# -.###...###.#.........#.#..#...# -.....#........#..#.#..#.#..##.# -.###..#....##.........#..##.... -..#.......#..#..##...#.###.#... -#.......#...........#.#...#.### -#.##.##...##.#...##..#.....#... -..#..#........###.#.....##..... -#.....##....#...##...####..#..# -....#........#...#...#......... -......#.#.#.#.......#..#.....## -..#..#....#.....#.#...##......# -..#....#...#.###.........#.###. -...#......##..#.#.....#...#.... -...#.......#...#...#........##. -............#...#..#....#.....# -....##......................#.. -#.#.#....#....#..........##.... -#.#.....#.#.##..#...#.##....##. -...#...#..#...#..#.#.#.......#. -#.....#..........#.........##.# -#...##..#..#.#.......###....#.. -.#...#..##....#.....##.......#. -....#.##.....#.........#.#....# -........#.#...####..#.......#.# -.####...#.#......####.....#.##. -###..#....#..#.......#.#..##..# -#......#.#....##..#.##.#....#.# -...###...#...#..##.#..#..#.#... -...##..##....#..#.....#........ -.....#..............#......#..# -......#....#......#..#......... -#..#.....#.##...........##..... -.#..#.#..................##.... -#.#..#..##...#....#.#......#... -.##.#.##......#.##...#...#...#. -..#...#.........#.#..#.#....#.. -.#.####.#..#.#......##.#..#.... -#..#.......#....#.............. -....#............#..#.......... -.....#####.....#.....#..##...## -#.#....#.#...............#..##. -.#.#..#...#......#.....#.#.#... -.#....#.#.#......#.....##....#. -....#....#.##..#.......###...## -.....#..#.##...#...#...#..#.#.. -##..#........#.#..#..##......#. -.#..#..##.......#..#.....#..... -.#.#.....###..##.#.#........... -..##..##.####..........#..#.... -..##..#..#...#....#......#.#... -#...#.#......##.....##.#..###.. -#..#..............#........##.# -.........#.##..#.#..#..##.##.#. -#....##....#.#..#.#...##..#.... -.#....#.......#............##.. -.......#.#.......#...#.#......# -......##...#.......#.#........# -..###..#.#.##....##...#....##.. -..##.##..........##..###....... -.#.#.#..#..#.#.......#.#...##.. -..#..##.........#.###..#......# -....#.#.#...##.#...#...##..###. -..###..##.........##...#...#..# -.#..##...#.......#.......#..#.# -........##....##....#.#.###.#.# -#.....#.#.................#.#.. -....#.#.#.....##.####.#......#. -....#.......#.#.##.##.......... -...#...........#...#.##...#.### -#....#....#..........#.##...... -##..#...........##.....##.##... -.#.##...##..##....#..#.....#### -#...#...#.##..........##..##... -....##..#....#.....#.#...#....# -..#....#..##...###.#.#......... -#......#.#.#...#...#.........#. -#............###.#.#.#..##...#. -.##.....####...##..##..#..##.#. -#..#........#.....#.#.....#...# -#............#....#.#.#........ -......##...##.#....#.....#...#. -..#........##......#.#.....##.. -.#..#..#.....##.......#..#.#..# -.#....#..#....##.#.#.#..#..#.## -.####.#..........#...#..##..... -...###..###...##..#............ -#..#.....##.#...#..##..#....... -.....##....#...###.##...#...... -...##..#...#..#..##....##....#. -...###....#.###.#.#.##....#.... -##.#.#.....#....#.#....#..#.... -.......##.....#.#..##...##...#. -.#....#.#...##.#..#....#.....#. -..#...#..#...#.##........#...#. -#....#......##.#....##...#.#..# -.....#..#..#..#......#...#.#.#. -..###....#........#...#.......# -###...#.......#.#.......##.##.. -......##.....#.#........#....#. -#.##..#.#.#.#..#....#.##.....#. -..........#.##.#...#...#..#..#. -..#...##.#..........#..##.###.. -..###..##.##..#.#...##.####..#. -#.#.#...............##....###.# -....#.........#.#....#.#....#.# -..#...#.###...#....###.....#... -..#..#....#...#............#... -.#..#....#..##.....##.......... -..#....#.#...#.#.#.#.......##.# -.........#....##........#.#.... -...#..##.#..#.##...#...#.#....# -....####...#...####.#....###..# -......##...#.##.#.......#..#... -#.#...#.#...#.#...#....#.#.#... -.#.....##...#.....###.#....#... -......##.....###...#.#...#.#... -#..#..##.#.#......#....#..#..#. -....#.###.....#..#...#.##.....# -##.##........#......#....#..##. -##.....##.#.....#.....##.....#. -.....#.##...#.#..#.#.#.....#... -.#.##..#...#.#..#.....#.#...... -.....##.......#..#...##..#..#.. -#.....#..#.####......#........# -.#..#..##.#..##............#..# -.##..#.#....##.##.....#......#. -.......##.........#..#......... -.#...#.......................#. -#......#.#....##.#.......#..#.. -..##..##......#.......#....#.#. -##......#......##...##......... -..#....####....#.#.....##.#.#.. -..........#..#.#.#.....#..#.#.. -##..##...........##.......#.... -##....#.#....#..#......###....# -...#.#.#..#.......##.......#... -#....#.......#.......#......... -...##......##....#...#......#.# -#......#####.#.........#.....#. -#..#.............#..#....#...#. -.......#.##..#..#..#..#....#### -......#.##..##..........###...# -.#.##....###..#........#....##. -#......#..#...###.#...#.....#.. -.#.#.......#....##.......#.#... -..#.##..#..##.....#.........#.# -#.#...#..#.##....#.......##.... -.#.....###....#.#..#...#.....#. -#...#..#.......#.#.....##...#.# -#.#####.........#....##.....#.. -#....#..##...#....#.##.......#. -.#.#.........##....##....#..... -...#..##.......#....#.#.#...... -#.###.##...###....#.....#.####. -.#...#.#.#..##.#..........#.... -#.#.....#.##.#..####.....##.#.. -...###.##..####.......#......## -.##..#.........#...#.#.....#.## -..#.....##....###.....#.#...##. -#....#....#..#....#.##......... -......###....#.#..#..#....##... -.#.#................#.......##. -...#.......#.........#.#....... -...#..........#...##.....###... -....#......#...#............... -.##...#....#.....#.##......#... -.#.....###...##..##...#.#...... -....##........#.....#...#....#. -#.........#.#...##...#.#..#.... -...#.#.....#.#........#.#....#. -.#........#.....#.#.#.#.#..#... -....#...#.....#.#....#........# -..###.#....#.#....##...##..#.## -.#....#.#.####.#.#.....#....... -.#...#...#.................##.# -..................##..#..#.#.#. -.#..#............##....###..... -.......#....#...........#...... -....#.#.#.....###.........#..## -...#.#....#.#.##.#.##.....##..# -.#.##.#...##...#.......#.....## -.#............#...#..##...#.#.# -#.##..#.##..#..##.###.#........ -..............##....#...#..#.#. -.#.#...#.#....#....###........# -.#....#.#....#......###........ -..#.......##......#.##.....#... -.....#......#..#...#.#.....#... \ No newline at end of file diff --git a/day4/__init__.py b/day4/__init__.py deleted file mode 100644 index 89f697c..0000000 --- a/day4/__init__.py +++ /dev/null @@ -1,107 +0,0 @@ -import re -from dataclasses import dataclass -from typing import Generator, List - -from aoc import BaseAssignment - -hgt_matcher = re.compile('(?P\d+)(?P(in|cm))') -valid_units = { - 'cm': {'min': 150, 'max': 193}, - 'in': {'min': 59, 'max': 76} -} - -hcl_matcher = re.compile('#[0-9a-f]{6}') - - -@dataclass -class Passport: - byr: int = None - iyr: int = None - eyr: int = None - hgt: str = None - hcl: str = None - ecl: str = None - pid: str = None - cid: str = None - - def __post_init__(self): - self.byr = self.byr and int(self.byr) - self.iyr = self.iyr and int(self.iyr) - self.eyr = self.eyr and int(self.eyr) - - -class Assignment(BaseAssignment): - def create_passport(self, items: List[List]) -> Passport: - return Passport(**dict(items)) - - def read_input(self, example=False) -> Generator: - passport = [] - - for item in super().read_input(example): - if item == '': - yield self.create_passport(passport) - passport = [] - continue - - for field in item.split(' '): - passport.append(field.split(':')) - - yield self.create_passport(passport) - - def valid_passport(self, passport: Passport): - raise NotImplementedError('Please implement valid_passport') - - def run(self, input: Generator): - valid_passports = 0 - for passport in input: - if self.valid_passport(passport): - valid_passports += 1 - return valid_passports - - -class AssignmentOne(Assignment): - def valid_passport(self, passport: Passport) -> bool: - return all([ - val - for key, val in vars(passport).items() - if key != 'cid' - ]) - - -class AssignmentTwo(Assignment): - def valid_byr(self, byr: int): - return byr and 1920 <= byr <= 2002 - - def valid_iyr(self, iyr: int): - return iyr and 2010 <= iyr <= 2020 - - def valid_eyr(self, eyr: int): - return eyr and 2020 <= eyr <= 2030 - - def valid_hgt(self, hgt: str): - try: - match = hgt_matcher.match(hgt).groupdict() - unit = valid_units[match['unit']] - return unit['min'] <= int(match['value']) <= unit['max'] - except (TypeError, AttributeError): - return False - - def valid_hcl(self, hcl: str): - return hcl and hcl_matcher.match(hcl) - - def valid_ecl(self, ecl: str): - return ecl and ecl in ( - 'amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth' - ) - - def valid_pid(self, pid: str): - return pid and len(pid) == 9 - - def valid_passport(self, passport: Passport): - return self.valid_byr(passport.byr) \ - and self.valid_iyr(passport.iyr) \ - and self.valid_eyr(passport.eyr) \ - and self.valid_hgt(passport.hgt) \ - and self.valid_hcl(passport.hcl) \ - and self.valid_ecl(passport.ecl) \ - and self.valid_pid(passport.pid) diff --git a/day4/example.txt b/day4/example.txt deleted file mode 100644 index 3b38741..0000000 --- a/day4/example.txt +++ /dev/null @@ -1,13 +0,0 @@ -ecl:gry pid:860033327 eyr:2020 hcl:#fffffd -byr:1937 iyr:2017 cid:147 hgt:183cm - -iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 -hcl:#cfa07d byr:1929 - -hcl:#ae17e1 iyr:2013 -eyr:2024 -ecl:brn pid:760753108 byr:1931 -hgt:179cm - -hcl:#cfa07d eyr:2025 pid:166559648 -iyr:2011 ecl:brn hgt:59in \ No newline at end of file diff --git a/day4/input.txt b/day4/input.txt deleted file mode 100644 index ba08163..0000000 --- a/day4/input.txt +++ /dev/null @@ -1,1023 +0,0 @@ -ecl:#eef340 eyr:2023 hcl:#c0946f pid:244684338 iyr:2020 cid:57 byr:1969 hgt:152cm - -pid:303807545 cid:213 ecl:gry hcl:#fffffd -eyr:2038 byr:1951 -hgt:171cm iyr:2011 - -hcl:#c0946f byr:1933 eyr:2025 pid:517067213 hgt:173cm -ecl:hzl -iyr:2018 - -pid:5253256652 byr:2009 hgt:152cm iyr:1989 eyr:1968 hcl:64cb63 ecl:hzl - -iyr:2013 -pid:862607211 eyr:2020 -hgt:174cm -byr:1990 -ecl:blu hcl:#888785 - -ecl:grn byr:1955 -pid:608098408 eyr:2027 iyr:2020 hcl:#b6652a cid:264 -hgt:181cm - -byr:1998 ecl:hzl eyr:2021 -hcl:#866857 hgt:189cm iyr:2030 -pid:013735467 - -pid:075417314 hcl:#b6652a byr:1957 -iyr:2011 -hgt:154cm -eyr:2025 -ecl:amb - -iyr:1993 hgt:74cm eyr:1960 -byr:2029 -hcl:293244 ecl:#3cb5e5 pid:4861232363 - -hgt:153cm hcl:#6b5442 pid:065240897 byr:1932 -cid:196 ecl:blu eyr:2028 iyr:2019 - -eyr:2024 ecl:amb -hcl:#866857 byr:1922 pid:496904942 hgt:164cm iyr:2020 - -pid:847705161 byr:1951 cid:124 iyr:1991 -eyr:2028 ecl:dne -hcl:6b2d28 hgt:172cm - -byr:2007 iyr:2029 ecl:hzl eyr:2026 hgt:168in -hcl:z -pid:63151612 - -iyr:2027 hgt:172in -cid:174 byr:2014 hcl:z eyr:1921 -ecl:grt pid:#cebdc2 - -ecl:amb hcl:#d09c0f -iyr:2015 hgt:156cm eyr:2026 byr:1962 -pid:086120872 - -cid:125 -pid:837849996 -byr:1958 ecl:brn hgt:166cm hcl:#ceb3a1 eyr:2028 iyr:2012 - -ecl:gry hgt:180cm -pid:939059935 eyr:2023 byr:1977 hcl:#b6652a - -hgt:190in byr:2029 eyr:1984 -ecl:gry hcl:z pid:055092916 iyr:2010 - -hgt:63in ecl:blu byr:1940 iyr:2012 eyr:2029 hcl:#7d3b0c -pid:163033394 - -eyr:2040 pid:181cm -iyr:1928 hgt:76cm hcl:d8aafb byr:1949 cid:275 ecl:xry - -hcl:#cfa07d ecl:oth byr:1948 eyr:2021 -pid:719690182 hgt:179cm iyr:2020 - -byr:1939 cid:266 -eyr:2026 iyr:2017 hcl:#f116d2 -ecl:hzl pid:522421825 -hgt:68in - -hcl:z hgt:61in -cid:115 pid:180cm iyr:2030 byr:2014 eyr:2032 ecl:hzl - -ecl:xry -eyr:2028 pid:191cm iyr:2015 hgt:150cm byr:2029 - -eyr:2027 -hcl:#a97842 pid:997937480 hgt:61in iyr:2019 -byr:1921 -ecl:grn - -hgt:163cm -pid:912318455 iyr:2016 byr:1988 ecl:brn hcl:#a97842 cid:221 eyr:2029 - -cid:333 hcl:#c0946f -hgt:163cm iyr:2018 eyr:2027 ecl:oth - -cid:70 hcl:#c0946f -pid:961507902 byr:1949 ecl:grn iyr:2017 eyr:2029 hgt:69in - -hgt:169cm ecl:amb -iyr:2013 pid:496169901 -byr:1943 eyr:2028 hcl:#ceb3a1 -cid:249 - -ecl:blu cid:343 -iyr:1998 hgt:154in hcl:#efcc98 byr:1972 - -pid:508213120 iyr:2012 eyr:2025 hcl:z hgt:70cm byr:1976 -ecl:brn - -iyr:1924 -eyr:2005 -hcl:z -hgt:167 pid:154cm -byr:2007 - -pid:761333244 hgt:180cm iyr:2017 hcl:#18171d eyr:2021 -byr:1983 -cid:67 ecl:oth - -eyr:1993 -byr:2003 -hcl:#602927 -ecl:grt -cid:84 hgt:178 -pid:1847086637 iyr:2026 - -hcl:#866857 hgt:162cm pid:483774485 iyr:2010 -byr:1946 eyr:2028 ecl:gry - -pid:726639691 eyr:2028 -hgt:171cm hcl:#ff65a6 -iyr:2011 byr:1989 - -hcl:z iyr:2026 ecl:xry -eyr:2037 byr:2005 pid:#f09a0f -hgt:68 cid:156 - -hgt:71in ecl:blu eyr:2026 hcl:#18171d -byr:1981 iyr:2017 -pid:698636544 - -eyr:2021 -byr:1957 ecl:brn pid:365378126 cid:93 iyr:2019 hcl:#18171d hgt:179cm - -byr:1996 iyr:2014 hgt:64cm -eyr:2034 -hcl:z - -pid:629486472 cid:140 -hgt:192cm eyr:2020 hcl:#b6652a iyr:1988 byr:2021 ecl:brn - -byr:1955 iyr:2015 eyr:2030 -ecl:gry hcl:z pid:6550198754 -hgt:158cm cid:305 - -ecl:gry hcl:#a97842 -hgt:176cm eyr:2022 pid:810146585 iyr:2020 - -byr:2027 hcl:#cfa07d -iyr:2011 ecl:#f07598 -cid:293 -hgt:150cm pid:#fa948d eyr:2029 - -eyr:2028 iyr:2013 hgt:69in ecl:gry pid:317170371 -cid:147 hcl:#bfe1f1 - -byr:1976 -pid:059341891 hgt:174cm -ecl:oth -eyr:2029 iyr:2017 hcl:#733820 - -iyr:2018 hcl:#ceb3a1 hgt:188cm cid:308 -pid:792826885 byr:1948 ecl:blu eyr:2028 - -iyr:2017 cid:94 hcl:#95c7dc -pid:231757803 eyr:2022 -byr:1992 hgt:153cm ecl:amb - -eyr:2027 -iyr:2011 hgt:186cm -ecl:brn pid:996347346 hcl:#866857 -byr:1960 - -eyr:2025 byr:2001 -ecl:blu pid:755715478 iyr:2019 hgt:61in - -ecl:gry -eyr:2038 -hgt:81 hcl:z iyr:2028 -cid:214 byr:1965 - -pid:412744447 byr:1979 hcl:#cfa07d ecl:blu -eyr:2029 cid:157 -hgt:180in iyr:1948 - -hgt:170cm -pid:623557081 byr:1924 eyr:2024 hcl:98d623 iyr:2012 ecl:amb - -cid:311 ecl:grn -iyr:2011 byr:1982 -eyr:2002 hcl:#ef318a -pid:0548169957 -hgt:87 - -eyr:2030 hcl:#733820 iyr:2016 pid:558470391 -byr:1936 ecl:oth hgt:185cm - -iyr:2019 -ecl:amb byr:1949 -pid:376468392 -hgt:178cm - -pid:019195245 -ecl:grn hgt:171cm -byr:1978 iyr:2011 eyr:2022 hcl:#733820 -cid:134 - -hcl:#623a2f hgt:192cm eyr:2026 byr:1977 -ecl:grn cid:308 - -ecl:hzl pid:715816358 hgt:69in iyr:2014 hcl:#623a2f -byr:1996 -eyr:2027 - -iyr:1947 -ecl:#39a697 -hgt:183cm byr:2029 -eyr:2022 pid:7951883913 -hcl:z - -ecl:gry byr:1950 -hcl:#18171d hgt:168cm iyr:2020 pid:677187333 eyr:2027 - -byr:1969 ecl:blu hcl:#18171d iyr:2011 -hgt:162cm -pid:701349891 - -cid:269 byr:1966 -iyr:2011 -pid:905940527 eyr:2023 hgt:190cm -ecl:brn hcl:#ceb3a1 - -eyr:2027 pid:454627395 ecl:brn -hcl:#ceb3a1 cid:302 hgt:184cm -byr:1959 -iyr:2015 - -iyr:2011 -eyr:2028 -hgt:166cm -hcl:#733820 byr:1938 ecl:blu pid:857984986 - -hcl:#c0946f ecl:brn pid:226877822 -hgt:182cm byr:1998 -cid:160 - -hgt:186in pid:26499164 byr:2017 -hcl:z -iyr:1998 eyr:2026 -cid:331 ecl:#236556 - -pid:328866543 -hgt:165cm eyr:2039 iyr:1987 ecl:amb byr:2018 hcl:z - -iyr:2016 eyr:2036 hcl:#888785 byr:1976 pid:160402352 hgt:76cm ecl:blu - -ecl:blu -hcl:#fffffd eyr:2025 hgt:66in pid:979788527 -byr:1957 iyr:2013 - -ecl:grn pid:279357265 iyr:2019 eyr:2021 byr:1953 -hgt:177cm hcl:#c0946f - -ecl:oth hcl:z eyr:2025 byr:1949 hgt:189cm iyr:2020 pid:901383503 - -byr:2019 hcl:#733820 -pid:31022828 eyr:1929 -hgt:75cm iyr:2012 ecl:grn - -pid:080462937 -ecl:blu hcl:#866857 -cid:102 -iyr:2013 eyr:2025 byr:1975 hgt:64in - -iyr:2016 -eyr:2028 -cid:125 -byr:1979 hcl:#866857 -ecl:brn hgt:173cm pid:814947616 - -hcl:z byr:2020 pid:#c3b54b hgt:174in eyr:2038 -iyr:2016 -ecl:gmt - -cid:132 -iyr:1958 -pid:61543452 hcl:z -ecl:zzz eyr:2039 byr:2006 - -cid:55 eyr:2022 byr:1954 iyr:2015 -hgt:188cm hcl:#a97842 pid:49143631 ecl:amb - -hgt:152cm -byr:1982 -iyr:2013 ecl:blu -hcl:#341e13 -eyr:2026 pid:440841976 - -iyr:2019 ecl:blu pid:553456616 hcl:#733820 hgt:160cm byr:1932 eyr:2030 - -byr:1980 hgt:169cm hcl:#7d3b0c cid:312 iyr:2010 -eyr:2026 pid:028550304 ecl:grn - -ecl:amb eyr:2021 iyr:2014 hgt:71in pid:986053283 byr:1981 - -ecl:oth -eyr:2023 hcl:#888785 -byr:1949 -iyr:2016 pid:699325656 - -hgt:63cm cid:297 eyr:2020 pid:990390922 -hcl:#602927 ecl:lzr -iyr:2012 byr:2016 - -hcl:9ea2fa eyr:2023 pid:088680493 -byr:1998 iyr:2017 ecl:utc hgt:170cm cid:175 - -cid:316 iyr:2016 eyr:2026 hcl:#79ff1d hgt:65in -byr:1997 pid:215466710 ecl:oth - -cid:213 byr:1983 hcl:#888785 iyr:2016 pid:767747981 eyr:2025 -ecl:hzl hgt:168cm - -eyr:2030 byr:1972 -cid:282 -ecl:gry hgt:178cm -hcl:#a97842 -iyr:2018 - -hcl:#6b5442 ecl:amb -eyr:2028 cid:104 hgt:159cm pid:446429120 iyr:2012 -byr:1938 - -byr:1940 hgt:178cm ecl:oth -hcl:#ceb3a1 -pid:845683663 iyr:2015 eyr:2024 - -byr:1940 pid:496262233 -hgt:184cm hcl:#b6652a -ecl:grn cid:152 iyr:2012 eyr:2029 - -hgt:185cm pid:455744229 byr:1954 eyr:2022 ecl:gry hcl:#6b5442 iyr:2012 - -hgt:182cm byr:1966 eyr:2028 ecl:#a5b7fc -iyr:2029 - -pid:343591896 -cid:58 -ecl:hzl -eyr:2022 hgt:180in byr:2021 -hcl:#6b5442 - -ecl:utc hcl:#b6652a -pid:635147657 byr:2020 -eyr:2022 hgt:157cm iyr:2018 - -ecl:grt cid:312 iyr:1959 pid:154262836 -hgt:171cm -hcl:#fffffd -eyr:2024 -byr:1982 - -hcl:#7a12b4 pid:223424149 ecl:hzl hgt:175cm -byr:1930 iyr:2010 eyr:2028 - -hcl:#c0946f pid:633476454 eyr:2026 iyr:2011 -byr:1934 -hgt:186cm -cid:289 ecl:gry - -hcl:#fffffd pid:376300524 hgt:155cm byr:1964 iyr:2017 eyr:2021 ecl:grn - -hcl:a5d4dc byr:2006 cid:165 ecl:#db800f iyr:2029 pid:0199789970 eyr:1961 hgt:61cm - -eyr:2027 hgt:170cm iyr:2010 -hcl:#c0946f -ecl:grn pid:415726530 -byr:1985 - -cid:197 byr:1957 hgt:192in hcl:#a97842 ecl:hzl eyr:2029 pid:958973455 iyr:2011 - -iyr:2015 pid:933689314 hgt:162cm ecl:amb -cid:122 eyr:2021 -hcl:#6b5442 byr:1973 - -eyr:2026 hgt:172cm -iyr:2012 -ecl:brn hcl:#733820 pid:004474632 -byr:2000 - -hgt:191cm eyr:2030 byr:1999 pid:9155071477 iyr:2026 hcl:#602927 cid:315 -ecl:grn - -iyr:2010 pid:182884251 hcl:#18171d hgt:154cm -eyr:2020 -byr:1926 ecl:oth - -iyr:2019 eyr:1920 pid:132839546 -cid:283 hgt:188in hcl:#efcc98 byr:2027 - -iyr:2011 hgt:177cm -cid:117 byr:1976 -ecl:gry -hcl:#623a2f eyr:2030 pid:134592046 - -byr:1968 hgt:146 -iyr:2013 hcl:eefdc4 eyr:2028 -ecl:xry pid:722120008 - -iyr:2016 byr:1941 hgt:67cm cid:51 hcl:#b6652a ecl:hzl eyr:2034 pid:994005715 - -hcl:#cfa07d ecl:oth -hgt:182cm eyr:2021 pid:612583941 -byr:1983 -iyr:2019 - -byr:1922 -hcl:#602927 hgt:161cm ecl:gry eyr:2020 pid:190170808 iyr:2013 - -hgt:63cm cid:136 -iyr:1999 -pid:8235748647 hcl:z -byr:2022 eyr:1933 -ecl:#304383 - -cid:273 ecl:blu hcl:z -iyr:2011 byr:2007 -eyr:2020 -pid:942473857 hgt:178in - -ecl:grt byr:2029 hgt:187in eyr:2030 cid:160 -hcl:#efcc98 pid:#39f22b -iyr:1966 - -byr:1978 ecl:oth iyr:2011 hgt:164cm eyr:2027 hcl:#cfa07d - -hgt:75cm hcl:#1e8137 byr:1986 ecl:blu eyr:2022 pid:796688423 -iyr:2012 - -eyr:2026 -ecl:#3013af hcl:z pid:#e8597f hgt:123 iyr:2025 byr:1942 - -hcl:z hgt:177in -iyr:1993 pid:#4c9348 byr:2008 eyr:1989 - -pid:123524366 byr:1935 -hgt:156cm hcl:#7d3b0c -iyr:2020 ecl:brn eyr:2020 - -hcl:z eyr:2038 pid:7663741757 ecl:gmt hgt:174 -byr:2008 iyr:1939 -cid:225 - -hcl:#888785 hgt:172cm -ecl:oth pid:500711541 eyr:2027 -byr:1931 iyr:2012 - -pid:575447108 ecl:amb byr:1943 -hcl:#888785 hgt:173cm eyr:2024 - -eyr:2021 iyr:2010 pid:178773264 hgt:157cm byr:1965 hcl:#bb7bcf ecl:amb - -iyr:2023 ecl:#35bd84 byr:2020 -hgt:72in -eyr:2037 -hcl:#6b5442 -pid:421311669 - -byr:1921 iyr:2011 -pid:146088688 -eyr:2023 hcl:#15ed24 hgt:183cm -ecl:brn - -hcl:#b6652a cid:243 -byr:1993 eyr:2024 -iyr:2014 hgt:172cm -pid:771275594 - -eyr:2024 -hcl:#cfa07d pid:858807920 cid:293 hgt:157cm ecl:hzl iyr:2013 byr:1984 - -ecl:blu hgt:193cm cid:73 hcl:#18171d eyr:2026 -iyr:2016 pid:124151812 byr:1945 - -ecl:amb iyr:2018 -pid:214555737 hgt:157cm -eyr:2028 -byr:1925 hcl:#866857 - -pid:5633250409 -hcl:4ef7d8 -byr:2004 iyr:1958 -hgt:96 -eyr:2038 ecl:xry cid:274 - -byr:1972 pid:401239851 hgt:184in hcl:z iyr:2017 -eyr:2030 ecl:#cb289a cid:140 - -hgt:175cm -byr:1926 hcl:#cfa07d eyr:2029 ecl:gry pid:325039730 iyr:2017 - -cid:101 hgt:166cm byr:1986 ecl:amb -hcl:#7d3b0c iyr:2013 -pid:413769688 eyr:2024 - -hgt:159cm cid:311 -byr:1993 eyr:2028 pid:188cm ecl:oth hcl:#602927 iyr:2013 - -pid:565831038 -ecl:amb -hgt:155cm hcl:#fffffd cid:335 iyr:2016 -eyr:2029 byr:1997 - -hgt:122 -byr:2022 -eyr:2028 ecl:blu iyr:2017 pid:269710626 hcl:#b6652a - -cid:196 -byr:1953 hcl:#6b5442 iyr:2010 -pid:216121215 hgt:188cm ecl:blu - -iyr:2011 hcl:98166c hgt:62cm -byr:2028 -eyr:2024 -pid:792478385 ecl:grn - -hcl:#efcc98 iyr:2012 pid:020039675 eyr:2021 byr:1974 hgt:156cm -ecl:hzl - -cid:123 hcl:#7d3b0c -byr:2026 eyr:2004 iyr:2012 ecl:oth pid:349203133 hgt:160cm - -pid:085461475 -byr:1962 iyr:2020 hcl:#623a2f -eyr:2024 -cid:80 ecl:brn -hgt:154cm - -ecl:oth hgt:156cm iyr:2016 -hcl:#6b5442 -byr:1973 -eyr:2021 pid:539898580 - -iyr:2026 hgt:191cm -hcl:z -byr:1930 pid:#abc2f0 ecl:blu cid:242 eyr:2024 - -cid:167 -hgt:179cm -iyr:2017 eyr:2021 pid:756797571 byr:1949 ecl:brn hcl:#a97842 - -byr:1975 eyr:2030 -ecl:oth hgt:169in pid:4031206183 hcl:#733820 iyr:2017 cid:244 - -ecl:#54cfeb hgt:152cm -iyr:2026 hcl:36b4b9 -byr:2030 -pid:#fa1cb9 eyr:1964 - -byr:1974 cid:99 hcl:9e3296 -eyr:2032 -pid:686747414 -iyr:1995 -ecl:amb - -iyr:2030 ecl:oth hcl:z byr:1979 -pid:114661006 hgt:191cm eyr:1941 - -hcl:#341e13 iyr:2014 byr:1953 -pid:188326193 ecl:gry hgt:189cm cid:283 -eyr:2030 - -byr:1975 -pid:092061576 hgt:73in eyr:2023 -ecl:brn cid:227 hcl:#5e9d91 -iyr:2011 - -hcl:#7d3b0c hgt:167cm cid:141 -eyr:1957 byr:2012 ecl:gmt iyr:2019 pid:#1b7c8a - -hgt:168cm hcl:#c0946f pid:599500784 byr:1930 eyr:2023 ecl:hzl cid:113 -iyr:2013 - -eyr:2030 hcl:#b4cb4f -hgt:68in -ecl:brn byr:1923 pid:699162086 - -iyr:2013 -ecl:dne hcl:z eyr:1971 -pid:#580add byr:2020 -hgt:190cm - -hcl:#ceb3a1 -byr:1976 eyr:2020 -cid:162 iyr:2016 -hgt:168cm -ecl:hzl - -pid:050478613 hgt:59cm -iyr:2017 -ecl:grn byr:2030 hcl:#cfa07d eyr:2025 - -pid:352943968 eyr:2025 byr:1980 iyr:2014 ecl:gry hcl:#c0946f -hgt:193cm - -pid:328621931 cid:310 hgt:170cm -hcl:#733820 byr:1955 -iyr:2016 -eyr:2028 ecl:hzl - -hcl:#866857 -pid:095858739 byr:1956 -iyr:2018 hgt:193cm -ecl:hzl -eyr:2029 - -pid:70973661 eyr:2039 ecl:gry -iyr:2016 -cid:291 -hcl:#623a2f hgt:97 - -hcl:4d51a8 -eyr:1978 -ecl:gmt -byr:2029 iyr:2022 -pid:34507041 hgt:61cm - -byr:1989 ecl:brn pid:769582914 -eyr:2026 cid:218 -iyr:2020 hcl:#866857 hgt:184cm - -ecl:brn -iyr:1998 cid:227 -hgt:162in -byr:2026 -hcl:#602927 eyr:2027 pid:236998728 - -ecl:gry byr:1984 hgt:157 cid:295 -eyr:2020 -iyr:2018 hcl:#733820 -pid:037871534 - -hgt:166cm hcl:#c0946f pid:412146401 -iyr:2011 -eyr:2022 -byr:1938 -ecl:brn - -ecl:brn cid:95 byr:1981 eyr:2030 hcl:#efcc98 pid:777041035 hgt:152cm iyr:2011 - -eyr:2024 hgt:89 pid:3761913749 iyr:1939 byr:1967 hcl:a222f6 cid:165 ecl:#7fe574 - -cid:339 hgt:156cm -ecl:brn iyr:2013 byr:1951 hcl:#efcc98 eyr:2026 -pid:863566946 - -ecl:brn hcl:#6b5442 eyr:2023 -pid:787129723 byr:1949 iyr:2015 - -pid:#7f615a -cid:202 hcl:#6b5442 eyr:2028 -ecl:#a5419c -hgt:75cm -iyr:2011 -byr:2001 - -pid:864001133 -cid:236 -byr:1943 hcl:#733820 ecl:dne eyr:2025 hgt:171cm iyr:1989 - -pid:193073684 ecl:grn byr:1962 iyr:2014 -hcl:#cfa07d hgt:189cm -cid:321 eyr:2029 - -byr:1959 -hcl:#b6652a -eyr:2026 -hgt:159cm pid:815014918 iyr:2011 ecl:amb - -iyr:2017 hgt:182cm -hcl:#a97842 eyr:2023 ecl:grn pid:656177536 -byr:1973 - -eyr:1923 ecl:grn -cid:138 iyr:2020 -hgt:164cm byr:1958 hcl:#c0946f pid:783366277 - -iyr:1932 hgt:172 ecl:blu -hcl:#733820 byr:1962 pid:554221464 - -cid:169 pid:922622614 -byr:1942 hcl:#ceb3a1 hgt:169cm eyr:2024 -ecl:gry iyr:2017 - -cid:219 ecl:grn -hgt:156cm byr:1998 eyr:2021 -iyr:2017 hcl:#ceb3a1 pid:450186263 - -ecl:amb hgt:179cm pid:768428582 iyr:2010 eyr:2023 byr:1952 hcl:#fffffd - -eyr:2024 -hgt:193cm -iyr:2017 pid:469033795 byr:1979 hcl:#18171d cid:67 ecl:amb - -iyr:2016 byr:1937 pid:798267514 hgt:155cm hcl:#866857 eyr:2026 -ecl:oth - -hgt:172cm hcl:#866857 iyr:2018 pid:662186551 -byr:1996 -eyr:2025 ecl:amb - -pid:2854521962 -iyr:2021 -ecl:zzz -hcl:12f1ba eyr:2037 hgt:159cm -byr:1937 - -ecl:oth pid:488050418 byr:1927 hcl:#a97842 hgt:153cm iyr:2013 eyr:2024 - -pid:119536312 ecl:#2036ad -hcl:543178 iyr:2020 -byr:2013 -hgt:177cm -eyr:2022 - -pid:788908662 hcl:#602927 eyr:2029 -ecl:oth byr:1930 -iyr:2020 -hgt:179cm - -byr:1972 -pid:053386972 iyr:2014 ecl:grn hgt:65in hcl:#cfa07d - -pid:9828921035 ecl:blu -hcl:z hgt:152in -eyr:1949 byr:2010 - -cid:157 pid:097910554 byr:1999 -hgt:159cm hcl:#6b5442 ecl:blu eyr:2024 -iyr:2010 - -hcl:#a97842 -eyr:2040 ecl:#f8ad77 -hgt:173cm -byr:2019 iyr:2010 -pid:#d16a6e - -ecl:dne hgt:191cm iyr:2020 hcl:#b6652a -eyr:2021 pid:571971509 byr:1983 - -hcl:#18171d iyr:2016 pid:159074622 -eyr:2027 hgt:163cm byr:1954 -cid:257 - -pid:243560302 cid:58 -hcl:53a4cf byr:2012 -ecl:#fdbfb8 eyr:1920 hgt:179 iyr:2026 - -pid:040606106 eyr:2030 hgt:188cm -byr:1969 -iyr:2012 hcl:#ceb3a1 ecl:amb - -eyr:2022 -hgt:175cm hcl:#b6652a byr:1967 pid:269969031 -iyr:2018 - -hcl:#18171d cid:278 byr:1931 -pid:134809791 -eyr:2035 ecl:#44e6cd iyr:1993 - -hgt:177in -ecl:utc cid:289 -iyr:1923 -hcl:13a67a pid:3045345984 byr:2030 eyr:1944 - -pid:839901650 eyr:2030 -ecl:grn -byr:2015 iyr:2017 hgt:168 hcl:131f4e - -iyr:2015 pid:529736732 ecl:brn hgt:176cm -eyr:2026 byr:1952 hcl:#6b5442 - -hcl:#c0946f -cid:323 pid:303966428 iyr:2019 -eyr:2027 hgt:170cm -byr:2001 -ecl:brn - -pid:193678728 hgt:72in eyr:2027 iyr:2015 byr:1951 ecl:gry hcl:#18171d - -eyr:2026 cid:283 -iyr:1938 pid:687430885 -hgt:186cm -byr:1949 ecl:#521638 hcl:d13b2f - -eyr:2024 hcl:#ceb3a1 iyr:2013 ecl:brn -hgt:168cm pid:792088241 - -hcl:#888785 ecl:amb -byr:2009 iyr:2015 -hgt:151cm -eyr:2020 pid:223927808 - -byr:1926 -pid:717704850 -hcl:#623a2f eyr:2022 hgt:64in iyr:2018 ecl:gry - -eyr:2023 byr:1954 -hgt:169cm -ecl:hzl -iyr:2010 pid:116868997 hcl:#18171d - -ecl:hzl byr:1965 hcl:#a97842 iyr:2011 pid:506354451 hgt:172cm eyr:2029 - -eyr:2022 pid:994565705 -iyr:2013 ecl:brn hcl:#623a2f -byr:1979 - -iyr:2011 -byr:1931 hgt:183cm hcl:#284f26 cid:306 -ecl:amb eyr:2021 -pid:977533079 - -eyr:2027 -iyr:2011 ecl:gry -byr:1993 -pid:272334781 hgt:161cm hcl:#9a35b6 - -eyr:2026 -hcl:#602927 ecl:blu -pid:212300161 byr:1946 -cid:193 iyr:2020 hgt:157cm - -pid:538594567 byr:1976 eyr:2027 hcl:#efcc98 iyr:2011 hgt:154cm ecl:oth - -byr:1949 -hcl:z ecl:#ce67aa -eyr:1942 pid:7978941589 iyr:2025 hgt:161in - -hcl:#c0946f -cid:55 -byr:1963 ecl:blu hgt:161cm -pid:547120453 iyr:2015 eyr:2021 - -hgt:173cm eyr:2022 -iyr:2016 byr:2001 -ecl:hzl pid:239803460 - -hcl:#b6652a ecl:oth eyr:2021 hgt:167cm pid:401266644 iyr:1969 byr:1974 - -eyr:2030 pid:581963885 -hcl:#64cb23 -ecl:blu -byr:1928 hgt:181cm iyr:2018 - -pid:186338247 -ecl:hzl hgt:193cm hcl:#ceb3a1 -eyr:2022 iyr:2010 - -iyr:2015 ecl:gry hgt:159cm eyr:2027 hcl:#ceb3a1 -byr:1925 pid:715902111 cid:149 - -iyr:2018 hcl:#623a2f eyr:2020 hgt:162cm ecl:grn cid:135 -byr:1922 -pid:373216777 - -eyr:2020 pid:749899012 hcl:#888785 ecl:brn -iyr:2010 cid:225 hgt:172cm -byr:1972 - -iyr:2020 hgt:178cm ecl:grn hcl:#18171d pid:613792489 cid:240 -eyr:2028 -byr:1972 - -iyr:2015 byr:1938 eyr:2026 -cid:113 ecl:grn -pid:846231640 hgt:161cm -hcl:#b6652a - -ecl:gry -hcl:#ceb3a1 -byr:1956 cid:338 pid:936012518 -hgt:62in -eyr:2029 iyr:2016 - -pid:730866353 ecl:brn byr:1986 -iyr:2014 -hgt:190cm -eyr:2021 hcl:#a97842 cid:126 - -eyr:2021 -cid:180 pid:958310635 ecl:brn iyr:2015 hgt:189cm hcl:#efcc98 - -hgt:188cm ecl:hzl pid:179001863 iyr:2016 eyr:2029 hcl:#341e13 byr:1932 - -cid:77 eyr:2027 hcl:#623a2f iyr:2016 ecl:brn hgt:170cm -byr:1947 - -hgt:66in pid:617518313 iyr:2013 byr:1977 hcl:#b6652a ecl:brn eyr:2025 - -pid:787861420 -iyr:2014 hcl:#623a2f hgt:61in -ecl:oth cid:78 -eyr:2022 byr:1975 - -ecl:hzl -iyr:2017 eyr:2028 hcl:#602927 -byr:1958 pid:985208714 -hgt:160cm - -byr:2002 -iyr:2013 -hcl:#341e13 pid:188110633 ecl:gry hgt:169cm -eyr:2025 - -byr:1981 -eyr:2028 -hcl:#341e13 ecl:amb hgt:160cm cid:121 -iyr:2015 pid:963848397 - -iyr:2013 hcl:#866857 pid:#db8648 eyr:2021 ecl:gry -byr:1975 -hgt:153cm cid:114 - -hgt:109 -cid:287 hcl:#6b5442 -iyr:2028 byr:1926 eyr:2036 pid:2378208387 -ecl:#245a62 - -pid:857722366 -byr:1975 eyr:2027 -ecl:grn iyr:2019 hcl:#0afad1 -hgt:66in - -byr:1935 hcl:#cfa07d hgt:173cm ecl:brn eyr:2021 iyr:2019 - -cid:66 eyr:2024 hcl:#efcc98 byr:2002 iyr:2010 -hgt:176cm pid:697153153 ecl:amb - -iyr:2019 -hcl:#cfa07d ecl:blu -pid:695914972 -eyr:2024 -hgt:158cm -byr:1943 - -ecl:xry hgt:62in -pid:14733148 cid:148 -iyr:2016 byr:1925 hcl:#6b5442 -eyr:2028 - -iyr:2025 -cid:53 hgt:132 ecl:gmt hcl:159b19 -pid:156cm -byr:2025 eyr:2001 - -hcl:#623a2f ecl:oth byr:1974 iyr:2018 hgt:161cm eyr:2029 pid:6826285172 - -ecl:gry -byr:1956 hcl:#7d3b0c hgt:170cm iyr:2020 - -eyr:2020 -pid:#946a88 hgt:186cm hcl:#733820 byr:1946 ecl:#016645 iyr:2015 - -hgt:181cm hcl:#888785 iyr:2013 pid:634152817 -byr:1982 cid:245 ecl:grn eyr:2021 - -ecl:brn -pid:737531770 iyr:2010 -eyr:2020 -byr:1929 hgt:189cm hcl:#c0946f - -cid:158 iyr:2019 hcl:#341e13 eyr:2027 ecl:amb -byr:1986 pid:834976623 - -pid:976934668 cid:61 eyr:2020 iyr:2020 -hgt:76in byr:1927 ecl:amb -hcl:#e05ee3 - -pid:526042518 iyr:2019 eyr:2027 hcl:#623a2f byr:1976 ecl:amb - -pid:279367290 hcl:#a97842 hgt:158cm -eyr:2027 -byr:1959 -iyr:2020 - -ecl:xry byr:2028 -pid:357216861 hcl:#a97842 eyr:2024 hgt:66cm -iyr:2012 - -hgt:188in -ecl:lzr cid:64 eyr:1958 byr:2014 hcl:z pid:285207570 iyr:2026 - -eyr:1973 iyr:2017 ecl:oth cid:282 pid:695814158 -hcl:z - -iyr:2010 pid:661168409 -hcl:#53c696 -hgt:186cm ecl:amb -byr:1960 -eyr:2029 - -eyr:1982 hgt:169cm -iyr:2002 byr:2025 hcl:327f93 pid:831648100 - -byr:1967 ecl:oth -eyr:2021 -hcl:#602927 iyr:2014 -pid:274974402 hgt:183cm \ No newline at end of file diff --git a/day5/__init__.py b/day5/__init__.py deleted file mode 100644 index 405b589..0000000 --- a/day5/__init__.py +++ /dev/null @@ -1,40 +0,0 @@ -from math import ceil, floor -from typing import Iterator, Any - -from aoc import BaseAssignment - - -class Assignment(BaseAssignment): - def parse_item(self, item: str) -> Any: - row = self.calculate_postition(input=item[:7], min=0, max=127) - col = self.calculate_postition(input=item[7:], min=0, max=7) - return (row * 8) + col - - def calculate_postition(self, input: str, min: int, max: int) -> int: - input_length = len(input) - action = input[0] - half = (max - min) / 2 - if action in ['F', 'L']: - return min \ - if input_length == 1 \ - else self.calculate_postition(input[1:], min=min, - max=floor(max - half)) - elif action in ['B', 'R']: - return max \ - if input_length == 1 \ - else self.calculate_postition(input[1:], min=ceil(min + half), - max=max) - - -class AssignmentOne(Assignment): - def run(self, input: Iterator) -> Any: - return max(*input) - - -class AssignmentTwo(Assignment): - def run(self, input: Iterator) -> Any: - seat_ids = sorted(input) - for index, id in enumerate(seat_ids): - next_id = id + 1 - if id + 1 != seat_ids[index + 1]: - return next_id diff --git a/day5/example.txt b/day5/example.txt deleted file mode 100644 index f8b3bec..0000000 --- a/day5/example.txt +++ /dev/null @@ -1,3 +0,0 @@ -BFFFBBFRRR -FFFBBBFRRR -BBFFBBFRLL \ No newline at end of file diff --git a/day5/input.txt b/day5/input.txt deleted file mode 100644 index 0436d37..0000000 --- a/day5/input.txt +++ /dev/null @@ -1,815 +0,0 @@ -BFBBFFFLRR -FFBFBBBLLL -FBFBFBFLLL -BBFFFBFLLR -FBFFBBFLRR -BBFBFFFLLL -FFBBFFFRLL -BFBFBBBRRR -FBFFBFFRLR -FBBBBBBLLL -BBFBBBBLLL -BFFFBBBLLL -FFBFFFBRLR -BFFFFBFLLR -FFBBBFBLRL -BFFBFBBRRL -FBFBFBBRRR -FBFFFBBRRL -FBFBBBFRLR -BFFFFFBRRL -BBFFFBBLRR -FFBBBBBRRR -FFBBBBBLLL -BBFBFFBRLR -FBFFBFBRRR -FFFBBBBRLL -BBFBFFBLLR -BFBFFFBRLL -FFBFBFFLLR -FBFBBFBRLL -FBFFBBBLLL -FBFBBBFRLL -FBFBFBBRLL -BFFFFBBRLL -FFFBBFFLLR -FFBFFFBLRL -FFBFBBFLLL -BFBBFBBLLL -BFFFFBBRRL -FFBFFFBRLL -BFBBFFFRRR -FFBBFFFLRL -FFBFBFBRLL -BFBFBBBLLL -BBFBBFFLRL -BFFFFBBLLR -FFBFBBFRLR -FFBBFBBLLR -FBFFBBFLLL -BFBFBFBLLL -BFFBFBBLLR -FBBBBFFRLR -FBBBFBFRLL -FBBBBFFLRR -BFFBBBBLRL -FBFFBBFLRL -BBFFFBBLLR -FBFBFFFRLL -FBBBFBBRRL -FFBBBFBLLR -BFFBBBFLLR -BFFFFBFRLR -BBFFFFBLLR -FBBFFFBRRL -BFFFBFBRRR -FBFBFFFRRR -BBBFFFBLRL -BFBFBFBLLR -BFBBBBBLRL -FFBBFBBRRR -FBBFFFBRRR -FFBFBFBRRR -BBFFFFBRRL -BFBBBBBLLL -BFBFBFFRLL -BFBFBFBRRL -BFBFFFFLRL -FFBBBBBLLR -FBBFBFFRLL -FBBFFBBLLL -BFFFFFFLRL -FFFBBFFLRL -FFFBBFFRLL -FFBFFFBLLL -FBBFBFBLRL -BBFFFFBRLR -FBBFBBBRLR -FFBBFFBLLL -FFBFFFBRRR -FBFBFBFRRL -FFBBBFBRRL -BBFFBFFLRR -FBFFFFFRRR -FBBFFFBRLL -FFBBFBBRRL -FFBBFFFLLR -FBFBBFBLLL -BFFFBBFLRR -BFBFBFFLRR -BFFFFBFRRR -BBFBBFFRLL -BFBBBBBLRR -BFBBBBFLLL -BBFBBBBLLR -FFBBBFFRRR -BBFFBFBLRR -FFFBBBFRLR -BFBFFFBLRR -BFFFBBFLLL -FBBBBFFLRL -FBBFFFFRRL -FFBFFBBRRL -BFBBBBBRLR -FBBFFBBLRL -BBFBFBBRLL -FBFFBFBRLR -FBBBBFFLLR -FBBFBBFRRL -FBFBBBBRLL -BFFBFBFRLL -FFBFBBFRRL -FBFFFBFRRL -FBFFBBFRRL -FFBFBBFRLL -BBFBBBBLRL -BFFFBBBRRL -FFBFFFBLRR -FFBBFBBLRL -BFBFBBFRRR -BFFFFFFRRL -FBBBBBBRRR -FBFBBFBLRR -FBFFFFFRLR -BFFBBBFLRR -BFBBFFBLLL -FBFFFFBLRL -FFBBBBBLRL -FFFBBBFRLL -FFBBFBFRLL -FBFBBBFLRL -FFBBBFBRLL -BBFBBFBLRL -FFBFBFFRLR -BBFBBBBLRR -FFFBBBBRRR -FBBBFBFLLL -BFFFBFBRLR -FBBFBBFRRR -FBFFBBBRLR -FBFBBFBRLR -FBBBFBBLLL -BBFBFBFLLL -FFBBFBBRLL -FBBFBBBLRR -BFFFBBFRRL -BFBFFBFLRR -BBFBBBFLLL -BFFFBBFRLR -BFBBFBFLRL -FBBBBBFRRR -FBFFFBBRRR -BBFFFFBLRR -FBFBFBFLRL -BBFFBBBRLL -FFBBBFFLRR -FFBBBBFLRR -FBFBFBBRRL -BBFBFFBRRL -FBBBFFBLLL -BFBFFFFLLR -FFBFFBFLRR -BFBBFFFLLR -BBFBBFFLRR -BFFFFFFLLR -BBFFBFBRRL -FBBBFBBRLL -BFBBBFBLLR -BFBBFFBRLR -FBFBBBFRRR -BFBBBBBRRR -FFBBFBBRLR -FBBFBBFRLR -BFFBBFBRLR -FBFFFFFLLL -FBBFFBFRLL -FBBBBFFRRL -FBFBBBBLRL -FFFBBFBLRR -FFBFFBBLRR -FFBBBBBLRR -FBBFFBFRRR -FBBBFBFRRR -FBBFBBBLLR -BFFFFBFLLL -FFBFFFFRRL -BFBFFBBLRL -FFBFFFFRLR -FBFBFBFRLL -BBFBFBBRRL -FFBFBBFLLR -BFBBFFBLLR -FBFFBFFLLL -BFFBBFBRRR -FBFFFBBRLL -BBFBBFFRRR -FBFBBFBLRL -FBFBFBBLRL -FBFFBBFRRR -FBFFBBBLRL -FFBFBBBRRR -BFBBBFFLLR -FFBBFFFRRL -FFBBBBBRRL -FFBFFBBRLL -FFBBFBFLLR -FBBBFBFLLR -BFFFBFFRLL -FFBBBFBLRR -BFFBBBFRRR -BFBBFBBRRR -BBFBFFFRRR -FBBFFFBLRL -BBFBBBFLLR -BBFFFBBLRL -FBBFFFFLRR -BFFBFFFRRL -FFBFBBBRLL -BBFBBFBRLL -FBFFFBBLRR -BFBFBBFRLL -FBFBBBBRRL -FFFBBBFLLR -FBFFFFBRRR -FBBBBBBRLR -BBFBFBFRRR -BFBFFBFRLL -BFBBBFFLLL -BFBBBFBLLL -FBFFBFBLRL -FFBFFFFLLR -FBBBBBFLLL -BBFFBFBLLR -BBFBBBFLRR -BFFFFFFRRR -BFFBFFBRRR -BFFBBFFLLL -FFFBBBFLLL -BFFBBFFRRR -BBFBBBBRRL -FBFBBFFLRR -BFBFFBBLLR -BFBFFBBRRL -BFBBFFFLLL -BFBFFBBRRR -BFBBFBFRRL -FBFBFFFLLR -BFBFBFFLLR -BFBBBBFRRL -BFFFBFFLRR -FBBFBBBRRL -BBFFFBBRLL -FFBFBBBLRR -FFBBFFBRLL -FBBBFBFRRL -FFBFFFFLRL -BFFFBBBRLL -BFBBBFFRRR -FFBFFBBRRR -BFBFFFBLLR -FBFFFBFLLR -FBFBBFFRRL -FFBFFBBLLL -BBFBBBFLRL -BFBFBBFRRL -BFFFBFFLLL -FBBBFFFRLL -BBBFFFFLLR -BFFBFFBLRL -BBFFBBBLLL -BFFBFFBLLR -BBFFBBBLRL -FBBFFBBLLR -FFBFBBFRRR -FBFBBFBRRR -BFBFFBFRLR -BFBBBFBRLL -FFBBBBFLRL -BFFBFBFLLR -BFBBFFFRLL -BBFBFBBLRR -FBBFBFFLLL -FBBFFFFLRL -FBBBBFBRRL -FFBBBFFRLL -FBBFBFFRRL -FBBBFBFRLR -FBBBFFBLRR -BBFFBBBLRR -FBBFFBFLLL -FBFBBFFRLL -FFBFBFFRLL -BFBFBBBRRL -FBFBBBFRRL -FFBFBBBLLR -BFFBFFFRLR -FFBFBFFRRL -BBFFFFFLRL -FBFFBFFLRL -BBFFFBFLLL -BFFBBFBLRR -BFBBFBFLLR -FBFBFBFLRR -BBFFBBFRLL -BBFBFBFRLL -BBFFFBFRLR -BFFBFBFRRL -BFFBFBBLRL -FFFBBBFLRL -FBBBFFFRRL -FFBFBBFLRR -FBBFBFBRLR -FFFBBFFRRR -FBBBBBBLRL -BBFFBBFRRR -FFBFFBFLLL -BFFFBBFLRL -FBFBBBFLRR -BBFFBFBLLL -FBFFBBFRLR -BFFBFBBLLL -BFBBFFBLRR -FFBBBFFLLR -FBFBFFFRRL -BFBBFBBRLL -BBFBBFBLRR -FBBFFFFLLR -BFFFBBFRRR -BBFFFBFRRR -BBFBBFFLLL -BBFFBFBRLL -BBBFFFFRLR -BFFFFBFRLL -FFBBBFFRRL -BFFBBBFLRL -BBFBBBFRLL -FBFFFFBRLL -BFBFFBFLRL -FFBFFBBLRL -FBBBBBBLRR -BBFFFBFRLL -BFBFFBBRLR -BBFBFFBLLL -BFFFBFFRRR -FFBFFBFLRL -FBBFBFFLRR -BBFBFFBRRR -BBFBFFBLRL -FBBBBFBLRR -BBFFBBBRRR -BBFFBFFLLR -FBBBFFBRLL -BFBFFBBLLL -FBBFBBBLLL -FFBBFBBLRR -FBBBBFFLLL -BFBFBBFLRL -BFBBBFBRRL -BFBBBBFRLL -FFBBFFFRLR -BBFBBBFRLR -BFBBFBBRLR -FFFBBBBLLL -BFFFFFBLRL -FBFBFFBRLL -FBBFBBBRLL -FBBFBBFRLL -BFBFBBFLLR -FFBBFBFLRL -FBBBFFBRRL -FFBFFBFRRR -BBFFFFBRLL -FBBFFBFRRL -BBFFFFFRLR -FBFBFFBLRR -BFFBBFBRLL -BBFFFFFLRR -BBFFBBBRRL -BBFFBFFRLR -FFBBFFBLLR -FBBFFFBLRR -BFFBBBBRLL -FBFBFBBLRR -FBBFBFBRLL -FBBBFFFRRR -FBBFFBBRLL -FFBFFFFRLL -FFBBBFBLLL -FBFFBBBLRR -FFBBFFBRRR -FFFBBFBRRR -FBFBFFBRRR -FFBFFBFRLR -BFFFFFFLLL -FFBFFBFRRL -BFBFBFFLLL -BFFBBBBRRR -BFFBBFBRRL -BBFFBBBRLR -BBFFBFFRRR -BBFBFBFRLR -FFBBFBFLRR -FBFFBFBLRR -BBFBBBBRLL -BBFFFFFLLL -FBFFBFFLRR -BBBFFFBRRL -BFFBFFBRRL -BFBBBFBRRR -FFFBBFBRLL -BFFBBFBLLR -BFBBBBFRLR -BFFFFBFLRL -FBBFBFBRRR -BFFBFBBLRR -BBFBBFBLLL -FBFBFFBRLR -FFBBBBFRLL -BFBFFBBRLL -BBFBBBBRLR -FFFBBBBLRL -FFFBBFBLLR -BFBBFBFLRR -FFFBBFBLRL -FBBBBBFLLR -FBFFBFBRLL -BFBFBBBRLL -BFBBBBFRRR -FBBFBFBRRL -BBFFBBFRLR -FFFBBBBRLR -BFBFBBBLRR -FBBBBFBRLR -BBFBFBBLRL -FFBBBFFRLR -BFBBBFFLRR -FBFBBBBLRR -FBBFFFBRLR -BFFFFFBLRR -BFFBBBBRLR -FBBBFFFRLR -BBBFFFFLRR -BFBFBFBRRR -FFBFFBFRLL -BBFBFBFLRR -BFBBFBBLLR -FFBBBBBRLL -FFFBBBBLRR -FBBFBBFLRL -BFFFBFBLLL -BFBFFFFRLL -FBFFFBFLRL -BBFFFFFRRR -FBBFBBFLLL -FBBFBFFRLR -FFFBBFFLRR -BFBBFFFRRL -FBFFFBBRLR -BBFBFFFRLL -FBBFFBBRRL -BBBFFFFRLL -BFBBBBBRLL -FFFBBFFRRL -FBBFFFBLLR -BFFFBFFLLR -FFBFFBFLLR -FBBFFBBRRR -BFFFFFBRLL -BFFFBFFRRL -BBFBBBFRRR -BFFBFBFLRR -FBFBBFFRLR -BBFFFBFLRR -BBFBFBFLLR -BFFBBBFLLL -FBFBFBBLLR -FBBBBBBRLL -FBFBFFFLRL -FFBBFFBRLR -BBFBBFBRRL -BBFBBFBRLR -BFFBBFFLRR -BFFBFFFLRR -BFBFBFFRRL -BBFBBBBRRR -FBFFFFFLLR -BBFFBBFLLR -BFFFBBBRLR -FBBBBFFRLL -BBFBBFFRRL -BBFFBFFRLL -BFBFBFBLRL -BFBFFFBLLL -BBFBFFFRLR -FBBBFFFLRL -FFFBBBBLLR -FFBFFFFLRR -BBFBFBFRRL -FBFFBBBRLL -FBBBFBBLRL -BBBFFFFLLL -FFBFBBBRRL -FBFBFFBLLR -FBFFFFFLRL -BFBFBBBLRL -BFFBBFFRLR -BFBFFBBLRR -BFFBFBBRLR -FBBFBFBLRR -FFBBBFFLRL -BBFFBBFLRR -FBBBFBBRRR -BFFFBBBLLR -BFBFBBBRLR -BFFBFBFLLL -BBBFFFBRRR -BBBFFFBRLR -FBFBBFFLLL -BFFBBFFLLR -FFBBFFBLRR -FBBBBBFRLR -BFBBFFBRRL -FBBBFFFLRR -FBFFFFFRLL -FFBFFFBLLR -BFFBFFFRLL -BFBFBFBRLL -BFFFFBBLRR -FBBFFBBLRR -BFBBBFBLRL -BBFBFBBLLR -BFBBBFBLRR -FBFFFBFLLL -BFBBBBBLLR -BFBFFFBRLR -BFBFBBFLLL -BBBFFFFRRR -FBBFFBBRLR -BBBFFFFLRL -FBBFBBBRRR -FFBBFBFRRL -BFFFBBBRRR -FFBFBFFRRR -BBFBFFFLRR -FFBFBBBLRL -BFBFBFFRLR -FFBBFFFRRR -FBFFBFBLLL -FBFFBFBLLR -BBFBBFFLLR -BFBBBFFRLR -BFFFFBBLLL -BFFBFFBRLL -FBBFFFFRLL -FFBFBFBLRR -FBBBBFBLLL -BFBFBFBRLR -FBBFBBBLRL -BFBFFBFRRL -FBBFBFBLLL -BFFFBFBLRL -BBFFBFFLLL -BBFFFBFLRL -FFFBBBFRRL -FBBFFFBLLL -BFFFFFBLLR -FBBBBFBRLL -BFFFFBBRRR -BFFFFBBLRL -FBBFFBFRLR -BBFFFFBRRR -FBFFFFBLLL -FFBFBFBRLR -BFFFBBBLRL -BFFFFFFRLL -BFBFFBFLLR -BBFFFBBRLR -FBBBBFBLRL -FBBBBFBRRR -BFFBFFFLLL -BFFBBBFRLL -BFBFBBFRLR -BBFFBFBRLR -FBBBBBFLRR -BFBBFBFRLR -FFBBFBFRLR -BFFFFFBRRR -BFFBBFFLRL -FBFFBFFRRL -BFBBFFFLRL -FBFFFBBLRL -BFFFBFFRLR -BFFFBFBRRL -FBBBBBFLRL -BBFFBBFLLL -FFBBFBBLLL -FFBFBFFLLL -BBBFFFBLLL -BFBFBBBLLR -FBBFFBFLRL -FBBBBFFRRR -BFBBBBFLLR -FFBFFFFRRR -BBFFBBFLRL -FBFBFBBRLR -BFBBFFBLRL -FBFBFFBLLL -BBFFBFFLRL -FBFBFFFLRR -FFBFBFBLRL -BFFBFBBRRR -FFBFBBBRLR -BFBBFFFRLR -BFBFFFFRLR -FFFBBFFLLL -BFBFFFFLLL -FFBFFBBRLR -FFBFBFFLRR -BFFBBFFRLL -BBFFBBBLLR -BFBBBBBRRL -FBFBBBBRRR -FBBFFFFRRR -FFBBBFBRLR -FFBFBFBLLL -BFFBFFFLLR -FBFBFBFRRR -BFFBBBBLLL -BFFFFBBRLR -FBFBBFFLRL -FFBFBFFLRL -FBBBFFBLLR -FBBFBFFLRL -FFBFBBFLRL -BBBFFFFRRL -FFBBFBFLLL -FFBBBBFRRL -BBFFFFBLLL -FFBBFBFRRR -FBFFFFFLRR -BFFBBBBRRL -BFBBFBBRRL -BBFBFBBRLR -FFBFFFFLLL -FBBFBFBLLR -FBFBFFBLRL -BBFBFBBRRR -BFFBBFBLRL -FFBBBFFLLL -FBBBFFFLLL -BFFFBFBLLR -FFBBFFFLLL -BFFBFFBLRR -FFBBFFFLRR -BFFBFBBRLL -FFBFBFBLLR -FBBBBBBLLR -FBFFFFBRLR -BFBBBFFRLL -FFBBBBFRLR -FFBFFBBLLR -BBFFFFFLLR -FBFFFBFRLR -BFBFFFFRRL -FBFFFBBLLL -BBFFFBBLLL -BFFBFBFLRL -BBFFFBFRRL -FBFFBBBRRR -FBFFFBBLLR -FFFBBFBRRL -BBFBFFFLRL -BFBFFFBRRL -BFBBBFBRLR -BFFFBBBLRR -FBBFBFFLLR -FBFBBBBRLR -BBFBBBFRRL -FFFBBFBRLR -BFFBFFFLRL -FBBBBBBRRL -BFFBFFBLLL -BFFBBFFRRL -FBBFBBFLLR -BFFBBBBLLR -BFBBBFFLRL -BFBFFBFRRR -BBFFFBBRRL -BFBFBFFLRL -BFBBFFBRLL -BFFFFFFLRR -FFFBBBFLRR -FBBFFFFLLL -FFBBFFBRRL -BFBFFBFLLL -FBFBBBFLLR -FFBBBBBRLR -BBFBFFBRLL -FBFBBFBRRL -FBBFFBFLRR -BFFFFFBRLR -FBFBBFBLLR -FBBBFFFLLR -BFFFFBFRRL -FBFFFFFRRL -FBFBFFFRLR -FBFBBBFLLL -BBFBFFBLRR -BFBBBFFRRL -BFBBFBFRRR -BBFFFFFRLL -FBFBFBFRLR -FBBBBBFRLL -BBFFBFBLRL -BBFFBBFRRL -BFBFFFFLRR -FBFFBBBRRL -FFFBBFFRLR -BBFFBFFRRL -BBFBBFBLLR -FBBFFBFLLR -FBFFFFBLLR -FFBFBFBRRL -FBFFFFBLRR -BFFBFFFRRR -FFFBBBFRRR -BFBFBFBLRR -FBFBBBBLLR -BBFFFFBLRL -BFBBFBFLLL -FBBBFFBLRL -BBFBFFFRRL -BBBFFFBRLL -FBBFBBFLRR -FBFBFFFLLL -FBBFFFFRLR -BFFBBBFRRL -BBFFFBBRRR -FBBBFFBRLR -FFBFFFBRRL -BFFFFFBLLL -FBFFFBFRLL -BBFFBFBRRR -BFFFFBFLRR -FFBBBBFLLR -BFBFBBFLRR -FBFBFBBLLL -BFFFBFBLRR -BBFBBFBRRR -BFBBFBBLRL -BBFBFBBLLL -FBBBFBFLRL -BFFFBBFRLL -FBBBBBFRRL -BFFBFFBRLR -BFFBBBBLRR -FFFBBFBLLL -BFBBBBFLRL -FBBBFBFLRR -FBFFFBFLRR -BFBFFFBRRR -FBFFBFFLLR -BFBFBFFRRR -BFFBFBFRLR -FBFFFFBRRL -BFFFBFBRLL -FBBBFBBLRR -BFBBFFBRRR -BFBFFFFRRR -BFFBFBFRRR -FFBBFFBLRL -BFBBBBFLRR -FBFFBBBLLR -FBFBBFFLLR -FBFFFBFRRR -FBFBBBBLLL -BFBBFBBLRR -BFBFFFBLRL -BFFBBFBLLL -FBFFBBFLLR -BBFBFFFLLR -BBFFFFFRRL -FBFBBFFRRR -BFFFBFFLRL -FBFBFBFLLR -BFFFFFFRLR -FFBBBBFRRR -BBFBFBFLRL -FBBBFFBRRR -FBFFBFFRRR -FBBBBFBLLR -BBBFFFBLLR -FBFFBFBRRL -FBBBFBBRLR -FBFFBBFRLL -BBBFFFBLRR -BFFFBBFLLR -FBFFBFFRLL -FFBBBBFLLL -FFBBBFBRRR -BBFBBFFRLR -FBBBFBBLLR -FBBFBFFRRR -BFBBFBFRLL -FFFBBBBRRL -FBFBFFBRRL \ No newline at end of file diff --git a/day6/__init__.py b/day6/__init__.py deleted file mode 100644 index f9d4f87..0000000 --- a/day6/__init__.py +++ /dev/null @@ -1,47 +0,0 @@ -from typing import Iterator, Any, Generator, List - -from aoc import BaseAssignment - - -class Assignment(BaseAssignment): - def read_input(self, example = False) -> Generator: - group = [] - for line in super().read_input(example): - if len(line) == 0: - yield group - group = [] - continue - - group.append(line) - - yield group - - -class AssignmentOne(Assignment): - def run(self, input: Iterator) -> Any: - return sum([ - len(set(''.join(group))) - for group in input - ]) - - -class AssignmentTwo(Assignment): - def everyone_same_answer_count(self, group: List): - answer_count = {} - for person in group: - for answer in person: - answer_count[answer] = answer_count[answer] + 1 \ - if answer in answer_count \ - else 1 - return sum([ - 1 - for value in answer_count.values() - if value == len(group) - ]) - - - def run(self, input: Iterator) -> Any: - return sum([ - self.everyone_same_answer_count(group) - for group in input - ]) diff --git a/day6/example.txt b/day6/example.txt deleted file mode 100644 index 8fdfebd..0000000 --- a/day6/example.txt +++ /dev/null @@ -1,15 +0,0 @@ -abc - -a -b -c - -ab -ac - -a -a -a -a - -b \ No newline at end of file diff --git a/day6/input.txt b/day6/input.txt deleted file mode 100644 index 5785ea7..0000000 --- a/day6/input.txt +++ /dev/null @@ -1,2148 +0,0 @@ -qtmdwspah -sqwdamhpt -phwdaqsmt -stmdqwhap -pqawdhtms - -bgsickuztovfwa -yiozauvgfsbtkwc -zygijavmtfkcuwobs -fvsuwtiadzrncboklg - -dxgieku -dihnxkgf - -mqybtd -yqbtd -btydq - -rgpbcfxtzoewy -otbyrfgwxzpec -yocrwtebzxgfp - -qcpngeodrszaky -ocaqrngsyuz - -xwenu -nwsxuye - -xapwvhsktlmr -twpslarxhvkm -vhlwmrapxkts -pmkxraswvlth -ksrxpvtmwahl - -xhcepbdsltvk -khcdptsixbg -spbjtdchxk -cbkxspqtdrh - -kaishmtdl -jcnprqigt - -pjqtekodlmwcaginxfzrushbv -iuyzsfaxcvrotdmklgebpnjwqh -dirxeqbswlonhzumgafvckptj -zqpitfrjnmhvuxbcdlwkogase -khncmsfdzlgwpvriotxujbaeq - -motb -twm -mvt -nomt - -euwhdnlaxbtjiqz -dquxjznhtlwebia -atzdwxqiunhlebj -jnwlzxdiuaheqbt - -jnktcwaovpbqzei -qcrljzskbvo - -tangojspuvlwbryeicz -eujvkaporgwdilbyfscztn - -pjrisxqwdoyze -cvyzmjlqxsgpeirw -xieqwcajzslryp -xjpzerwqyamis - -rftxglbkpqnchvajs -cnsvqgpurtjfeb - -m -mcx -wramgjy -mv - -meacfoiqpbzy -zmvqpaibegoyfc -oiyzmaengcfbpq -uiaqprbycmzfoe - -qjdnecvmsr -sdmecpqn - -gt -tg - -bndhmeupwszlqiycofkt -fcrptkulhixjnazvmdg - -nrcytwdaozvbmhsjuk -owarihdekqzslvnxmubyfpj -suzlnmxvkwjyodhbrag - -fz -zf -zefpk -fz -fz - -zfnqcdhvjwxa -hxfazjcwd -xzhtajkfwcd - -weusntyxblcdqpvgfzoam -oxiyslgabqvdhnwzm - -jneuovbpgfxlsmkwd -kjbwonlspfdumcegthv -omvfbgejaiwnkdulsp -orfgdlbqjkvhumpewns - -mhb -hb -dhjxb -boh - -af -tzlbugdkq -j - -qhgnav -ngvahqp -gvnqha - -hoer -oufeq -u -gmy -td - -naguhdzsmcxlye -pglwjsvxzduc -uosgxqzldct -xugcszld -qcxsgtlzoud - -uoxacitdkeh -kypudjgbsefi - -bjywqhgcps -uaybelqkjpiwc -yblwqpjec -jwvyrcpbqzt -qjgywbocp - -cuvwxkmrnliodphaj -rvuzcdxknphol -hprvkucdonsxl - -qtgjunkhaovbw -wkgvotljhbq - -blfvtr -vrtfby -mbtvjdfnr -xbftpvrh -svbrhptf - -rijakd -kadnijer -kqdwjifar -jdrihkmaz -ejnirkfda - -ysukmtloxgjhvnwp -qjxlwnvpyzsgbutomd - -gxpdqomijnhkyws -vyqgxmjpowhsnik -mnxqhgykwiopjs - -fm -u -fc -zd -yplnbikosxj - -welcjifhgnzupo -izfpwljnodctheg -dtlhgznwepcojif -hzwvgpcifnjleo -wgpqvtcnjofhlezi - -azhipsvbx -xwbip -ixpb -xbip -bpxi - -yxhpltiuvzorefqnwm -azwiylnohxmejqurftvp -hvuzwfxmnqyeltpro -kwxghtdyfreqmplvzuon - -n -f -a -f - -xfoaj -ofsqb -eqfo - -canrzup -znarcpu -pzcnrua -czaupnr -puchnzra - -hwxtaqvsci -rhxylbskwcjmoid -svqexwhaic -whxisc - -xfamongdyrhjpizqbtswl -tsnermfbvidyqcwhlxuzg - -jz -zj -zj - -mohrs -rom -mro -orm - -rnwbshdkxv -vkrjwsdthnxb -kjwrxhsvnb -rnbhvxowas - -lbdahrf -ralbfhd -lhfadbr -radhflb - -wztomybdgaqhu -rmuohgyqbdz -dgzqrumoayhb -hgqdmyubjpeoz -mgdquhzoyb - -xiy -yix -bixoy -xyi -xiy - -xvzqjwfkhctgeayu -kdjmlrow - -vnlu -ulnvg -wluvn -lvun - -btmcqewifuh -gqvakfzrmyuicsjpdbo - -npfy -yznfx -ynf - -b -b -b -b -b - -zuhkqwfpm -mqpzwkhf -pnwfqchkzm -kfumpqzhw -qzwhkmpfu - -pcevtdhgylnmsxaqiuzkr -pxanvcgiquethzksmylrd -vdszgiqyautrpxhcnmlek - -bhru -ubhr -uhvopbr -trbizhud - -omnpx -yp -cpf -p - -fuhokrpewbyvlnjcdmqi -pcijvmskndtwohxylqeurf -cdvfhebukmjrqnolwpiy -qpwhymlcfjrndoeuivk - -xwehzfud -wupfdexz - -xbdh -jxdhb - -hmkbuyl -rtcefpsaui - -jlfsy -oknuy -kvpy - -hcgzs -hegzs -sapzhd - -vnhjbqk -bkvqnhjd -vhnkqjb -jhnkqvb -bnhjkvq - -myjnp -wkyjamn -kmyjna - -rupvd -pvrud -rpdvu - -kvnlmhgizwdbjsxf -nmfdkzgjxlbvsiwh -zmsphibqwglkejfxrvn - -ge -eg -g -g -ga - -eivbk -vikeb -bkiyve - -puvf -fvup -uvfp -pvuf -fvup - -rydhgfbmpktzvlewjusn -wqgfnovcerskjad -ekrfsjgvowndcxq - -muco -ouse - -pxoihbg -bogpxhi - -aik -k -k - -qa -aq -aq -aq - -snezvhbkwa -nvzuaksbh -zbvalskhn -xposdbmhnavgzk -thvfcbznkulas - -jaxdfucymsghp -hfxaqcwunsjgmkpyd -glfdjpuzxacyhm - -sp -ps - -cesof -vsu -s -svu -sv - -s -t -te -t - -epnq -oeyqn -nqe -qen -qne - -taxpglnzkejswbo -zekwtongjpbxas -gasokxnzbejpwty -wanzsfbgpxjeotk -wzxaengjkbptfso - -imftvao -vtmif - -pbjelcf -prnhgwqem - -xopmzg -zfoxg -xzgo -ozxg - -gmcybniqevotjda -ytiebavgdqojcnm - -mr -m - -f -n - -mnhpxfircz -cihmvrxzyf - -ygibvxud -ykubiqxgvd -xydibeuv -buvqdyxi -budxiyv - -zjpqlmftionbgu -tzbfgjiqoumapn -nzcjuftibompqg -aztbmoiqnjfgup - -chpnjmvlw -hlbrdvqemcnwp -pnkvcmlwh -lmcyfwpvhn -ynlmcjvipawh - -kzhxeqfa -feaxqzkh -hzxkaeqf -zfqhexka -fqxahkze - -blwqdpy -yqdaniplwbe -jhxbrwdylngqs -qwtdylukzvbm - -asobzdl -jahzxpdy -daksz -zadufl - -ahunxksgp -sakhpun -nukathps -uzhnsapk -pmusknahz - -yzmogwp -tbqcp -bnpcr -xhp - -dhyxojbvrqnml -nkr -rnc -wngra - -kmdynhutpjlvxaroce -pbwohkjtmyfnzg -tjoikmhypnsq - -zduqkfivgjo -oizvjfuqbd -zvjuqrfigdo -vudqiozjf -oidvqyzuftj - -usmo -sm -sm -ms - -njf -f -glft - -auh -hwiavfug - -xevqipr -gwxdmlsuakcyf - -iltoavmycurph -luhcarivtomxy -yihcratumoevxl -louhcvmiytra -miqzdtolhrcayuvwg - -xwtcmqso - -xdnimfbyr -okimydfr -uhgzfyjqat - -evjdtmcoxiklhpgwq -qgnxbkftmhiy -ixqrakuhngytm - -hfzpe -uefphkb -afmwhqpek -fvpoygjinlhexds - -oly -byoal -yol -koly -oyl - -k -k -k -k -k - -ofhrz -xhpruzq -zrh -hwgrbedykvsmzin - -ginxcsjevrwyqz -egysvqncxzrij -syvgzcnreqijx -zcvxgsjrqenyi -qyfvzirnjcgxes - -eyxfutwoqjbrvkgds -xsfjoutrbeqwkvgyd -vqwtjgdbrsfoyukxe -vfurtykqgebjwosdx -eypubrkojqvdsgtfwx - -odwmeztifrjxn -nrgmwlxc -vgkxwrlnm - -tz -tz -rtz - -daze -ezyad - -ujqdozgh -goujdmqkzh -jghuqdzo -gjozdqhu - -erdnakojyfzchvxg -hfekdrnctgvzpyjaxom - -hwi -wih -hiw -hiw - -krqdscaoiwhnyz -rwjaknoxyidzsqhpc -rnyqdawcoskifghz -wahrqznyvdcskiuo - -swlakrxjmtpv -inaylxhdjwkmsvur -qbxavfrlewkcsjm - -ucxvtw -ue -u -lu - -oztxeqjvgb -tpdbjgoqe - -spyqunh -uypnhqs - -fdw -safw -wfjh -wfomxi -lwfsdn - -daibtezjo -qtxeaizjmdb -aoejitbkzd -etadizjb - -jkeynazqvobiflrushcwtgdmxp -wnrjequcdxlkmtfobihsvy -iksvuebxtjwmhfrdqyocln - -gkxq -pkw -kw - -swy -ywsn - -jzqurhixawto -gaojpfrzciq -izoxrtqawj -asoihjqzutr - -wijlermdyzhstf -zjlrwfsdhmtiey -elymwztijfrdhs - -qatxy -tyq - -nja -yha -a -gfsav -kha - -uebolhvntdkfsxap -fpnlskhdeuobva -oahteupksbvdlnf -oeulbvhdpfksna -ansgphkrfdlovebu - -vpe -vedp -pev -pev -pev - -zacfpshmrequykt -tuzarfpmknwc -pzuimacvfktr - -cjeqourh -eouqcljr -rojueqc - -ykoi -koyi -koyi -kiyo - -fvkhuntrmpz -ckngmxirpuzvat -rfuvksnozpath -bntdrlyvkzupj -rukwpvtzcn - -wczery -eczwrby -wrzcey - -xjndayl -hnlyaxdj -lndayxj -ynjdlaxt - -j -j -j -tj - -awhrfvjbzduistx -gnyhcmteop - -ym -y -sy -my - -zkai -ajiz -aiz -aiz -ikaz - -irgsokuwy -lnxtcqsiwmf -busyvhzidw - -qxhpynjewsfmkd -hwpqenfkydm - -aedbfmx -fwexa -jgckhspy - -zpusakfeb -izpev -sdepzu -znpwe -pqjgehtxzr - -vqmlkjznbeiofahucdtsgw -utmvhgqedbocfwkszjlain -yfbqzaspnlgotrdjxuhvkemiwc -idglcasthofkuemnbjwqzv - -uqhdebp -chdbquepl -qedzphbu -hupdqbe -qbedhpu - -ehnv -t - -aksmbzu -wvlhktdqpjmsirz -fznykbsem -ksgmz -kzxsymc - -vnoetrhlgkcmqxdp -nvdqtkolcrhxep -pxcedrnhoiltqvk -elrxnhitcpqdokv - -ymuxitzqsagrkofcvbj -tauxskfigjymro - -cnfdjwbxkisp -cpydkbjxwsifn -cipnkbufswdjrx -ybkxihfwejnscdp - -yueaplwitfdvkoxnbjcmrqgz -jvlfmxoakzwiegpbdnrquct -manwikovgbpuhrcfesjlzxtqd - -lptzwxfn -fpnxtlz -nxtflegzpj - -dkpuyaefsijvlrhgqxmnt -bshiwokugpflvtmzeqxnyja - -in -n -xzou - -ng -gn - -epqbvmi -vqembi -bvmeqizu -mbeqiv - -cjapgriulbzeq -ugiqdzcvpobjlrek -zqleircpubjg -cirjuqbzgepl - -nhpsreikdjzo -hkjsnodipzer -znoidphekjrs - -dezf -edfz -efdz -rdfze - -nzitsqrfp -qiznrfspt -rfqizspnt -nsqizrptf - -xntrkogqfapj -nioagqtmrfkjyp - -is -sgdi -qsity - -pe -ep -ep -ep - -uhvpiwdgsfr -uwlpcqrezykovni - -aevu -ae -ea -ae - -djzfhxmas -msdxhz -zexhdsymt -dxzshktm -dzemshxg - -msqiuvncoltxejg -cqxfmsonlvute - -wmfblsrogvjinpc -rplfngicojbkvwms -cfbolhnjvrsimwgk -gmisflrwnkcjbov -vmwrcbosjngfuil - -kbxitoqvzajudfnsgmyc -ikfwcxzgvtjedmsyouqnab -aqknmufjiypcvxbgodstz - -eshyzxbqncuomfpwgk -gzcxqpmhljeoyuikbfrn -bzhxveutpfyaqmkcong - -evqyuicpfhl -yquckvlpiejf - -anf -szydm - -qt -qt -qt - -mfyovqgpnlbcxidauzh -cqniopdhfgxlauvzbmy -idxofbaylmcznuvqhpg -qbcpihzogydlfvmnwuxa -qgvcumyizpnabxdfhol - -btwjlohyfaq -ydlwprkj - -rhisamcj -csirha -srcaih -icshar - -mejydkgtnfovuzix -enuvirjogdmkyxztf -xefomztvkungysdijc -jxdginfktapovyzueqhm -fioktdsnemgjuzyxv - -hrztvexlkob -lwekirhbxdzqtmo - -etxv -arxtvue -exvft - -fwdnqsomhtryxvcgzej -eczwytuhfsgmdqnxoj -ycdsqwznhftgjmkoxe -tsjnexcafwmhygzbvqod - -xovcfts -cfsopxvdt -xoscfvt -osfxtvc - -w -rc -t -zs -ik - -lzm -zpl - -romqvb -mvo - -uy -y -y -y - -govwliuabszqp -goiabwfusvzlpnq -qpiwgbvaosulz -apvguizblwsqo - -s -m -s -s - -ozpiljymxhswnfuevt -emvbwshnylzxpjti -nveblmzchtwjiypsx - -nldfsb -sfblndt -sdblfn -bnflds -ndslbf - -ieg -idew - -wonxsab -wbsaoxn -nobaxws -wasbnox - -alscukjbf -lsbjakfc - -jxcduqioabwpyhlzef -ialdxwfzycqjhbepuo -jfzypowishadclxbueq - -riydchjfnwqvtmbpsaloxe -dsbwfintzelormhvxcaqpyj -ejomaiyqsxcthfvpdlwbnr -lrycvtunboifgxawqemhpjd -xvtiafqrdwnoymclepbhj - -jsydqempfvntrhui -miyefthpuqsrvnj -zsvyrmhbtuelpqinfja -nuphytvreqmfsji - -cltvanwuh -tulachoyvwn -tuwclvanh - -bixkgozashw -hakibzoswmx - -poxkblmhqjftwsdcn -bhtykpvzjxuiengao - -j -j -j - -cqodguxrzles -loxqcrgeszudw -ocsdqruxglze -rugqoyxesdzlcf -ulzdorxgsqec - -yvz -vyz - -mfq -sztdnk -py - -zawgmj -jawgz -gwapjz -sgzajw - -ekoadscpwhg -jsuchbxmfyzlnwq - -wlkrqcjux -xuqjclr -gjrqlcxu - -afcosnhvprzblxtwd -abszvxoglnctfhpwr -bjhlvzfwceayksxtun -tzvnxrhwlmsfacbd - -igreocyhquzjmvlx -liowjethfkqszvmxdyu - -ljeqkvwpdazgocf -cqgdyvmjuwpeotainsr - -mhoylsckuzxbiaevq -vyczxkjeoapsbifu -kxbdosyzavujiec - -mwsfxbkjqazpiohgnyldc -xqgnadblfkwpcomshiy -wgvsalrhqbmieyxodpfnkc - -eurqfmtkvjbosh -vyqrhkotfblmseu -brtfqkvoheums -rvtksmehoubqf -uwftdoarkmvqgehbcps - -ctyalrqdxskjuoh -dlathrokujqxs -hxsqukdoaltjr -osrqkautljxdh - -zfdlxtr -sburlzxd -zlrdx - -ocfb -cbfo - -uykhxqrtmnc -ahigrcuptnxdqmk - -tckz -ktzc - -vzgtxhkums -kvzmhtgus -sgthkzumv -vzxsgmkuht -znqmuhvkswgt - -jtdwk -ydkti -kdt -dkjt - -mwxehozbnqpad -ryjdeblzwxnpoucqahmtg - -liumaz -izulam -zauloim -miludzaqr - -rzkjguslxohwnfdivm -ofulwkhisgvjmnrxzd -dikwvojugxzfrmnlsh -sxjdzkcuworbnvgflmih -vlmxrzikndhwjofgus - -fzqnodmx -a -v - -lfoeh -leovfh -hofsle - -djku -kjud -dukj - -qtiwbxfhlzjnokvpadruymgse -onurjdisvgzwaqkybftlhpmex -fnmqwuhtyjrkepbgildovxasz -marndljbkegqxtupviscywfhzo -fdbqehtxkavjimzwporsugyln - -aqkonbhvfdljigp -phaqrlkbjdin -phldcbkaumjvinq -iplbjxeykqhdazn - -zsl -sz -xsyzh -zs - -xdhlq -ndlkxjyu -xlde -xdl - -blwmairvkofcuq -tedokrvbqm - -pw -p - -iqrbnglofs -grwuylifvkbq - -yl -yl - -xaizpuhlqo -kiloxm -ilkox - -puaorhzmtvfg -mutoegrhzafv - -lrzmpt -dpqyihnsa - -jfiodcs -spi -swni -isn - -ohdmyvlpbxjnqzfrswiuaeg -ceafhrujqtndivbxpwzsmg - -mvoxyd -tvdoymx -xdymov - -py -y - -nutogsehiczykpmdvf -ngmueistpxkfodhvzrcy -yuhczioegpvmnfktsd - -zp -z -zbc -z -z - -creyt -uisfmova -er - -dltugzhniyjro -lizndhrutojyg -jhgnzytuordli -lhgotuznirjydc - -xtrckznswlueia -ivnwstaeulrkzjc -kcwaleiuznqrts -rkwiunqzatsecl - -y -pqnae -ofm -fl -y - -czoi -smvbnd -tzi - -tzanvx -azgnjx -ingjzyuae -anrhzkq - -eqhafrbmw -rjscmwxz -lrgnyfeukdvmiqwpt - -tarsmxwveqdhjbk -xrajvebtdmwkh -taojykmefwbdzrxuvnp -wbdtmjrevakx -ctilgkbmaredjwvx - -wp -p -p - -zprwtogmdu -orwdmtzuxpg -omwputzdgr -umgrtpwozd -wgzdrtpmou - -xtkjsm -ylqptfjmk - -pzgyknr -kyorpngz -pnzykgra - -rtsiypahgecuvj -rsudtcgjiheyvp -rpyehvtijcgsu -cyprhvestgjui -uvigershtyjpc - -jlmhtfbsoq -gbtohjsqm -mbstojqh -mhkecsqtabjox - -xrhinjamvo -hproxvnma -mzscorhnx - -utwprfqjyhsvzaomcb -yesrijzcagmhbwoutvpnqk -porcxwmyutzajbhqsv -uvrcpyzsmhajowtqb -ycpwuzovatbsmjqhr - -fbkgycqutlmw -wuybgqmlcfk -xycgbkqmulwf -bgcfwyuqklm - -vntsimju -boegqz - -edotgsi -dgoism -iogds -gdstio -sogdixz - -fdi -ifd - -rx -v -x - -qibkwyvmtxargjldc -bykzitxevgrwsnqflcdjm - -dborhtpxjsflciveyq -xbuijhdqafnsrvepozytcl -qhlopsdtebcjyfrixv -hlvdyqxtcroegfjbisp -ormifqdhyvxjpclebst - -qtzumogwrclaiex -iburltzgexdocwapq -ixuwtoqlegnrzc -xizeklwrugtqhoj - -iynjbsahtvfeurqkgd -rtnwjgeukyadicflq -deytfqknlpjuairgc - -oy -to -po - -wyj -q - -vatgy -xegndfrv -smgv -sgzbacv - -ifmepunrdszgh -mvgdesianluzpfrh -eypfughdnmszitr -nepugsfimzrdh -fzuiqesnjcdwoxmhkpbrg - -goycuvjqnpix -ytwnigvcjq - -bsiczfhkne -gwxp -ojdl -a -uvgm - -kaxzjpmwutcqnv -isadmolbtrfugxyhcj - -vxqhfryiakbn -txhqbavyknri - -ptbqifxcwyjgordls -dbpvkeauyc - -kovpawxf -ovwxkpfa -xbknwjpcoaftq -oxapvfkw - -ybjvaftkzheqgiuposnmxc -ungfezmiskqvyjaphobxtc -yjqimsvbktaonpeucfzhgrx -nepvgsifuqytahxzmjkocb -qmaexzipshcvjkfyonutgb - -u -u -u -u - -tpgqyvjaedlkbhwr -nytwkpqlvmgrbehxjad - -vsruxht -rdmb -rfb - -khqyd -ycj - -aidrbmzkxvt -yzvbkiorxamdt - -mzwvhblrxtn -vqalzwcbrxjmtnd -wlvnrtxmzcbg - -ow -ow -ewuob -wo - -gl -mnacgl -lg -gul -kdflg - -oqvd -qodvy -qdvo -qvoda - -rd -fus -thoi - -rtnz -tqagrnlb - -wemlvjbhuqcfrtodkxzn -pjbtruvdmhowfznlxekq -eoyadnxbuktqshgwfmvzirlj - -kumotnwel -lmezwoutkn -nuemkwlot -efnlduohmtkw - -mhaubleozw -zwulbhmo -mhbzouwl -hmwulbzo - -hvjpdoiswzbenma -ojndsepwhiq -dwsjnhiope -tsohjdpwien -joipwhesnd - -edbhi -fisdhbe - -r -v -v -v - -ezlc -czei -azlcei -czie -eynczs - -ngfuhekmzxvopy -twogyeknxvmhbjzpuf -zxpfnygeomukvh - -ktxduimz -vtgmurjiqk -mtkbuia - -uykwh -kuyhnw - -dzjqnwbrouh -qfncpvszdeg -cydmlqnz -dzqtn - -xga -hmxpdg -fnxgeu -nxeogu - -nsxrgu -xngurs - -jvmudzscnalhwktry -lrvucmjkwztsyna -wyruzcjxlbtemsknva -yzwvklpcqustojrmnai -zyjntswcuarkmvl - -zq -qz -qz -qz -zqt - -gbpnqrxu -dqnxyvwhbtgi -csqmbfjeaokxlz - -rdtuqpxnbzj -yzsnpu -fcnrzpou -penzu -nvukhlmizwpag - -tdvfgahbiw -gtbpsdo - -ucdprxmznhbw -rcumdzpwnx -dxnpzrmcuw -drpxcmnzuw -zxwcnpmrdu - -dhouqlfvsakg -uaofqkdsvhgl -uoalfhvqsgkd -klgvfudqosah -auhslqfkgvdo - -qkwfimrogubyhljda -shuprevacxlndiqfjwy - -crpsetajviwmqhl -szqdpfvimaekgbj - -geyqpl -gzqlei -qleg - -kcfipzjwyugsrtahboneqxdm -uwkcmtdfopayenqbshxi -eudhcyfpwamoxvkqlistnb - -yfqbtnwuzsdl -lszfnquwbtyd -fsjznbdwytulq -bfgldzqyutwsn - -n -uv - -vjfzuhqgaypbmcd -hqmbpsjyugrvfzatndc -ovfazbdipqxeclykjgum -vmbzptjwydaguncfrq - -k -w -k -k - -eipruzqndlys -elrysidnzqu - -pzlgeciqys -wjvrdxmunfsb - -kdy -kd -kd -dlk -kd - -yretjs -g -kahzubo -rjd -r - -hlxpawm -xmyeltpqw -gmpxicbv -burmxc -ozxmsfjdn - -dtskziwy -qxzycupgs - -iflherjytpxg -thienjgrfxly -heyftrgjlix -igyfjurphtexl -gtyxrjleihf - -nuswkhz -xosqihvwfrez -hgszyw - -ukphojt -hotkpzju -htupjbko -mjpkouhd - -luhsi -shliu -lihqsu - -iqr -ybndlhzrgwtmkf -rxcuq - -j -j -j -j - -rwqsbyoe -fweujxcoliya -mpowrey - -wvn -wv - -frbuexwg -xmqgdwfeb - -rbyjsiqxtfcvlup -vqpuyrifcsjxtlb -yvtqirslxpjfbcu -vsribxjcufylqpt - -ikcvoguphqtyjdswzexa -ptjocgxiuhwavydsqzek -ipcuohvqdwyxsetkagjz -vpgdhzqckoywxaijuest - -erhdoyugavcq -doqsvahugec -cnhezgfavbuixdo - -lhgvknmequsctapxzbjdorf -fodnxkrlqthcubmzvpjaeg -fcvqmordxhklpybujgenatz -nlmbxvpcokearhdzjtqufg -uthcdpbvojlqewrknafgxzmi - -hwjpevzgrtmoqknydfs -jvzstyfdhgkoqpmw - -ncw -gwivun -wnl -nxw -najwbzdrke - -ckyowhxblrt -flabyrdwctk -lbwripvjtykcs - -pn -eonwtzp -yxsirvqhcm -fapu -njwb - -lsjdymwpz -zmrhuajxvewysp - -lyisuvcbdqxotkmh -bkmrldugxsycohqitv -xlhcvtmyqibdosuk -hscubvoelkyqdximt - -mb -mjbf -rbm - -zvqlg -gnlvjbz -zvdgl -dslgvzt -vczwgl - -bem -yqpgj -dxflhwokatuvnzs -irqc -jqp - -gqolch -hnozqgcl - -dnhwl -hdo -fduc - -lug -lug -gurkal -lgu -ulg - -uahmzdyxbr -htkmwpcxbqy -cbhyxmp - -ajv -mjt -j -ji - -bfpygmtxajnk -kpnmfbxtgayj -pcynamktgbjxf -tfympjvqxgnkab - -x -x -x -mxf -vqx - -wlzsgdhixr -hgcoaiwpbluv -wyhlig -iwfnlhqgs -jfgqihmxwlr - -cqrdbpoehiwfuzvgalxm -ularwipqxcfedozmbvg -vurqezjkoysgpalbfimxwcdt -mcvfzqplaxwrgoebiud - -mydhxfvgzcleojiq -ixcozgyvjdfl -njxuwiaovpycslrzgdf - -gfwtnr -mojdinwkf -rfnwqhcg -wfn - -lwise -arl -trzbvl -bal - -y -y -y -y - -sayqdimthfrpjvgn -crdphnmayqbgf - -sfgtqwbzej -pnmlcyitj - -yvtng -tyn -nyutg -ytgenh -onpty - -bleicngomsqhwfdy -mrbnfygxpiwucoldqshke -cqdeimynwhsfoblg -gqesldbcijmwhonfy -enblgcmfwdhyqois - -ufmsgkbcxz -xfsckzmub -umbkoxzhrsvcnf -kzmcsbfxgu - -tuiwqd -hbtdou - -t -t -t -t -t - -ureltqfji -ohzkrul - -oievpqgs -sqdvopigle -easvqpkgio - -upkr -urpk - -wrbipknheldxjfm -rhjexfldkwpb -lhrpejxfwbdk - -drybxszfetlnwjigk -fngbltzjywsroixk - -hodteualp -dtrpuile - -tqrbsjni -sbcirnqt -rsbaitqv -qbsrit -gbtsriq - -ovjmetdznlw -dtjvlmonze -zdjntemolvw -mlouvjngzkdter - -ckrnly -rclkyn -cyjlkrnh -crynkl -ylckrn - -zjk -zkj -djkz -jzk -jzk - -xoj -mjro -kjuxro -ybsjeahf - -zhwvtialqegufxmrcj -hwljxrecaqmztgifv -vgibmzlxwrdeacfqhjt - -nxicerwtzolfgky -hogmsvdplbweja - -w -clq -i -gi - -cilrkspgjqmw -xhvadtlyfjobnzue - -ckytg -nqtyg -gyxbt -kygtc - -fwcd -wfc -oebwhmil -fdwxr - -lomdtfsihk -sfyitokldmh -dimyotfkls -iovdstlmkfj -smulideqtfok - -frazxb -ahfbxz -bafzx -aftbxpz - -ubdarimsqvgtlhfjze -eqfrvhsguzjamtidl - -hjidpgrc -vrp -zpxwsulqrona -drhpftvi -kbrdhype - -xidcskygjwmbzr -bsqexaypghjkv - -tgxmy -atxym -txym - -qjrbmxtluews -ulbrwtjsxqop -fzbksturwmxlqj -tbxvnsjqriuwcl - -edhvzwqxojuplbkyf -wfphdjyczxvlkbqo -jhxbpkvyfzdloqw -yhmlfwoqkjpvdxbz -qfmxikhozbvwydplj - -seyq -yogxm - -jzbgatxhrplowqsyecvdn -nzjvohtguxpydsrlcewab - -apzf -zanwg -pza -az - -sapxfnyhbowujlcdveqiztkm -tzskjxqcoebdunyfphi - -caruks -rhlwsv - -cnswqfaztmdh -uxszromtanqdfb - -cjnmstxqvdik -qmjdcksitxvn -cjktvxqmdnis -cjnrsqdkxptivm - -oq -qaion -omq -qo - -kzymeqtbasgn -cuktvbsorim -lpjxwhdf - -knflw -ezvkn -yuhakrnc - -vidhwxfrmnsyuct -rzumskdfeqx - -p -p - -duicxvgnbeopfzlqyrks -skdetoclpbmzqfghwixr -gfozcdskprxeaiqbml -plkhqcifedxbgosrz - -ydtjolrxzefiaschwng -tdoerngfhzwxjcylia -zrawdytxhcojlgenfi - -ghvjqlifws -sfiqklwjehrgv - -q -q -s -a -s - -et -tme - -a -a -a -a -a - -qng -g -wg - -nvmlaui -audrigo -atnjdu -hybxcpszkwuq -fnu - -zmngdceqikxyuapwv -ciwyqekgamdzvp -ikcpavfgbwmerqyz - -mcvyjezqxrpkiu -wlfatnmghs - -awkqenuiorcd -lkuowsracdtzqgei -joxhucpqrmfyvikawe - -cdn -ndc - -fybj -bjfy -byjucsf -flybjx - -zfcphgxqno -zhmxyncpqr -iqhwaclzupsne - -oscpyvdebfhz -pbonsjyrelkfxvz -wfpvyigbmaeztoqus - -ypbfhaivmkx -xpjfhikyoca - -wkzvxlebarsmcdpi -xidcbpswmazekr -zsxwidpmekacrb -pwczxsedakirbm - -vfupqwdshxygkmrzol -wslmypfkogrxzqdvh -qwlxsrfzpgdomvyhk - -cmkdiapszuyb -bkpyduimascz - -vjpxmdzfwkuq -eycbgsnhltmapxo - -xmnklfpugdewtj -okzerxjuihqcptdmysf - -yajvhbtowixds -dvynabxjiwhs -asydoixzbh -ihjdxbasyk -lifxrbspedahyumcg - -snragze -gmszrnae -egrazsn -ensragz - -odi -odi -ido -odi - -mvogdzfker -veongkrpzmdf -vgekmrzdfo -ombjdfqykergvz -hzsormkdgfve - -l -l -l -ly - -kgnpliuwmsebhjfrcyqxotvazd -mzqryvgsftauxpcknehbiwojld - -vczkrabfmhpyjteui -merjtikybvaugz -aieydktjrmzvubg -yeslqoibauvtkmrjz - -vi -vip -eigv -vix -iv - -mcuknbexfowszpvtyi -ztmfwonvcsapqxyieb -etowynxzcpirmbvsf -wjfnyvopzetkmiusbcx - -ywhqemsx -banksxwemy -ymsexw -smyewx -szxeywm - -yvqtnsahzpwebgr -zgtjnevyapwbhrs -jzynhrpvwgsbat -obtynrfwslcahvzgpm -eytrpagzwsjvbkhn - -ynwutpmvhj -mvwjpuyt -wupzyjvmt - -kwnyatozcmdqbpsvejfrxug -vkzjaogfmqsxhnyctpu -cozypjmtvlxquakgfnsi - -qrwtgecs -daley -emh - -qmbjwe -qebfwjm -qewjm -qjiwem - -dqc -tad -qdcs - -zrvjnfpe -zpefunyvqc -fzpvern -pnefvz -envpfz - -nduhkvstxqmbfyr -ufmhbtkqvxdnpy -hdntqxuvmbkfy - -ot -o -yv -xp - -evkrifstpzgbahl -vzkmdtchgseajyfub -bgtnkxvheoaqifsz - -wxec -wfuie -awmj -ghsnkvwbqor -mcexwf - -teosna -tnkb -ptm -t - -r -na -ykx - -jdl -mzjtp - -xbpj -tzrkxba -xnbjmgosv -mhxbw - -j -j -j -j - -xn -lrvt -htg -mr - -hafkb -fkab -afbk - -zlyxomawvuib -vxwzbaymolui - -tcdfzgx -ql -luo -uh - -ixtbluahoeqgsv -eovsiglhuqanxtb - -ntychjig -chyijtgn -hcnjtiyg -tgjnhiyc -tgjiychn - -khomqatzscydwunfe -ygoazrdukh -zokbrlyaudjh - -uojynifthzvcgqp -phnvryfbtucl - -sbeizdtjopxu -nouqbeykmszd - -cga -gca -cag - -hiogxbslyptfc -pilwxcthogysb -holsibtcypfgx - -oahyr -pkjro - -qgfkj -gjzk -jgvk - -kw -wk -kw -wk - -bxvmnks -sfmbva - -fsocn -ygfopn - -wbarmxtfyjzenicvlhps -aefdirlyvzjpwtcmnh -rqymwfzjpevchiaotnl -lietnypmcrvhowfjaz -ztjcehympnavirlwf - -gqsnyhtafdcbki -yncbhxiakgpqt - -mikyzoxflndetbp -ebqdwiopkhyfxnl -jbscverlgfyauo - -bkewpj -n -solnxmfr - -ybxa -ybxa -xyba -byax -abxy - -sgbo -sg - -unvqlyhzdaxrcwg -dxvhaugicrzqnlw -mrplcqatdxzbuvgnwh -vzaurnhdgqlxwc -ucdwavqhylxrngz - -frhdaek -fpuwosv - -qm -m -smg \ No newline at end of file diff --git a/day7/__init__.py b/day7/__init__.py deleted file mode 100644 index 375c67a..0000000 --- a/day7/__init__.py +++ /dev/null @@ -1,58 +0,0 @@ -import re -from functools import lru_cache -from typing import Iterator, Any, Generator, Dict - -from aoc import BaseAssignment - -rule_matcher = re.compile( - r'(?P\w+\ \w+) bags contain (?Pno other bags|(((, )?\d \w+\ \w+ bags?)+))\.') -contains_matcher = re.compile(r'(?P\d+) (?P\w+\ \w+) bags?') - - -class Assignment(BaseAssignment): - def get_bag_contents(self, contents: str) -> dict: - content_dict = {} - if contents != 'no other bags': - for content in contents.split(', '): - count = contains_matcher.match(content).groupdict() - content_dict[count['bag']] = int(count['count']) - - return content_dict - - def read_input(self, example=False) -> Dict: - self.mapping = {} - - for line in super().read_input(example): - match = rule_matcher.match(line) - rule = match.groupdict() - self.mapping[rule['bag']] = self.get_bag_contents(rule['contains']) - - -class AssignmentOne(Assignment): - @lru_cache - def contains_shiny_gold_bag(self, bag): - if 'shiny gold' in self.mapping[bag]: - return True - - return any([ - self.contains_shiny_gold_bag(containing_bag) - for containing_bag in self.mapping[bag].keys() - ]) - - def run(self, input) -> Any: - nr_of_possibilities = 0 - for bag, contains in self.mapping.items(): - if self.contains_shiny_gold_bag(bag): - nr_of_possibilities += 1 - return nr_of_possibilities - - -class AssignmentTwo(Assignment): - def nr_of_bags_inside(self, bag): - return sum([ - count + (count * self.nr_of_bags_inside(containing_bag)) - for containing_bag, count in self.mapping[bag].items() - ]) - - def run(self, input) -> Any: - return self.nr_of_bags_inside('shiny gold') diff --git a/day7/example.txt b/day7/example.txt deleted file mode 100644 index e7ba02e..0000000 --- a/day7/example.txt +++ /dev/null @@ -1,9 +0,0 @@ -light red bags contain 1 bright white bag, 2 muted yellow bags. -dark orange bags contain 3 bright white bags, 4 muted yellow bags. -bright white bags contain 1 shiny gold bag. -muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. -shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. -dark olive bags contain 3 faded blue bags, 4 dotted black bags. -vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. -faded blue bags contain no other bags. -dotted black bags contain no other bags. \ No newline at end of file diff --git a/day7/input.txt b/day7/input.txt deleted file mode 100644 index 555513a..0000000 --- a/day7/input.txt +++ /dev/null @@ -1,594 +0,0 @@ -light salmon bags contain 5 dark brown bags, 2 dotted coral bags, 5 mirrored turquoise bags. -drab magenta bags contain 1 vibrant purple bag, 5 dark lime bags, 2 clear silver bags. -striped coral bags contain 2 dim lime bags. -drab cyan bags contain 1 dark lime bag. -bright purple bags contain 5 posh salmon bags, 1 posh blue bag, 1 shiny lavender bag. -dull tomato bags contain 2 shiny maroon bags, 1 posh salmon bag, 4 posh teal bags, 5 dark orange bags. -faded aqua bags contain 3 striped salmon bags, 5 dim purple bags, 3 shiny gold bags, 4 drab indigo bags. -drab maroon bags contain 2 dark gray bags, 3 mirrored tan bags, 4 pale blue bags, 4 dim black bags. -posh blue bags contain 1 mirrored maroon bag, 4 striped lavender bags. -dull orange bags contain 2 light aqua bags, 2 striped chartreuse bags, 4 dim bronze bags. -vibrant fuchsia bags contain 1 clear orange bag, 1 plaid turquoise bag, 3 posh maroon bags, 4 light silver bags. -posh violet bags contain 5 plaid violet bags, 5 vibrant turquoise bags, 1 pale orange bag. -light gray bags contain 5 vibrant tan bags, 4 shiny tomato bags, 5 muted olive bags. -striped teal bags contain 2 drab cyan bags, 3 dull tomato bags, 1 light gold bag, 1 dark beige bag. -muted orange bags contain 3 pale blue bags, 1 muted coral bag. -wavy magenta bags contain 1 dotted crimson bag. -dark fuchsia bags contain 3 plaid yellow bags, 4 dim green bags. -drab beige bags contain 4 dull brown bags. -light olive bags contain 2 posh magenta bags, 4 dim crimson bags. -wavy chartreuse bags contain 3 plaid magenta bags. -dim cyan bags contain 4 light lime bags, 3 dim crimson bags, 1 striped green bag. -vibrant violet bags contain 2 dark teal bags, 5 vibrant turquoise bags. -drab tomato bags contain 2 vibrant salmon bags, 5 bright salmon bags. -mirrored lime bags contain 5 striped teal bags, 3 dim lavender bags, 4 dim cyan bags, 2 dotted green bags. -wavy plum bags contain 4 plaid magenta bags. -dim brown bags contain 1 dull yellow bag, 2 plaid beige bags. -posh magenta bags contain 4 vibrant turquoise bags. -posh maroon bags contain 3 dark teal bags, 2 striped plum bags. -pale magenta bags contain 4 dim chartreuse bags, 3 mirrored salmon bags. -shiny blue bags contain 2 shiny violet bags, 3 pale red bags, 5 pale salmon bags. -clear tan bags contain 3 wavy lavender bags. -pale bronze bags contain 3 muted chartreuse bags. -pale tomato bags contain 1 dotted brown bag, 1 posh lavender bag, 2 striped violet bags. -dotted lime bags contain 3 light magenta bags, 2 clear yellow bags, 3 faded olive bags. -shiny tan bags contain 2 dotted fuchsia bags, 5 dull crimson bags, 5 clear orange bags. -light lavender bags contain 3 shiny tomato bags, 5 drab beige bags, 3 mirrored yellow bags. -wavy bronze bags contain 2 muted green bags, 3 dotted bronze bags. -faded brown bags contain 3 drab gold bags, 3 dotted red bags, 1 dim white bag. -muted cyan bags contain 4 striped turquoise bags. -faded tan bags contain 1 muted red bag, 1 mirrored tan bag, 4 shiny purple bags. -dark violet bags contain 4 posh tomato bags. -posh purple bags contain 3 shiny violet bags, 4 clear indigo bags. -vibrant orange bags contain 1 dim salmon bag, 1 vibrant olive bag, 4 drab fuchsia bags. -dull blue bags contain 5 pale lavender bags, 3 dark lavender bags, 1 mirrored yellow bag. -muted white bags contain 3 dark salmon bags, 4 posh bronze bags, 5 pale plum bags. -striped lavender bags contain 4 faded plum bags, 2 dark tomato bags, 2 plaid teal bags. -dark gold bags contain 4 dark lime bags. -dull magenta bags contain 2 muted chartreuse bags. -striped cyan bags contain 4 dotted red bags, 3 drab lime bags. -dotted bronze bags contain 1 clear magenta bag, 2 bright salmon bags. -clear lavender bags contain 4 dim lime bags. -plaid salmon bags contain 2 dark orange bags. -posh silver bags contain 5 muted fuchsia bags, 4 muted crimson bags. -bright plum bags contain 3 vibrant salmon bags, 3 clear tan bags. -posh beige bags contain 3 mirrored lavender bags, 4 pale olive bags, 2 dotted black bags. -bright yellow bags contain 3 mirrored violet bags. -plaid green bags contain 5 striped black bags, 5 posh bronze bags, 5 mirrored teal bags. -plaid coral bags contain 5 plaid beige bags, 5 drab chartreuse bags. -dotted maroon bags contain 4 dotted indigo bags, 4 dotted coral bags. -dotted chartreuse bags contain 2 wavy turquoise bags, 2 posh indigo bags, 3 plaid silver bags, 2 mirrored salmon bags. -dark yellow bags contain 1 posh brown bag, 4 light tan bags, 2 clear fuchsia bags, 5 dotted black bags. -dull lavender bags contain 4 plaid green bags, 1 striped plum bag, 3 drab teal bags. -bright maroon bags contain 1 dotted tan bag, 4 light olive bags, 5 posh cyan bags. -vibrant gold bags contain 2 faded gold bags. -dim lavender bags contain 3 dark silver bags, 1 striped violet bag, 2 dotted bronze bags, 1 striped black bag. -light tomato bags contain 2 striped chartreuse bags. -dull yellow bags contain 5 drab tomato bags. -dotted coral bags contain 1 dark blue bag, 1 mirrored teal bag, 1 drab tomato bag. -pale lime bags contain 3 clear cyan bags, 5 pale silver bags, 4 wavy olive bags. -wavy red bags contain 3 vibrant gray bags, 4 shiny teal bags, 4 clear maroon bags. -pale beige bags contain 2 shiny teal bags, 2 posh fuchsia bags, 4 dark aqua bags, 4 posh orange bags. -striped tomato bags contain 2 light coral bags. -shiny violet bags contain 4 vibrant chartreuse bags, 3 wavy lavender bags. -plaid teal bags contain 3 mirrored teal bags. -clear black bags contain 2 faded beige bags, 4 faded tan bags, 1 light salmon bag, 5 wavy white bags. -clear yellow bags contain 2 dull tan bags, 5 plaid gold bags. -faded green bags contain 5 light brown bags. -bright coral bags contain 5 dotted teal bags, 2 mirrored gray bags, 3 wavy lime bags. -muted bronze bags contain 3 dim maroon bags, 3 shiny beige bags, 4 light bronze bags. -vibrant crimson bags contain 4 dim brown bags, 3 dotted maroon bags, 4 vibrant gold bags, 5 dull tomato bags. -pale green bags contain 4 plaid beige bags. -dull green bags contain 2 clear salmon bags, 2 dark bronze bags. -dotted tan bags contain 1 dim tan bag. -muted plum bags contain 3 faded crimson bags, 5 muted violet bags, 5 striped violet bags, 2 drab silver bags. -faded coral bags contain 2 dark plum bags, 1 muted cyan bag, 3 vibrant beige bags. -vibrant brown bags contain 4 striped maroon bags, 4 bright cyan bags. -drab coral bags contain 3 vibrant coral bags, 3 dark aqua bags. -striped chartreuse bags contain 2 vibrant salmon bags, 2 posh bronze bags, 3 drab teal bags. -bright indigo bags contain 4 faded plum bags. -clear olive bags contain 4 muted turquoise bags, 1 dotted olive bag. -drab yellow bags contain 1 dim brown bag, 4 plaid green bags, 2 posh red bags. -striped purple bags contain 2 mirrored orange bags, 4 vibrant chartreuse bags, 1 pale orange bag, 2 shiny green bags. -mirrored olive bags contain 1 faded gold bag, 1 vibrant chartreuse bag, 5 faded brown bags, 3 wavy indigo bags. -dull aqua bags contain 3 muted black bags, 2 muted orange bags, 2 pale lime bags, 4 dark plum bags. -light lime bags contain 5 plaid beige bags, 5 shiny gold bags, 3 plaid plum bags. -vibrant beige bags contain 2 posh maroon bags, 3 dotted plum bags. -mirrored yellow bags contain 4 dotted crimson bags, 3 drab olive bags, 1 faded bronze bag, 2 striped violet bags. -mirrored plum bags contain 4 dotted gray bags, 1 striped fuchsia bag, 3 dim yellow bags. -faded beige bags contain 5 striped chartreuse bags, 3 faded bronze bags, 3 dark lime bags. -drab crimson bags contain 2 dull green bags, 1 muted teal bag. -shiny salmon bags contain 3 wavy olive bags, 1 faded crimson bag, 1 clear chartreuse bag. -vibrant turquoise bags contain 4 drab black bags. -dim yellow bags contain 5 shiny blue bags. -wavy maroon bags contain 5 pale brown bags. -dark coral bags contain 2 bright teal bags, 3 bright green bags, 3 drab coral bags. -bright beige bags contain 3 faded salmon bags, 5 plaid coral bags. -posh gray bags contain 5 bright silver bags, 1 pale brown bag. -plaid orange bags contain 3 faded olive bags, 4 muted fuchsia bags, 5 vibrant turquoise bags. -faded indigo bags contain 1 muted silver bag, 3 dim green bags, 3 faded purple bags, 1 plaid beige bag. -drab lavender bags contain 5 light blue bags. -light coral bags contain 3 pale orange bags, 2 plaid teal bags. -posh indigo bags contain 2 drab olive bags, 2 dim cyan bags, 2 light teal bags. -muted fuchsia bags contain 2 wavy white bags, 1 dark tan bag. -muted brown bags contain 5 drab coral bags, 4 dull brown bags, 4 mirrored black bags. -bright aqua bags contain 3 clear orange bags. -faded magenta bags contain 1 striped violet bag, 1 dull lavender bag. -clear brown bags contain 4 mirrored green bags, 1 clear fuchsia bag, 2 vibrant violet bags, 1 shiny aqua bag. -clear green bags contain 3 dotted brown bags, 2 faded plum bags, 3 dotted beige bags, 2 striped brown bags. -dull violet bags contain 2 vibrant violet bags, 4 light coral bags, 3 clear black bags. -light gold bags contain no other bags. -striped silver bags contain 4 clear bronze bags, 1 striped plum bag, 3 dull yellow bags. -dull indigo bags contain 5 wavy olive bags, 3 shiny tomato bags, 3 vibrant lime bags, 4 dark beige bags. -dark teal bags contain 2 dark blue bags, 4 mirrored teal bags, 4 posh bronze bags, 1 muted gold bag. -light cyan bags contain 3 drab olive bags, 2 plaid teal bags, 5 vibrant indigo bags. -clear turquoise bags contain 3 bright teal bags. -clear white bags contain 4 faded black bags. -plaid olive bags contain 3 vibrant blue bags, 5 posh gold bags. -drab turquoise bags contain 3 striped black bags, 1 dull brown bag, 5 dark lime bags. -plaid tomato bags contain 1 dim orange bag. -wavy lime bags contain 3 muted crimson bags, 2 shiny green bags. -dim salmon bags contain 4 faded black bags, 4 mirrored teal bags, 4 drab tomato bags, 2 vibrant green bags. -pale lavender bags contain 2 striped violet bags. -pale violet bags contain 5 dim magenta bags, 1 muted cyan bag, 5 clear red bags, 2 pale fuchsia bags. -dark purple bags contain 2 light red bags. -drab blue bags contain 2 dark blue bags, 2 dotted bronze bags, 4 bright teal bags. -wavy white bags contain 3 dim red bags, 1 vibrant chartreuse bag, 3 muted gray bags. -muted beige bags contain 1 shiny purple bag. -dim aqua bags contain 1 muted yellow bag, 3 drab green bags, 2 plaid magenta bags. -pale orange bags contain 5 mirrored teal bags, 4 dark aqua bags, 5 shiny gold bags. -clear coral bags contain 5 dark white bags, 5 light blue bags. -shiny orange bags contain 3 vibrant black bags, 2 pale purple bags, 2 drab salmon bags, 5 light blue bags. -wavy gray bags contain 3 bright red bags, 3 plaid yellow bags, 1 muted cyan bag, 1 plaid maroon bag. -plaid chartreuse bags contain 3 dotted brown bags, 3 pale lime bags. -shiny green bags contain 1 muted blue bag, 4 dull blue bags, 5 mirrored lavender bags, 1 posh coral bag. -faded black bags contain 4 posh bronze bags, 5 vibrant coral bags, 1 plaid teal bag. -wavy yellow bags contain 5 mirrored indigo bags, 4 clear salmon bags, 2 bright tomato bags. -plaid gold bags contain 5 vibrant violet bags, 4 faded violet bags. -striped maroon bags contain 2 dark aqua bags, 3 mirrored teal bags. -plaid white bags contain 3 mirrored green bags. -dim gray bags contain 1 drab cyan bag, 1 plaid plum bag. -light aqua bags contain 4 pale olive bags, 1 dark olive bag, 1 wavy black bag, 3 drab lime bags. -dim tan bags contain 4 dark teal bags. -mirrored fuchsia bags contain 4 posh lavender bags, 1 drab coral bag, 1 faded white bag. -bright tomato bags contain 4 faded beige bags. -dim plum bags contain 3 striped yellow bags, 1 mirrored maroon bag, 4 shiny gray bags, 5 bright plum bags. -bright white bags contain 5 shiny lavender bags, 1 drab salmon bag. -pale gold bags contain 2 faded olive bags. -plaid red bags contain 4 plaid aqua bags, 3 pale brown bags. -striped violet bags contain no other bags. -pale white bags contain 5 faded silver bags, 3 drab silver bags, 1 mirrored white bag, 1 muted violet bag. -posh bronze bags contain 4 pale brown bags. -dull black bags contain 5 vibrant chartreuse bags, 3 striped indigo bags, 2 drab fuchsia bags, 1 vibrant gold bag. -light indigo bags contain 1 light green bag, 3 striped silver bags. -mirrored indigo bags contain 5 pale tan bags, 5 plaid plum bags, 3 wavy aqua bags, 5 drab violet bags. -clear cyan bags contain 5 drab teal bags. -clear orange bags contain 5 mirrored purple bags. -clear gray bags contain 1 wavy brown bag, 5 drab teal bags, 5 muted coral bags. -striped green bags contain no other bags. -plaid black bags contain 5 dim yellow bags, 4 mirrored blue bags, 5 plaid plum bags, 1 striped aqua bag. -wavy violet bags contain 2 clear brown bags, 5 mirrored silver bags, 5 vibrant silver bags. -dotted olive bags contain 1 posh bronze bag, 5 striped violet bags. -drab green bags contain 1 posh orange bag, 1 clear chartreuse bag. -dotted red bags contain 3 striped plum bags, 2 bright crimson bags. -dim turquoise bags contain 4 striped bronze bags, 3 light plum bags. -wavy green bags contain 3 drab fuchsia bags, 3 shiny brown bags. -wavy gold bags contain 4 mirrored violet bags. -dark magenta bags contain 3 faded silver bags. -shiny silver bags contain 2 muted orange bags, 2 dull indigo bags, 1 vibrant magenta bag, 3 shiny aqua bags. -pale purple bags contain 1 dark cyan bag, 2 pale brown bags, 3 light silver bags, 1 plaid aqua bag. -pale silver bags contain 2 pale red bags, 2 striped chartreuse bags, 3 faded bronze bags. -vibrant olive bags contain 5 drab turquoise bags, 4 wavy olive bags, 5 plaid beige bags. -wavy coral bags contain 1 clear orange bag. -faded gold bags contain 4 mirrored turquoise bags, 5 dim gray bags, 1 faded bronze bag. -vibrant gray bags contain 3 light tan bags, 5 plaid teal bags, 5 dotted olive bags. -drab aqua bags contain 1 dotted olive bag, 5 dark indigo bags, 3 pale fuchsia bags. -vibrant indigo bags contain 4 pale coral bags, 1 clear green bag, 1 dim chartreuse bag, 5 mirrored turquoise bags. -dotted teal bags contain 5 clear indigo bags, 1 faded bronze bag. -muted salmon bags contain 1 light teal bag, 1 light cyan bag, 3 muted crimson bags. -shiny fuchsia bags contain 1 wavy brown bag, 3 plaid green bags, 2 shiny silver bags. -dark tan bags contain 5 dotted plum bags, 3 striped orange bags, 4 faded gold bags, 4 mirrored turquoise bags. -bright crimson bags contain 5 bright salmon bags, 4 clear salmon bags, 2 faded bronze bags. -clear silver bags contain 3 striped purple bags. -faded yellow bags contain 2 striped turquoise bags, 4 pale purple bags, 5 wavy aqua bags, 3 posh gold bags. -muted gray bags contain no other bags. -light purple bags contain 2 wavy indigo bags, 1 dark white bag, 1 faded beige bag. -clear fuchsia bags contain 2 drab violet bags, 5 drab black bags, 4 shiny tomato bags. -wavy blue bags contain 3 faded beige bags, 2 plaid coral bags. -faded crimson bags contain 4 dark lime bags, 1 striped chartreuse bag. -bright lavender bags contain 5 plaid green bags, 3 striped turquoise bags, 2 dotted black bags. -faded lavender bags contain 5 plaid magenta bags. -dull turquoise bags contain 5 posh bronze bags, 4 dark white bags. -mirrored tan bags contain 4 vibrant white bags. -pale teal bags contain 4 pale aqua bags, 1 shiny maroon bag, 5 vibrant silver bags. -wavy black bags contain 3 dotted teal bags, 1 pale green bag, 5 drab blue bags, 5 dotted coral bags. -shiny turquoise bags contain 2 muted gray bags, 4 dark white bags. -vibrant white bags contain 4 shiny tomato bags. -pale tan bags contain 5 plaid coral bags. -striped white bags contain 3 light cyan bags, 4 mirrored orange bags, 2 dotted brown bags. -dark lime bags contain 1 light gold bag, 1 dotted green bag, 4 dotted brown bags, 1 shiny gold bag. -dim coral bags contain 1 posh black bag, 3 faded coral bags. -shiny crimson bags contain 1 mirrored tan bag. -drab teal bags contain 2 mirrored turquoise bags, 4 vibrant chartreuse bags, 4 mirrored teal bags, 4 light gold bags. -dotted plum bags contain 5 faded bronze bags, 5 vibrant blue bags. -faded tomato bags contain 1 dark aqua bag, 1 striped green bag. -faded red bags contain 2 bright gold bags, 1 clear gray bag. -faded olive bags contain 3 dotted plum bags, 1 dotted coral bag, 3 dim indigo bags, 2 dull tan bags. -dotted black bags contain 1 drab fuchsia bag, 3 dotted bronze bags, 1 pale orange bag, 5 dull salmon bags. -plaid turquoise bags contain 5 drab turquoise bags, 5 plaid violet bags, 4 posh maroon bags. -pale plum bags contain 5 bright chartreuse bags, 5 shiny brown bags. -dull gray bags contain 5 light yellow bags. -dark tomato bags contain 4 mirrored teal bags, 4 clear magenta bags, 1 striped green bag, 1 muted gray bag. -light bronze bags contain 5 muted tan bags, 5 drab maroon bags, 3 dim crimson bags, 2 dull turquoise bags. -dull silver bags contain 1 muted gray bag, 2 posh purple bags. -shiny gray bags contain 2 faded plum bags, 2 striped turquoise bags. -vibrant black bags contain 3 light salmon bags, 3 drab maroon bags. -mirrored silver bags contain 1 plaid beige bag, 3 dim lime bags, 4 dotted brown bags. -posh tomato bags contain 4 plaid white bags, 2 plaid plum bags. -mirrored brown bags contain 5 faded white bags, 2 posh white bags, 5 dark plum bags. -muted yellow bags contain 2 pale yellow bags, 5 posh salmon bags, 1 bright red bag, 1 plaid beige bag. -dull coral bags contain 5 drab white bags, 2 wavy silver bags, 2 light olive bags. -shiny brown bags contain 5 dotted coral bags, 2 dotted brown bags, 2 drab chartreuse bags. -light fuchsia bags contain 3 striped plum bags, 4 dark brown bags, 4 dim lime bags. -bright cyan bags contain 2 shiny violet bags, 1 dark white bag, 2 drab chartreuse bags, 2 dim fuchsia bags. -dotted orange bags contain 4 mirrored black bags, 2 wavy maroon bags, 3 vibrant violet bags. -pale blue bags contain 5 drab cyan bags, 3 plaid green bags, 3 pale red bags, 2 dim crimson bags. -dim red bags contain 2 dark blue bags, 3 muted red bags, 1 striped violet bag, 2 dotted coral bags. -posh plum bags contain 1 wavy silver bag, 3 dark beige bags, 1 dotted gray bag. -drab orange bags contain 5 muted salmon bags, 1 clear crimson bag. -dotted purple bags contain 1 dull yellow bag, 1 vibrant green bag, 4 clear bronze bags. -shiny chartreuse bags contain 4 shiny tomato bags. -shiny maroon bags contain 3 dull lavender bags. -clear magenta bags contain no other bags. -pale cyan bags contain no other bags. -dim olive bags contain 1 striped plum bag, 2 light maroon bags, 5 plaid olive bags, 4 dim violet bags. -faded chartreuse bags contain 5 wavy salmon bags, 5 dull bronze bags, 1 dull silver bag. -posh coral bags contain 3 faded white bags. -dark beige bags contain 3 dim indigo bags, 4 dull tomato bags, 2 muted crimson bags, 2 drab chartreuse bags. -wavy salmon bags contain 4 pale red bags, 3 dull fuchsia bags. -dim magenta bags contain 1 muted fuchsia bag, 5 vibrant violet bags. -faded gray bags contain 5 faded tomato bags, 4 posh violet bags, 2 shiny white bags, 2 dark tomato bags. -light turquoise bags contain 2 dark magenta bags. -dark maroon bags contain 2 clear magenta bags, 4 clear indigo bags. -faded turquoise bags contain 2 vibrant turquoise bags, 1 dim turquoise bag. -dull bronze bags contain 4 mirrored salmon bags, 5 bright plum bags. -posh yellow bags contain 2 vibrant coral bags, 5 dotted coral bags. -drab olive bags contain 5 clear salmon bags. -clear plum bags contain 5 shiny beige bags, 3 vibrant tan bags, 1 clear green bag, 1 dull orange bag. -shiny white bags contain 2 striped lime bags, 2 wavy turquoise bags, 4 pale purple bags, 3 vibrant gray bags. -drab gray bags contain 2 dim chartreuse bags. -light silver bags contain 1 faded fuchsia bag, 1 pale aqua bag, 4 dim green bags. -wavy beige bags contain 4 light tan bags, 5 dark brown bags. -light red bags contain 1 striped plum bag, 3 dark coral bags, 5 striped crimson bags, 5 pale indigo bags. -clear blue bags contain 3 dotted bronze bags, 2 striped chartreuse bags. -dull plum bags contain 3 mirrored coral bags, 1 shiny violet bag, 3 wavy magenta bags, 1 bright crimson bag. -drab fuchsia bags contain 1 dotted bronze bag, 2 vibrant salmon bags, 1 pale turquoise bag, 4 shiny gold bags. -muted gold bags contain 5 dark blue bags, 4 light gold bags. -posh black bags contain 2 wavy beige bags, 1 bright plum bag. -drab purple bags contain 5 muted white bags. -light teal bags contain 5 dull yellow bags, 1 light gold bag. -mirrored teal bags contain no other bags. -mirrored maroon bags contain 5 faded yellow bags, 5 faded gold bags. -dull olive bags contain 4 posh brown bags, 4 muted purple bags, 2 dim beige bags, 5 wavy black bags. -wavy tomato bags contain 1 drab beige bag, 3 vibrant tan bags. -vibrant silver bags contain 3 striped bronze bags, 2 dotted green bags, 4 dull brown bags, 2 muted gray bags. -dark lavender bags contain 2 plaid maroon bags, 1 vibrant blue bag, 5 striped black bags, 1 light teal bag. -mirrored white bags contain 3 posh magenta bags. -wavy aqua bags contain 4 pale silver bags. -wavy orange bags contain 3 drab bronze bags, 3 muted olive bags. -drab violet bags contain 1 vibrant turquoise bag, 5 dull yellow bags, 1 faded white bag. -light crimson bags contain 1 light tan bag, 3 bright teal bags, 5 bright crimson bags. -muted black bags contain 3 drab salmon bags, 1 clear blue bag, 5 wavy lavender bags. -faded salmon bags contain 1 vibrant magenta bag. -wavy brown bags contain 2 posh maroon bags. -posh salmon bags contain 5 wavy brown bags, 5 shiny brown bags, 2 dark lime bags. -posh chartreuse bags contain 3 wavy green bags, 3 drab maroon bags, 5 wavy violet bags, 3 clear turquoise bags. -muted coral bags contain 3 vibrant tan bags, 1 bright tomato bag, 1 vibrant salmon bag, 5 light green bags. -light black bags contain 4 bright olive bags. -light white bags contain 5 pale lavender bags. -striped aqua bags contain 5 dim gray bags. -dark brown bags contain 1 dim lavender bag, 5 wavy maroon bags. -drab tan bags contain 5 striped gray bags, 2 mirrored fuchsia bags, 5 dark maroon bags. -dim violet bags contain 2 bright olive bags, 3 bright indigo bags, 2 faded bronze bags, 4 drab blue bags. -light tan bags contain 2 wavy green bags, 3 posh maroon bags, 2 striped black bags. -posh brown bags contain 1 bright cyan bag, 4 wavy gray bags. -dotted white bags contain 1 faded black bag, 2 clear green bags. -shiny tomato bags contain 3 wavy lavender bags, 2 dotted brown bags, 5 plaid plum bags, 1 striped orange bag. -dotted silver bags contain 5 dotted tan bags, 3 wavy magenta bags, 2 pale plum bags. -shiny lime bags contain 2 drab white bags, 5 posh cyan bags. -pale fuchsia bags contain 2 wavy yellow bags, 1 wavy magenta bag, 4 dull black bags, 2 dotted tan bags. -dotted crimson bags contain 5 dark blue bags. -bright salmon bags contain 3 light gold bags, 4 clear magenta bags, 4 mirrored turquoise bags. -striped brown bags contain 3 mirrored turquoise bags, 4 striped green bags. -clear crimson bags contain 4 light violet bags, 3 muted yellow bags, 2 muted salmon bags, 1 dull brown bag. -plaid silver bags contain 5 bright teal bags. -striped black bags contain 4 dark silver bags, 2 clear salmon bags, 2 dotted green bags, 5 muted gold bags. -muted lime bags contain 5 dotted indigo bags, 4 striped lime bags, 2 dark lavender bags. -bright red bags contain 2 pale turquoise bags, 2 posh purple bags. -dotted violet bags contain 4 posh indigo bags, 5 light aqua bags, 5 dark plum bags. -wavy crimson bags contain 3 dim white bags, 2 vibrant green bags, 3 mirrored green bags, 5 muted magenta bags. -bright brown bags contain 2 light tan bags, 5 dull coral bags, 1 muted tan bag, 2 striped purple bags. -muted violet bags contain 2 vibrant coral bags, 4 dotted green bags. -dim indigo bags contain 1 bright crimson bag, 3 dotted brown bags. -bright tan bags contain 1 muted chartreuse bag, 5 dull chartreuse bags, 2 muted cyan bags. -drab brown bags contain 1 drab teal bag, 1 pale lavender bag, 3 clear violet bags, 4 muted blue bags. -dark plum bags contain 5 dotted bronze bags, 1 plaid maroon bag, 4 faded gold bags. -drab indigo bags contain 1 wavy brown bag, 5 light lime bags, 3 drab blue bags. -light beige bags contain 5 dim crimson bags, 3 dull black bags, 5 muted black bags. -mirrored black bags contain 4 drab olive bags, 3 dark lavender bags. -clear beige bags contain 3 dark lavender bags, 3 muted fuchsia bags, 5 dull blue bags. -dark bronze bags contain 3 dim lavender bags, 2 vibrant magenta bags, 1 striped silver bag, 5 faded beige bags. -mirrored gold bags contain 5 pale gold bags, 5 dotted green bags, 4 posh bronze bags. -bright turquoise bags contain 1 striped indigo bag, 2 muted purple bags, 5 shiny tomato bags, 3 dotted brown bags. -dark red bags contain 2 striped purple bags, 4 clear brown bags, 2 striped cyan bags. -muted aqua bags contain 2 dark tan bags, 5 clear orange bags, 5 clear fuchsia bags. -shiny plum bags contain 2 dark tan bags. -faded plum bags contain 4 clear blue bags, 1 dim lime bag, 2 striped brown bags. -light brown bags contain 3 posh gold bags, 5 muted turquoise bags. -mirrored blue bags contain 2 muted lime bags, 3 plaid blue bags, 2 plaid magenta bags, 4 dim gold bags. -dark cyan bags contain 5 wavy olive bags, 5 plaid teal bags. -dark turquoise bags contain 5 muted lime bags, 3 muted gold bags, 3 light lime bags, 4 vibrant beige bags. -posh cyan bags contain 4 clear indigo bags, 4 faded tomato bags, 2 plaid teal bags, 3 muted red bags. -plaid purple bags contain 3 dark teal bags, 3 drab coral bags, 2 posh lavender bags. -faded fuchsia bags contain 4 muted cyan bags, 1 vibrant violet bag, 4 bright red bags. -bright silver bags contain 3 mirrored black bags. -muted tomato bags contain 2 posh olive bags. -clear salmon bags contain 5 dark aqua bags. -posh lime bags contain 2 dim crimson bags, 4 clear aqua bags. -dotted turquoise bags contain 4 dotted lime bags, 4 dotted red bags, 3 dark coral bags, 4 striped gold bags. -posh olive bags contain 3 plaid green bags. -dotted cyan bags contain 1 wavy silver bag, 2 pale red bags. -mirrored violet bags contain 4 dark salmon bags, 4 plaid magenta bags. -wavy lavender bags contain 1 clear chartreuse bag. -shiny yellow bags contain 4 dotted indigo bags. -posh lavender bags contain 2 striped chartreuse bags. -pale maroon bags contain 5 posh lavender bags, 4 plaid teal bags, 3 posh turquoise bags, 2 plaid green bags. -plaid maroon bags contain 4 pale cyan bags, 2 bright teal bags, 1 striped plum bag, 2 plaid teal bags. -faded orange bags contain 5 drab turquoise bags, 5 dull bronze bags. -clear gold bags contain 5 wavy lime bags, 4 light maroon bags, 2 muted fuchsia bags, 4 dark salmon bags. -dark green bags contain 1 striped violet bag, 1 dim crimson bag. -mirrored tomato bags contain 1 clear red bag, 4 dull indigo bags. -striped magenta bags contain 5 shiny plum bags, 4 mirrored crimson bags, 4 dull plum bags. -plaid fuchsia bags contain 1 striped indigo bag, 5 drab gray bags. -clear violet bags contain 1 wavy green bag, 4 dull lavender bags, 2 drab black bags, 5 dim salmon bags. -bright chartreuse bags contain 3 clear salmon bags, 5 dim bronze bags, 3 dark lime bags, 3 pale cyan bags. -faded purple bags contain 4 dark lavender bags, 4 pale fuchsia bags. -mirrored aqua bags contain 4 faded black bags, 5 dim gold bags, 1 mirrored gray bag. -dotted blue bags contain 2 bright salmon bags, 5 drab fuchsia bags, 2 shiny gold bags. -shiny gold bags contain 4 clear magenta bags, 3 mirrored turquoise bags, 2 plaid maroon bags, 5 bright crimson bags. -pale olive bags contain 3 striped green bags. -vibrant red bags contain 1 faded violet bag, 4 shiny yellow bags, 4 wavy coral bags. -plaid indigo bags contain 4 striped salmon bags, 4 clear turquoise bags, 2 dotted tomato bags. -posh green bags contain 1 dark brown bag, 4 dotted black bags. -shiny beige bags contain 4 dotted teal bags. -faded white bags contain 5 muted violet bags, 4 dotted blue bags, 2 dull lavender bags, 4 bright teal bags. -plaid yellow bags contain 1 mirrored yellow bag, 3 striped violet bags, 2 striped silver bags. -drab plum bags contain 4 dim indigo bags, 5 clear cyan bags. -muted purple bags contain 3 dark white bags. -plaid blue bags contain 1 striped chartreuse bag, 1 light white bag. -plaid tan bags contain 1 wavy chartreuse bag. -muted magenta bags contain 4 striped turquoise bags, 5 clear lime bags. -striped olive bags contain 3 drab black bags. -faded lime bags contain 4 pale black bags. -faded silver bags contain 2 pale magenta bags, 2 posh olive bags, 2 muted fuchsia bags. -bright orange bags contain 5 muted gray bags, 4 clear black bags. -wavy indigo bags contain 3 dull white bags, 3 pale brown bags, 3 dotted brown bags. -pale indigo bags contain 1 vibrant chartreuse bag, 5 dotted red bags. -dark olive bags contain 5 faded gold bags. -pale gray bags contain 3 striped chartreuse bags, 3 striped plum bags. -dull maroon bags contain 1 plaid yellow bag, 3 muted red bags. -mirrored turquoise bags contain no other bags. -dull lime bags contain 3 muted red bags. -posh aqua bags contain 4 pale beige bags. -mirrored lavender bags contain 1 striped maroon bag, 4 dark plum bags, 1 mirrored black bag, 2 shiny tomato bags. -muted teal bags contain 5 faded silver bags. -muted olive bags contain 4 pale tomato bags. -vibrant teal bags contain 3 posh gold bags, 1 striped orange bag, 4 vibrant aqua bags, 5 wavy tan bags. -bright black bags contain 2 striped lavender bags, 5 drab coral bags, 5 clear gray bags. -plaid brown bags contain 3 striped plum bags. -vibrant tan bags contain 2 posh maroon bags, 3 plaid yellow bags, 1 muted green bag. -dark salmon bags contain 4 plaid violet bags. -plaid violet bags contain 1 mirrored teal bag. -striped beige bags contain 5 mirrored blue bags. -vibrant maroon bags contain 5 drab olive bags, 2 plaid green bags, 3 striped plum bags, 5 mirrored coral bags. -clear indigo bags contain 1 dim fuchsia bag, 3 dull turquoise bags. -clear teal bags contain 5 muted violet bags. -bright fuchsia bags contain 3 vibrant indigo bags, 3 drab silver bags, 5 pale tan bags. -dark chartreuse bags contain 2 posh maroon bags, 1 dotted beige bag, 3 dotted silver bags. -drab white bags contain 1 vibrant coral bag, 3 striped orange bags, 4 striped green bags, 1 dim salmon bag. -clear lime bags contain 5 dotted coral bags, 2 dim bronze bags, 2 dotted bronze bags. -shiny bronze bags contain 4 muted violet bags. -vibrant coral bags contain 4 striped chartreuse bags. -drab bronze bags contain 3 posh maroon bags, 2 vibrant white bags, 5 pale lavender bags. -posh teal bags contain 5 dark tomato bags, 1 clear magenta bag, 5 posh salmon bags, 1 shiny tomato bag. -mirrored bronze bags contain 1 mirrored maroon bag. -dim orange bags contain 1 dim beige bag, 4 striped maroon bags. -muted silver bags contain 3 shiny black bags, 4 drab yellow bags. -bright lime bags contain 2 clear fuchsia bags, 2 striped maroon bags. -vibrant bronze bags contain 4 drab olive bags, 3 plaid fuchsia bags, 5 pale gold bags, 4 mirrored orange bags. -bright violet bags contain 1 bright red bag, 3 dull lime bags. -mirrored orange bags contain 1 dotted indigo bag, 3 wavy lavender bags, 2 light teal bags, 1 drab chartreuse bag. -dull tan bags contain 2 muted green bags. -dotted tomato bags contain 2 dull magenta bags, 2 plaid cyan bags. -faded violet bags contain 1 dark cyan bag, 2 light tomato bags, 2 vibrant green bags, 3 posh gray bags. -shiny cyan bags contain 2 faded red bags, 2 striped beige bags, 5 mirrored coral bags, 2 shiny tomato bags. -plaid gray bags contain 1 posh teal bag, 5 drab turquoise bags. -dotted gold bags contain 1 faded violet bag, 3 vibrant lavender bags. -faded maroon bags contain 1 posh red bag, 2 plaid violet bags, 1 vibrant magenta bag. -dim tomato bags contain 3 vibrant yellow bags. -muted red bags contain 4 striped violet bags, 3 plaid turquoise bags. -striped turquoise bags contain 1 drab coral bag, 4 plaid maroon bags, 4 drab violet bags, 5 drab silver bags. -clear bronze bags contain no other bags. -drab gold bags contain 5 clear indigo bags, 2 light purple bags, 1 faded gold bag, 1 muted gray bag. -dotted beige bags contain 1 striped bronze bag, 4 plaid maroon bags, 3 dotted green bags. -posh orange bags contain 3 mirrored fuchsia bags, 5 wavy olive bags, 5 shiny tomato bags, 4 pale orange bags. -striped orange bags contain 1 pale brown bag. -wavy olive bags contain 3 striped bronze bags. -vibrant lime bags contain 1 dotted red bag, 1 vibrant tan bag, 2 striped turquoise bags, 1 mirrored plum bag. -wavy turquoise bags contain 1 muted cyan bag. -bright bronze bags contain 5 bright blue bags, 1 pale red bag, 5 shiny blue bags. -bright green bags contain 4 dim brown bags, 5 dotted blue bags. -light orange bags contain 4 dark blue bags. -shiny coral bags contain 1 mirrored gray bag, 2 drab fuchsia bags. -mirrored magenta bags contain 2 muted gray bags, 3 shiny tomato bags, 2 drab plum bags. -mirrored purple bags contain 3 dull turquoise bags, 1 dotted coral bag, 4 plaid violet bags, 1 drab fuchsia bag. -vibrant blue bags contain 1 faded tomato bag, 3 dark blue bags. -vibrant salmon bags contain 1 mirrored teal bag, 4 dark blue bags, 1 vibrant chartreuse bag. -vibrant lavender bags contain 5 dotted beige bags, 1 striped silver bag, 2 dull tan bags. -dark gray bags contain 5 wavy maroon bags, 5 bright teal bags. -pale crimson bags contain 1 plaid beige bag, 4 posh gold bags. -shiny indigo bags contain 4 dull green bags. -shiny aqua bags contain 3 posh magenta bags. -pale chartreuse bags contain 4 muted crimson bags. -mirrored coral bags contain 5 bright salmon bags, 3 striped bronze bags. -dotted fuchsia bags contain 5 dark black bags. -vibrant magenta bags contain 3 striped black bags, 5 drab tomato bags, 3 light lime bags. -plaid lavender bags contain 1 drab salmon bag. -muted lavender bags contain 2 faded gold bags. -dim lime bags contain 2 faded beige bags. -dim white bags contain 5 shiny violet bags. -striped bronze bags contain 4 dark aqua bags, 4 clear salmon bags. -pale aqua bags contain 5 muted chartreuse bags, 2 dull brown bags. -plaid aqua bags contain 2 striped turquoise bags, 3 mirrored fuchsia bags. -mirrored crimson bags contain 3 pale brown bags, 4 mirrored teal bags, 4 wavy maroon bags. -dotted indigo bags contain 3 drab tomato bags. -dim crimson bags contain 1 striped chartreuse bag. -mirrored cyan bags contain 4 striped fuchsia bags, 5 drab gold bags, 2 mirrored tan bags, 2 clear magenta bags. -drab black bags contain 5 dark blue bags, 4 striped green bags. -striped blue bags contain 3 clear white bags, 4 vibrant yellow bags, 4 faded blue bags. -mirrored salmon bags contain 4 dotted maroon bags, 3 dotted green bags, 2 dim lavender bags. -striped red bags contain 3 bright fuchsia bags, 3 dull black bags, 4 pale indigo bags, 3 vibrant gold bags. -pale red bags contain 1 plaid plum bag, 5 dark silver bags, 3 dull lavender bags. -dim purple bags contain 2 vibrant olive bags. -dotted aqua bags contain 5 muted cyan bags. -dull red bags contain 5 dull salmon bags, 5 dotted brown bags, 4 plaid coral bags, 2 wavy green bags. -clear chartreuse bags contain 5 wavy maroon bags, 4 dotted purple bags, 3 dark gray bags, 5 pale brown bags. -shiny red bags contain 3 dim green bags. -light violet bags contain 3 dull coral bags. -muted tan bags contain 1 dull turquoise bag. -dull gold bags contain 3 drab fuchsia bags, 5 pale orange bags. -dull teal bags contain 2 posh olive bags, 3 dark yellow bags, 5 dull magenta bags, 2 dotted tan bags. -plaid crimson bags contain 4 vibrant crimson bags, 1 pale tomato bag, 1 posh silver bag. -clear tomato bags contain 4 striped silver bags, 3 wavy gray bags. -dull fuchsia bags contain 4 vibrant violet bags, 1 dim bronze bag, 2 dim cyan bags. -pale brown bags contain 1 mirrored teal bag, 2 mirrored turquoise bags, 5 striped green bags. -plaid cyan bags contain 5 pale maroon bags, 4 drab salmon bags, 3 pale magenta bags. -drab lime bags contain 4 muted tan bags, 1 faded crimson bag, 4 wavy maroon bags, 1 vibrant green bag. -bright olive bags contain 2 vibrant brown bags, 3 pale silver bags. -posh crimson bags contain 5 mirrored turquoise bags, 1 pale gray bag, 4 bright silver bags. -mirrored green bags contain 4 dotted indigo bags, 5 muted magenta bags, 2 muted blue bags, 4 drab turquoise bags. -striped tan bags contain 4 dull turquoise bags, 3 bright indigo bags, 5 pale red bags. -dim chartreuse bags contain 2 mirrored turquoise bags, 3 dotted beige bags. -posh fuchsia bags contain 1 drab salmon bag, 4 striped orange bags, 4 dark olive bags. -faded bronze bags contain 5 bright salmon bags. -dotted green bags contain 3 dark blue bags. -dim silver bags contain 2 bright beige bags, 3 pale coral bags. -muted green bags contain 3 dim brown bags, 4 clear bronze bags, 2 bright teal bags. -clear maroon bags contain 4 posh salmon bags. -vibrant chartreuse bags contain 2 dark blue bags. -posh gold bags contain 4 shiny gold bags, 5 dark teal bags. -light chartreuse bags contain 4 faded silver bags, 2 light yellow bags. -faded cyan bags contain 3 muted silver bags, 4 vibrant bronze bags, 1 dotted orange bag. -dotted salmon bags contain 2 mirrored purple bags, 2 light teal bags, 2 mirrored lavender bags. -plaid plum bags contain 3 dotted bronze bags, 5 bright salmon bags, 2 light gold bags, 4 drab teal bags. -dull salmon bags contain 4 muted green bags, 4 dim indigo bags, 1 faded tomato bag, 3 faded gold bags. -muted maroon bags contain 4 faded bronze bags, 3 dull salmon bags, 4 dull turquoise bags. -light maroon bags contain 5 plaid blue bags, 2 bright gray bags, 4 vibrant chartreuse bags, 3 dark indigo bags. -dark white bags contain 4 striped bronze bags. -posh turquoise bags contain 4 plaid gray bags, 1 dim indigo bag. -dark indigo bags contain 3 dull chartreuse bags, 2 shiny salmon bags, 1 muted magenta bag, 1 dotted indigo bag. -wavy silver bags contain 1 dotted salmon bag, 1 pale gray bag, 5 plaid turquoise bags. -pale black bags contain 5 dark olive bags. -mirrored beige bags contain 4 dim purple bags. -shiny black bags contain 2 mirrored turquoise bags, 5 pale silver bags, 2 dotted red bags, 4 dark aqua bags. -dotted lavender bags contain 4 bright beige bags, 1 clear silver bag, 3 bright orange bags. -dotted gray bags contain 3 posh red bags, 1 dotted brown bag, 4 muted red bags, 4 faded coral bags. -plaid magenta bags contain 4 vibrant blue bags, 3 dark tomato bags, 1 vibrant coral bag, 5 dim salmon bags. -muted indigo bags contain 2 drab fuchsia bags, 5 dim teal bags. -light plum bags contain 5 dark aqua bags, 4 muted purple bags, 5 wavy lavender bags, 2 drab beige bags. -dark silver bags contain no other bags. -bright gold bags contain 2 wavy maroon bags, 2 clear tan bags, 5 striped chartreuse bags. -pale coral bags contain 4 posh magenta bags, 1 posh lavender bag. -clear aqua bags contain 4 wavy maroon bags, 5 light green bags, 4 dark olive bags. -vibrant plum bags contain 4 mirrored indigo bags, 4 vibrant silver bags. -dotted yellow bags contain 1 pale teal bag. -vibrant cyan bags contain 4 dotted maroon bags, 4 dark aqua bags, 2 posh fuchsia bags. -shiny lavender bags contain 5 light gold bags. -dull beige bags contain 2 faded coral bags, 4 clear magenta bags. -bright magenta bags contain 4 faded white bags, 3 drab black bags. -drab salmon bags contain 2 bright green bags, 1 dim fuchsia bag, 1 shiny black bag. -striped plum bags contain 4 posh bronze bags, 4 dotted green bags, 2 dark aqua bags, 3 vibrant chartreuse bags. -striped gray bags contain 1 dim black bag, 2 striped tan bags, 5 light lime bags, 3 striped black bags. -dark blue bags contain 1 mirrored teal bag, 3 striped violet bags. -pale yellow bags contain 5 posh teal bags, 5 clear magenta bags, 3 plaid violet bags, 5 light green bags. -dark crimson bags contain 3 shiny tomato bags, 5 striped yellow bags, 2 shiny violet bags, 1 striped fuchsia bag. -clear purple bags contain 5 vibrant tan bags, 2 mirrored green bags, 3 faded black bags. -vibrant green bags contain 4 clear salmon bags, 1 pale turquoise bag, 2 mirrored turquoise bags. -faded teal bags contain 3 plaid beige bags. -pale turquoise bags contain 2 bright crimson bags, 4 pale cyan bags, 4 mirrored turquoise bags, 3 dotted coral bags. -striped crimson bags contain 5 pale lavender bags, 3 striped tomato bags, 1 plaid aqua bag. -muted crimson bags contain 1 dotted bronze bag, 5 striped black bags, 4 dark blue bags. -dull cyan bags contain 2 shiny coral bags, 2 plaid turquoise bags, 5 dim green bags, 2 plaid violet bags. -clear red bags contain 4 shiny maroon bags. -dim teal bags contain 3 bright red bags, 5 dim tan bags. -plaid lime bags contain 5 bright white bags, 3 light indigo bags, 1 striped black bag, 5 vibrant beige bags. -dim gold bags contain 5 dark silver bags. -dotted brown bags contain 5 striped bronze bags, 4 drab tomato bags, 2 dim lavender bags. -dim blue bags contain 2 posh gray bags, 1 dim gray bag. -muted chartreuse bags contain 5 mirrored turquoise bags, 5 dull brown bags, 4 muted brown bags, 1 striped silver bag. -dim fuchsia bags contain 5 plaid beige bags, 1 drab fuchsia bag, 5 shiny gold bags. -mirrored gray bags contain 1 pale lavender bag, 5 shiny violet bags, 2 dull lime bags. -striped gold bags contain 5 clear beige bags. -light blue bags contain 3 mirrored turquoise bags, 1 posh teal bag, 2 pale brown bags, 3 shiny maroon bags. -drab red bags contain 4 striped tan bags. -dull chartreuse bags contain 2 striped bronze bags, 2 plaid bronze bags. -pale salmon bags contain 4 bright teal bags, 3 drab silver bags, 4 dotted bronze bags, 2 mirrored silver bags. -posh white bags contain 5 dark beige bags, 5 striped turquoise bags, 5 pale purple bags, 3 pale salmon bags. -shiny olive bags contain 4 bright tomato bags, 1 light teal bag, 5 pale cyan bags. -striped lime bags contain 4 muted turquoise bags, 5 dark white bags, 4 dark fuchsia bags, 3 faded black bags. -dull purple bags contain 5 dotted indigo bags, 3 pale coral bags, 3 pale beige bags, 5 shiny green bags. -dull brown bags contain 4 dim lavender bags, 2 striped black bags, 2 pale lavender bags. -muted blue bags contain 4 drab blue bags, 1 muted red bag, 3 light white bags. -wavy cyan bags contain 1 pale purple bag, 1 muted lavender bag, 5 vibrant magenta bags, 1 plaid yellow bag. -shiny purple bags contain 2 dark bronze bags. -plaid bronze bags contain 3 wavy blue bags. -posh tan bags contain 4 clear bronze bags, 4 bright cyan bags. -dim green bags contain 4 dim beige bags. -dark black bags contain 4 dim chartreuse bags, 1 muted blue bag, 2 pale silver bags. -drab chartreuse bags contain 2 vibrant blue bags, 5 dark tomato bags, 5 dark brown bags. -vibrant aqua bags contain 1 muted white bag, 5 posh teal bags. -striped salmon bags contain 5 plaid coral bags, 1 drab black bag, 4 bright salmon bags. -plaid beige bags contain 3 dotted bronze bags. -bright gray bags contain 3 dim plum bags, 1 dull white bag, 5 plaid white bags, 3 drab brown bags. -dull white bags contain 2 dotted coral bags, 1 dotted purple bag, 2 striped brown bags. -dim bronze bags contain 5 striped green bags, 1 dotted bronze bag, 5 striped violet bags, 1 muted gray bag. -striped indigo bags contain 5 shiny maroon bags, 3 clear chartreuse bags, 3 plaid gray bags, 5 muted gold bags. -vibrant tomato bags contain 2 posh gray bags, 2 plaid beige bags, 4 wavy olive bags. -posh red bags contain 2 pale cyan bags, 4 dim salmon bags. -wavy fuchsia bags contain 2 shiny lime bags. -bright teal bags contain 2 striped black bags, 5 light gold bags, 3 mirrored teal bags, 2 bright salmon bags. -shiny teal bags contain 5 faded purple bags, 4 wavy silver bags. -bright blue bags contain 4 drab maroon bags, 1 dark fuchsia bag. -dull crimson bags contain 1 dark tomato bag, 4 striped green bags. -shiny magenta bags contain 4 shiny coral bags, 4 bright gray bags, 4 shiny purple bags, 5 plaid coral bags. -faded blue bags contain 4 striped tan bags. -vibrant yellow bags contain 3 dim crimson bags. -vibrant purple bags contain 2 dotted tan bags, 1 wavy fuchsia bag, 5 plaid lime bags. -dark orange bags contain 3 faded tomato bags, 1 mirrored salmon bag, 5 pale tomato bags. -light magenta bags contain 2 clear blue bags. -dim beige bags contain 2 mirrored red bags, 2 faded white bags, 4 plaid beige bags, 4 drab olive bags. -dotted magenta bags contain 2 vibrant lime bags. -light yellow bags contain 3 wavy chartreuse bags, 5 drab turquoise bags, 5 dull black bags. -dark aqua bags contain 1 dark tomato bag. -mirrored chartreuse bags contain 3 posh gray bags, 2 wavy bronze bags, 5 plaid teal bags. -mirrored red bags contain 3 faded black bags. -muted turquoise bags contain 5 plaid teal bags. -dim maroon bags contain 3 vibrant white bags, 1 muted turquoise bag, 5 drab red bags, 5 muted teal bags. -drab silver bags contain 5 mirrored red bags. -wavy tan bags contain 2 dark salmon bags, 2 posh bronze bags, 2 dark tan bags, 1 drab turquoise bag. -dim black bags contain 3 dark olive bags. -striped yellow bags contain 2 clear magenta bags, 3 dim indigo bags, 1 muted green bag. -wavy purple bags contain 1 vibrant lime bag, 1 clear bronze bag, 4 dark white bags. -light green bags contain 3 wavy lavender bags, 5 dim cyan bags. -striped fuchsia bags contain 3 dotted green bags, 2 plaid maroon bags. -wavy teal bags contain 4 muted olive bags, 2 muted purple bags. \ No newline at end of file diff --git a/day8/__init__.py b/day8/__init__.py deleted file mode 100644 index c6d086a..0000000 --- a/day8/__init__.py +++ /dev/null @@ -1,75 +0,0 @@ -from copy import copy -from typing import Generator, Iterator, Any, List, Tuple - -from aoc import BaseAssignment - - -class Assignment(BaseAssignment): - @staticmethod - def acc(line, accumulated_value, value): - return line + 1, accumulated_value + value - - @staticmethod - def jmp(line, accumulated_value, value): - return line + value, accumulated_value - - @staticmethod - def nop(line, accumulated_value, value): - return line + 1, accumulated_value - - def read_input(self, example=False) -> List: - return list(super().read_input(example)) - - def parse_item(self, item: str) -> Tuple: - instruction, value = item.split(' ') - - return getattr(self, instruction), int(value) - - def run(self, input: List) -> int: - executed_lines = set() - accumulated_value = 0 - line = 0 - - while True: - if line in executed_lines: - raise Exception( - f'Loop detected at line: {line}. ' - f'Accumulated value: {accumulated_value}' - ) - - try: - instruction, value = input[line] - except IndexError: - break - - executed_lines.add(line) - line, accumulated_value = instruction( - line, accumulated_value, value - ) - - return accumulated_value - - -class AssignmentOne(Assignment): - pass - - -class AssignmentTwo(Assignment): - def patch_instructions(self, input: List) -> Generator: - for index, (instruction, value) in enumerate(input): - if instruction is self.acc: - continue - - patched_input = copy(input) - patched_input[index] = ( - self.nop if instruction is self.jmp else self.jmp, - value - ) - yield patched_input - - def run(self, input: List) -> int: - for patched_input in self.patch_instructions(input): - try: - return super().run(patched_input) - except Exception: - continue diff --git a/day8/example.txt b/day8/example.txt deleted file mode 100644 index 6fee349..0000000 --- a/day8/example.txt +++ /dev/null @@ -1,9 +0,0 @@ -nop +0 -acc +1 -jmp +4 -acc +3 -jmp -3 -acc -99 -acc +1 -jmp -4 -acc +6 \ No newline at end of file diff --git a/day8/input.txt b/day8/input.txt deleted file mode 100644 index 340826c..0000000 --- a/day8/input.txt +++ /dev/null @@ -1,624 +0,0 @@ -acc -7 -acc +6 -acc +4 -nop +191 -jmp +199 -acc +44 -acc -9 -jmp +505 -acc -12 -acc +45 -jmp +204 -jmp +129 -acc +17 -nop +287 -jmp +584 -acc +16 -jmp +363 -acc +4 -nop +142 -acc +34 -nop +345 -jmp +522 -jmp +53 -acc -10 -jmp +524 -jmp +492 -jmp +319 -acc -9 -jmp +550 -acc -19 -jmp +15 -acc +24 -jmp +30 -acc -19 -acc +12 -acc -2 -jmp +274 -nop +91 -acc +10 -acc +4 -jmp +501 -acc +49 -acc +29 -jmp +488 -jmp +504 -jmp +277 -acc +20 -acc +34 -jmp -40 -acc +10 -acc -4 -acc -19 -acc +38 -jmp +239 -acc -16 -acc -3 -nop +513 -jmp +526 -jmp +131 -nop +539 -acc -11 -jmp +470 -acc +30 -jmp +166 -acc +17 -acc -16 -nop +315 -jmp +364 -acc +15 -nop -61 -acc -12 -nop +147 -jmp -31 -acc -9 -jmp +324 -acc +0 -jmp +1 -jmp +321 -acc +0 -acc +6 -acc -17 -acc +13 -jmp +461 -jmp +184 -acc +22 -jmp +182 -jmp +504 -nop +131 -acc +12 -acc -6 -acc +29 -jmp +187 -acc +17 -jmp +67 -jmp -2 -acc +50 -acc +17 -jmp +442 -acc +8 -nop +146 -acc -12 -acc +32 -jmp +237 -jmp +1 -acc +34 -acc +1 -acc +18 -jmp +274 -acc +17 -acc -12 -jmp +282 -acc +49 -acc +11 -acc +28 -acc +40 -jmp +79 -acc +19 -acc -8 -nop +87 -jmp +347 -acc +48 -nop +189 -jmp +419 -acc +31 -jmp +1 -acc +31 -jmp +1 -jmp -94 -nop -45 -nop +412 -acc -14 -acc +35 -jmp -49 -jmp +177 -jmp +127 -jmp +360 -jmp +114 -acc -11 -nop +248 -jmp -64 -acc +31 -acc +23 -acc +4 -nop +110 -jmp +61 -acc +45 -nop +444 -jmp +218 -jmp -131 -acc +36 -jmp -142 -nop +361 -acc -3 -acc +6 -jmp +161 -acc +24 -acc -7 -acc +4 -acc +31 -jmp +91 -jmp -20 -jmp +1 -nop -11 -jmp -146 -acc +25 -acc +33 -jmp +52 -acc -7 -jmp +82 -acc +7 -acc +21 -acc +6 -jmp +397 -acc +12 -acc +5 -acc -9 -acc +24 -jmp +371 -acc +50 -acc +47 -acc +19 -jmp +238 -jmp +396 -acc -16 -nop +394 -jmp +180 -acc +1 -acc +40 -jmp +237 -acc +22 -nop -30 -jmp -129 -acc +22 -jmp +232 -acc +23 -acc +27 -acc +47 -jmp +133 -acc +0 -nop +30 -acc +11 -acc -9 -jmp +381 -jmp +75 -jmp -64 -acc -15 -acc +29 -acc +49 -jmp +195 -nop +113 -acc -16 -nop +312 -acc +6 -jmp -44 -acc +26 -acc +40 -jmp +272 -jmp +83 -jmp +365 -acc +24 -acc +4 -jmp +29 -acc +8 -jmp -137 -acc +13 -jmp +1 -acc +33 -nop -182 -jmp +22 -jmp +9 -nop +20 -acc +14 -nop +291 -jmp -28 -jmp -83 -acc +18 -acc +5 -jmp +32 -acc +48 -nop -128 -acc +28 -jmp +225 -acc +29 -nop +280 -jmp +304 -acc +37 -acc +50 -acc +30 -jmp +131 -jmp -60 -acc +27 -jmp +272 -jmp +358 -acc -1 -acc +37 -jmp +203 -acc +1 -acc +37 -acc +12 -acc -16 -jmp +263 -acc -16 -acc +30 -jmp +86 -acc +26 -acc +6 -jmp +344 -jmp -147 -jmp -185 -acc -5 -acc -3 -acc +7 -acc +9 -jmp -205 -nop -85 -acc -4 -acc -1 -jmp +266 -acc +19 -nop -143 -acc -3 -jmp -12 -acc +12 -acc -18 -jmp +326 -acc +39 -jmp +165 -nop -279 -acc +19 -acc +46 -acc +5 -jmp -163 -acc -13 -jmp +1 -acc +33 -acc +44 -jmp -62 -acc -10 -acc +7 -jmp +240 -acc -19 -jmp -190 -acc -12 -jmp -167 -acc -2 -nop -288 -acc -13 -jmp +303 -acc +24 -jmp -283 -jmp +309 -nop +190 -acc +38 -acc -12 -jmp -47 -acc +15 -acc +31 -jmp -259 -nop +154 -acc +25 -acc +8 -jmp -295 -acc +37 -acc +34 -acc -18 -acc +41 -jmp +156 -acc +17 -acc +37 -jmp -243 -nop -318 -acc +45 -acc +33 -jmp +139 -acc -6 -acc +34 -acc +25 -acc +3 -jmp +260 -jmp +1 -acc +24 -jmp +154 -acc +34 -acc -19 -jmp +211 -acc +28 -jmp +98 -acc +45 -jmp -143 -acc +41 -acc +8 -acc +33 -nop +217 -jmp +119 -acc +21 -jmp -150 -acc +25 -acc +19 -jmp +1 -acc +20 -jmp +209 -acc +43 -acc +18 -acc +2 -jmp -159 -acc +25 -acc +20 -acc -4 -acc +45 -jmp +89 -nop +33 -acc +27 -jmp +190 -acc +47 -acc +36 -jmp +180 -acc +3 -jmp +1 -jmp -349 -jmp -6 -jmp -244 -acc +2 -acc +42 -jmp -357 -acc +3 -jmp -377 -acc +31 -nop -292 -acc +6 -acc +9 -jmp -212 -jmp -91 -acc +11 -jmp +119 -acc -18 -acc +38 -acc +31 -jmp -261 -jmp +1 -acc +2 -jmp -197 -acc +0 -jmp +1 -acc +40 -acc +31 -acc +4 -acc +45 -jmp -68 -acc -17 -acc +8 -nop -384 -jmp -193 -acc +22 -nop +170 -acc -19 -acc +34 -jmp -321 -acc +46 -jmp +130 -acc -19 -jmp +115 -acc -12 -acc +23 -acc +16 -jmp -94 -acc +11 -nop -286 -jmp -276 -acc +36 -acc +25 -jmp -32 -acc +6 -acc +39 -jmp +171 -acc -5 -nop -131 -jmp -368 -acc +41 -acc -7 -nop -336 -jmp -428 -acc +21 -acc +45 -jmp -225 -acc -2 -acc +14 -acc +29 -jmp -439 -acc +36 -acc +26 -jmp -433 -acc +29 -acc +36 -acc +31 -jmp -232 -nop -210 -nop -44 -jmp -382 -nop -119 -acc +43 -jmp +1 -jmp -24 -acc -13 -acc +22 -acc +16 -jmp +90 -nop -443 -acc +23 -acc +15 -acc -3 -jmp -225 -jmp -448 -acc +21 -acc -19 -acc +23 -jmp +1 -jmp -447 -acc +36 -acc -1 -acc +31 -nop +8 -jmp +97 -jmp -96 -acc -16 -acc +7 -acc -2 -jmp +1 -jmp -237 -jmp +1 -acc -12 -acc +29 -acc -1 -jmp -188 -acc +8 -jmp -453 -nop -234 -acc +46 -acc +20 -acc +24 -jmp -68 -jmp -178 -acc +42 -jmp -469 -acc +19 -acc +35 -jmp -4 -acc +49 -jmp +65 -nop +15 -nop -209 -acc +27 -jmp -261 -acc +15 -jmp -344 -acc +13 -acc +43 -jmp -194 -jmp +1 -jmp -335 -nop -424 -acc -13 -nop -387 -jmp -333 -acc +33 -acc +30 -jmp -272 -acc +16 -acc +5 -acc +21 -acc +41 -jmp -312 -acc +50 -jmp -429 -nop +57 -jmp -212 -acc +7 -acc -13 -jmp -252 -jmp -277 -jmp -114 -jmp -528 -jmp -40 -jmp -275 -acc +27 -nop -322 -jmp -356 -acc -11 -jmp -96 -nop -9 -acc -15 -jmp -194 -acc +9 -acc +47 -acc +44 -jmp -459 -acc -2 -acc -12 -nop -354 -jmp -166 -acc +44 -acc +23 -jmp -503 -acc +47 -acc +39 -acc +10 -acc +14 -jmp -543 -acc +43 -jmp -25 -jmp -52 -acc -19 -jmp -423 -acc +35 -acc +22 -acc +10 -acc +16 -jmp -527 -jmp -482 -acc +2 -acc +21 -acc -17 -jmp -417 -jmp -282 -acc +16 -nop -424 -nop -527 -jmp -207 -acc +23 -acc +21 -jmp -503 -acc +17 -acc -14 -jmp -189 -acc +43 -acc +14 -acc +11 -nop -427 -jmp -54 -acc +8 -nop -37 -nop -542 -jmp -332 -acc +27 -jmp +7 -jmp -98 -acc +50 -acc +0 -acc +48 -acc +0 -jmp -517 -acc +15 -acc +10 -jmp -478 -jmp -141 -acc +0 -acc +18 -jmp -468 -acc +49 -jmp -112 -nop -536 -acc -14 -acc -13 -acc +34 -jmp +1 \ No newline at end of file diff --git a/day9/__init__.py b/day9/__init__.py deleted file mode 100644 index 0cf3770..0000000 --- a/day9/__init__.py +++ /dev/null @@ -1,63 +0,0 @@ -from typing import Any, Iterator, List - -from aoc import BaseAssignment - - -class Assignment(BaseAssignment): - def __init__(self, path, preamble_length=25): - super().__init__(path) - self.preamble_length = int(preamble_length) - - def read_input(self, example=False) -> List: - return list(super(Assignment, self).read_input(example)) - - def parse_item(self, item: str) -> Any: - return int(item) - - -class AssignmentOne(Assignment): - def find_invalid(self, input: List, preamble_length: int = 25) -> int: - preamble = sorted(input[:preamble_length]) - to_check = input[preamble_length] - - front_position = 0 - end_position = preamble_length - 1 - - while True: - if front_position is end_position: - return to_check - - sum = preamble[front_position] + preamble[end_position] - - if sum > to_check: - end_position -= 1 - elif sum < to_check: - front_position += 1 - else: - break - - return self.find_invalid(input[1:], preamble_length=preamble_length) - - def run(self, input: List) -> int: - return self.find_invalid( - input, preamble_length=int(self.preamble_length)) - - -class AssignmentTwo(AssignmentOne): - def find_weakness(self, input: List, invalid_nr: int) -> int: - for index, current_num in enumerate(input): - if index < 2: - continue - - items_to_check = input[:index] - sum_list = sum(items_to_check) - - if sum_list > invalid_nr: - break - elif sum_list == invalid_nr: - return min(items_to_check) + max(items_to_check) - - return self.find_weakness(input[1:], invalid_nr) - - def run(self, input: List) -> int: - return self.find_weakness(input, super().run(input)) diff --git a/day9/example.txt b/day9/example.txt deleted file mode 100644 index cda4246..0000000 --- a/day9/example.txt +++ /dev/null @@ -1,20 +0,0 @@ -35 -20 -15 -25 -47 -40 -62 -55 -65 -95 -102 -117 -150 -182 -127 -219 -299 -277 -309 -576 \ No newline at end of file diff --git a/day9/input.txt b/day9/input.txt deleted file mode 100644 index e9932d5..0000000 --- a/day9/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -18 -19 -46 -14 -29 -45 -40 -47 -25 -43 -36 -22 -21 -4 -32 -33 -37 -38 -26 -2 -42 -15 -5 -13 -31 -9 -6 -30 -7 -14 -10 -8 -69 -11 -12 -25 -16 -17 -22 -19 -18 -20 -51 -21 -24 -23 -26 -15 -60 -13 -29 -27 -44 -42 -28 -38 -30 -36 -31 -32 -33 -34 -35 -37 -55 -39 -40 -70 -41 -43 -78 -58 -73 -101 -60 -56 -57 -75 -59 -67 -71 -61 -68 -110 -69 -80 -72 -112 -76 -79 -144 -129 -114 -84 -99 -113 -132 -115 -148 -116 -118 -120 -128 -126 -187 -130 -190 -152 -229 -141 -151 -155 -299 -209 -163 -239 -183 -197 -331 -212 -228 -270 -231 -234 -236 -244 -246 -355 -256 -392 -271 -342 -292 -360 -296 -306 -318 -346 -602 -375 -380 -395 -534 -456 -440 -459 -470 -502 -478 -480 -490 -517 -527 -548 -563 -1082 -1136 -896 -1044 -614 -693 -698 -988 -755 -1065 -1352 -835 -899 -915 -942 -929 -1173 -958 -1043 -970 -1007 -1075 -1090 -1529 -1750 -1663 -1307 -1312 -1533 -1369 -1391 -1705 -1590 -1654 -1734 -1764 -1805 -2923 -2649 -1936 -1899 -2633 -1928 -2681 -1977 -3956 -2165 -2981 -2619 -3926 -2676 -2840 -2703 -4292 -4547 -4383 -4628 -3244 -3388 -3539 -6659 -6602 -5143 -3827 -5316 -8558 -3905 -5322 -4142 -4817 -4784 -9069 -5379 -11206 -5516 -7536 -10701 -6242 -7293 -6632 -15190 -11260 -7366 -7732 -7681 -7969 -8959 -9521 -8611 -8047 -10139 -8689 -16605 -8926 -10300 -10163 -10895 -15262 -12148 -13925 -12874 -15025 -13974 -19229 -14313 -15047 -15098 -15335 -15413 -16370 -16016 -16658 -27899 -16736 -18852 -35245 -17615 -19089 -19821 -29984 -23769 -23043 -30309 -31705 -26799 -26848 -35105 -28287 -30382 -42183 -30748 -30433 -31351 -31429 -32386 -32674 -33394 -44635 -34351 -50281 -36704 -60293 -69456 -42864 -49891 -46812 -49842 -53647 -55086 -85047 -119298 -60961 -75099 -62099 -73297 -94916 -61784 -62780 -63815 -75250 -96654 -67745 -104928 -71055 -111242 -133358 -89676 -92706 -151460 -134938 -101898 -158753 -108733 -122831 -122745 -123060 -293691 -126595 -165971 -142995 -125599 -130525 -146305 -194115 -402424 -179788 -138800 -226064 -160731 -182382 -235256 -191574 -194604 -210631 -224643 -269464 -231478 -231564 -245576 -253585 -248659 -252194 -276830 -256124 -411266 -371362 -299531 -354846 -654618 -340519 -330374 -459212 -343113 -695365 -431041 -386178 -402205 -405235 -435274 -456121 -633683 -504783 -477140 -586095 -701736 -500853 -508318 -654377 -555655 -640050 -741024 -642644 -673487 -1288060 -802325 -716552 -729291 -1497690 -1073685 -1273733 -821452 -807440 -891395 -912414 -933261 -977993 -1117190 -1140903 -1210054 -1009171 -1143497 -1063973 -1445843 -1195705 -1282694 -2428963 -1316131 -1390039 -1518877 -2095183 -2337706 -1536731 -1628892 -1698835 -2076758 -1712847 -1803809 -1824656 -1845675 -2962865 -1987164 -2073144 -2150074 -2152668 -2204876 -2207470 -2981529 -2478399 -3128369 -2908916 -4192040 -2706170 -2926770 -3055608 -3790973 -3165623 -3235566 -3327727 -3502644 -5835686 -3516656 -3628465 -3670331 -7131109 -5941736 -5116386 -4278020 -4913640 -4412346 -5186405 -4685869 -7293617 -5834539 -5615086 -6383335 -5632940 -9001309 -5982378 -6221231 -6401189 -6493350 -6563293 -6830371 -8188513 -7145121 -10907100 -10354082 -7948351 -11998421 -8690366 -9528732 -8963889 -15987022 -10318809 -9872274 -13376235 -16136864 -11248026 -12016275 -14983687 -17469257 -12203609 -12383567 -26433146 -12894539 -13056643 -13393664 -13975492 -15093472 -26270774 -16638717 -16912240 -18492621 -17654255 -22066601 -25440210 -18836163 -20191083 -21120300 -23264301 -26870031 -33085622 -23451635 -24399842 -24587176 -25098148 -51578243 -35095792 -34176943 -37980840 -35460265 -27369156 -29068964 -37160073 -33550957 -36146876 -62568016 -47164749 -41311383 -44778259 -45631293 -39027246 -52333265 -55938995 -48549783 -50321666 -77431413 -47851477 -48987018 -65898559 -52467304 -83311625 -68646749 -74487511 -69011222 -80925135 -76187319 -62619921 -115214565 -167547830 -136864130 -91943008 -131266670 -80338629 -83805505 -86878723 -87577029 -100184742 -117561005 -139346027 -116498226 -96838495 -129912153 -101454322 -115087225 -213051449 -150674830 -246410379 -154562929 -216668887 -138807240 -195425854 -142958550 -164144134 -267732572 -167217352 -167915658 -170684228 -185259827 -171382534 -244412872 -184415524 -265598456 -198292817 -211925720 -213336721 -334233094 -216541547 -240261562 -253894465 -369675351 -281765790 -335133010 -323222764 -505860018 -328218377 -354884270 -307102684 -331361486 -337901580 -379143072 -338599886 -342066762 -456803109 -355798058 -382708341 -594634061 -410218537 -536559485 -425262441 -429878268 -547903033 -523644231 -535660255 -585255951 -753480818 -588868474 -630325448 -662900742 -788164595 -635321061 -638464170 -645004264 -669263066 -734941130 -680666648 -694397944 -1055587889 -1363661010 -738506399 -792926878 -945878792 -1277125049 -1108900182 -1357298686 -1298221803 -776203571 -1275329712 -1124528729 -1174124425 -1343567390 -1219193922 -1310992096 -1759849790 -1527868008 -1428247939 -1283468434 -1314267330 -1349929714 -1375064592 -1917455607 -2517415725 -1531433277 -1514709970 -2328094104 -2959681216 -1722082363 -2811336442 -1885103753 -1900732300 -2126133285 -1950327996 -2884378519 -2552776668 -2549189017 -2502662356 -2530186018 -2594460530 -2633398148 -2597735764 -2658533026 -5542911545 -2664197044 -2724994306 -4032125695 -3046143247 -4048849002 -3236792333 -3399813723 -3607186116 -6636606056 -3622814663 -6048128775 -6109848472 -3851060296 -4076461281 -7094992249 -5032848374 -5051851373 -5079375035 -5097122886 -5124646548 -5192196294 -5231133912 -6843978449 -5322730070 -5771137553 -7268918028 -7448662725 -6445956970 -7122604528 -6859606996 -7006999839 -7022628386 -10068771633 -14029628225 -7473874959 -10514926364 -13866606835 -7927521577 -9109309655 -10084699747 -12705008871 -12219727414 -10176497921 -10316842842 -10355780460 -12253762298 -10553863982 -19522680326 -21340481794 -12630744549 -13305563966 -13452956809 -13468585356 -13882235382 -14480874798 -14934521416 -17199126307 -19663173637 -15401396536 -16583184614 -17036831232 -23021851713 -18104019498 -32584894296 -24022449338 -37475406147 -30076544308 -20672623302 -37709454534 -20909644442 -22807626280 -23184608531 -25936308515 -26083701358 -27187799348 -28240085382 -26921542165 -28403106772 -28363110180 -29415396214 -46507126270 -48026283817 -35140850730 -40058682945 -41059280570 -43480249582 -43694475015 -38776642800 -49268309889 -46993345800 -41582267744 -43717270722 -55590906120 -49272754622 -44094252973 -71720334964 -49120917046 -92815392061 -53005243523 -54109341513 -91506533399 -55284652345 -79835923370 -104405569391 -76408742014 -91720758832 -73917493530 -78835325745 -85769988600 -80358910544 -140841675878 -124053385559 -113302602708 -120126012736 -85299538466 -123190248152 -142088146683 -125529659060 -93367007595 -236492850860 -107114585036 -102126160569 -108289895868 -130518083527 -174235354249 -165424026929 -140584190811 -170556084577 -150326235544 -161708280480 -192137928453 -180961486314 -205425551202 -166128899144 -165658449010 -178666546061 -200481592631 -233951198406 -307551711771 -187425699035 -306713089955 -201656903463 -195493168164 -209240745605 -366092245096 -238807979395 -210416056437 -366610491775 -302292471291 -290910426355 -374535389217 -311140275388 -312034516024 -331787348154 -327366729490 -402138496094 -344324995071 -344795445205 -353084148045 -387907291666 -374159714225 -491392018986 -434301147559 -382918867199 -389082602498 -503949374754 -397150071627 -715274021156 -419656802042 -449224035832 -512708527728 -612554552531 -593202897646 -776673885311 -685675664605 -623174791412 -638507004878 -736003015244 -659154077644 -886868241953 -733878047703 -763981797113 -1269787109152 -750234219672 -763242316723 -1248711542972 -780068938826 -1048236680142 -1862990006798 -1418575943704 -1620746289656 -2003665156855 -2198644882530 -868880837874 -2005790124396 -1205757450177 -1216377689058 -1297661082522 -1324182669483 -3868780131194 -1261681796290 -1372385052581 -1393032125347 -1409388297316 -1497120364426 -1484112267375 -1513476536395 -1530303158498 -1543311255549 -1632123154597 -1648949776700 -1828305618968 -2532348947517 -2241265890455 -2946610859222 -2074638288051 -2193063507357 -2517830614574 -2085258526932 -2422135139235 -2585864465773 -2514038771580 -2654713921637 -2893804950887 -2634066848871 -2745794063665 -2765417177928 -4424108109385 -2893500564691 -2981232631801 -7009972575158 -3043779694893 -3073614414047 -3175434410146 -6249048824193 -4606987235568 -4250440758203 -4827130356228 -4159896814983 -7588219867369 -4599297298512 -7672911712559 -4507393666167 -10418705776224 -5076849060872 -5099903237353 -5689473181726 -5527871799758 -5399484026799 -14682884287717 -5511211241593 -5658917742619 -7497722523432 -5874733196492 -6025012326694 -6117394108940 -7425875168349 -7233511229030 -7335331225129 -8410337573186 -9327289819075 -10127169098270 -8987027171211 -12734815251928 -19190277953884 -9906877692966 -22180606811149 -9584242727039 -12825359195148 -10176752298225 -15596350874692 -10910695268392 -11170128984212 -11058401769418 -11385944438085 -11533650939111 -11683930069313 -14435349899880 -13210064421621 -28298000920089 -13350905337970 -21660820037381 -16560801048105 -16919573952168 -20713234257160 -18314316990286 -18571269898250 -24120759690013 -19491120420005 -19760995025264 -20083629991191 -20494937995431 -20642644496457 -29372718759704 -21235154067643 -31146939463349 -31469574429276 -39831651859200 -31553339764849 -23069874507398 -26560969759591 -45904924329156 -50681729449604 -32842025757975 -30270479290138 -31665222328256 -33480375000273 -34875118038391 -55785982018269 -40255933020695 -36885586888536 -38062390318255 -39252115445269 -39844625016455 -40403639521721 -47055907755022 -67698552251479 -41877798564100 -53340353797536 -59297544385898 -49630844266989 -54539448936674 -62321989952667 -54623214272247 -83941494643558 -72686650774430 -63112505048113 -113794234497717 -123786119660013 -68355493038664 -88215471835927 -98549659831167 -71760704926927 \ No newline at end of file -- cgit v1.3