Skip to content

Instantly share code, notes, and snippets.

@jdeweese1
Created December 4, 2020 18:16
Show Gist options
  • Save jdeweese1/dbba2b1e929d71fd32f639de9b8f1b96 to your computer and use it in GitHub Desktop.
Save jdeweese1/dbba2b1e929d71fd32f639de9b8f1b96 to your computer and use it in GitHub Desktop.
passports = [
'eyr:2029 iyr:2013 hcl:#ceb3a1 byr:1939 ecl:blu hgt:163cm pid:660456119',
'hcl:#0f8b2e ecl:grn byr:1975 iyr:2011 eyr:2028 cid:207 hgt:158cm pid:755567813',
'byr:2002 pid:867936514 eyr:2021 iyr:2012 hcl:#18171d ecl:brn cid:293 hgt:177cm',
'hgt:193cm iyr:2010 pid:214278931 ecl:grn byr:1953 eyr:2021 hcl:#733820',
'iyr:2010 eyr:2020 hcl:#866857 byr:1934 pid:022785900 hgt:161cm ecl:oth',
'hgt:166cm hcl:#602927 cid:262 ecl:brn pid:393738288 eyr:2021 byr:1928 iyr:2010',
'ecl:grn hcl:#6b5442 cid:317 byr:2001 eyr:2023 iyr:2016 pid:407685013 hgt:177cm',
'hcl:#86127d ecl:grn pid:113577635 iyr:2018 hgt:180cm eyr:2022 cid:59 byr:1921',
'byr:1984 eyr:2023 iyr:2015 hgt:152cm cid:177 ecl:amb hcl:#fffffd pid:379600323',
'hgt:154cm byr:1930 ecl:amb cid:101 hcl:#fffffd pid:919013176 eyr:2024',
'hgt:76in hcl:#a97842 byr:1920 pid:612193949 cid:337 eyr:2026 ecl:gry',
'cid:262 iyr:2016 ecl:hzl hcl:#efcc98 hgt:159cm eyr:2020 byr:1974 pid:520627197',
'cid:302 eyr:1956 hgt:158cm hcl:#3355a2 pid:282247859 iyr:2015 byr:1979 ecl:gry',
'pid:156126542 eyr:2025 ecl:amb hcl:#733820 hgt:187cm byr:1938 iyr:2020',
'hcl:#341e13 byr:1952 ecl:blu iyr:2015 cid:230 eyr:2023 hgt:59in pid:955240866',
'pid:783635907 eyr:2020 hgt:186cm ecl:grn byr:1925 iyr:2013 hcl:#341e13',
'byr:1921 iyr:2019 eyr:2027 hgt:175cm pid:355931973 hcl:#18171d ecl:oth',
'hcl:z byr:1947 pid:164cm hgt:146 ecl:hzl eyr:1976 iyr:2014 cid:160',
'pid:686203227 iyr:2014 hgt:170cm byr:1985 ecl:gry eyr:2023 hcl:#c0946f',
'hgt:192cm iyr:2016 byr:1954 hcl:#c0946f eyr:2022 ecl:oth pid:371575068',
'iyr:2013 pid:877594317 hgt:72in cid:236 byr:1922 eyr:2023 ecl:brn hcl:#ceb3a1',
'hcl:#602927 pid:277638047 byr:1944 hgt:178cm iyr:2019 eyr:2028 ecl:blu',
'ecl:hzl byr:1979 hcl:#a97842 iyr:2019 eyr:2022 cid:91 hgt:164cm pid:371132831',
'cid:346 iyr:2019 pid:335209743 hgt:178cm byr:1993 ecl:hzl hcl:#341e13 eyr:2030',
'hcl:#ceb3a1 pid:863130968 byr:1964 ecl:brn cid:94 iyr:2012 hgt:153cm',
'byr:1980 hcl:z eyr:2039 hgt:65cm ecl:lzr pid:96101128 iyr:2024',
'iyr:2017 eyr:2027 ecl:grn byr:1956 hcl:#888785 hgt:174cm pid:565437685',
'pid:769106108 cid:77 eyr:2024 hcl:#602927 hgt:164cm ecl:gry iyr:2017 byr:1947',
'iyr:2019 ecl:gry hcl:#fffffd hgt:187cm eyr:2022 cid:212 pid:475618502 byr:1993',
'hcl:#623a2f ecl:grn hgt:191cm pid:166515049 iyr:2018 byr:1971 eyr:2022',
'iyr:2011 eyr:2029 byr:2029 hcl:2912ec pid:15469000 hgt:150cm ecl:#4ddfb1',
'ecl:grn byr:1941 pid:273390626 hgt:166cm eyr:2024 iyr:2010 hcl:#888785',
'iyr:2015 ecl:amb eyr:2030 hgt:156cm cid:301 hcl:#18171d pid:677032916 byr:1957',
'ecl:amb iyr:2010 byr:1967 eyr:2021 cid:128 pid:104999760 hgt:162cm hcl:#c83b73',
'eyr:2028 cid:173 hcl:#7d3b0c hgt:161cm pid:810244270 ecl:gry byr:1930 iyr:2013',
'byr:1975 pid:7243957480 eyr:2028 hcl:#cfa07d iyr:2019 hgt:184cm ecl:blu',
'byr:1953 pid:807621409 eyr:2020 iyr:2017 hcl:#ceb3a1 ecl:blu hgt:157cm',
'pid:976089116 byr:1920 eyr:2020 iyr:2011 hcl:#733820 hgt:166cm cid:330',
'pid:896621814 hgt:179cm ecl:blu eyr:2027 iyr:2014 byr:1965 hcl:#a97842',
'iyr:2015 pid:827722366 eyr:2024 hgt:188cm hcl:#ceb3a1 byr:1963 ecl:oth',
'iyr:2014 byr:1959 hgt:150cm hcl:#602927 pid:948589059 eyr:2027 ecl:oth cid:215',
'eyr:2029 hgt:171cm iyr:2019 hcl:#e9317f byr:1926 ecl:gry',
'eyr:2020 cid:260 hgt:155cm iyr:2011 byr:1948 hcl:#602927 pid:651156700',
'eyr:2027 hgt:188cm hcl:#873cdf iyr:2019 pid:738493109 byr:1979 ecl:hzl',
'eyr:2025 ecl:oth iyr:2012 pid:563787480 byr:1978 hgt:164cm hcl:#18171d',
'iyr:2012 eyr:2028 hgt:190cm ecl:blu byr:1971 hcl:#6b5442 pid:758307028',
'cid:186 ecl:amb eyr:2027 iyr:2019 hcl:#c0946f hgt:165cm pid:904275084 byr:1997',
'pid:382971064 byr:1932 cid:77 iyr:2010 hgt:158cm ecl:brn eyr:2027 hcl:#602927',
'hgt:156cm eyr:2028 pid:249987568 iyr:2020 byr:1956 ecl:grn hcl:#fffffd',
'byr:1947 pid:190618020 ecl:blu eyr:2023 hgt:192cm iyr:2012 hcl:#b62955',
'eyr:2022 hgt:191cm pid:699194379 hcl:#f0a94b iyr:2020 byr:1996 ecl:gry',
'ecl:brn hgt:69in pid:368841807 byr:1971 eyr:2020 iyr:2020 hcl:498a57',
'hcl:#cfa07d iyr:2012 ecl:gry pid:034993671 eyr:2028 byr:1934 hgt:156cm',
'iyr:2013 hgt:65in byr:1937 hcl:#fffffd ecl:blu eyr:2028 pid:777520867',
'hcl:#c0946f byr:1965 eyr:2023 pid:289861622 ecl:gry hgt:185cm iyr:2012',
'eyr:2023 hcl:#cfa07d iyr:2012 hgt:62in pid:447717379 cid:309 byr:1977 ecl:hzl',
'byr:1934 ecl:amb pid:385150170 eyr:2025 hgt:178cm hcl:#efcc98 cid:294 iyr:2012',
'eyr:2029 ecl:gry iyr:2015 pid:396708902 cid:107 byr:1983 hgt:160cm hcl:#341e13',
'hgt:158cm ecl:oth hcl:#cfa07d pid:032310453 iyr:2012 byr:1945 cid:60',
'pid:304883665 byr:1932 ecl:grn eyr:2022 hcl:#a97842 hgt:174cm iyr:2014',
'cid:321 hgt:186cm eyr:2022 hcl:#623a2f byr:1952 iyr:2019 pid:857917879',
'hcl:#ceb3a1 hgt:157cm byr:2002 iyr:2017 cid:245 ecl:amb pid:142383109 eyr:2022',
'hgt:176cm byr:1999 ecl:oth hcl:#5e0906 pid:101108193 eyr:2029',
'hgt:168in pid:8803058749 byr:2013 hcl:z iyr:2027',
'byr:1986 eyr:2023 pid:108222056 hcl:#c0946f iyr:2012 hgt:71in ecl:grn',
'byr:1955 hcl:#a97842 ecl:blu eyr:2020 pid:164459538 iyr:2018 hgt:175cm',
'byr:1950 hcl:#341e13 ecl:grn hgt:177cm cid:273 pid:473932418 eyr:2025 iyr:2010',
'pid:366720897 hgt:187cm hcl:#866857 byr:1967 cid:178 iyr:2014 ecl:amb eyr:2027',
'iyr:2018 hgt:174cm eyr:2024 pid:478505944 byr:1938 hcl:#341e13 ecl:amb cid:181',
'hgt:180cm pid:178969784 eyr:2025 ecl:brn byr:1938 hcl:z iyr:2013',
'iyr:2016 pid:447434977 hgt:71in hcl:#733820 eyr:2023 ecl:amb byr:1950',
'cid:173 byr:1945 ecl:oth iyr:2010 hgt:163cm hcl:#a97842 eyr:2025 pid:418871498',
'hcl:#623a2f ecl:hzl byr:1937 iyr:2018 pid:017817627 eyr:2026 hgt:163cm',
'hgt:162cm byr:1982 iyr:2012 cid:123 pid:099838535 ecl:hzl hcl:#efcc98 eyr:2021',
'pid:041801541 ecl:brn hgt:184cm iyr:2013 hcl:#6b5442 byr:1969 eyr:2020',
'ecl:oth pid:314689468 hcl:#fffffd byr:1934 eyr:2023 iyr:2019 hgt:151cm',
'eyr:2021 pid:206164494 ecl:amb hgt:158cm iyr:2014',
'eyr:2024 hgt:162cm hcl:#cfa07d iyr:2015 pid:269887041 byr:2002',
'hgt:179cm byr:1953 hcl:#a87847 pid:966876004 iyr:2016 cid:193 eyr:2022 ecl:oth',
'ecl:blu cid:111 iyr:2019 byr:1955 pid:659491942 eyr:2028 hcl:#602927 hgt:179cm',
'eyr:2030 iyr:2011 ecl:oth cid:83 pid:160688997 byr:1994 hcl:#602927 hgt:180cm',
'ecl:brn eyr:2025 hcl:#130738 iyr:2012 byr:1950 hgt:167cm pid:686738997',
'hcl:#c0946f byr:1937 pid:208013639 eyr:2026 cid:309 hgt:155cm ecl:hzl iyr:2015',
'ecl:amb eyr:2022 pid:181247866 byr:1949 hgt:191cm hcl:#18171d iyr:2015',
'hcl:#3fd612 eyr:2025 byr:1981 ecl:gry hgt:184cm iyr:2010',
'byr:1969 ecl:amb pid:770110016 iyr:2012 hgt:193cm hcl:#7d3b0c eyr:2020 cid:171',
'byr:1937 hgt:162cm iyr:2020 ecl:blu hcl:#866857 eyr:2020 pid:057170032',
'pid:516772675 iyr:2018 eyr:2027 byr:1962 cid:233 hgt:176cm hcl:#623a2f ecl:hzl',
'pid:909808739 hgt:165cm iyr:2018 hcl:#18171d eyr:2028 ecl:hzl cid:254',
'eyr:2025 iyr:2011 hcl:#a97842 hgt:65in byr:1981 ecl:blu pid:722094416',
'eyr:2027 hcl:#866857 byr:1953 pid:532811620 ecl:gry hgt:192cm iyr:2010',
'hgt:161cm hcl:#7d3b0c byr:1983 ecl:grn pid:242124004 eyr:2021 iyr:2017',
'eyr:2027 cid:240 byr:1955 pid:969478946 ecl:brn iyr:2011 hcl:#341e13',
'iyr:2013 eyr:2030 pid:032502598 byr:1945 hcl:#efcc98 hgt:162cm ecl:gry',
'hgt:165cm ecl:hzl pid:851962288 eyr:2023 iyr:2020 hcl:#888785 byr:1981',
'hgt:170cm hcl:#7d3b0c pid:897882367 cid:207 ecl:hzl eyr:2030 iyr:2020',
'iyr:2014 hcl:#623a2f hgt:176cm eyr:2030 byr:1932 ecl:brn pid:676358652',
'iyr:1963 eyr:2034 ecl:#698113 hgt:76cm hcl:z pid:174cm byr:2029',
'hgt:181cm byr:1966 eyr:2022 hcl:#888785 ecl:amb pid:692426080',
'iyr:2019 hcl:#c0946f byr:1948 eyr:2028 hgt:156cm cid:204 ecl:oth pid:229984095',
'pid:859107750 hgt:188cm hcl:#efcc98 byr:1992 eyr:2029 ecl:amb iyr:2010',
'pid:754939860 hcl:#602927 hgt:164cm cid:261 ecl:gry byr:1966 eyr:2027 iyr:2011',
'eyr:2027 hcl:#602927 iyr:2019 hgt:71in pid:368543014 ecl:brn byr:1991',
'byr:1934 hcl:#341e13 pid:410490656 cid:66 ecl:grt eyr:2028 hgt:188cm iyr:2014',
'byr:1932 ecl:amb hgt:188cm eyr:2020 pid:29447176 iyr:1947 hcl:#a6304b',
'byr:1980 hcl:#733820 pid:800459957 hgt:191cm eyr:2020 cid:337 iyr:2010',
'eyr:2029 hgt:155cm byr:1994 hcl:#6b5442 ecl:grn iyr:2010 pid:978117883',
'iyr:2019 byr:1958 pid:466450124 ecl:grn hcl:#7d3b0c hgt:182cm eyr:2029',
'byr:1970 pid:810234340 iyr:2014 cid:247 eyr:2021 hgt:172cm hcl:#cfa07d ecl:blu',
'eyr:2024 hcl:#7d3b0c byr:1930 cid:194 pid:216814907 hgt:63in ecl:gry',
'byr:1946 ecl:gry pid:579575823 hgt:170cm iyr:2015 eyr:2029 hcl:#7d3b0c cid:88',
'byr:1936 hcl:#6b5442 eyr:2020 cid:272 pid:752699834 iyr:2015 hgt:190cm ecl:grn',
'cid:85 iyr:2018 eyr:2025 ecl:hzl hgt:192cm byr:1996 pid:478812793 hcl:#602927',
'hgt:160cm byr:1968 ecl:hzl hcl:#9b96f3 iyr:2016 eyr:2027 pid:054732103',
'hcl:#efcc98 hgt:152cm pid:140347821 cid:346 eyr:2022 ecl:oth iyr:2010 byr:1931',
'hgt:187cm ecl:blu hcl:#fffffd pid:061318772 byr:1969 iyr:2012',
'eyr:2021 hgt:190cm ecl:amb byr:1963 pid:158cm iyr:2015 hcl:#b6652a',
'cid:144 hcl:#c0946f iyr:2013 pid:384713923 ecl:brn eyr:2028 hgt:157cm byr:1981',
'byr:1981 ecl:gry eyr:2027 hgt:150cm pid:769266043 hcl:#006f93 iyr:2015',
'hgt:154cm eyr:2022 pid:516617153 ecl:amb byr:1993 iyr:2020 hcl:#341e13',
'hcl:#b6652a byr:1943 pid:323629477 cid:311 ecl:grn eyr:2030 hgt:182cm',
'hcl:#7d3b0c hgt:70in byr:1996 pid:205918254 eyr:2022 cid:178 iyr:2010 ecl:brn',
'byr:2001 hgt:186cm iyr:2019 ecl:brn eyr:2024 hcl:#888785 pid:218031016',
'ecl:oth byr:1971 hcl:#a97842 pid:673909751 hgt:152cm eyr:2026 iyr:2017',
'iyr:2017 byr:1966 cid:334 pid:#8a11cd hgt:188cm eyr:2023 hcl:#ceb3a1 ecl:brn',
'ecl:amb iyr:2019 pid:835997489 hcl:#b6652a eyr:2026 hgt:154cm byr:1989',
'eyr:2033 cid:288 byr:1951 ecl:zzz iyr:1962 hcl:#cfa07d hgt:72cm',
'cid:238 hgt:162cm eyr:2020 byr:1995 ecl:amb iyr:2010 pid:700982289',
'iyr:2010 pid:741394760 ecl:blu eyr:2030 byr:1934 hgt:68in hcl:#fffffd',
'pid:434939593 iyr:2020 hcl:#cfa07d cid:282 hgt:168cm ecl:blu byr:1939',
'hgt:154cm byr:1981 ecl:brn eyr:2029 iyr:2019 hcl:#602927 pid:329288264 cid:307',
'iyr:2016 hcl:#866857 byr:1968 eyr:2029 hgt:152cm pid:347204193 ecl:brn',
'ecl:hzl pid:975616547 hgt:166cm iyr:2015 hcl:#efcc98 eyr:2020 byr:1927',
'byr:1960 cid:309 eyr:2022 hcl:#a97842 pid:186837033 iyr:2019 hgt:156cm',
'hgt:165cm ecl:hzl pid:776872855 byr:1923 cid:313 eyr:2029',
'eyr:2021 hcl:#18171d byr:1938 hgt:160cm iyr:2020 pid:938987284 ecl:gry',
'iyr:2011 eyr:2026 ecl:amb hgt:166cm pid:727980371 cid:154 byr:1967 hcl:#888785',
'byr:1928 ecl:grn hcl:#888785 pid:852102448 hgt:150cm eyr:2024 iyr:2018',
'byr:1997 cid:201 ecl:gry eyr:2020 hgt:163cm hcl:#7d3b0c iyr:2011 pid:052314445',
'ecl:hzl eyr:2024 pid:460808964 iyr:2015 byr:1965 hcl:#c0946f hgt:189cm',
'iyr:2010 cid:163 byr:1944 ecl:grn pid:731085710 hcl:#efcc98 hgt:159cm eyr:2027',
'byr:1937 hcl:#ceb3a1 eyr:2026 ecl:hzl iyr:2019 hgt:185cm',
'iyr:2016 ecl:gry byr:1964 hcl:526fbd eyr:2023 pid:981371510 hgt:71cm',
'eyr:2028 hcl:#18171d pid:264437557 iyr:2014 byr:1987 hgt:168cm ecl:gry',
'pid:574867413 hcl:#2b965f eyr:2025 hgt:154cm byr:2001 ecl:hzl iyr:2011',
'iyr:2020 cid:212 ecl:gry hgt:174cm byr:1939 eyr:2029 hcl:#cfa07d',
'hcl:#b6652a cid:249 pid:447524365 ecl:brn hgt:177cm byr:1959 eyr:2040 iyr:2011',
'byr:1935 ecl:amb hcl:#fffffd pid:270076583 cid:128 hgt:60in iyr:2016 eyr:2027',
'hcl:#c0946f pid:149533201 cid:332 ecl:blu byr:1935 hgt:185cm iyr:2016 eyr:2025',
'hcl:#f27d9b cid:275 hgt:59in byr:1928 iyr:2017 pid:311342224 eyr:2022 ecl:grn',
'ecl:gry byr:1985 cid:131 hgt:191cm hcl:#6b5442 pid:957166785 iyr:2018 eyr:2029',
'pid:741921163 hgt:192cm byr:1982 iyr:2012 ecl:blu hcl:#623a2f eyr:2020',
'byr:1995 hgt:164cm eyr:2027 ecl:gry pid:086846266 hcl:#ceb3a1 iyr:2017',
'ecl:brn hcl:#c0946f hgt:158cm eyr:2020 pid:548013549 cid:107 iyr:2014 byr:1966',
'eyr:2021 hgt:192cm iyr:2015 hcl:#888785 byr:1942 cid:104 pid:582902279 ecl:grn',
'byr:1923 hcl:#fffffd hgt:185cm pid:216803187 ecl:amb eyr:2030 iyr:2020 cid:153',
'pid:129687562 hgt:156cm eyr:2020 cid:336 byr:1964 hcl:#733820 iyr:2011 ecl:gry',
'iyr:2012 hcl:#866857 pid:814749853 hgt:156cm cid:155 byr:1924 eyr:2024 ecl:oth',
'hgt:151cm pid:832407555 cid:188 byr:1949 iyr:2010 ecl:oth eyr:2022 hcl:#adeffb',
'cid:102 ecl:grn byr:1999 hcl:#a97842 iyr:2013 hgt:173cm pid:199221595 eyr:2029',
'byr:1963 hcl:#fffffd pid:980136208 cid:230 ecl:amb iyr:2010 hgt:171cm eyr:2029',
'byr:1969 pid:524832668 hcl:#efcc98 ecl:oth iyr:2019 eyr:2029',
'hgt:184cm hcl:#13682c eyr:2022 iyr:2016 byr:1944 ecl:amb pid:764280754',
'hgt:162cm byr:1922 eyr:2023 ecl:hzl pid:870409472 iyr:2012',
'hcl:#888785 byr:2008 ecl:utc iyr:1921 pid:993871206 hgt:152cm eyr:2026',
'hcl:#18171d byr:1924 hgt:191cm pid:130883621 iyr:2010 eyr:2028',
'byr:2001 hgt:185cm ecl:blu eyr:2020 iyr:2013 hcl:#888785',
'pid:043166927 cid:287 hgt:179cm iyr:2016 eyr:2021 byr:1960 ecl:amb hcl:#888785',
'ecl:oth iyr:2020 hgt:183cm hcl:#fffffd byr:2013 eyr:2026 pid:042844334',
'pid:36857936 byr:1995 ecl:hzl hcl:#c0946f eyr:2025 hgt:162cm iyr:2011',
'iyr:2013 ecl:blu cid:92 byr:1946 pid:150720364 hcl:#7d3b0c hgt:180cm eyr:2027',
'cid:276 eyr:2020 iyr:2011 hgt:59in hcl:#6b5442 ecl:amb byr:1992 pid:137604720',
'byr:1998 pid:239200796 hcl:#957b4b hgt:171cm iyr:2011',
'cid:176 pid:872650041 byr:1987 hcl:#623a2f hgt:69in ecl:oth eyr:2024 iyr:2015',
'pid:388875093 eyr:2024 ecl:amb hgt:175cm iyr:2019 byr:1970 hcl:#ceb3a1',
'pid:040506316 byr:1999 cid:186 hcl:#7d3b0c ecl:blu eyr:2022 hgt:160cm iyr:2019',
'cid:54 pid:314873473 iyr:2013 eyr:2020 hcl:#c0946f hgt:158cm ecl:amb',
'iyr:2016 ecl:oth hcl:#fffffd hgt:189cm eyr:2020',
'byr:1981 hgt:163cm ecl:brn hcl:#7d3b0c iyr:2016 pid:500276094 cid:98 eyr:2029',
'ecl:oth hgt:158cm eyr:2023 hcl:#c0946f iyr:1966 pid:544377825 byr:1938',
'cid:170 hcl:#733820 iyr:2020 byr:1970 hgt:150cm pid:469096877 eyr:2020',
'pid:144977701 hgt:180cm byr:1975 hcl:#cfa07d ecl:oth cid:57 eyr:2022 iyr:2016',
'pid:591688826 hgt:156cm hcl:#a97842 ecl:amb iyr:2011 byr:1955 eyr:2020',
'hcl:#a97842 hgt:174cm iyr:2012 eyr:2024 pid:928395919 ecl:blu byr:1927',
'ecl:amb hgt:156 hcl:#888785 iyr:2019 eyr:2021 byr:1997 pid:980577052',
'iyr:2014 eyr:2028 hgt:177cm ecl:oth byr:1930 pid:846909255 hcl:#602927',
'hcl:#efcc98 iyr:2015 byr:1941 pid:387565513 ecl:gry cid:54 eyr:2026 hgt:166cm',
'hcl:#fffffd iyr:2014 ecl:brn pid:241522887 byr:1963 hgt:178cm eyr:2024',
'ecl:grn hgt:70in pid:202158837 eyr:2026 byr:1964 iyr:2018 hcl:#c0946f cid:77',
'hgt:176cm iyr:2016 pid:927969731 byr:1939 eyr:2025 ecl:grn hcl:#fffffd',
'byr:1943 hgt:191cm ecl:hzl pid:422579553 iyr:2017 eyr:2020 hcl:#c2a152',
'eyr:2028 byr:1952 pid:506339509 hcl:#602927 hgt:179cm ecl:grn',
'hcl:#341e13 iyr:2014 ecl:brn pid:823049712 eyr:2030 hgt:157cm byr:1924',
'ecl:hzl byr:1954 pid:146052548 cid:194 eyr:2030 hcl:#ceb3a1 hgt:183cm iyr:2013',
'hcl:#6b5442 eyr:2026 iyr:2014 hgt:65in ecl:hzl pid:694135829 byr:1920',
'iyr:2012 byr:1984 hcl:#623a2f pid:270343526 ecl:gry cid:246 hgt:185cm',
'eyr:2026 ecl:grn pid:853148268 iyr:2014 hgt:183cm hcl:#a97842 byr:1939',
'eyr:2021 hgt:182cm byr:1922 pid:199346431 cid:165 iyr:2016 ecl:hzl hcl:#b6652a',
'ecl:#47904b pid:66740994 iyr:2025 byr:2029 eyr:2023 hcl:a6b541',
'ecl:hzl byr:1947 hcl:#341e13 pid:466649892 eyr:2030 hgt:164cm iyr:2015',
'hcl:#a97842 iyr:2016 eyr:2029 byr:1921 hgt:191cm ecl:brn pid:776471818',
'iyr:2014 pid:605101404 ecl:amb hcl:#7d3b0c byr:1991 eyr:2026 hgt:158cm',
'byr:1995 cid:271 ecl:hzl iyr:2012 hcl:#18171d pid:723865532 hgt:165cm eyr:2029',
'ecl:hzl hcl:#7d3b0c byr:2023 pid:83552498 eyr:2025 hgt:65cm iyr:2010',
'eyr:2022 byr:1975 hcl:#888785 hgt:165cm cid:166 ecl:brn iyr:2013 pid:261135534',
'byr:1999 cid:222 iyr:2020 ecl:hzl hgt:182cm pid:411279683 hcl:#1ca912',
'byr:1954 cid:273 ecl:#915d48 pid:004261180 hcl:#cfa07d iyr:2018 hgt:167cm eyr:2021',
'hcl:#733820 byr:1931 iyr:2015 cid:130 eyr:2029 hgt:183cm pid:962443962 ecl:gry',
'hgt:192cm eyr:2029 pid:643859724 iyr:2016 ecl:blu byr:1951',
'hgt:155cm pid:293590926 hcl:#602927 eyr:2027 byr:1959 iyr:2020 ecl:amb',
'ecl:oth hcl:#fffffd pid:469517546 eyr:2026 iyr:2020 hgt:181cm byr:1929',
'eyr:2026 iyr:2015 ecl:grn pid:644263519 cid:254 hgt:64cm byr:1944 hcl:#341e13',
'hgt:150cm hcl:#341e13 ecl:oth eyr:2028 byr:1922 pid:618759433 iyr:2017',
'ecl:hzl hgt:169cm hcl:z eyr:2035 pid:620999812 byr:1998',
'pid:897252903 hgt:158cm iyr:2011 byr:1987 cid:221 eyr:2030 hcl:#efcc98 ecl:gry',
'ecl:gry eyr:2027 byr:1951 iyr:2012 pid:542287454 hcl:#6b5442',
'pid:#185456 byr:2028 cid:148 iyr:1957 hcl:df9a7d ecl:grt hgt:101 eyr:2036',
'hcl:#b6652a eyr:2023 hgt:150cm cid:316 ecl:gry byr:1922 pid:858150885 iyr:2013',
'hgt:181in byr:1986 ecl:#b9ca4d iyr:2014 cid:77 eyr:2026 pid:277491106',
'byr:1996 ecl:oth pid:539623368 hcl:#602927 eyr:2024 iyr:2019 hgt:179cm',
'pid:499804970 hcl:#18171d ecl:grn hgt:189cm eyr:2029 iyr:2012 byr:1986',
'pid:093626459 eyr:2024 iyr:2018 ecl:grn byr:1922 hgt:153cm',
'hgt:179cm byr:1990 eyr:2026 hcl:#623a2f ecl:blu pid:306676089 iyr:2011',
'eyr:2022 ecl:oth pid:894642127 hcl:#5a9d3e iyr:2013 hgt:68in byr:1987',
'pid:059006259 byr:1953 hcl:#7d3b0c ecl:oth iyr:2011 hgt:157cm eyr:2023',
'ecl:oth pid:255405447 eyr:2021 cid:130 hcl:#b6652a hgt:75in iyr:2020 byr:1959',
'cid:124 pid:353288807 hcl:#7d3b0c byr:1963 eyr:2020 ecl:oth iyr:2020 hgt:66in',
'hgt:150cm hcl:#3a4c6e pid:027677435 ecl:hzl cid:256 byr:1960 iyr:2015 eyr:2026',
'ecl:brn hcl:#c0946f eyr:2028 pid:801870217 iyr:2010',
'cid:170 hgt:175cm eyr:2028 pid:620159472 iyr:2020 hcl:#7d3b0c ecl:brn byr:1939',
'iyr:2019 hgt:161cm cid:152 ecl:brn hcl:#fffffd byr:1938 eyr:2030 pid:311625365',
'hgt:174cm hcl:#efcc98 byr:1934 pid:389966928 ecl:amb eyr:2023 cid:235 iyr:2018',
'iyr:2010 byr:1960 pid:556639427 ecl:grn hgt:152cm eyr:2022 hcl:#623a2f',
'iyr:2014 hcl:#623a2f hgt:169cm pid:243755754 ecl:oth eyr:2025',
'iyr:2016 hcl:#623a2f cid:152 ecl:oth hgt:62in byr:1946 eyr:2028 pid:007367220',
'iyr:2013 ecl:oth hgt:163cm byr:1987 hcl:#2cc1fd pid:346162920 eyr:2028',
'pid:636103282 byr:1952 eyr:2029 ecl:oth hcl:#fffffd cid:290 iyr:2013 hgt:63in',
'eyr:2021 hcl:#866857 iyr:2013 byr:1951 hgt:157cm pid:258369047 ecl:amb',
'byr:1983 iyr:2026 hgt:182cm eyr:2029 hcl:#623a2f ecl:hzl pid:373940630',
'pid:283714222 hgt:173cm ecl:gry byr:1939 iyr:2015 cid:81',
'hgt:164cm cid:215 ecl:amb eyr:2025 pid:459309210 hcl:#ceb3a1 byr:1954 iyr:2015',
'byr:1931 ecl:oth eyr:2028 hgt:177cm hcl:#6b5442 pid:494763488 iyr:2015 cid:293',
'ecl:oth hcl:#fffffd hgt:188cm cid:252 pid:987529683 iyr:2020 byr:1945',
'eyr:2029 pid:745721513 iyr:2017 ecl:brn hgt:184cm hcl:#a97842',
'eyr:2024 ecl:oth hgt:153cm iyr:2014 byr:1953 hcl:#888785 cid:330 pid:532786321',
'hgt:180cm pid:441199844 eyr:2023 ecl:grn hcl:#b6652a byr:1958 iyr:2012',
'ecl:brn pid:835022632 hgt:174cm byr:1928 hcl:#341e13 eyr:2028 cid:176 iyr:2011',
'hgt:72in byr:1964 hcl:#ceb3a1 ecl:gry iyr:2020 eyr:2028 cid:180',
'iyr:2025 byr:1999 eyr:2024 hcl:#c0946f hgt:86',
'eyr:2023 byr:1974 pid:067761346 cid:178 ecl:hzl iyr:2020 hgt:168cm hcl:#6b5442',
'hgt:157cm ecl:gry eyr:2025 pid:803912278 byr:1963 iyr:2011 hcl:#ceb3a1',
'hgt:190cm eyr:2026 ecl:grn iyr:2012 hcl:#c0946f byr:1929',
'eyr:2023 ecl:hzl pid:#fb639f iyr:2030 cid:132 byr:2016 hcl:#ce01c8',
'eyr:2021 pid:228596339 byr:1974 ecl:blu hgt:174in iyr:2020 hcl:#733820',
'ecl:amb hgt:165cm byr:1953 hcl:#118493 pid:458049702 cid:99 iyr:2019 eyr:2023',
'ecl:hzl pid:277988952 eyr:2025 hgt:179cm byr:1992 cid:322',
'hcl:#a97842 eyr:2021 cid:261 hgt:61in pid:162402242 ecl:amb byr:1938 iyr:2016',
'hcl:#d125e3 iyr:2016 byr:1982 eyr:2027 hgt:154cm pid:365548961',
'iyr:2016 hgt:187cm byr:1980 pid:977322718 eyr:2027 ecl:brn hcl:#ceb3a1',
'iyr:2010 ecl:oth pid:455361219 hgt:153cm eyr:2027 hcl:#6b5442 byr:1965',
]
# %%
fields = ['byr',
'iyr',
'eyr',
'hgt',
'hcl',
'ecl',
'pid', ]
def contains_required_fields(pprt):
return all(field in pprt for field in fields)
valids = []
for pprt in passports:
if contains_required_fields(pprt):
valids.append(pprt)
print(len(valids))
#%%
import re
def height_valid(s):
unit = s[-2:]
height_pattern = re.compile('[0-9]+')
match = height_pattern.findall(s)
if len(match) != 1:
return False, 'no matching int'
hgt:int = int(match[0])
if unit not in ['cm', 'in']:
return False, 'invalid unit'
if unit == 'in':
if 59 <= hgt <= 76:
return True, 'good'
else:
return False, f'{hgt}{unit} not valid'
if unit == 'cm':
if 150 <= hgt <= 193:
return True, 'good'
else:
return False, f'{hgt}{unit} not valid'
raise RuntimeError()
# %%
invalid_passports = ['eyr:1972 cid:100 hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926',
'iyr:2019 hcl:#602927 eyr:1967 hgt:170cm ecl:grn pid:012533040 byr:1946',
'hcl:dab227 iyr:2012 ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277',
'hgt:59cm ecl:zzz eyr:2038 hcl:74454a iyr:2023 pid:3556412378 byr:2007', ]
test_passports = ['pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 hcl:#623a2f',
'eyr:2029 ecl:blu cid:129 byr:1989 iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm',
'hcl:#888785 hgt:164cm byr:2001 iyr:2015 cid:88 pid:545766238 ecl:hzl eyr:2022',
'iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719', ]
debug_file = open('debug.txt', 'w')
import re
matching_data = []
spliting_pattern = re.compile('[\n\s:]+')
from more_itertools import chunked
for pprt in valids:
# for pprt in test_passports:
pieces = spliting_pattern.split(pprt)
assert (len(pieces) % 2 == 0)
chunks = chunked(pieces, 2)
d = {}
for k, v in chunks:
d[k] = v
byr = int(d['byr'])
if not (1920 <= byr <= 2002):
debug_file.write(f'passing {d}, byr of {byr} invalid\n')
continue
iyr = int(d['iyr'])
if not (2010 <= iyr <= 2020):
debug_file.write(f'passing {d}, iyr of {iyr} invalid\n')
continue
eyr = int(d['eyr'])
if not (2020 <= eyr <= 2030):
debug_file.write(f'passing {d}, eyr of {eyr} invalid\n')
continue
hgt_str = d['hgt']
hgt_is_valid, reason = height_valid(hgt_str)
nl = "\n"
if not hgt_is_valid:
debug_file.write(f'passing {d} hgt {reason}{nl}')
continue
hcl = d['hcl']
hcl_patt = re.compile('#[0-9a-f]{6}')
if len(hcl_patt.findall(hcl)) != 1 or len(hcl) != 7:
debug_file.write(f'passing {d}, hcl of {hcl} invalid\n')
continue
ecl = d['ecl']
ecl_patt = re.compile('(amb|blu|brn|gry|grn|hzl|oth)')
if len(ecl_patt.findall(ecl)) != 1 or len(ecl) != 3:
debug_file.write(f'passing {d}, ecl of {ecl} invalid\n')
continue
pid = d['pid']
pid_patt = re.compile('[0-9]{9}')
if len(pid_patt.findall(pid)) != 1 or len(pid) != 9:
debug_file.write(f'passing {d}, pid of {pid} invalid\n')
continue
matching_data.append(d)
debug_file.close()
print(len(matching_data))
# %%
import pprint
with open('matches.txt', 'w') as f:
f.write(pprint.pformat(matching_data))
# TODO HEIGHT
# %
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment