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 pi