From 6a4a72f1f1f720c6508bce4d6c7d7aaa9a52f94b Mon Sep 17 00:00:00 2001 From: Steph Date: Thu, 1 Dec 2022 21:02:00 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=202=20stars=20:tada:!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2020/4/input | 1147 ++++++++++++++++++++++++++++++++++++++++++++ 2020/4/validate.d | 39 ++ 2020/4/validate2.d | 42 ++ 3 files changed, 1228 insertions(+) create mode 100644 2020/4/input create mode 100644 2020/4/validate.d create mode 100644 2020/4/validate2.d diff --git a/2020/4/input b/2020/4/input new file mode 100644 index 0000000..da6f840 --- /dev/null +++ b/2020/4/input @@ -0,0 +1,1147 @@ +eyr:2021 hgt:168cm hcl:#fffffd pid:180778832 byr:1923 ecl:amb iyr:2019 cid:241 + +hcl:#341e13 ecl:lzr eyr:2024 iyr:2014 pid:161cm byr:1991 cid:59 hgt:150cm + +iyr:2018 eyr:2027 +hgt:153cm +pid:642977294 ecl:gry hcl:#c0946f byr:1999 + +pid:#534f2e eyr:2022 +ecl:amb cid:268 +iyr:2028 hcl:2b079f +byr:2008 +hgt:185cm + +byr:2000 hgt:161cm ecl:blu +eyr:2030 pid:647793597 hcl:#a97842 iyr:2011 + +hcl:#3e335d +hgt:75cm +iyr:2010 byr:1940 ecl:#e0f130 +pid:434016528 +cid:138 eyr:2017 + +hcl:#6b5442 cid:185 hgt:163cm eyr:2023 +pid:510706612 byr:2001 ecl:amb iyr:2019 + +hcl:#6b5442 byr:1942 eyr:2022 +iyr:2016 pid:969898152 ecl:amb + +ecl:blu +pid:734638153 byr:1968 +hcl:#733820 eyr:2020 hgt:160cm +iyr:2019 + +iyr:2014 eyr:2020 byr:1996 +hgt:158cm ecl:oth pid:920487833 hcl:#888785 + +byr:1948 hcl:#341e13 cid:117 pid:802002577 +hgt:188cm eyr:2028 +ecl:blu iyr:2010 + +pid:9572562 hgt:65cm ecl:#ac200e iyr:2028 +byr:2002 +eyr:2031 hcl:z + +byr:2024 hcl:#866857 ecl:dne +eyr:2031 pid:#a28d39 +iyr:1920 hgt:158in + +pid:023850020 hgt:163cm iyr:2017 byr:1966 +cid:145 +ecl:grn eyr:2027 hcl:#ceb3a1 + +hcl:z byr:2008 eyr:2020 ecl:#e810c9 hgt:76cm pid:0485860220 + +hgt:154cm +hcl:#fffffd ecl:grn byr:1929 iyr:2019 pid:868514160 eyr:2026 + +cid:181 byr:1991 eyr:2026 hgt:166cm +hcl:#cfa07d +iyr:2010 ecl:hzl pid:248467397 + +eyr:2036 +hgt:60cm byr:2023 ecl:#7f7a50 iyr:1964 hcl:z pid:189cm +cid:233 + +ecl:#8b23b5 iyr:1940 hcl:#341e13 pid:806874850 hgt:150cm eyr:2033 byr:1930 + +hcl:#efcc98 ecl:#cf8dd0 byr:1939 hgt:75cm eyr:2023 pid:7912576181 +iyr:2014 + +cid:282 hcl:#18171d +ecl:blu pid:475471726 +hgt:158cm byr:1948 eyr:2030 iyr:2018 + +eyr:2030 iyr:2013 pid:843774570 hgt:186cm ecl:amb +byr:1961 hcl:#7d3b0c + +cid:239 +eyr:2021 pid:814286281 +ecl:gry byr:1945 iyr:2016 hcl:#efcc98 +hgt:167cm + +byr:1931 hcl:#cfa07d pid:148883217 iyr:2011 +hgt:172cm +eyr:2026 ecl:gry + +hcl:z +eyr:2037 +ecl:#bbb299 iyr:2015 byr:1931 hgt:186in +pid:8019203964 + +hgt:178 hcl:bf28b4 +eyr:2028 +ecl:zzz +pid:184cm byr:1935 iyr:2017 + +cid:195 byr:1936 +eyr:2028 hgt:168cm hcl:#a69e3b pid:836680712 +ecl:amb iyr:2020 + +hgt:65in +pid:580748663 eyr:2028 iyr:2018 ecl:amb hcl:#866857 byr:1969 + +iyr:2021 hcl:94dc65 +eyr:2027 +byr:2011 pid:172cm ecl:#84a05a +hgt:72cm + +pid:138102285 +hcl:#efcc98 iyr:2019 +ecl:grn cid:270 byr:1969 +hgt:187cm eyr:2027 + +eyr:2022 hgt:151cm pid:505032844 +ecl:brn iyr:2020 hcl:#cfa07d byr:1965 + +hcl:#7d3b0c +ecl:blu eyr:2024 +pid:7946112272 iyr:2010 cid:337 hgt:180in +byr:2011 + +hgt:65in iyr:2011 pid:774065195 eyr:2020 +ecl:brn +byr:1993 +hcl:#c0946f + +ecl:blu +hgt:65in +iyr:2014 +hcl:#6b5442 byr:1948 +pid:672157135 + +hcl:#2e5fe2 hgt:182cm byr:1989 +cid:205 iyr:2010 pid:116603730 eyr:2020 ecl:oth + +ecl:zzz iyr:2029 +pid:152cm hcl:z hgt:67cm +eyr:2032 +byr:1942 + +iyr:2012 hgt:180cm byr:1951 pid:777840558 cid:324 eyr:2029 +ecl:blu hcl:#341e13 + +hcl:z +cid:320 byr:1995 eyr:2022 pid:#0830f1 hgt:63 ecl:#9db56f iyr:2017 + +eyr:1996 iyr:2018 ecl:gmt +hgt:182cm pid:523450129 hcl:#6660a6 cid:76 byr:1959 + +iyr:2013 +pid:427856678 +eyr:2027 cid:146 +ecl:hzl +hgt:171cm + +eyr:2027 hgt:158cm +pid:54529307 hcl:z +ecl:hzl byr:2018 iyr:1980 + +iyr:2010 eyr:2026 +ecl:amb hcl:#a97842 pid:404930776 cid:277 byr:1994 hgt:184cm + +eyr:2028 hgt:150cm pid:#534041 iyr:2022 +hcl:#733820 +cid:130 ecl:blu +byr:1963 + +ecl:blu hgt:160cm hcl:#ceb3a1 byr:1951 eyr:2029 +pid:655280714 +iyr:2020 + +cid:248 byr:1966 iyr:2017 +eyr:2025 ecl:blu pid:930670644 hcl:#866857 + +ecl:amb eyr:2028 cid:308 byr:1951 hgt:183cm pid:260537189 +iyr:2011 hcl:#cfa07d + +byr:1993 +hcl:#7d3b0c pid:787304941 +iyr:2017 eyr:2024 hgt:178cm cid:314 +ecl:hzl + +ecl:#62c438 hcl:915943 iyr:1958 pid:1027793033 byr:2015 hgt:90 +eyr:2035 + +hcl:#b6652a eyr:2028 ecl:gry hgt:168cm byr:1921 pid:130528933 iyr:2020 + +eyr:2023 pid:675106386 ecl:brn byr:2021 +iyr:2011 +hgt:153cm hcl:#888785 + +iyr:2010 pid:586165419 eyr:2023 +ecl:gry hgt:169cm hcl:#623a2f byr:1993 + +iyr:2015 pid:332903175 eyr:2021 +hgt:154cm +hcl:#733820 ecl:gry byr:1951 + +hcl:e58fa1 byr:1932 ecl:dne +cid:272 eyr:2026 hgt:175cm iyr:1936 pid:408053740 + +iyr:2013 hgt:151cm +pid:151cm +hcl:#888785 +byr:2014 +cid:207 eyr:2023 ecl:#51625d + +iyr:2016 cid:112 +ecl:amb +pid:727316519 +eyr:2020 byr:1947 hcl:#ceb3a1 hgt:180cm + +eyr:2036 hcl:z +ecl:gmt pid:11080111 +byr:1972 hgt:161in iyr:2030 + +iyr:2013 ecl:gry eyr:2030 +hcl:#602927 byr:1968 hgt:160cm +pid:888357737 + +eyr:2026 +pid:259305913 iyr:2012 hgt:166cm ecl:amb byr:1951 hcl:#b6652a + +byr:1939 hgt:158cm +cid:232 eyr:2022 ecl:amb +hcl:#fffffd pid:312632405 +iyr:2016 + +ecl:amb hgt:166cm pid:138763305 hcl:#a97842 byr:1972 eyr:2020 +iyr:2020 + +hgt:155cm hcl:#733820 byr:2010 +pid:138766753 +ecl:grt eyr:2032 cid:50 +iyr:2002 + +eyr:2029 ecl:gry iyr:2013 byr:1924 +hgt:181cm +hcl:#fffffd pid:194780722 +cid:216 + +eyr:2020 pid:1817301064 hcl:#b6652a +ecl:grn iyr:2014 +byr:2000 hgt:171cm + +hcl:#03f240 iyr:2017 ecl:oth byr:1921 pid:464020404 eyr:2025 cid:348 +hgt:179cm + +cid:284 hcl:23f681 +pid:190cm iyr:2023 eyr:2032 +hgt:61cm ecl:#6da9d9 +byr:2029 + +hgt:175cm byr:1959 ecl:amb +eyr:2030 cid:315 hcl:#ceb3a1 +pid:795101457 +iyr:2013 + +eyr:2027 hgt:170cm cid:100 ecl:grn +iyr:2011 hcl:#d6b2ee pid:760346767 byr:1950 + +eyr:2014 hcl:#a97842 ecl:blu +pid:5560121737 hgt:73in +iyr:2010 + +byr:1945 hcl:#7d3b0c eyr:2024 ecl:brn iyr:2013 +pid:433715275 + +eyr:2022 ecl:gry byr:1982 hcl:#6b5442 iyr:2019 pid:650096889 hgt:65in + +iyr:2010 ecl:oth hgt:154cm eyr:2024 cid:122 hcl:#341e13 +byr:1929 pid:264796724 + +eyr:2026 cid:225 +byr:1928 pid:479832664 hcl:#cfa07d iyr:2020 +hgt:192cm +ecl:gry + +pid:460595787 hgt:157cm iyr:2018 +ecl:oth +hcl:#ceb3a1 eyr:2021 + +iyr:2018 pid:787208686 hgt:178cm cid:118 +hcl:#ceb3a1 ecl:oth +eyr:2030 byr:1949 + +hcl:#efcc98 byr:1934 hgt:175cm ecl:oth +iyr:2019 cid:326 pid:337273951 eyr:2024 + +hcl:#6b5442 +pid:422717762 iyr:2010 ecl:gry +eyr:2024 +hgt:165cm byr:1950 + +pid:712203563 eyr:2023 +hgt:151cm +iyr:2010 +byr:1950 +hcl:#ceb3a1 ecl:grn + +hcl:#888785 eyr:2020 iyr:2016 +hgt:191cm byr:1927 pid:848960326 ecl:hzl + +byr:1999 iyr:2016 +hgt:62in hcl:#7d3b0c eyr:2028 + +cid:195 +iyr:1957 eyr:2023 byr:1993 +hgt:176cm pid:316550627 hcl:68f2e3 ecl:amb + +hcl:#623a2f pid:780723069 +byr:1936 cid:271 eyr:2022 +hgt:188cm +iyr:2017 ecl:grn + +eyr:2021 pid:209774111 hgt:192cm +hcl:#6b5442 ecl:amb +iyr:2018 +byr:1983 + +hcl:#edeee4 byr:2001 cid:68 pid:717560044 ecl:hzl eyr:2030 iyr:2016 hgt:191cm + +eyr:1968 cid:222 ecl:gry pid:90867093 hcl:#866857 +iyr:2026 hgt:72 byr:1965 + +eyr:2028 +hgt:152cm pid:759034572 iyr:2017 hcl:#a97842 +ecl:brn +cid:168 byr:1987 + +hcl:453e20 eyr:2011 +ecl:gry hgt:75cm byr:1994 pid:41067436 iyr:2024 + +ecl:blu hgt:61cm +byr:1988 eyr:2022 iyr:2020 +pid:219813481 hcl:#ceb3a1 + +pid:635783992 +byr:1950 eyr:2029 hgt:182cm hcl:#c0946f ecl:oth + +iyr:2016 ecl:amb pid:393320246 hgt:156cm +hcl:#fffffd byr:1988 eyr:2028 + +pid:689161094 +hcl:#623a2f iyr:2011 +eyr:2020 byr:1953 +hgt:153cm ecl:brn + +hgt:185cm hcl:#ceb3a1 +pid:751921928 iyr:2019 ecl:grn eyr:2028 +byr:1943 + +hcl:#b6652a eyr:2025 iyr:2016 ecl:hzl +hgt:169cm byr:1931 pid:486548422 + +hgt:160cm pid:49931386 +ecl:gry iyr:2010 eyr:2021 hcl:#341e13 cid:64 byr:1933 + +byr:1927 +pid:415362434 +ecl:gmt eyr:2028 +hgt:153cm hcl:#18171d iyr:2017 cid:163 + +byr:1949 pid:427698686 +eyr:2027 iyr:2018 ecl:hzl hgt:159cm +hcl:#ceb3a1 cid:132 + +hcl:#7d3b0c iyr:2013 byr:2023 eyr:2037 +cid:83 ecl:#05c60a hgt:160 +pid:429836535 + +hgt:174cm eyr:1937 pid:149685914 byr:2004 iyr:2017 +hcl:#623a2f cid:303 +ecl:blu + +hgt:60cm pid:47770642 +byr:2020 eyr:2032 ecl:#cc7bc6 cid:144 iyr:2025 hcl:z + +iyr:2010 ecl:amb +pid:#5f3343 hcl:#733820 eyr:2021 byr:1933 +hgt:169cm + +hcl:#efcc98 +hgt:172cm eyr:2020 +ecl:oth +byr:2001 pid:027554330 +iyr:1983 cid:165 + +byr:2026 hgt:158cm iyr:2016 hcl:#733820 +ecl:hzl cid:117 +eyr:2037 +pid:37781880 + +hcl:#602927 cid:248 +byr:1999 +hgt:181cm eyr:2029 pid:554270506 +iyr:2016 +ecl:blu + +byr:1952 iyr:2014 +ecl:oth +hcl:#cfa07d hgt:186cm pid:875655050 +eyr:2024 + +eyr:2030 hgt:186cm hcl:#18171d pid:038705513 ecl:grn cid:100 byr:1927 +iyr:2015 + +cid:98 eyr:2022 +byr:1957 ecl:grn +hgt:182cm pid:607781478 +hcl:#ceb3a1 + +eyr:1977 iyr:2021 +hgt:178cm cid:186 byr:2026 +pid:#b15551 ecl:utc +hcl:z + +pid:334408791 +hgt:158cm hcl:#6b5442 cid:83 byr:1983 iyr:2012 ecl:grn +eyr:2030 + +eyr:2028 iyr:2015 ecl:amb +pid:352112783 +cid:345 byr:1938 hgt:71in +hcl:#6b5442 + +byr:2028 pid:380227894 eyr:2025 +ecl:blu hgt:189cm hcl:a51656 +iyr:1956 + +hgt:184cm iyr:2016 ecl:hzl pid:485327910 hcl:#fffffd byr:1970 eyr:2027 + +byr:1992 iyr:2018 eyr:2030 hcl:#888785 hgt:168cm pid:535221295 ecl:blu + +hgt:165cm hcl:#fffffd byr:1961 ecl:gry pid:639998127 +eyr:2028 +iyr:2011 + +hgt:74in iyr:2015 cid:284 pid:035643775 byr:1978 hcl:#623a2f +ecl:grn eyr:2023 + +byr:1954 +ecl:#16e7c4 hgt:164cm +eyr:2029 iyr:2015 pid:377679333 hcl:#a97842 cid:233 + +eyr:2026 pid:266604186 byr:1981 ecl:brn +iyr:2012 +hgt:156cm +hcl:#c0946f + +cid:189 hcl:z ecl:#40f51a +hgt:180cm iyr:2014 pid:0942329667 byr:1946 eyr:2025 + +eyr:2020 hgt:165cm byr:1961 +iyr:2013 hcl:#888785 ecl:blu pid:156cm + +cid:126 hcl:#623a2f pid:153152767 hgt:163cm ecl:grn eyr:2030 iyr:2020 byr:1959 + +byr:1935 +pid:990549858 hcl:#623a2f +ecl:blu iyr:2012 cid:160 eyr:2028 hgt:172cm + +hcl:111b82 +byr:1955 pid:765740335 hgt:150cm ecl:amb +iyr:2019 eyr:1937 + +hgt:59cm byr:2023 eyr:2032 pid:652161761 cid:61 ecl:brn iyr:2011 +hcl:#623a2f + +byr:1951 eyr:2023 iyr:2017 +hcl:#18171d +ecl:brn cid:306 pid:446746225 hgt:187cm + +hgt:160cm ecl:blu pid:855958582 byr:1988 hcl:#6f97ba iyr:2016 +eyr:2026 + +iyr:2010 byr:1948 +cid:336 ecl:hzl +eyr:2030 +pid:475243853 +hgt:175cm +hcl:#ceb3a1 + +hgt:168cm eyr:2021 ecl:oth hcl:#229bb0 +iyr:2016 byr:1949 pid:720804107 + +iyr:2011 +eyr:2025 +ecl:gry cid:330 byr:1927 pid:699837182 +hcl:#b6652a hgt:161cm + +byr:1988 eyr:2026 ecl:gry +hgt:162cm pid:924306872 +iyr:2013 +hcl:#888785 + +byr:1934 ecl:brn pid:0774345729 iyr:1964 hcl:z hgt:170in cid:262 + +eyr:2028 byr:1989 +iyr:2014 +ecl:blu pid:388512489 +hcl:#7bc6b9 +cid:212 +hgt:187cm + +byr:1960 pid:#e494ee eyr:2026 hgt:192cm hcl:a82f5a +iyr:1999 ecl:#89848d + +byr:2006 pid:#3bac86 +cid:297 +hcl:55d36e +iyr:1985 +ecl:#538688 +eyr:1923 + +ecl:hzl iyr:1925 eyr:2030 +pid:1231954396 hgt:154cm byr:2009 +hcl:#c0946f + +hgt:63in +pid:229535785 ecl:oth hcl:#9e34cd +iyr:2020 +eyr:2021 byr:1943 cid:73 + +hgt:63cm hcl:z byr:2029 eyr:1928 pid:4559542479 +cid:258 iyr:2024 ecl:#7058ad + +ecl:hzl hcl:z pid:146884476 iyr:2011 cid:158 +byr:1991 eyr:2030 hgt:156cm + +byr:2030 iyr:2017 pid:19198146 +hcl:#7d3b0c +ecl:#af1431 eyr:2023 +hgt:74cm + +hcl:#6b5442 hgt:168cm eyr:2020 +cid:260 byr:1920 +ecl:hzl + +byr:1971 cid:186 hgt:60 eyr:2022 pid:160cm +hcl:z +iyr:2013 +ecl:blu + +hcl:#7d3b0c cid:218 eyr:2022 pid:015062066 ecl:hzl iyr:2010 hgt:170cm byr:2001 + +iyr:1984 byr:2027 +eyr:2033 +hcl:94d9ab hgt:148 ecl:gmt +cid:288 +pid:160cm + +hcl:#74c9e7 eyr:2026 hgt:168cm byr:1994 ecl:brn pid:651587465 + +hgt:160cm +ecl:gry cid:182 byr:1929 pid:890454205 hcl:#efcc98 eyr:2029 iyr:2020 + +ecl:brn hgt:156in +eyr:2022 +cid:289 iyr:2022 hcl:e34ec4 pid:#206e1c byr:1938 + +eyr:2030 +pid:99239063 cid:166 +hgt:153cm hcl:0a3633 byr:1990 iyr:2024 ecl:grn + +byr:2019 hgt:189cm hcl:#cfa07d iyr:1927 ecl:#bafabd pid:161cm eyr:2024 + +hcl:#ceb3a1 iyr:2010 +hgt:163cm eyr:2020 +pid:948123697 ecl:brn byr:1973 + +pid:691623749 iyr:2016 hcl:#18171d byr:1972 eyr:2030 +hgt:173cm ecl:hzl + +hcl:#ceb3a1 cid:271 +iyr:2010 byr:1977 hgt:161cm +eyr:2022 +pid:460185976 ecl:hzl + +eyr:2028 ecl:hzl cid:98 +pid:828517281 hgt:154cm +iyr:2016 hcl:#866857 byr:1924 + +hgt:99 +iyr:2030 byr:2003 eyr:2039 pid:184cm ecl:lzr cid:71 +hcl:z + +eyr:2029 pid:864807599 +iyr:2013 hcl:#866857 ecl:grn byr:1961 hgt:185cm + +hcl:#866857 +hgt:66in ecl:oth iyr:2018 +eyr:2026 cid:170 byr:1999 pid:538451102 + +iyr:2024 byr:2015 cid:271 pid:69951601 hgt:190cm +ecl:xry +eyr:2003 +hcl:#c0946f + +hgt:178cm hcl:#ceb3a1 byr:1942 +pid:583281865 iyr:2015 eyr:2020 +ecl:grn + +eyr:2020 hcl:#866857 ecl:oth hgt:153cm cid:212 byr:1972 iyr:2012 pid:198849319 + +ecl:blu +cid:222 hgt:174cm hcl:#866857 +byr:1971 iyr:2016 eyr:2030 + +ecl:blu pid:521480106 +iyr:2020 +eyr:2027 byr:1942 +hcl:#733820 hgt:153cm cid:106 + +cid:57 pid:685649434 +eyr:2026 +hcl:#efcc98 ecl:grn iyr:2013 +byr:1968 hgt:157cm + +cid:63 pid:195592844 hcl:#efcc98 +byr:1980 ecl:gry iyr:2016 +eyr:2023 +hgt:178cm + +hcl:z +byr:2024 hgt:179cm +iyr:2017 +eyr:1998 ecl:#d087a7 + +pid:673581655 eyr:2023 +byr:1924 hcl:#18171d ecl:blu hgt:187cm iyr:2015 +cid:69 + +byr:1979 eyr:2020 pid:925293477 ecl:amb cid:145 hcl:#1fc76d hgt:188cm iyr:2013 + +pid:833495286 +hcl:#cfa07d ecl:brn +byr:1993 eyr:2020 cid:209 +hgt:165cm iyr:2018 + +hgt:181cm +hcl:#efcc98 pid:264709463 +iyr:2019 +eyr:2026 +cid:313 byr:1926 ecl:gry + +pid:798909144 iyr:2015 ecl:brn hgt:183cm hcl:#623a2f byr:1979 +eyr:2023 + +cid:257 +ecl:grn pid:203787314 hcl:#fffffd iyr:2020 hgt:192cm byr:1964 + +pid:15955243 +eyr:1962 +byr:2012 hgt:155cm iyr:2025 hcl:z + +cid:126 +hgt:156cm +byr:1936 pid:495593265 +ecl:brn hcl:ee357b iyr:2030 eyr:2014 + +pid:182cm eyr:2022 ecl:#c8bb8a +iyr:2021 byr:1922 cid:270 hcl:#866857 hgt:190cm + +eyr:2030 +byr:1963 cid:224 ecl:gry iyr:2020 hgt:192cm +hcl:#8117b1 pid:845227725 + +byr:2028 pid:168cm eyr:1989 ecl:blu hcl:311389 hgt:173cm cid:227 +iyr:2015 + +byr:1949 hcl:#a97842 hgt:162cm +pid:100263539 eyr:2027 +ecl:grn iyr:2015 + +ecl:#6f9669 eyr:2033 byr:2003 hcl:z iyr:2019 pid:223282429 +hgt:172 + +pid:#8bc2c0 hgt:74cm ecl:zzz hcl:5afd12 eyr:1922 +byr:2019 iyr:1924 cid:50 + +hcl:#66518f hgt:187cm byr:1989 +eyr:2027 iyr:2018 ecl:blu pid:656263178 + +pid:257605814 iyr:2013 eyr:2026 ecl:grn hgt:170cm byr:2018 hcl:e9d195 + +ecl:grt byr:2010 eyr:2033 +pid:35619145 +iyr:2025 +hgt:64cm hcl:z +cid:221 + +eyr:1997 pid:221307345 hgt:120 +iyr:2019 ecl:zzz +byr:2009 +hcl:#fffffd + +hgt:192cm byr:1932 cid:213 hcl:#ceb3a1 +ecl:oth iyr:2018 +eyr:2023 pid:232126505 + +iyr:2020 cid:225 +eyr:2025 pid:456238536 byr:1932 hcl:#fffffd ecl:oth +hgt:170cm + +eyr:2023 pid:113720753 hgt:173cm hcl:#efcc98 +ecl:blu +byr:1977 +iyr:2010 + +hcl:#866857 pid:240698984 byr:1973 +ecl:amb iyr:2014 hgt:159cm eyr:2020 + +eyr:2026 +iyr:2019 pid:150506583 byr:1984 cid:249 +ecl:brn hgt:176cm +hcl:#18171d + +iyr:2012 +hgt:189cm byr:1970 +pid:152682317 eyr:2025 cid:315 ecl:oth hcl:#6b5442 + +hgt:167cm eyr:1923 hcl:4a53cb pid:392236104 iyr:2018 ecl:gry +byr:1922 + +byr:1966 hgt:191cm +iyr:2011 cid:167 +ecl:brn eyr:2024 hcl:#29000d + +byr:1964 hgt:177 +eyr:2037 pid:4494972428 hcl:#7d3b0c ecl:utc cid:205 iyr:2019 + +hcl:#cfa07d iyr:2028 pid:165cm ecl:#e2a3e0 +cid:147 +eyr:2025 +hgt:169in byr:2010 + +hgt:162cm +hcl:#866857 +eyr:2024 byr:1962 iyr:2020 +pid:246010906 +ecl:oth + +pid:145361253 ecl:brn iyr:2019 eyr:2025 +hcl:#ceb3a1 hgt:164cm byr:1938 + +hgt:157cm ecl:#f6feaa iyr:2015 +hcl:#623a2f +cid:290 eyr:2034 +pid:058787629 + +hcl:#ceb3a1 iyr:2011 +pid:468547313 cid:175 byr:1991 eyr:2021 hgt:158cm +ecl:blu + +ecl:hzl eyr:2026 pid:448134141 hgt:186cm iyr:2016 byr:1929 hcl:#c0946f + +hgt:64cm eyr:2027 +ecl:#277bd0 hcl:df2be7 +iyr:2023 +pid:167286554 +byr:2004 + +pid:739664020 eyr:2026 hgt:61in +iyr:2011 byr:1959 ecl:grn +hcl:#602927 + +eyr:2039 hgt:183cm hcl:z pid:5208130216 +ecl:blu +cid:161 iyr:1932 byr:2004 + +iyr:2015 pid:509173428 eyr:2030 ecl:#14471f hcl:z hgt:177in byr:1994 + +byr:1951 +iyr:2012 hcl:#733820 +pid:799059999 hgt:70in eyr:2026 ecl:hzl + +eyr:2028 byr:1925 +hgt:181cm +ecl:grn +iyr:2016 +hcl:#cfa07d pid:558448804 + +pid:675014385 iyr:2012 ecl:oth hgt:183cm +hcl:#623a2f byr:1997 +eyr:2026 cid:311 + +eyr:1972 hcl:c452d2 +ecl:gmt +byr:2010 iyr:2015 +hgt:66cm cid:266 +pid:021900882 + +ecl:gry hgt:65in cid:182 hcl:#c0946f +pid:558235233 +eyr:2027 byr:1946 iyr:2017 + +hcl:#b6652a pid:846441761 iyr:1971 hgt:59cm eyr:2027 byr:2010 ecl:amb cid:144 + +cid:77 hgt:180in eyr:2024 +hcl:b6c2c6 pid:159cm iyr:2002 +ecl:#62e506 byr:1976 + +iyr:1969 eyr:2024 cid:143 pid:#f31765 ecl:brn +hgt:68cm hcl:7f9598 byr:1949 + +byr:1964 +hcl:#341e13 +ecl:gry +hgt:168cm eyr:2028 +iyr:2012 pid:714678484 + +hgt:185cm eyr:2028 +hcl:#b6652a byr:1945 iyr:2012 ecl:hzl + +iyr:2015 hgt:191cm +ecl:blu hcl:#888785 pid:206356787 +eyr:2021 byr:1920 + +eyr:1937 +hcl:b3eb9c hgt:175cm +iyr:2012 ecl:brn pid:62490997 cid:267 +byr:2024 + +hcl:#866857 +byr:1960 +pid:021105433 +hgt:174cm eyr:2022 iyr:2017 +ecl:blu cid:123 + +hcl:#ceb3a1 byr:1976 pid:306207321 +iyr:2019 +cid:262 hgt:175cm +eyr:2025 ecl:oth + +byr:1945 +cid:346 eyr:2030 hcl:#1f6f6f iyr:2013 +hgt:65in pid:857729755 +ecl:blu + +byr:1934 ecl:oth hgt:174cm +eyr:2030 +cid:263 hcl:#47e20e pid:545880650 + +pid:190920088 byr:1995 +hcl:b4f162 iyr:2019 ecl:gry eyr:2020 hgt:176cm + +byr:1984 hcl:#7d3b0c +pid:947573713 hgt:154cm +ecl:blu +eyr:2023 +iyr:2017 + +hcl:#ceb3a1 pid:645117349 cid:213 +eyr:2022 ecl:brn +iyr:2017 hgt:151cm byr:1997 + +byr:1929 hcl:#18171d hgt:184cm pid:378639521 +ecl:amb iyr:2018 +eyr:2022 + +pid:567411452 hgt:158cm byr:1998 eyr:2030 iyr:2013 hcl:#fffffd +ecl:grn + +iyr:1962 +pid:184cm +eyr:2034 cid:62 ecl:gry hcl:z hgt:156in + +eyr:2022 byr:2015 pid:193cm ecl:#ca25ab +hcl:eb0dfc cid:136 +hgt:150cm +iyr:1977 + +pid:087678152 +hcl:#ecdb8b +hgt:162cm iyr:2015 +eyr:2024 +byr:1939 +ecl:grn + +eyr:2024 hgt:150cm iyr:2023 ecl:#ca3855 hcl:#888785 byr:1943 +pid:4402658120 + +pid:107396492 hcl:#341e13 +hgt:145 ecl:oth iyr:2013 +eyr:2025 cid:128 byr:2023 + +eyr:2020 hgt:167cm byr:1997 hcl:#888785 +ecl:oth pid:609333522 iyr:2017 + +pid:172cm +eyr:1930 iyr:1966 ecl:#f98bd9 hgt:179in hcl:a1d424 + +ecl:hzl byr:1924 iyr:2018 eyr:2020 +pid:505733566 +hcl:#733820 +hgt:151cm + +eyr:2011 pid:176cm hgt:163in iyr:1964 +hcl:z ecl:#9e90ad byr:2010 + +ecl:brn iyr:2011 pid:932000043 byr:1995 eyr:2025 hgt:150cm +hcl:#6b5442 + +pid:347820679 +iyr:2010 ecl:#aa4902 hcl:56faf0 hgt:70cm byr:1923 eyr:2024 + +ecl:blu +hgt:160cm iyr:2015 pid:706725204 byr:1987 eyr:2030 hcl:#cfa07d + +hcl:#763a5b iyr:2011 +byr:1965 pid:834192733 +cid:302 ecl:blu eyr:2028 hgt:170cm + +byr:1967 hgt:193cm +ecl:hzl +pid:598436934 cid:262 +iyr:2014 hcl:#b6652a eyr:2021 + +pid:336728648 +eyr:2030 hcl:#888785 +hgt:150cm ecl:hzl byr:1926 +iyr:2015 + +pid:073366341 byr:1984 hcl:#cfa07d iyr:2019 hgt:178cm ecl:grn eyr:2026 + +iyr:1923 pid:19933565 ecl:#16b3c1 hgt:162 +eyr:1945 hcl:e0e20c +byr:2028 + +hgt:159in +pid:171cm eyr:2023 iyr:2022 ecl:#c073e6 hcl:22ed05 byr:2011 + +byr:2003 eyr:2022 +cid:336 ecl:grt +iyr:2020 hgt:156cm +hcl:#c0946f pid:716113144 + +ecl:hzl +iyr:2019 hgt:171cm hcl:#9855d4 +byr:1974 +eyr:2025 pid:260661320 + +hgt:165cm byr:2016 pid:203313454 +iyr:2011 +hcl:z ecl:blu eyr:2023 + +eyr:2016 +hgt:182cm iyr:2029 byr:2004 +ecl:gmt hcl:25d3a1 +pid:4435010716 + +ecl:blu +pid:159928755 hgt:177 hcl:74fd3f eyr:2023 cid:244 byr:1956 +iyr:2016 + +hcl:#c5c154 iyr:2011 ecl:gry byr:1971 hgt:75in cid:251 +eyr:2025 + +eyr:2023 +hgt:155cm byr:1943 iyr:2020 ecl:amb hcl:#ceb3a1 pid:591194126 + +cid:123 +byr:1950 iyr:2022 hgt:154cm ecl:hzl pid:555951199 hcl:#efcc98 eyr:2022 + +cid:145 iyr:2028 +hgt:163 +byr:2007 ecl:#ca0e61 pid:#b57087 eyr:1985 hcl:#b6652a + +ecl:utc +iyr:1953 eyr:2034 hcl:#602927 +cid:150 pid:166cm hgt:72cm byr:2003 + +iyr:2012 pid:585191659 +byr:1959 eyr:2027 +hgt:150cm ecl:blu hcl:#888785 + +ecl:#483899 eyr:2032 pid:#4d59f7 iyr:2020 byr:2005 hcl:a8a13c hgt:140 + +ecl:brn pid:#8d9fe0 cid:265 byr:2029 hgt:68cm iyr:1989 hcl:4df783 eyr:1990 + +cid:110 hgt:165cm +ecl:grn +iyr:2017 eyr:2025 byr:1923 + +byr:1986 iyr:2020 hgt:69in pid:815979778 hcl:#ceb3a1 eyr:2027 ecl:blu + +pid:345227220 +eyr:2030 +byr:1954 ecl:hzl hcl:#733820 hgt:151cm iyr:2016 + +hgt:152 byr:2016 ecl:grt hcl:z eyr:1994 pid:463925189 +iyr:2013 + +hcl:#341e13 +hgt:169cm byr:1990 iyr:2015 +ecl:blu +eyr:2034 pid:120750202 + +iyr:2020 +pid:589274468 byr:1995 ecl:blu eyr:2025 hgt:168cm hcl:#888785 + +hcl:#888785 +hgt:169cm iyr:2016 +byr:1930 +ecl:grn pid:864871732 eyr:2022 + +eyr:2021 cid:73 hgt:186cm hcl:#8092f6 byr:1957 pid:151353277 ecl:blu iyr:2018 + +hcl:5afb32 byr:2027 pid:179cm +cid:222 hgt:59cm ecl:grt eyr:2040 iyr:1980 + +hcl:#a97842 pid:403342198 eyr:2026 +byr:1976 ecl:gry hgt:150cm +iyr:2015 + +hgt:63in eyr:2023 hcl:#6b5442 pid:371994667 iyr:2020 byr:1991 ecl:gry + +pid:247978507 +hgt:175cm iyr:2016 eyr:2022 +byr:1945 hcl:#b6652a ecl:gry + +hgt:150cm cid:254 hcl:#18171d ecl:blu eyr:2030 +byr:1922 +pid:450204714 iyr:2015 + +iyr:2016 pid:470585547 +hgt:60in +eyr:2024 byr:1946 +ecl:oth hcl:#b6652a + +iyr:2020 eyr:2026 +hcl:#cfa07d +pid:524717559 hgt:99 +cid:303 byr:1967 ecl:amb + +cid:178 byr:2021 hcl:7234f4 hgt:192in eyr:2038 iyr:2020 pid:466801711 ecl:amb + +pid:597934488 iyr:2011 cid:336 hcl:#81434f +ecl:grt hgt:185cm eyr:2034 +byr:2014 + +eyr:2038 +byr:2017 hgt:70cm cid:283 +ecl:brn pid:392669975 iyr:2013 hcl:#602927 + +pid:#c85b65 hgt:60cm iyr:2001 eyr:2035 hcl:e28fae +ecl:#32a45c byr:1924 + +iyr:2011 byr:1945 hgt:164cm ecl:gry eyr:2029 hcl:#18171d +pid:402905843 + +pid:5602590426 byr:2013 eyr:2024 +ecl:zzz iyr:2014 hgt:173cm +hcl:#733820 + +ecl:hzl eyr:1964 +pid:508473248 +byr:1961 hgt:181cm iyr:2020 +hcl:#623a2f + +hcl:z hgt:121 pid:635654838 eyr:2020 iyr:1968 +byr:1954 + +byr:1974 pid:759133744 +iyr:2010 eyr:2027 +cid:266 ecl:hzl +hgt:153cm + +ecl:oth byr:1960 +eyr:2022 +iyr:2014 +hgt:62in hcl:#623a2f pid:155340768 + +hgt:187cm +hcl:#866857 pid:725526503 cid:134 iyr:2017 ecl:grn +byr:1982 eyr:2020 + +hgt:154cm byr:1953 +ecl:blu pid:212064297 +cid:69 eyr:2022 +hcl:#c0946f iyr:2015 + +ecl:gry hgt:183cm iyr:2017 pid:995219023 eyr:2025 +byr:1960 hcl:#7d3b0c + +byr:1935 ecl:oth cid:235 pid:978368915 +hcl:#b6652a +iyr:2019 hgt:69in eyr:2028 + +iyr:2005 +eyr:2028 +hgt:192in hcl:#9ced60 byr:2004 +pid:102299023 +cid:348 ecl:hzl + +hcl:6cbe91 pid:191cm iyr:1962 +byr:2007 hgt:192in eyr:1963 + +pid:020385831 hgt:173cm +ecl:amb hcl:fdbb66 cid:287 +eyr:2034 +byr:2024 iyr:2018 + +eyr:2024 +byr:1952 hgt:186cm cid:250 +pid:852070008 ecl:blu +hcl:#c0946f iyr:2010 + +ecl:#914e86 pid:164cm hgt:170cm iyr:2011 +byr:2014 +eyr:2026 hcl:z + +byr:1952 hgt:176in +hcl:#e49400 +pid:011105160 +eyr:2026 cid:103 ecl:oth iyr:2011 + +ecl:#362113 hgt:155in +pid:859337122 cid:133 +eyr:2025 byr:1997 iyr:2012 + +ecl:hzl eyr:2025 iyr:2013 +pid:669359650 byr:1922 hcl:#efcc98 cid:149 hgt:169cm + +iyr:2028 hgt:177in +cid:75 +eyr:2036 byr:2007 pid:48265132 +ecl:zzz hcl:z + +hgt:66in eyr:2030 +hcl:#623a2f iyr:2010 pid:458699137 +byr:1980 +ecl:amb + +hgt:171cm ecl:amb iyr:2011 hcl:#888785 byr:1923 eyr:2020 +pid:312162952 + +byr:1963 +hcl:#18171d pid:316505921 ecl:blu iyr:2017 +hgt:155cm eyr:2029 + +ecl:gry +byr:1973 iyr:2011 +pid:479606625 eyr:2028 +hcl:#888785 cid:108 hgt:160cm diff --git a/2020/4/validate.d b/2020/4/validate.d new file mode 100644 index 0000000..beb4aa8 --- /dev/null +++ b/2020/4/validate.d @@ -0,0 +1,39 @@ +import std.stdio; +import std.file; +import std.array; +import std.uni : isWhite; + +void main() { + string contents = readText("input"); + auto lines = contents.split("\n\n"); + int good = 0; + + foreach(i, line; lines) { + auto parts = line.split!(isWhite); + + string[] items = [ "byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid" ]; + int[string] totals; + foreach(y, item; items) + totals[item] = 0; + + foreach(x, part; parts) { + auto fields = part.split(":"); + if(fields.length < 2) + continue; + + if(!(fields[0] in totals)) + continue; + + totals[fields[0]]++; + } + + int sum = 0; + foreach(z, total; totals) + sum += total; + + if(sum == items.length) + good++; + } + + writefln("There are %d valid passports.", good); +} diff --git a/2020/4/validate2.d b/2020/4/validate2.d new file mode 100644 index 0000000..ef90f4f --- /dev/null +++ b/2020/4/validate2.d @@ -0,0 +1,42 @@ +import std.stdio; +import std.file; +import std.array; +import std.uni : isWhite; +import std.conv; +import std.regex; + +void main() { + string contents = readText("input"); + auto lines = contents.split("\n\n"); + int good = 0; + + foreach(i, line; lines) { + auto parts = line.split!(isWhite); + + string[] items = [ "byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid" ]; + int[string] totals; + foreach(y, item; items) + totals[item] = 0; + + foreach(x, part; parts) { + auto fields = part.split(":"); + if(fields.length < 2) + continue; + + if(!(fields[0] in totals)) + continue; + + if(part.matchAll(ctRegex!(r"^(pid:\d{9}|byr:(19[2-9]\d|200[0-2])|iyr:20(1\d|20)|eyr:20(2\d|30)|hgt:((59|6\d|7[0-6])in|(1[5-8]\d|19[0-3])cm)|hcl:#[0-9a-f]{6}|ecl:(amb|blu|brn|gry|grn|hzl|oth)|pid:\d{9}|cid:.*)$"))) + totals[fields[0]]++; + } + + int sum = 0; + foreach(z, total; totals) + sum += total; + + if(sum == items.length) + good++; + } + + writefln("There are %d valid passports.", good); +}