From 34f71edd66e22b7d1e1b262d92d80e1bf335aa57 Mon Sep 17 00:00:00 2001 From: Cody Hiar Date: Mon, 25 Jan 2021 12:34:50 -0700 Subject: Initial commit --- day1/day1.py | 18 + day1/input | 200 +++++++++++ day2/day2.py | 25 ++ day2/input | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++ day3/day3.py | 35 ++ day3/input | 323 +++++++++++++++++ day4/day4.py | 104 ++++++ day4/input | 1121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 2826 insertions(+) create mode 100644 day1/day1.py create mode 100644 day1/input create mode 100644 day2/day2.py create mode 100644 day2/input create mode 100644 day3/day3.py create mode 100644 day3/input create mode 100644 day4/day4.py create mode 100644 day4/input diff --git a/day1/day1.py b/day1/day1.py new file mode 100644 index 0000000..b0623f9 --- /dev/null +++ b/day1/day1.py @@ -0,0 +1,18 @@ +from functools import reduce +from itertools import combinations + + +def mult(iterable): + return reduce(lambda x, y: x * y, iterable) + + +def find_x_nums(data, sum_value, num): + for vals in combinations(data, num): + if sum(vals) == sum_value: + return vals + + +data = [int(str.strip(x)) for x in open("input")] + +print(mult(find_x_nums(data, 2020, 2))) +print(mult(find_x_nums(data, 2020, 3))) diff --git a/day1/input b/day1/input new file mode 100644 index 0000000..3bea509 --- /dev/null +++ b/day1/input @@ -0,0 +1,200 @@ +1587 +1407 +1717 +1596 +1566 +1752 +1925 +1847 +1716 +1726 +1611 +1628 +1853 +1864 +1831 +1942 +1634 +1964 +1603 +1676 +1256 +1906 +1655 +1790 +1666 +1470 +1540 +1544 +1100 +1447 +1384 +1464 +1651 +1572 +907 +1653 +1265 +1510 +1639 +1818 +376 +1378 +1132 +1750 +1491 +1788 +1882 +1779 +1640 +1586 +1525 +1458 +1994 +1782 +1412 +1033 +1416 +1813 +1520 +1968 +715 +1396 +1745 +1506 +1024 +1798 +1870 +1615 +1957 +1718 +1349 +1983 +1387 +1738 +1588 +1321 +1160 +1907 +1861 +1940 +1475 +2004 +1852 +1760 +1608 +1028 +1820 +1495 +1811 +1737 +1417 +1316 +1087 +1803 +1595 +1346 +1971 +1692 +1678 +1330 +1480 +1097 +1898 +1973 +1567 +1733 +1336 +1381 +1327 +1670 +1436 +1989 +1334 +89 +1862 +1715 +1743 +1967 +1765 +1402 +1729 +1749 +1671 +1196 +1650 +1089 +1814 +1783 +1225 +1823 +1746 +2009 +1886 +1748 +1481 +1739 +1912 +1663 +1668 +1314 +1594 +705 +1449 +1731 +1487 +1648 +1466 +1317 +1979 +1799 +1926 +1703 +1656 +1978 +2005 +1865 +1982 +1951 +1892 +1713 +1744 +1598 +1606 +1583 +1895 +1804 +1430 +1816 +1364 +1575 +1918 +1431 +1812 +1471 +1797 +928 +1934 +1156 +94 +1563 +1909 +1453 +1392 +1427 +1819 +1524 +1695 +1866 +2008 +1413 +1698 +1051 +1707 +1904 +1681 +1541 +1621 +1421 +1809 +1576 diff --git a/day2/day2.py b/day2/day2.py new file mode 100644 index 0000000..4c68e63 --- /dev/null +++ b/day2/day2.py @@ -0,0 +1,25 @@ +import re +from IPython import embed + +data = [str.strip(x) for x in open("input")] + +pattern = r"(\d+)-(\d+) ([a-z]): ([a-z]+)" +prog = re.compile(pattern) + +# Part 1 + +valid_count = 0 +for x in data: + low, high, char, password = prog.match(x).groups() + if int(low) <= password.count(char) <= int(high): + valid_count += 1 +print(valid_count) + +# Part 2 + +valid_count = 0 +for x in data: + low, high, char, password = prog.match(x).groups() + if [password[int(low) - 1], password[int(high) - 1]].count(char) == 1: + valid_count += 1 +print(valid_count) diff --git a/day2/input b/day2/input new file mode 100644 index 0000000..23e2e9a --- /dev/null +++ b/day2/input @@ -0,0 +1,1000 @@ +1-9 x: xwjgxtmrzxzmkx +4-6 r: rrrkrgr +4-5 v: vvfvvvn +5-16 m: pxmrtmbmqmcldmmm +15-16 s: bsshsszslssssslqdsss +10-12 g: gggggggggzgvg +2-7 n: dntnrng +11-14 j: xrjflbmjszzjbjjh +2-6 r: frxrrrfjnmr +6-7 h: hplhgcsphh +4-5 w: wwwwz +1-6 g: ggdggnggg +3-4 c: cccc +5-8 k: kjgmkkfwxkwqkkgfnv +14-15 h: xpwhdjhhjhrdjkhfh +6-7 g: vgggggdhgsp +1-3 r: rtdcrthphrkzxh +15-16 j: jjjjjjstjjjjhjjjjj +8-10 k: kkkkpkkqkv +1-4 s: sssssj +2-3 d: hdbmbpswddwkkr +6-7 s: ssscssnss +8-9 z: zzzzzzzftz +7-8 t: glwvkgtn +3-10 n: nnnnnnnnnnn +5-7 z: lzzzzfhj +8-9 l: llllllltn +1-2 p: dpcppp +2-5 d: hcfdltbgt +13-16 r: rrdrrqrrrrrsbrrr +7-16 l: lllltllllllllllllrll +9-14 z: vzzzpzfzdzzzzzzfczz +3-5 f: ffffb +6-8 s: csssssjrbdsgs +9-18 r: rrrrrrbrrrjzdrrrcrr +2-5 d: fdzxdj +13-14 c: cclcccccccccmc +9-10 z: zzvszszjbnzzz +5-9 s: ssqshwsss +4-11 x: hxxxxjvdxcqplp +4-6 t: mxtrtttttttttt +3-8 w: wmwwwnbmtw +5-6 x: xsczxd +2-7 w: pwvtgkwwwrpjr +7-9 w: wwwwwwwwj +3-9 h: hhhhbhhhschhh +1-4 p: tlwx +4-5 w: lhzjwwwwmv +6-7 p: ppppglprp +2-16 m: jqmmmmmzmmmmmjmbxmw +8-10 g: zhggpgrrlctggg +7-18 z: pltbcznlvtzgzczzchbz +10-11 t: jttttgtttttt +3-8 k: kkkkkkkkkkk +19-20 x: xxxxxxxxxxxxxxxxxxwr +9-16 l: llllllflllllxpllzl +10-12 m: mmjmmmmmmvms +1-4 c: cdxvxczcc +7-10 n: nnnnfnvpncn +10-17 z: zszzzrzczxzfzzzzlz +4-9 k: kkkdkkkkfk +12-13 m: mmgmmqfgmmtmm +4-6 s: tdmmcs +10-16 n: nkfpnncncnnntmtc +2-3 w: vwhwf +7-17 w: wwfwwwqhwwwwcwwww +5-8 q: tkqrtqqsqkwq +9-10 p: ptpppppppd +1-5 f: cnncnmnf +2-9 k: kkjdsnsqkgprtqb +9-11 n: nplnnnnnnnmnn +4-6 r: rrkrzrr +3-5 z: zzzzsq +17-18 r: rrrrrrrrrrrrrrrrrx +5-8 c: rcccdcclc +1-9 c: vcccccccbc +9-10 x: xxxxcbxxxm +2-5 c: cccfn +8-9 c: cccccnctc +4-8 l: flrhfzwllm +1-5 l: fllfllrklx +5-10 j: jrjkrjjjjxgjqj +5-10 v: dsxvmvvjtsc +4-6 v: bsqvdghvnzdfvjcfvvv +6-11 m: mmmmmmmmmmpm +6-9 q: qqgqkcccsgqqjspj +2-5 n: nvsrc +14-15 n: nnnnnnnnnnnbnms +3-4 m: mmbm +3-11 h: hhbhhhhhhhhhhhhhhhh +7-9 k: kkkkbknkjv +11-15 g: ggvgggfgbgvvzjgxghgg +3-4 z: zzzz +2-5 w: wwwhww +9-14 j: jjjjjjjjtjjjjw +2-4 j: jjbljsj +6-9 w: bwtkbttwqvwk +1-3 l: lllpjl +9-10 g: ggfmggggsrggggg +3-5 t: ttwzxl +5-7 k: kkwtbckkk +9-11 r: rbgrrhrrrrrr +9-12 g: ggggggsggglnggg +1-5 b: bbbwjs +6-7 m: xkjmdmm +6-8 g: gggggwgw +12-15 v: vrvvvqvvpvzvvvvrhqv +15-17 s: hsnjsrsdxpjswsxsss +9-12 r: rnhnrrsrrrrr +1-3 d: ddnd +1-11 m: mmtxkcdrvcmx +1-18 k: kxkkkskkkkkktkkmkc +5-9 h: vfxhhshhvhhbhr +2-3 k: wtrcckttcqrj +2-7 q: wnqcqqxw +1-9 s: sqsssslsssssssssss +4-6 p: mwvpppzp +1-4 v: qlvnvv +10-11 z: lzzzzzzzznt +2-14 q: qwqqqqqqqqqqqfqqr +15-20 d: dddddzddddddddlddddt +11-15 m: fvsqwbnqmbnmgcm +3-4 c: fncnfdjzcxwbpcrn +4-7 z: jsxzzszzqtwzmcznfs +5-6 x: glxxxxrxfxxwl +5-13 b: pdbvhwjwnbdwbrbbjwf +7-8 h: hhthhhvvt +8-11 f: pfffffxffpbf +5-6 n: ndtlxnnnqdmcnv +10-12 s: sssssswssdshssss +15-16 s: ssssssssssqsssss +4-5 s: sssss +3-4 g: ggggg +3-4 c: ccjv +7-12 v: rrrngfwhslsbpvbmwnn +4-10 n: nxnbnnnbxnnn +7-15 d: fggdddpgslqgdwhdndw +6-10 h: hhzzghhfdchhjnm +8-9 c: cccccccnc +9-10 h: hhhhhhhhll +2-16 w: nwfwwwzwvrbmwwww +10-13 k: kkkksjkkskqtkkmkknks +4-9 f: fffwfffbkc +4-11 v: gcfkvvvvfvv +2-5 l: llflftlmlglc +7-10 l: llldljllgsbl +10-19 g: svcsnlshppvrxzghhzg +3-8 d: dddwdzvmddd +3-5 m: kpmmjpmmmdz +13-14 n: nnnnnnnnnnnnns +3-8 b: bkbbbbbbbbbbbbbd +2-4 g: jghfggh +8-11 m: mmmmmmrmmmm +9-12 j: pbjjpjnjxjjfsjzsjps +6-7 r: rrrrrrrr +8-13 v: vvvvvvvbbvvvvvw +4-17 p: tpppppprzpspbpplppr +2-3 h: wbhhzxhllh +2-15 c: nvbcckcpccrtccwccsc +12-13 j: jjjjjjjjjjjzhj +4-10 p: dznzpnxzppl +5-8 r: jrrrsrrrrr +7-10 q: gjqjcqqqqsqfqqq +8-12 k: kkkkkkkkkkkg +3-14 m: mmtmmmmmmmmmmmmmm +3-12 t: khgttqtcltshttwqgt +14-15 b: bbbbbbbbbbbbbqb +14-15 f: fffqfmffpnffffg +5-16 j: jlghwmmrbdvdfjbj +7-8 v: vvkbvvrv +2-11 m: qmcgxcshgwmfm +11-12 m: cmmmzfmcmmzmmmmjmr +6-7 n: hnnbnnnw +4-8 m: mvdtmstm +4-7 m: bcrmmjbpmmmsdnrmm +1-4 w: wwwww +12-14 j: jjjjjjjjjjjrjhj +2-9 h: ghhczbhblx +2-11 v: vmvvvvvggvjpvchvvpc +6-7 f: ffwfflghpwfl +3-14 k: krkmjkgkzcckjbkkk +1-2 c: cfcp +15-17 z: ztzzzdzzzzzzzzzzt +4-13 p: bmrpdwphzqvppktz +4-5 j: jjvjtj +14-20 h: hvchvhhhhbhthlhhhhhh +1-3 j: kqjp +9-13 x: fsxxxkxxbpkxmhlrdtfx +13-14 w: wwpxwwwwwwgtwwcwwww +2-5 p: wppxkq +13-15 x: xxxzxxxbxxxxxxvxs +5-11 q: qvqqqqxqqqqfqqq +8-12 q: qqqqqqqvqqqq +8-10 m: mmmmmmmjmn +17-18 t: ttttrttttsttttttttt +9-13 h: hhhhhqhjlvhhqhhwh +8-9 s: ssssshsst +9-10 v: qvvtvsvcmzvvnpgvv +7-12 d: djcpndppsdddfdsdd +2-3 z: dgzwvbrzzbgw +1-4 k: kwkl +1-9 d: dkdmdsdwdzvlpv +10-11 h: hhhhhhhhhhh +9-10 f: ffffffffff +4-7 d: ssddddxp +18-19 j: jjjjjjjjjjjjjjjjjsj +7-11 m: mkmmrmmlrzsmgm +1-7 k: kkkkkkknk +4-5 w: wwwwj +6-13 s: xslmsfgsssssmslsstqd +4-5 z: zzzch +9-11 j: jjjjjjjjjjj +4-7 h: hjhhkdh +5-14 v: vvvvglvvdvvvvv +5-6 q: shqnjdqqq +1-5 q: dqqqq +5-7 z: zzznzzz +5-9 s: vwsfsxssd +4-5 f: sffffv +5-7 b: xllbbdb +1-14 j: rtzjqkpnkjlrhjcjqj +8-10 w: wwwwwwwfwxz +3-6 g: sggtlggswf +11-14 n: nnbnnncnnsgnnmknn +6-15 c: cclcnccctcrcxqmd +5-8 l: lmllxwpl +4-11 p: pppppppcpkdp +1-4 w: zwwx +1-3 g: nlfpgfzqkzn +11-12 w: vbwwgwvwrwlwwmwwwjw +4-12 j: vzfjgjrkzdrxqfh +1-2 r: frrq +1-4 k: vkkkkk +11-13 d: pndlftgdpdhld +1-4 r: prrvrrrrfrrrrr +8-9 m: fmmxmmmmmmm +1-2 x: xcpxc +4-16 n: rhbndvjnnsnfnwnnm +2-10 g: fkzwxtqmgm +11-19 p: bpppqpppppplpppphpsr +9-13 g: ggggthggggpjgqgslggq +4-5 m: mzmmxcfwmdpz +2-13 t: tttttttptttts +3-7 q: qqvqqqcqq +6-9 j: jsjjjjccjwjcjjj +7-10 r: rdlrrrrrrr +9-12 r: wrrzsrcrgcbrhqvrhlp +6-7 j: jjxjjzhxj +6-7 m: mmmmmmmm +1-3 m: mldvdmxmbk +10-11 f: ffffnffffkqf +5-17 f: ffffsfffftfffkffn +4-5 b: fbwbhvx +14-16 g: ggggggggthgggggsvd +2-3 s: cvsbw +5-10 g: qltgnfghgcrgpnzdsvng +5-6 p: ppjbpnppxg +3-8 j: lgjrzwdvdnwvrnj +2-4 c: cdcc +6-7 l: llflrhlllgklh +1-2 p: tppp +16-17 g: gggggggvggggggggg +3-14 f: fhfdffftfbggpkfgf +16-18 b: bbbbbbbbbbbbbbbbbbbb +5-10 v: thqvvkvlwvdvjzzst +13-14 p: ppppppppppppptc +11-14 t: tkttczttttsttmcnltm +3-4 w: nvxl +4-6 f: fpflfwftk +4-6 h: xhhhhh +15-17 t: tttttttttttttttlv +10-17 j: jjjjjjjjjsjjjjjjd +2-4 s: jcgs +7-9 q: qsqqjhqndsqkqqpvqqr +2-3 p: tnpplcmdpfn +2-5 c: crvmk +1-7 d: tsmzcgddnddddrdxsq +8-9 c: rlfcpctpncv +6-9 f: tkzfhffdf +13-15 s: sssmsscfvsssdsg +6-8 s: ssjsssjrscsss +7-10 f: fffffffkfff +1-6 k: jqtdhpknkkk +11-12 t: tttttttttttf +9-16 d: swjbddfpfbntmprdd +18-19 v: dvvvvvvvvvvvvvvvkvvv +2-5 j: kjjcqjj +11-12 d: dddddddcddld +14-16 f: fffffffffffffffk +4-7 x: nxxxxxxn +10-18 p: pppppppppppppppppr +8-9 k: ktkjkkkkfvklkz +9-15 h: hhhhhhhhchhhhhhhhh +18-19 v: hvkvvvvvvvvvvvvvvqc +1-8 s: xzbxgsxshgl +2-6 p: ppsjpglptchpzbdhj +6-7 n: nnnnnnnc +2-7 j: jhtjjjjj +11-12 b: vnblqbxkbbwb +4-5 z: czzzcztsz +4-9 x: wxpvxxxfxfxx +9-12 w: wwwwwwwwwgwwww +2-5 k: cntkkq +10-12 l: vljplljlllllllll +1-4 t: tfmvst +6-7 d: rddddddwd +2-6 h: bhvwhl +5-8 c: ccsgccncwgjtcbhccckk +5-6 r: rrrrmr +3-8 h: hcrhhjrbhh +2-4 s: xndshswk +2-7 m: mmrqmmlp +7-9 n: nnnbfpmnfnknxnndn +6-7 f: fvffffb +6-8 h: vhhhhhtk +6-7 j: jjjjjwjjs +1-5 r: rwrrrr +3-4 t: tlzk +2-7 k: kkkkkkk +6-11 q: rqqqqqwflqqjqq +5-7 l: llllglll +6-14 r: rrkrrxrmrrrrrc +1-8 w: lrwpzvhhcwtbrwwpwww +3-13 b: kbjhskpbrwqpbcbbkb +6-9 d: ddddbddhdddddddddmg +14-15 n: nnnnnnnntnnnnhf +2-18 k: cgjpktthdbfxrclqwzpl +5-14 w: wwwwwbfwzwcwcwz +5-7 s: tfhssgrsnbssfl +1-18 l: wdkwkdlslbllllgzfm +1-17 h: jhhhhhhhhhhhthhhhh +7-13 w: wwvwwwwwrwwww +1-3 r: rgrdrx +9-11 t: dnxckkwpttv +2-12 c: cgqxrszcckcd +4-13 q: qkchpbqqtrtdztrq +2-9 d: ddddsddddd +9-19 p: pppppgppppqpppppppp +8-9 l: lllhlllll +7-8 h: hhhhhkhvwbhmh +11-12 w: wwwwwwwwwwwnwwww +2-3 d: jhcd +13-16 n: nnnnnnnnnnnnndnnmnn +6-7 d: dllpddkdd +6-7 n: nnnnnkp +7-14 v: vvbcvrvvkmvvsv +5-7 j: jjjjcjs +4-10 l: ldllllllll +4-5 x: rxxxx +15-16 q: qqqqqqqqqqqlqqqw +13-15 m: mmmmmmmmmbmmzmbm +7-10 k: skkkkkkkkq +9-15 m: mghxpjzqdhjcbmdl +2-4 t: ttsnwzbdj +6-7 s: hqtkgtr +3-4 n: twpknn +1-3 l: wrldlsdl +5-6 l: qlxncf +4-5 s: dvsxs +7-9 t: rktsrfwttttgwtzgft +1-3 l: flsf +6-10 c: cchczccccj +1-3 k: bktw +2-4 h: zdqxgrfkfhljhqhkgmfc +16-17 s: sssssssssssssssvs +4-8 p: plpfmnhsppnpwnx +5-10 k: kkkkknkqkk +4-11 s: nsqnssssvqsm +6-14 j: jjjzjwczkjjjxjjcjjxj +3-7 t: tnnbjjhtd +7-8 l: llllllll +4-11 z: cwsvrtszxrgh +2-11 x: sxcxxxjxrxkxdxx +11-15 m: mmxmbxmmdmmmmfmmfmm +10-13 l: tllllwzlzlrbllllhnp +5-6 k: kkkjkmkkkg +4-7 f: wqqfmffffkp +1-9 b: bbbbbmbbbbhbbdzbbtn +10-12 h: hhhhdwbhhqrhhhdnxhr +1-8 r: qfpnfrrrrz +16-20 b: bbbbbbbbbbbbbbbbbbbb +1-5 c: hwqccmwcctcnclcb +6-13 c: clccccqqcccjczpgj +13-14 j: jjjjjjjjjjjjjh +2-4 j: jkfp +2-7 d: qqxdcdjqg +5-6 r: prrrrd +7-8 l: llllllll +2-3 w: nwlm +9-12 v: vnknxncvgvrww +6-16 s: sjnwfsksnszcglxs +5-17 z: zzmkzzzzzntzjzbwpdjz +12-17 j: ljjjjjjhjjwtjjjjdjwj +8-10 s: dnnjlfkxls +2-6 m: jmmqmdkjm +9-11 m: mmmcmmmfsmmm +14-16 p: ppppptpppphrpxpppp +4-15 d: dfkfxdddldddddddlddp +12-14 q: qqqqqqqqqqqwwgq +1-6 g: tgggggmggggdg +10-18 w: wwwwwwwwwbwjwwwwwt +8-9 t: ttkttcttsrgrzlftpt +3-5 j: jjjjjjjjjjjjjl +17-18 c: ccccccczcccccccccs +4-9 d: hjddddddddm +2-4 x: lxjfp +11-12 v: vvvvvvvvvvjv +1-4 z: fmzblzvzm +4-5 h: hhshhh +3-6 t: ptvrtt +7-15 k: kkkjzkckgckskpkk +12-15 w: wwwwwwwwwwwftwdw +3-5 z: jrhns +5-6 n: pxmnzn +1-3 b: bbbkbbbbbbwb +1-10 r: rrjrqrrwrrrqv +11-12 w: wwwwwwwwwwwwwww +5-6 j: jsjjjp +6-11 h: lhbbvmhwrhh +18-19 q: qqqqqqqcxqqqqqqqqxwq +17-18 l: llllllllllllllllxql +3-4 j: jjljjn +8-10 z: zzzzwnzlzggz +6-7 t: tttttft +11-12 f: ffffffffffnf +2-8 b: hqbbbbbsbb +4-5 w: stljwbxpw +1-2 z: grxfpw +6-8 w: wwwwpwwxw +8-14 z: zqzzzzzvzzzzzzgz +4-11 b: cckgrcmbpvbbw +2-9 d: xqxbdddjds +3-6 x: xxrxxx +15-16 n: nnnnnnnnnnnnnndnn +6-11 x: lqmxxxsxxfxxxxlx +1-12 s: vssssshssmsk +1-16 m: bmgkkmwmmzvmmmmmwflv +3-15 t: thkvttsltnbgztt +9-17 z: zzzzzzzzzzzzzzzzzz +4-6 f: fjwfff +3-9 d: ddddddddd +6-10 k: kjkbkkckxkknqkkdc +6-7 n: nsnckwnmn +7-13 t: ptbtjqttwwtftpntdq +7-10 r: wrhhrrrrrwrrrrvqrms +2-3 c: zcrwhtccb +5-7 m: nnwmmdmmmccv +3-5 j: rtjjmjrjl +5-6 s: dssjhsdmbksrks +16-18 c: ccccclcccclccccccc +7-16 b: qpzgqxdbssmzptrv +6-8 b: bnsbbgdbggxbbszbm +1-10 h: lrpstqvhhhhf +4-6 s: tvssppwvss +3-4 g: qqqhcd +4-7 c: qxcqzccckxcpcxcw +1-13 m: nbwdmspmmwbbmm +1-2 j: xjrczrk +9-10 w: wwwwwwwwwd +2-4 h: hhhq +7-10 j: bjmrrjsjthjnnjjxjjd +3-7 f: srfwwfvf +3-4 b: nbbzb +3-5 n: nnnnn +7-8 f: fxfnfffzpqffgdf +10-12 k: kkpkkkpnkkmkjbkk +9-10 k: jkkkkkkkwqk +4-6 z: rzzzzs +4-7 v: vvvtvvjq +6-12 z: dzjnzczzpzgzzzx +6-8 s: smsvbkswslssrdfjsc +5-7 b: bwbbbbbbr +1-3 d: kddbsmmbv +3-4 b: bbbb +5-8 r: rqrrdrrr +7-8 m: mmmmmmzm +9-11 q: xvnlfvhxqfql +3-4 w: wfwj +1-3 q: gqqcqg +1-2 q: cqlxrq +6-12 s: swwjjssjsstmqfssdh +2-4 q: bqqq +5-6 c: ccccbscgfc +14-15 x: xxcxxxxxxxxxxxm +6-12 f: fzfchfnrxfrdffhfl +14-17 g: gggggggggggggjgpgg +5-8 n: njkcngznn +10-13 d: dddlqddddvddr +2-4 c: xgcg +2-10 s: sxsnsdmszwmsss +6-12 q: qbcqspqqqkqrq +6-16 n: xnnnnnnnnnnnnnnfnnn +6-12 s: tssnssmsssssssssnhr +1-4 v: vwvvv +8-10 h: rzmhhjvqhht +1-4 t: ttjdjftfctt +1-4 k: nkkz +1-2 q: vkvqkqq +9-19 n: qxmjqxnxnblqnnqfgsrd +15-16 h: hhhhhhhhhhhhhhghz +2-5 g: jggpxdgwjpsrv +12-13 c: xccccpccrcccc +1-13 g: nfgbghqrljstggcgq +14-17 g: gggggggggggggmggggg +4-14 s: sssbsssssssssgs +1-10 d: rcxvxcgddnhwd +4-14 g: vccvdldqdgzltq +8-10 z: zzdczzvrzzzzr +5-10 t: ctgtttftqtrbt +3-5 v: vvrvx +9-10 w: wwwwwwwwwwwww +4-6 c: hgccmcccc +16-18 s: ssssssssssstssscsh +2-7 z: zzflfrtdx +4-10 v: vvlsvvvvkrc +10-16 d: ddddwddddbdgdddwd +3-4 v: gkbqbtrv +3-4 h: cjdqvwhhththvx +3-5 b: bbbkbrb +3-5 m: ptkqdgsmbcmmblwp +4-17 q: mlqqgsqqqfqkcqqxqq +6-17 m: mdvqvmmxlmzmvmmdm +1-3 r: hrrtrrrrrrrrrwlr +3-5 j: jjjjhj +11-12 q: dqpqqqqqqnzlqq +8-11 d: dddnddnddtdddd +3-16 d: dpddxtlqsqldrpddq +7-13 z: szhzmmzzzzmzzzz +6-18 h: mkxxqtbnnjgnvxnhhhc +4-5 n: nknfrhpn +16-17 d: dddddddgdddddddddd +14-16 w: wwwwwwwwwwwwwwwww +2-3 t: rttfdstqpdtg +3-4 s: gghrfxbfshqssj +1-9 j: bjjjjjjjhjjj +1-2 p: xmpgppppppp +9-14 k: vqpxrkmskfpnxq +1-5 x: xxxxx +1-14 p: bsxnwvpkphdppphpkwp +5-12 d: xdddmzddfddc +9-10 v: gvvvvvgvhnvw +2-7 x: xxxxxwgsvmqnkxv +3-15 c: ccscccccwccccccc +5-8 w: nsvgwzdf +7-14 w: wwwwwwwwwwwfwswcw +5-10 r: qrrlwcrrwz +7-12 f: hfnphfpjffstff +2-6 h: hqjhmph +3-13 x: cpxxxzcrbjxxxb +4-8 k: kkkkktkkkkfkf +7-10 g: gggghghsgwf +8-9 s: sswswssggss +6-10 l: qlllljllhlll +8-11 c: cccwccrbcbccc +5-6 x: xxxxxxg +1-3 w: cwpww +8-11 v: vvvvvvvvvwvv +1-2 b: bbgl +7-10 b: zbkbcbbbsbb +13-15 t: tttttgtttttttktttt +12-14 x: xxxxxxxxxxxxxqf +6-7 k: kmrkkwmk +4-5 m: mmxjmdrhzkmxxphjmz +2-3 t: tnvtndw +4-5 x: xxtxxtxzf +1-3 m: nwmglfscmwrjtzp +10-11 c: cnccckcckcwdc +14-19 b: tvbmrqtchwblbqbbqbb +9-10 x: fxxxxxxxjxx +4-5 g: gggggkggx +8-12 k: kkkkkfkpkqkwkkk +2-6 v: chpvkvt +4-10 r: rmbjmcrgrrfrtmblhw +4-6 n: rnnwtn +3-10 v: htclcjhjkdv +10-13 w: wwwhhwwwrwwzww +18-20 w: wwwwwwjwwwwwwwwvwtww +7-8 w: phrwbwwmc +16-17 q: qqqqqqqqqqqqqqqqx +2-5 k: kzknsxkkgtvmwlfrmrg +3-4 b: zbbbb +5-8 v: hfclvvpc +3-15 t: ctfthpmgznjnhgtth +1-6 t: httttq +5-6 w: wwxhgww +3-5 m: fmtnmmm +11-17 n: xnnchnzpsmcslvzcn +5-6 m: mmmmcm +1-7 r: rwsgcgvjmtxwkqtr +6-16 m: mmmmmmmmmmmqmmmmmm +5-10 s: sssggssssjsssmsss +9-14 p: ppfppzppnvmpqdvpp +2-4 l: wclwrlrdvh +6-17 g: gggmkglggwgpgkmglt +5-7 z: zzzbzpz +4-5 q: qbqqlzpqg +10-19 h: hhhhhhhhhrhhqhhhhhhh +6-7 m: nfnxmsmhtmhsmmmmgmsl +2-3 m: mkfmmm +8-10 j: xrjdnjjjnjjcjjjjjj +3-6 x: xwrjxhjxx +6-7 z: zzzzzzzg +8-17 k: kkkkkkkkkkkkkkkkk +6-9 n: rnnxnnbwnsnnwn +6-8 m: mkmmmsmm +4-6 q: qqfxqqq +2-8 s: hxmfbkszk +6-7 r: rrrrrrr +2-5 h: hhqzhhhh +5-15 b: bhbvnrbrbblbbhh +12-13 d: ddddddtdddvhddd +5-6 f: fmfcfwf +4-7 j: njqfxjjjqjjvdj +6-9 g: fggkggzgghrv +9-12 b: vbblbxpfrbjbgpwxb +1-8 s: tzcdrktsqjsxssfsssh +10-14 f: fffffffffcffffffffff +13-17 p: pqpppppcpbwpppnprppk +16-17 n: nnnmnnnnnnnnnnnsj +10-16 k: kkkkkkkkkkkkkkktk +8-11 w: wwwwwwwwwwm +2-5 q: qqqqqq +2-7 m: mmmmmxg +2-9 m: mmvlggdmr +3-9 s: wxdbmlcrlpnzmkfdfs +12-16 z: zlxzgznqqfzsqtwc +6-7 f: flvmfffjffbmgfzfgfp +2-3 g: cgggqgxqgv +2-3 f: rffvf +1-8 h: vhhhhhhvhhvhhhhf +6-12 x: vzdxxxgxtxzxxxqc +4-5 w: rwwwwww +7-10 r: brwrcrrkcsj +6-10 q: jvqqqqqqqmq +5-18 v: lvhvvwvvvvvlvlvvmv +6-9 z: zzvzcwlzslhlzqsf +3-6 x: sdknfxvwtcfcjgmv +8-9 l: lqcwlllsllll +1-4 k: dgklv +2-6 q: qqqptfqqqqq +4-7 m: mrmcmmmm +4-5 r: rrrblg +1-8 c: qcccccvntc +6-7 m: mzbxmmmnhmqcmmqvbmcp +2-4 t: ptvqx +9-10 s: gpssssssgss +4-18 b: bbbbbbbbbbbbbbbbbfb +4-5 f: ffffgf +3-6 l: lslglw +1-5 l: ltzlllsdlmrllkvbztvr +15-19 l: llllllllllllllnllll +10-11 j: jjjjpjjjjjncj +2-3 w: wfwgd +1-7 r: vrrrzrr +3-7 k: kkkjckkkgkbtvm +9-12 k: kkkkkrckcrkk +1-6 b: hpbjbvb +6-8 s: ssssssvss +2-4 x: mpxk +6-10 x: xxxmrwhgxxxjx +7-8 x: xxphxxxxx +6-19 n: mdrlnnpnjndqgnkfwnnn +2-5 q: qjwtbmkhtnxm +15-17 j: xjjjjjbjqjjjjjjqjjjw +5-7 x: pxxxxsxxsxx +3-6 t: ttttrp +8-11 f: fffffffffrkzf +6-8 r: glsprkbp +10-12 m: mmmmmmmmmmmsm +13-14 z: zzszzzszzbzzzplzzz +19-20 c: ccccchwccccccccccncb +7-12 z: qzggglzlhshnrwt +12-14 z: zzzzzzzzhzzwzc +1-2 s: sssl +1-3 q: fsqmwq +1-6 z: zmzztzkzznmflqffz +9-11 b: bwbbjbbbtlbbn +4-6 s: nktszz +2-5 j: nqjhjkb +7-16 l: lrlllllllmllswlsl +2-3 f: fjqvfff +7-15 w: hwxghddqwwwwwww +2-4 z: zgzfx +5-6 h: vhhjhthh +13-14 h: hhhhhhfhhhhhhhphhhh +16-17 k: kkkkkkkkkkkkkkknx +7-15 l: dllllllmlllfllf +2-6 w: mtkwwwww +2-7 k: zpkkgldk +7-9 d: htmtjddddddqvddcd +4-9 v: rvfbbwzdwcvvqv +6-11 m: mmvmbvmmmsmmlmmm +3-8 p: xpxppsgpbxp +2-6 f: vffbszhvvrdfkxc +8-11 v: lvrrlvvqqvr +5-17 h: hdhhbhhzhhhhhhsbl +8-10 f: fhgffgfrfqtf +9-12 s: ssssfssdpssswf +9-12 m: mmmmmmmmpzgmmm +7-9 l: zlmllvwlllldl +8-11 m: mmdmfmmdxbmxbmm +1-4 m: fklssmffwzgqcvdpm +13-14 c: cczcccccccccccc +5-9 f: frtkfpffsfff +5-8 f: ffffgffr +3-8 m: mmxsmmmb +1-6 m: mdmmmm +1-2 h: hhdtmhwfpt +4-14 d: dmrkdvddmdsdddbsgd +6-7 c: cxccgcccc +6-12 v: xcqvjvvsdvvvpv +11-14 d: gltkjvddwjdkrln +2-13 f: ggffllflfbfffqkfmf +10-13 c: xkvcccccrmccccc +17-19 q: qqsqqqqqqqqqqqqqfqmq +8-10 t: ttttlttwtlt +4-5 f: wffrd +2-16 v: tvhvvqvrvvvvvvqvvf +2-4 c: cccc +3-8 z: zrzzpzlzzhsdxqqfx +6-10 k: kkkkkkkkkk +5-7 r: rvrrvrz +14-15 w: wwwwwwwlwwwwncwvwjk +6-11 q: qfhxqqgqqqsvcpr +4-7 f: kflfffzff +2-14 t: rtttttptlxsttt +11-15 t: ttttttttttftbvqttt +6-10 c: cckwlchltchcczgw +3-8 s: ssssvsqnss +1-8 h: mhhhhrhhh +13-15 b: bbbbbbbbbbbbbbnb +15-17 p: dpppppppppspppcps +5-12 l: xbfjglklphtl +2-4 v: vvvvbvwpvvvrv +3-5 k: plhjkkqkskz +6-12 z: zzzzzczzzzzk +2-3 j: xvjljj +6-7 r: rlrrrrrrzrrzrrr +1-12 t: mqrkgpktbsqxg +10-13 z: pzmzzxpnzxpgzzzhzz +5-13 s: gslsskvgxssssnpj +10-14 m: mmmmmmsmmmmmmk +2-5 b: tnbdsfwdzxrkjdb +2-15 h: hnxhzhmhhhhhwwb +1-4 c: ccccccc +9-10 b: bbbbbbbbbl +4-5 j: jsjjj +3-6 n: xmmnppbn +11-12 m: mmmmmmmmmmmm +2-4 r: jrgrcpvgctrrr +3-4 g: gggr +14-17 n: nhnpnnnnznnnnnnnknnm +4-5 k: krkkf +11-17 h: hhdhhhhhhhhghhkhx +5-19 q: dqbcqqqqsqqzqqqqqqv +5-16 t: ttrkttttstwttttqdt +11-18 h: dhhhhhhhhjhtjhhhhhh +5-8 c: ccccrccfc +1-3 v: nvvnv +7-12 m: prmmzmtmmmssdmmmmt +15-16 r: rrrrrrrrrrrrrqfr +7-19 b: djbbbbqjbdtbslbgbbmb +10-13 w: wwwwwwwwwwwwww +5-15 p: mbpcjqmmhpppkfmrbcww +2-4 n: nxbjknms +5-11 s: hxhcsldmxshdksvsss +12-16 q: qqqqqqqpqcdqqtwkqvq +2-7 j: tjlpcjjjjnj +6-7 s: ssssskm +1-4 t: tttttx +5-10 q: pqmnqrlqchbjzqqvq +11-15 q: qqqqqqqqqqhqrqqrqq +3-5 k: jhkgkxkqfskg +14-15 f: ffvffmfffffffsffqm +4-5 x: xxfxhfxx +2-4 b: ktbv +3-4 t: wjtwxvxctrcttb +1-3 s: shssg +8-12 z: skkzbdpzdkzzz +1-3 f: rlfffqft +5-8 s: fsrcnjsgsmgs +7-17 v: vvvvvvvvvvvvvvvvvvv +4-5 k: kklmq +8-17 h: hhhhhlvghwkhrfzhxh +17-18 n: nnnnnnnnnnnnnnnnnn +3-10 h: mhhhhrhznwvhh +8-9 x: xmxxxxxxx +4-5 p: ppppk +11-13 t: tttttttttttjtcn +3-4 q: qqvhz +3-8 l: gbpqclnkwlhdlml +12-13 f: fffffffffffrf +3-11 s: ssjssssssslssss +6-7 b: bbbbbwbb +7-9 r: krrrrrfrj +13-14 b: bbbbbbbbbvbbbp +2-4 x: ltgbx +7-10 r: smrrrrkjrrr +3-7 n: vnqpngjdgrw +7-18 t: ttltqtsktrjgxtqhtt +2-5 v: dvvxbvvvnk +2-5 n: nnnnnpn +1-3 t: nttmtx +3-4 z: zpszz +1-12 p: pmpxphlpppppppqppp +3-4 v: qvvvvvv +9-12 g: gwgggggggtgqgg +2-4 n: knpn +3-13 d: hncbdrvpddddcfddd +5-9 s: ssnspslslsfkpskss +1-2 s: ssczgkvtlp +5-6 p: pmvpzpppkm +1-4 j: jjhr +5-6 s: ssssxl +1-3 t: ttrt +16-18 n: nnpnnnnnnnnnnnnnnnn +4-5 n: nnfnl +1-4 b: bbbb +7-8 l: nljlllkhl +11-12 n: nnnnnsnnnnnnnpn +5-10 k: kkkkckkkkhkkkkk +7-10 s: zfsssfldxsvqsxdsqs +5-6 q: qqqqqp +6-7 q: qqqqqqq +14-16 w: wwdhmwwjwwwwnwwlwwwv +8-9 l: llllllldll +12-14 c: ccrccccccccrcccccccc +1-3 n: qnwnh +1-4 l: mlll +1-3 s: sssssss +4-15 h: mhclhhhjllhhhgh +15-16 x: xxxxxxtxxxxxtxttxx +2-4 r: rmjh +6-9 z: zzzzzpszt +17-18 n: nnwnnnnnnnnnnnnnppnn +8-11 v: vmvmvlvbvvvvv +7-8 b: bbbbbbdf +2-5 k: kkdkk +8-9 d: dddsldddvxlhd +7-8 h: hhhhkhxshxhn +12-14 c: vcchpxcnmgkctpqcc +1-5 w: wwwwww +1-2 x: xdmk +1-9 p: pbfvrdpqqn +2-4 s: mtnvzhnzs +4-6 t: cttxvtttx +4-8 t: qttmtzttkwftrjk +7-9 c: cccccccccc +2-18 j: zjjqxjfqqlmjrjhjqx +2-5 q: qmkqgq +5-11 k: kkkkkkslzkkkkkrx +16-18 h: hhhhhhhhhqhthhhvhh +5-13 h: hhfhhhhhmhhshhhhhhh +10-12 r: rkrrrrrmrrrrrr +8-10 n: rnnckhmjnxmfggsgtnnn +19-20 c: qsccznccccccnccccccq +1-4 k: wtkck +7-8 s: sssmssjssss +3-5 l: llslv +3-7 t: tvgjqgjbvtgpkt +13-15 b: bbbbbbbbqbblrbbb +9-10 z: zzzzzznzzb +6-16 c: kpcnsccgccxfwccl +2-3 d: ddbd +10-16 v: vvvvqrvvsvvvvvvl +3-12 d: dzdxxhddnlkddddk +8-9 b: khbbbfbbbbb +11-12 z: zzzzzzzzzzzz +5-15 n: bnlvnnrjbnqlnnn +1-2 q: mqqpzjc +11-13 h: hhhhhhchhhhjhh +8-11 x: nxfcxbjqxdlcxxxkxxx +14-18 v: vvbqvvvvvvvvvvvvvvvv +7-8 f: pgtlfffmjffnt +10-18 m: mnkrmmmmmqmmmmmmmjm +1-4 l: lghlhcnwprlgvw +3-4 p: npxplpwl +12-15 s: sfkwnvsssvssssfsssrp +3-7 z: ztqnzlxjmzzbjfnxcw +17-18 q: qqqqqqqqqqqqqqqqqq +3-6 z: jczztzzbhmzzw +3-7 f: skffttjffqfnchfrf +4-6 m: hmqmcrmw +10-11 t: dftttqttttttl +7-13 p: spxnpgtzpppjpwppptp +8-9 q: jqxqqqqxqq +3-4 h: hhhh +10-13 z: pgzxhxxpzzssj +5-9 x: xfrdmjxmrxrqjpxbfxxx +8-17 d: ddpddddddddsgddzddn +1-4 g: vggdggggggggggggggg +10-12 m: mmdqsmwvjjmv +2-7 s: ssqsssk +13-14 n: nnvnnnnnnnnnsgnn +2-16 k: kkkkkkkkkkknkkkk +3-6 p: dprphc +2-10 k: mpkstkxkdb +2-3 s: ssxs +9-19 t: ttjttjttrtsqtmttttt +4-5 j: jrjjtsjjd +6-7 x: xxxpxjx +13-15 q: fqfqqqqhqcqfqqbqqq +1-3 z: zfgrzl +6-8 n: nnnnnphm +1-8 b: bbbbbbbbb +4-5 h: thhgj +4-8 v: vvvcvvvp +8-9 t: ktttttttt +3-4 f: wftbcfnmhkfdpjbns +6-7 v: vvvvvlv +16-17 z: zzzzhfzzzzzzkzzzwzzz +1-2 q: qqqfq +10-11 p: zpjzcppvcppppppppj +10-15 c: vlccbcgcclcczfcfcc +11-17 t: tsntktwzhsfttfwtx +1-7 h: nhhhhhb +6-13 b: bbbphnbbwbbbb +8-9 x: xgxxxlxfxx +14-16 m: mmmmmmmmmmmmmmmm +3-4 x: xxbxx +6-9 c: xkccsfccrccv +10-18 h: jphhbshwghrxpnhnlhxh +6-10 f: nlxbgvftfh +3-4 p: ppwf +1-6 s: kjwjwshcnqwxgwslvl +2-3 m: mmlk +2-3 g: gmgg +3-6 r: rrrvrmr +1-6 s: szgpksczqd +12-14 t: ttttttpjvtqwtltt +1-2 r: hrrrrvrrzj +1-13 m: xmmmmmsmmmcsnmmmmfmm +10-11 f: fffffffffsf +13-15 d: ddddddddddddhdq +7-14 k: jkkkkkkkrkmkkkk +6-9 g: ggggggggg +14-16 l: lllllllvlllllwtx +1-3 g: ggggt +3-4 m: mmkd +5-10 g: jgsgvggwggj +17-18 p: ppppppppppppppphpp +1-2 q: qqjwhq +2-6 q: qqgqqzk +11-16 t: ttwttttttctttthgt +1-5 m: zmmmsm +12-16 r: rrrrrrrrrqrgrrrj +4-5 v: xcvvghvrczpcgn +1-3 x: xbfmxxfxxf +3-5 j: hjbjm +5-14 l: lllltlllllqllll +3-4 x: xsxnxgtx +6-18 g: gggggggggggggggggd +8-12 t: tgttttqtcttttt +4-6 p: pppppd +6-7 x: xxxxxxx +3-4 c: fdcclrccccvg +11-12 v: vnvvvvzdvcrk +1-9 z: zztzqzzzzcz +1-12 v: vmvvvvvvvvvmvvvv +9-16 v: vvvvvvvvvvvvvvvf +2-7 h: xhtsfmvthhhrhdhhbbc +5-6 c: qkccccd +8-12 z: zzzzzzzjzzhbzz +2-4 n: shlnnkxn +19-20 v: vvvvvvvvvvvvvvvvvvcv +7-8 h: hhkhhhkhh +5-19 p: sxslgwvkszswqxtqpvf +5-8 m: mmmmmrmbm +2-5 j: jrnjjzjfhjdkjqjtkwk +7-13 f: ffffffsfffffwfff +6-9 w: wmwwdwwwsz +12-15 f: nsffpfsdsjsfsffk +13-16 k: kkkkkkkkkkkkkkhw +6-17 s: ssssslssssssssssss +3-5 c: srdscnncclqqcncsw +9-11 p: pkppppppppp +5-10 q: qqqqqqqqqpqq +12-14 n: nnnnnnnnnnnnnn +6-11 h: hhhhhqhhhhhvhhhh +2-12 f: fgfrpzcstfffffxff +2-12 n: nnxmnmnnnnknrpmnv +6-7 m: jmmmmcnpkm +4-6 v: mvkcwvmvvjvrvlv +18-20 h: hhrmbrhhhhlhhvhmhhhb +9-13 g: ggggggzgggsgfgxg +9-15 m: pmmxmmmmmmmmmmm +1-7 l: zlmsmlxpvvlzv +2-15 g: sslggkdglqgxpgkx +17-18 c: ccccccccccccccccmc +10-11 w: wwwwwpcwwwpwwd +3-5 w: wwwwk +8-9 f: vfbvffsfcf +4-6 r: rrrrrr +2-4 n: nrnknn +1-4 l: lxllllll +10-11 f: qdfwvfffdfvwffgfkfgf +3-4 b: xgxbdqxbfvzrl +2-8 b: pbbkbbgbxr +1-2 d: ddxdnv +4-8 d: dndfcnhd diff --git a/day3/day3.py b/day3/day3.py new file mode 100644 index 0000000..716dc5e --- /dev/null +++ b/day3/day3.py @@ -0,0 +1,35 @@ +from functools import reduce +from itertools import islice + + +def nth(iterable, n): + return next(islice(iter(iterable), n, n + 1)) + + +def mult(iterable): + return reduce(lambda x, y: x * y, iterable) + + +def count_trees(data, right, down): + return [nth(row, right * idx % len(row)) for idx, row in enumerate(data[::down])].count("#") + + +data = list(map(str.strip, open("input"))) + + +# Part 1 +down = 1 +right = 3 +print(count_trees(data, right, down)) + + +# Part 2 +slopes = [ + # R, D + [1, 1], + [3, 1], + [5, 1], + [7, 1], + [1, 2], +] +print(mult([count_trees(data, right, down) for right, down in slopes])) diff --git a/day3/input b/day3/input new file mode 100644 index 0000000..8285f03 --- /dev/null +++ b/day3/input @@ -0,0 +1,323 @@ +.....#....#...#.#..........#... +...#.................#......... +......#...#.#.#.....#..#.....#. +.........#.#.............##.... +#..####..#..#.##.....#......... +...#........#..##...........#.. +..##.#.#..#....#..#......#.#... +.......#.##....#.....###....#.# +.#..#...#......#..#....##.#.... +...#...............#.#.....#... +..#............#..#.........#.# +#.#.#.............##.#......#.. +#...#..............##...#.#.... +...#....#................#.#..# +..#.#..#.#.#..#.....#.........# +#.............#..#..........#.. +.#...#.#........###.#....#...#. +#......#....#.#..#.##..#....... +.##......###.#......#..##...#.. +#..#....#........#......#.#.... +.#..................#.....#.### +.#......#.#.#.....#...#.#...... +....#.............#.#.......... +....#..#.#........#..###....... +.....#....#...#........#....... +...........#.###....##.......#. +....#...........#.#..#...#..... +...........#.....#.#........... +.....#........#.....#.#..#....# +#.#......#.......#.......#..... +..........#.............#.#.#.. +#...#..........#....#....#..... +.#.#......#..##...#.....#...##. +.#....#...#.#.......#.#........ +....#....##.##...#............. +#...#....#..#.........#........ +...#.....#.#...#.......#..#.... +#.......#...#....##........#..# +####........#........#....#.#.. +............##..........#...... +.......#.....#.#.#.##..#...#... +..........#....#...##.........# +..##..####.......##......#.##.. +.....#.#......##...#..#...#.... +....#.#.#.........#........#... +...........###...#.........##.. +.......#.#....#......#.##...##. +.................#...##.#...##. +.......#.......#..#.#.......... +.#....#..#....#........#....... +...............#.##..#...##..#. +.###.#....#......#...#.#.....#. +.#.....##.......#.......#...... +....#..#.....#.....#........... +.......#....#.................# +.......#.##...#...#......#..... +.#.....#...####.............#.. +......#.........#..........#... +.........#....#....#........### +....#.........#......##.....#.. +....#........##...##.....##...# +.#..#....#..........#...#.###.# +#..#......#...#........#....... +...#.........................#. +.............#........#........ +.......#.#.#.....##.....#..#... +..##..##.........#............. +.#...#..#......#...##..##..###. +.....#....#...#...##.##........ +.#.#..#...........#..#..#...... +##..#...#..#...##..#....#...... +...#...#...#.........#....###.. +...##..#....#.#.#.......#...#.. +..#.#.....#..#....#..##.......# +.....#.#.....#......#....#.#... +.......##....#.....#...#.....#. +..##..#.................#.#.... +..............##....##.#..##... +.#..#.....#....#.#.#........... +......#.#.#..#..#...#.....#..## +..#.........#.#.......###...##. +#.....#...........#.....#.##.#. +#..........#....#....#..#....#. +.#.....#...#.......###......#.. +....##..##......#....#....#.... +.......#.#.............#....#.# +.#..#.##.##.##....#.#.....##.## +....#..##.#..#.............##.. +....#...........#...#....#..#.. +...........#..#....#....##.#.## +......#....#....#.....#......#. +.##.##....#.....#.#......#...#. +.....##.......#.#.#........##.. +#..........##..#....#..#.#....# +...#........................... +...#..#...#..#.#.#.#.......#.#. +.....#.........#..###.......... +...#.#......##....#......#..### +#..............#....#.......#.. +.........##......###..###...... +..#......##...........#.##..... +#.#..#......#...##............. +......#.#.............#....#..# +#.....##..#.#.................# +..##....#.....#....#.....###... +.#.#.##.....#.................. +.#......#.#.#.....#..#....#.... +..#.#.....##.#...#..#.#.##..... +..#.#..#......##.#.#..........# +.......##.....#..#...#....##.#. +...#.....#..........#.......... +......................##......# +...###.........##.........#.... +....#..................#.....#. +.##..#.............#........##. +....#....#...###..........#.... +.....#.#..........###.......... +..#......##......#.#.##.#..#... +##...........#.#..#.....#..#... +.........#......#..........#.#. +...#.##.#..#..###..#........... +....##.#.##...........#.....##. +....#...................###.... +#.......#......#......#.....#.. +#..........##.................. +...#..#.#....#..#.........##.#. +......#...##.#...............#. +.........#....#.#...#..#..#.... +...#......###..#......#.....#.# +#..###.#.............#......... +......#...........#............ +..#..#.##.....#......#.#..#...# +.........#..............#...... +........#.....#..#...#.....#..# +.....................#........# +.##.......##...#.###.........#. +.#...#.......#.#....##....#.... +........#......#...........#.#. +....#......##...#.....#...#...# +..#.........#.#...............# +....#.....#......#............. +.............##.....#....#..... +........#......#.#.....#....#.. +#.........#...#......#....#...# +.#........###...#.#.#...#....#. +.###...........#..#............ +....##.........#..#...##.#..### +.####..#.#...............##.#.. +#.....#...#....#.......##....#. +..#.....##...##.#...#..#....... +..#.###.......#.....#.......#.. +...........#.......#....##....# +..#...#....##........###......# +...#..#..............#...#..... +##.#.............#....##.#..##. +##.#..#..............#.#....... +.......#....#....##............ +.##..##.#..........#.#...#.#... +.........##.......##...#...#... +............#...##....#...#.... +........#...#..#...#.##......#. +..#...#.#.........#.#....#..... +..#...#.#..#.......#.#......... +.......#.....#...#.#..###....#. +.#......#.#....#.#.####....#... +.......##..#......#...#......## +#####.....#........#.#.......#. +.....#...#..#...#.#.....#..#... +....#...#....##.....##....#.#.. +.#..#......#.####.....#....#..# +...#.......#..#.....##........# +.#.....#.#.#.....##...#..#..... +.............#...#..#.....#.... +...#.....##.......#...##..#...# +..#.............#...#..#..##... +...#........#........#...#...#. +##..........#.#.#.............# +....#....#..............#..#... +....#..####..##....#.......#.#. +.#..#.....##....#.#.....#...#.. +#............##..#..#.#......#. +....#..........##..#........... +..#.##.#.......#...#.##....#... +....#.#.............#.#.##....# +...#..#.#.#......#..#....#....# +.............#...........#..#.. +#.............##.......#..###.. +..##....#.#.#...#...#....#...#. +##.......####........##..#..... +.###..#..#..#..#...#.#......... +............#............#..... +#...#.....#.#.##.##...#.......# +#........#....#...#.........#.. +#....#.#......#.............#.. +....#............#......##...#. +.......#........#..#.......#..# +#.#...#.#.#..#..#........#....# +#.#.##...........#.....#.....#. +.#...##.#..#................... +###...#.#.....................# +.#....##...##.#....#..#........ +........###...#.#....##...#..## +...#..#..........###..#.......# +..#..##.............#.....#.... +....##..#..............#....... +...##...##.#....#.#...#...#.#.# +..#..........#.....##........#. +.#.#.....#......#..#....#...... +...##.#....#.......#......#.... +...##..#........##......#..##.. +#..###...#...........#.#....... +..##...#...#.#.#...#.#.....#... +..#.....##.#....#.....#..#..... +..#.#......#.......#........... +....##......##.............#..# +.......#.........##...#..#...#. +.#........#.##.#.....#.#....... +#..#...#..#.....##...........#. +..##..............#....#....... +.#..#....#.#...........#..##.#. +#....#..###..........#...#..... +.......#...##........#.#...###. +....#..#......##......#.....#.. +.#..##..#..#......#......#.##.. +....#.#...........#..#.#.##.#.. +.....#......#.....#.....#..#... +..........#...........#...##... +#..#.#.#..#....#.....##......## +..#.....#.....#................ +...#.#..##.........#..#..##.... +.#.....##..#.#.#.#.....#....... +...........##...#.............. +...#.#....##..#.............### +...#.#...........#.........#... +#.....#.....##..#.#.#.#....#... +##..................##.##...... +......#.....#....#.....#..#...# +.............#.......#....#..## +.#..#.##..#..#.........##...#.. +..#.#....#........#....#....##. +.#.#.#.#.#.......#.......#..#.. +#.....#..##..#.........#....... +.............#.#..............# +.........#......#....#.#......# +.........#.#...##..#.#......... +...........#..........#........ +.......#...#...#......#..#..... +#.....#...............#.....#.# +..#....#..........#.#...#..#... +#....##..#..#.....#.#..#.#..... +.#....#..###............##..... +......#.##...........#....#..#. +...#........##....#...#...#.... +..#.#.#.....#..#.#..........##. +..................#...........# +##........#.#......#.#.......#. +......#..#.............##...... +.#..###..#...###......#....#..# +..#...........#...#...##..#...# +..#..........#..............#.. +.....#......................... +..#.#..##...........##...#..... +...........#......##.....##.... +......#.......#................ +.........#.......#.#........... +#......#...#........##.....##.. +...#.....#....#..#.....#....... +....#.#......#...#..#.##.##...# +..#..#.#.....#...#...........#. +.#....##.####.....#..........## +...##.##.....##..###...#....... +.......#.#...#....#.......#..#. +.#..#.###.#.............#...... +.###.........####..#........... +#..#.#.###.....#.......#....... +.#.....#.....#.....#.........#. +..#...#......#.......##.###.... +.......##.............##.#..... +.....................#.....##.# +##.#...#........#..##........#. +...#..........#.#.#..#......### +.#....#.#.#..........##........ +....#....####....#.#....#..#.#. +..#.........#....##..........## +...##.#.......##.#.......#.#... +........#..#......#...#.#.....# +.....##............#.#.......#. +.........##...##..#.....#..#... +#...#....#........#...#....##.# +..#.....#..........#...##.....# +.##..#.........#...........#... +.....##.#.#.#.#..#...#.....#.#. +.#..#..##.........#.......#...# +#....#.....#...#....#.........# +...#..#.......#.........#...... +.#....##..#......##.#.#......#. +....##.##...........#...#...... +..#.#....#.##...#......#....... +...#........#.............#.... +...##....................#.###. +.#.......#.........#......##... +....#..#..............#....#... +....##.#............#.......... +.#...#....#...##..........#.... +....#............#.....#....... +.......#........#.............. +....#.#....#.#..#..#........... +......................#.#...... +#......##.....#..#.......##.... +...#........#........#.#...##.. +##.#....##....#................ +#..#....#..............#.##.... +......#........#...........#... +#....##.##...#...#..#...##..... +............#............#..#.. +#....#...#..#..#.#...........#. +.......#..........#..........## +.....#......#....##.#.......... +.#....#....#....#....#..#...#.. +.....###....#...#.#.#........#. +.......#...#..........##..#...# +..##........................##. +.....#....#..............#....# diff --git a/day4/day4.py b/day4/day4.py new file mode 100644 index 0000000..f64356c --- /dev/null +++ b/day4/day4.py @@ -0,0 +1,104 @@ +"""Day 4 code.""" +import re +from itertools import chain, groupby + +REQUIRED_FIELDS = set(["byr", "ecl", "eyr", "hcl", "hgt", "iyr", "pid"]) +EYE_COLORS = ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"] +HCL_PATTERN = r"^#([a-fA-F0-9]{6})$" +PID_PATTERN = "^([0-9]{9})$" + + +def passport_str_to_list(passport_str): + """Convert string of passport data into list of key, values. + + The reqason we use tuple is so that when we eventually get a full list that + presents all of key values of passport we can convert it into a dict easier. + """ + pairs = passport_str.split(" ") + return [tuple(x.split(":")) for x in pairs] + + +def passport_parser(itr): + """Parse passport data into individual passports. + + Groupby allows us to generate a new group every time we encounter an empty + line which signifies the boundary of each passport's data. + """ + for k, groups in groupby(data, lambda x: x == ""): + if k is False: + yield chain.from_iterable(passport_str_to_list(x) for x in groups) + + +def passport_has_required_fields(passport): + """Check if passport is valid.""" + return REQUIRED_FIELDS.issubset(set(passport.keys())) + + +data = map(str.strip, open("input")) +passports = [dict(x) for x in passport_parser(data)] + +print("Part 1:", sum(map(passport_has_required_fields, passports))) + + +def byr_is_valid(passport): + """Check birthyear is valid.""" + return 1920 <= int(passport["byr"]) <= 2002 + + +def iyr_is_valid(passport): + """Check issue year is valid.""" + return 2010 <= int(passport["iyr"]) <= 2020 + + +def eyr_is_valid(passport): + """Check expiration year is valid.""" + return 2020 <= int(passport["eyr"]) <= 2030 + + +def hgt_is_valid(passport): + """Check the hieght is valid.""" + hgt = passport["hgt"] + if "cm" in hgt: + val = int(hgt[: hgt.find("cm")]) + if 150 <= val <= 193: + return True + elif "in" in hgt: + val = int(hgt[: hgt.find("in")]) + if 59 <= val <= 76: + return True + return False + + +def hcl_is_valid(passport): + """Check hair color is valid.""" + return re.match(HCL_PATTERN, passport["hcl"]) + + +def ecl_is_valid(passport): + """Check if eye color is valid.""" + return passport["ecl"] in EYE_COLORS + + +def pid_is_valid(passport): + """Check passport id is valid.""" + return re.match(PID_PATTERN, passport["pid"]) + + +VALIDATION_TESTS = [ + byr_is_valid, + iyr_is_valid, + eyr_is_valid, + hgt_is_valid, + hcl_is_valid, + ecl_is_valid, + pid_is_valid, +] + + +def passport_is_valid(passport): + """Check if a passport is valid.""" + return all(func(passport) for func in VALIDATION_TESTS) + + +passports_with_required_fields = filter(passport_has_required_fields, passports) +print("Answer 2", sum(map(passport_is_valid, passports_with_required_fields))) diff --git a/day4/input b/day4/input new file mode 100644 index 0000000..127dae0 --- /dev/null +++ b/day4/input @@ -0,0 +1,1121 @@ +eyr:2024 pid:662406624 hcl:#cfa07d byr:1947 iyr:2015 ecl:amb hgt:150cm + +iyr:2013 byr:1997 hgt:182cm hcl:#ceb3a1 +eyr:2027 +ecl:gry cid:102 pid:018128535 + +hgt:61in iyr:2014 pid:916315544 hcl:#733820 ecl:oth + +hcl:#a97842 +eyr:2026 byr:1980 ecl:grn pid:726519569 hgt:184cm cid:132 iyr:2011 + +ecl:grn hcl:#6b5442 pid:619743219 cid:69 hgt:176cm eyr:2027 iyr:2012 +byr:1980 + +ecl:brn byr:1969 iyr:2014 +hgt:164cm eyr:2020 pid:982796633 hcl:#602927 + +ecl:gmt +iyr:1987 eyr:2039 pid:15115163 byr:2006 +hcl:bfab0d + +cid:117 +hcl:#efcc98 +iyr:2010 pid:322719183 +hgt:176cm +eyr:2020 +byr:1957 +ecl:brn + +byr:1954 hgt:178cm hcl:#38f7fd pid:838813262 ecl:blu +eyr:2029 iyr:2019 + +eyr:2023 ecl:amb iyr:2020 byr:1927 pid:242570886 hcl:#18171d hgt:192cm + +iyr:1990 cid:295 hgt:131 pid:187cm byr:2014 +ecl:xry hcl:z +eyr:1928 + +ecl:hzl +byr:1953 +eyr:2023 hcl:#866857 +hgt:181cm iyr:2010 pid:568185567 + +byr:2030 hcl:#fffffd ecl:#a4a596 hgt:168cm +iyr:1936 eyr:2020 cid:296 pid:168786676 + +byr:2030 iyr:2026 eyr:1974 hcl:7fcaa5 ecl:utc +pid:190cm +hgt:67cm + +byr:2023 eyr:2037 hgt:59cm +ecl:lzr hcl:z iyr:2026 pid:#ea9083 + +byr:2003 hcl:z hgt:91 iyr:1990 eyr:2024 ecl:#123d73 +pid:48494230 + +byr:2022 eyr:2020 iyr:2030 ecl:gmt +hgt:191cm pid:3509331253 hcl:#888785 + +iyr:1994 +ecl:#c3d564 byr:2009 +hgt:162cm hcl:336498 pid:#e99d09 +cid:288 +eyr:1921 + +byr:1924 cid:290 iyr:2010 ecl:amb eyr:2020 +hgt:156cm hcl:#7d3b0c pid:795497164 + +cid:301 iyr:2017 hgt:67cm +hcl:#888785 ecl:#0405b9 byr:1964 pid:707857518 eyr:1976 + +ecl:gry pid:474303066 +iyr:2011 hcl:#18171d hgt:165cm byr:1921 eyr:2024 + +hcl:#6b5442 ecl:amb iyr:2020 hgt:191cm +byr:1949 cid:301 +pid:075846582 eyr:2029 + +hcl:#a97842 cid:186 iyr:2014 +ecl:gry +hgt:191cm eyr:2023 pid:645548969 +byr:1956 + +pid:154cm hcl:z ecl:gmt iyr:1989 hgt:69in cid:53 byr:2010 + +hgt:72cm byr:2023 +eyr:2034 hcl:z ecl:#f5249e iyr:1997 pid:#79af7a + +eyr:2038 byr:2015 +hgt:70cm ecl:grt hcl:9d58a1 iyr:1926 pid:6290928420 + +pid:620857794 eyr:2022 +byr:1950 +hgt:159cm +hcl:#ceb3a1 ecl:amb iyr:2015 + +eyr:1954 ecl:#ab2ce4 pid:#14eedd +iyr:2009 +hcl:29e484 +byr:2022 hgt:73cm + +hgt:59cm byr:2026 cid:245 iyr:2020 +eyr:2029 pid:073943129 ecl:hzl +hcl:#b6652a + +iyr:2014 byr:2015 hcl:#a97842 eyr:2029 +pid:#132098 +hgt:150 ecl:oth + +hgt:151in ecl:#967d49 eyr:2026 hcl:#18171d +pid:384230726 byr:1934 +iyr:2018 + +iyr:2020 eyr:2021 byr:1937 pid:735047371 cid:159 ecl:blu hgt:177cm hcl:#22b774 + +ecl:brn hcl:#6b5442 pid:117807698 cid:105 iyr:2016 byr:1977 hgt:183cm + +ecl:hzl hcl:#6b5442 byr:1933 +iyr:2019 pid:348486702 +eyr:2020 hgt:193cm + +byr:1928 +ecl:gry +eyr:2028 hcl:#fffffd pid:571149069 +iyr:2012 hgt:175cm + +pid:359108298 +eyr:2027 hgt:158cm ecl:amb iyr:2016 +hcl:#602927 + +iyr:2027 byr:2015 +hgt:191in pid:102033301 ecl:xry +eyr:2031 hcl:#602927 + +ecl:oth cid:163 hcl:z iyr:2014 +byr:1944 hgt:173cm +eyr:2027 pid:#0524c1 + +ecl:brn +byr:2030 hgt:71cm eyr:1931 cid:165 iyr:2010 hcl:#cfa07d +pid:509642098 + +hgt:166 iyr:2020 cid:308 +eyr:2022 pid:950463527 +byr:2017 +hcl:z + +ecl:amb +eyr:2023 byr:1924 +pid:901038027 hgt:70in +iyr:2010 hcl:z + +byr:1972 +iyr:2013 +hcl:d669ad hgt:64cm cid:247 ecl:#19aa26 eyr:2023 + +hgt:71 hcl:#fffffd +byr:1976 cid:108 eyr:2038 +ecl:grt iyr:2018 pid:190cm + +iyr:2017 +byr:1963 ecl:grn hgt:175cm +pid:160915270 eyr:2028 hcl:#cfa07d + +pid:569740130 hgt:171cm hcl:#733820 +ecl:gry eyr:2024 iyr:2020 byr:1973 + +byr:1937 +iyr:2016 ecl:gry hgt:181cm pid:521705827 hcl:#b6652a eyr:2027 cid:295 + +hgt:156cm ecl:blu iyr:2019 hcl:#866857 +pid:662418718 byr:2000 eyr:2024 + +byr:1971 pid:693616099 +hcl:#efcc98 +hgt:175cm iyr:2016 ecl:gry +eyr:2023 + +iyr:2013 +eyr:2024 +ecl:gry +pid:414295491 byr:1986 +hgt:188cm hcl:#b6652a + +eyr:2022 byr:1975 iyr:2020 +ecl:grn cid:68 hcl:#a97842 +hgt:151cm pid:229803943 + +cid:258 iyr:2012 +ecl:hzl +byr:2001 +eyr:2021 +hcl:#866857 pid:990590217 hgt:172cm + +cid:339 byr:1957 hcl:#866857 pid:343480061 eyr:2039 +hgt:191cm +iyr:2021 +ecl:utc + +cid:281 hcl:z ecl:blu +byr:2020 pid:132694306 eyr:2020 iyr:1953 + +hcl:#602927 +byr:1933 eyr:2028 +hgt:165cm ecl:gry iyr:2018 pid:658484617 + +ecl:oth +hgt:188cm cid:110 pid:056975690 iyr:2016 byr:1950 eyr:2023 hcl:#cfa07d + +cid:342 hcl:#fffffd eyr:2024 +pid:153555359 byr:1974 +ecl:gry hgt:191cm iyr:2020 + +byr:2019 ecl:#160ed3 eyr:1999 hcl:z +cid:146 pid:195693972 hgt:159cm + +iyr:2015 eyr:2030 hgt:191cm byr:1979 +ecl:#ec4873 pid:994113786 hcl:#cfa07d + +pid:552331609 +ecl:grn +hgt:171cm eyr:2022 hcl:#b6652a +iyr:2020 byr:1931 + +hgt:177cm iyr:2010 pid:934058099 +eyr:2020 +ecl:blu +byr:1967 +cid:112 hcl:#7d3b0c + +iyr:2028 +hgt:138 +cid:180 hcl:z +eyr:2022 pid:3286566621 byr:2002 + +eyr:2020 +iyr:2019 +hcl:#a97842 pid:149148750 ecl:brn hgt:159cm +byr:1981 cid:339 + +cid:344 +eyr:2021 byr:1968 pid:777786047 +ecl:grn hgt:192cm hcl:#888785 +iyr:2015 + +hgt:173cm +eyr:2030 +hcl:#733820 pid:610226642 byr:1954 cid:80 +iyr:2013 ecl:blu + +byr:1999 eyr:2023 +ecl:amb pid:912145128 +hgt:181cm +iyr:2015 hcl:#a97842 + +eyr:2027 hgt:188cm +pid:080715145 hcl:#341e13 iyr:2013 +ecl:oth +byr:1965 + +hgt:170cm byr:1950 iyr:2013 +pid:010541784 +eyr:2027 ecl:zzz +hcl:a3bae8 + +hgt:190cm eyr:2024 ecl:#6dcedc pid:909319684 +iyr:2011 byr:1959 hcl:z cid:182 + +eyr:2028 +iyr:2016 hcl:#623a2f pid:208417572 byr:1929 cid:137 ecl:hzl +hgt:167cm + +hcl:#6b5442 +ecl:grn +byr:1938 +eyr:2023 cid:307 +hgt:59in iyr:2014 pid:205268145 + +pid:047489285 eyr:2026 +hcl:#b6652a byr:1920 +iyr:2015 +hgt:183cm ecl:gry + +ecl:blu hcl:#508e8b iyr:2016 eyr:1954 hgt:151cm pid:086752750 byr:1920 + +iyr:2011 byr:1981 hgt:186cm +cid:117 hcl:#6b5442 ecl:amb +pid:756830713 eyr:2026 + +eyr:2037 pid:364464758 hcl:z ecl:grn +hgt:112 iyr:2013 byr:2022 + +ecl:hzl +cid:65 pid:679487194 +byr:1986 hgt:169cm hcl:#cfa07d eyr:2025 iyr:2013 + +cid:192 +byr:1921 pid:#5fe831 ecl:#fbb2b9 hgt:62cm eyr:1971 iyr:2024 +hcl:z + +hcl:#cfa07d eyr:2026 +hgt:74in +iyr:2019 +ecl:xry +pid:622690982 byr:1982 + +eyr:2026 pid:523515724 iyr:2013 byr:1973 hgt:167cm +ecl:grn hcl:#866857 + +byr:2009 +eyr:1985 pid:484497014 ecl:#0bfcf2 iyr:1992 cid:131 hcl:39d6b0 hgt:177in + +eyr:2020 iyr:2016 ecl:brn hcl:#ceb3a1 byr:1966 pid:696621560 cid:62 +hgt:59in + +hgt:166cm hcl:#7d3b0c +iyr:2016 +ecl:brn pid:190cm +eyr:2020 +byr:2001 + +eyr:2021 +iyr:2012 hcl:#6b5442 +ecl:amb hgt:169cm +pid:969150085 +byr:1925 + +ecl:brn hgt:175cm byr:1992 iyr:2016 pid:415209726 eyr:2027 +cid:72 hcl:#866857 + +iyr:2017 +hcl:#733820 byr:1938 eyr:2020 pid:274486958 hgt:163cm + +hcl:4f5dd1 cid:336 ecl:grn iyr:1931 pid:6212280197 +byr:2016 eyr:2037 +hgt:187in + +iyr:2017 byr:1940 eyr:2025 pid:115098205 hgt:151cm +ecl:grn +cid:122 +hcl:#6b5442 + +hcl:#efcc98 +iyr:2020 pid:709548547 hgt:179cm +eyr:2030 ecl:gry byr:1975 + +cid:217 hcl:#888785 eyr:2029 +ecl:hzl iyr:2013 pid:160053490 +hgt:166cm byr:1992 + +eyr:2024 cid:188 iyr:2016 hcl:ff3a59 ecl:xry pid:296357512 byr:2026 + +hgt:154cm iyr:2010 +ecl:blu pid:717041634 byr:1928 cid:123 +eyr:2027 +hcl:#a97842 + +pid:391011205 ecl:hzl hgt:191cm iyr:2016 eyr:2028 cid:281 byr:1934 + +byr:1937 hgt:65in +pid:667975382 ecl:gry cid:270 eyr:2024 +iyr:2012 + +hgt:179cm pid:065528723 +hcl:#888785 byr:1937 eyr:2028 +iyr:2013 ecl:hzl + +iyr:2027 cid:261 eyr:2037 ecl:#ced7d5 pid:157cm +hcl:3a80c1 byr:2029 hgt:187in + +eyr:2028 +hgt:157cm hcl:#733820 +iyr:2012 ecl:blu byr:1952 pid:915063263 cid:335 + +eyr:2023 hcl:#efcc98 pid:490625944 byr:1961 ecl:grn hgt:155cm iyr:2018 + +cid:247 pid:2807544665 eyr:2021 +ecl:oth +hgt:191cm +byr:1928 +iyr:2013 hcl:#623a2f + +eyr:2015 +byr:2021 +hcl:40d2fc hgt:69cm pid:159cm ecl:gmt + +hgt:175cm eyr:1992 cid:328 pid:263110997 ecl:#e53989 byr:2014 hcl:#a97842 iyr:2026 + +pid:491396731 eyr:2027 hgt:172cm hcl:#623a2f cid:92 iyr:2017 byr:1983 ecl:grn + +hcl:#fffffd +iyr:2018 byr:1983 pid:714591144 ecl:grn eyr:2021 +hgt:160cm + +eyr:2027 +hgt:63in ecl:blu byr:1987 pid:397963077 iyr:2018 hcl:#ceb3a1 + +eyr:2027 +hgt:184cm +hcl:#6b5442 iyr:2012 byr:1984 ecl:blu pid:196287205 + +iyr:1998 +ecl:hzl +pid:7872103596 byr:1991 +cid:275 eyr:2039 +hgt:174cm hcl:0d2ad6 + +iyr:2010 hcl:#efcc98 +byr:1992 hgt:65cm eyr:2038 pid:383236012 cid:68 ecl:lzr + +hgt:190in cid:127 +byr:1947 pid:515728209 hcl:#733820 iyr:2014 ecl:amb eyr:2020 + +iyr:2017 eyr:2028 +hcl:#623a2f +byr:1964 ecl:grn pid:198467794 hgt:169cm + +ecl:utc +hgt:59cm byr:2007 iyr:2030 +hcl:7ac4db eyr:2038 pid:#7206c6 + +iyr:2010 +hcl:z eyr:2021 ecl:brn +hgt:173 cid:86 +pid:194240791 byr:1975 + +pid:9347286034 +hgt:63cm +iyr:1992 eyr:2034 hcl:66031b ecl:grt byr:1929 + +pid:593398904 byr:1939 iyr:2019 hcl:#b6652a ecl:gry eyr:2023 +hgt:70cm + +byr:1991 +iyr:2019 hgt:164cm pid:282852411 cid:340 ecl:amb +hcl:#341e13 eyr:2027 + +eyr:2020 +iyr:2014 ecl:grn hcl:#866857 hgt:158cm +byr:1931 pid:321748597 + +cid:98 byr:2023 iyr:2019 pid:#48f79f +hcl:73c882 eyr:1973 hgt:151in +ecl:utc + +iyr:2023 +hcl:#18171d +pid:52221892 eyr:2039 +byr:2008 hgt:72cm ecl:#db8d14 + +iyr:1966 cid:274 +eyr:2034 pid:12256322 +byr:2006 ecl:dne +hcl:985c2d + +hcl:#fd033b +eyr:2026 ecl:blu +iyr:2016 +byr:1953 hgt:157cm +pid:502619036 + +byr:2015 pid:159cm iyr:2025 +hgt:158cm eyr:1943 hcl:z ecl:grn + +ecl:blu iyr:2016 +pid:842400950 +hcl:#733820 +cid:266 +eyr:2027 byr:1931 +hgt:161cm + +iyr:2017 hgt:190cm byr:1994 pid:706570967 +ecl:hzl hcl:#18171d +cid:180 + +cid:197 pid:204952666 ecl:amb +hgt:70in iyr:2016 byr:1936 hcl:#98cbe3 eyr:2025 + +pid:555499128 +byr:1971 hgt:71in +cid:83 ecl:blu +hcl:#cfa07d eyr:2027 + +ecl:hzl iyr:2014 +pid:30428184 cid:237 +hgt:171cm byr:1942 hcl:#888785 eyr:1986 + +eyr:2025 +pid:579385370 hgt:193cm +hcl:#c0946f byr:1979 iyr:2016 +ecl:amb cid:284 + +eyr:2029 byr:1946 pid:278271295 +ecl:grn +hcl:#cfa07d cid:271 +hgt:172cm +iyr:2020 + +pid:731752614 eyr:2020 byr:1983 +cid:248 ecl:oth hgt:179cm +iyr:2017 hcl:#fffffd + +hcl:z +cid:203 eyr:2032 ecl:#3f9d3d hgt:65cm pid:4042846885 byr:2019 +iyr:1946 + +hgt:171cm ecl:gry eyr:2027 +iyr:2013 +hcl:#7d3b0c pid:92288579 +byr:1955 + +ecl:brn hgt:164cm byr:1969 hcl:#cbf9c9 pid:022724981 eyr:2030 iyr:2013 cid:244 + +hgt:162cm byr:1974 iyr:2015 pid:927525094 hcl:#3d3011 ecl:blu +eyr:2023 + +hgt:157cm +eyr:2020 +pid:221286943 hcl:#fffffd ecl:amb iyr:2018 byr:1945 + +iyr:2019 +eyr:2025 byr:1997 pid:341544323 hgt:174cm cid:113 +ecl:hzl + +pid:138492032 hcl:e35302 ecl:#caaede +eyr:1931 +byr:2001 hgt:156 iyr:1998 + +pid:912182030 cid:189 hgt:162 hcl:#277b39 +iyr:2013 eyr:2023 byr:2023 ecl:blu + +eyr:2027 hcl:#fffffd +ecl:brn +cid:304 iyr:2016 byr:1969 +pid:866607511 hgt:192cm + +hgt:64in +ecl:amb +byr:1958 +pid:720439412 +iyr:2015 eyr:2022 hcl:#ceb3a1 + +eyr:2024 hgt:159cm +pid:187867283 iyr:2016 +ecl:oth hcl:#fffffd +byr:1988 + +ecl:#910bf2 byr:1969 iyr:2011 hcl:z eyr:2024 pid:579502502 +cid:103 hgt:174cm + +pid:718692455 +eyr:2028 +iyr:2016 +hcl:#602927 +ecl:blu byr:1954 +cid:251 hgt:182cm + +eyr:2021 hcl:#341e13 ecl:amb +byr:1933 hgt:179cm iyr:2011 pid:083172316 + +iyr:1998 hcl:z eyr:1944 +byr:2006 pid:453368738 +hgt:160 ecl:#9da5f1 cid:261 + +hcl:#7d3b0c +iyr:2018 +hgt:164cm eyr:2020 byr:1940 ecl:blu + +pid:993701676 eyr:2028 ecl:gry +byr:1951 hcl:#888785 cid:116 +iyr:2020 +hgt:192cm + +hcl:z eyr:2033 +ecl:lzr iyr:2029 cid:326 hgt:68cm byr:2026 +pid:96742419 + +hcl:#a97842 ecl:brn +byr:1920 +hgt:173cm iyr:2015 +eyr:2024 pid:176967666 + +byr:1930 eyr:2025 pid:792694131 +hgt:179cm ecl:brn +hcl:#a97842 +iyr:2015 + +hgt:167cm byr:1960 eyr:2022 hcl:#efcc98 +cid:87 ecl:blu iyr:2012 +pid:431515059 + +hcl:#cfa07d +eyr:2023 +hgt:188cm ecl:grn pid:081575957 byr:1938 iyr:2012 + +iyr:2010 byr:1973 +cid:108 +eyr:2026 +pid:880191154 hcl:#888785 hgt:181cm +ecl:brn + +eyr:2021 iyr:2010 byr:1942 hcl:#7d3b0c ecl:hzl pid:886241926 hgt:171cm + +cid:53 byr:1993 +pid:150cm eyr:2035 +hcl:#888785 hgt:153cm ecl:#128262 iyr:2021 + +ecl:gry +pid:555911148 +hcl:#733820 eyr:2022 hgt:154cm iyr:2012 +byr:1935 cid:338 + +hcl:#b6652a +pid:833873846 iyr:2012 +hgt:167cm eyr:2023 byr:1984 + +eyr:2024 +ecl:blu byr:1955 +hcl:#b6652a pid:517975316 iyr:2010 hgt:166cm + +pid:133785752 +ecl:blu +eyr:2024 +byr:1973 +iyr:2019 hcl:#fffffd +cid:236 hgt:173cm + +cid:222 +byr:2013 hcl:z eyr:2036 pid:7443967478 ecl:brn +iyr:2030 hgt:62cm + +hgt:193cm cid:259 +hcl:#18171d +ecl:grn +byr:1995 pid:727880050 eyr:2030 iyr:2010 + +hcl:#c0946f cid:275 eyr:1954 pid:772184635 ecl:#76add7 byr:2009 iyr:2018 hgt:151cm + +ecl:#52ed0f eyr:2033 hcl:#18171d pid:475397948 +byr:1946 iyr:2028 hgt:178cm + +iyr:2012 hgt:152cm +eyr:2027 byr:1923 ecl:brn +hcl:#18171d pid:513722888 cid:171 + +iyr:2029 +hgt:111 hcl:z ecl:#33e3bc eyr:1930 +byr:1934 pid:94036732 + +hgt:154cm eyr:2024 hcl:#6b5442 iyr:2017 +byr:1974 +ecl:amb pid:470968353 cid:345 + +hgt:184cm hcl:#617375 eyr:2028 +byr:1975 ecl:oth +iyr:2018 pid:735589126 + +cid:261 +hcl:#cfa07d pid:213013397 +hgt:187cm +ecl:gry iyr:2016 + +hcl:#623a2f +ecl:#34964b eyr:2009 pid:169cm byr:2028 hgt:169cm +iyr:2028 + +eyr:2029 iyr:2016 +byr:1985 +hgt:192cm hcl:#602927 cid:167 +ecl:blu pid:620818510 + +eyr:2029 +byr:1968 +ecl:blu +hgt:183cm iyr:2011 pid:952376140 hcl:#efcc98 + +iyr:2020 +byr:1981 pid:850136149 eyr:2028 hgt:159cm hcl:#7d3b0c +ecl:brn + +ecl:brn pid:480452858 hgt:65in cid:340 eyr:2022 +byr:1946 +hcl:#602927 iyr:2015 + +hgt:172 hcl:z eyr:1958 iyr:1941 byr:2019 pid:389995951 ecl:dne + +byr:2025 hcl:4c8dcd +hgt:177in +ecl:#55d635 +cid:197 pid:91192572 +iyr:1921 eyr:2038 + +iyr:2027 pid:154cm +hgt:185in byr:2012 +eyr:2036 hcl:efd47d +ecl:#64f98d +cid:86 + +eyr:2029 pid:837224515 ecl:grn cid:231 hcl:#733820 iyr:2019 +hgt:159cm +byr:1977 + +pid:974518338 byr:1964 hcl:#cfa07d ecl:grn eyr:2030 +hgt:61in +iyr:2019 + +iyr:2019 +hgt:192in cid:94 +eyr:1922 +byr:1925 hcl:z ecl:utc pid:#081266 + +eyr:2027 iyr:2019 cid:328 byr:1961 hcl:#6b5442 ecl:blu hgt:177cm pid:235426720 + +byr:1959 +eyr:2025 +pid:890034625 ecl:oth +hgt:62in cid:348 hcl:#733820 + +hgt:161cm iyr:2018 pid:916160791 ecl:grn +byr:1951 hcl:#44d03a eyr:2025 + +hgt:158cm byr:1942 iyr:2012 hcl:#602927 +eyr:2026 ecl:gry pid:651231060 + +ecl:hzl cid:340 pid:086942161 byr:1986 hcl:#a97842 iyr:2018 +eyr:2028 +hgt:181cm + +ecl:blu +pid:278922687 cid:238 iyr:2018 hgt:153cm eyr:2027 +byr:1965 +hcl:#733820 + +eyr:2023 cid:208 hgt:178cm hcl:#341e13 byr:1937 pid:290981079 iyr:2010 ecl:grn + +hcl:#888785 +ecl:amb +byr:1943 pid:559804716 eyr:2026 hgt:166cm +iyr:2019 + +pid:947831563 +ecl:gry +byr:1960 hcl:#341e13 +iyr:2016 hgt:173cm eyr:2029 + +ecl:blu iyr:2016 pid:724632073 hcl:#623a2f +eyr:2028 hgt:192cm byr:1958 + +byr:2021 +eyr:2016 hcl:z iyr:1988 pid:65353943 +ecl:#bb553b +hgt:125 + +hcl:#efcc98 byr:1963 pid:290433211 eyr:2023 ecl:hzl +hgt:172cm iyr:2013 + +iyr:2015 ecl:brn +byr:2023 hcl:#18171d +pid:325330679 +hgt:190in eyr:2023 + +pid:745674970 hgt:160cm eyr:2021 byr:1925 ecl:gry hcl:#341e13 iyr:2015 +cid:297 + +eyr:2021 +pid:596411633 +byr:1947 ecl:blu cid:191 hcl:#341e13 hgt:168cm iyr:2019 + +eyr:2030 pid:#902a6b iyr:1997 hcl:11f396 hgt:188cm byr:2025 +ecl:dne + +eyr:2025 +byr:2006 +hcl:#888785 ecl:hzl hgt:187cm +iyr:2012 pid:017702828 + +byr:1988 hcl:#18171d iyr:2019 +pid:110591871 +ecl:hzl +hgt:160cm +eyr:2029 + +ecl:brn +hcl:#c0946f iyr:2030 pid:264404022 byr:1984 hgt:59cm eyr:2040 + +pid:5973803069 +hcl:#cfa07d ecl:grt +hgt:153cm eyr:2039 byr:1970 +iyr:2025 + +hcl:#fffffd +iyr:2022 byr:2026 +hgt:180 pid:82035145 eyr:2034 cid:118 ecl:utc + +hgt:186cm eyr:2026 +ecl:brn +iyr:2013 hcl:#8f4c9b pid:010260339 byr:1948 + +ecl:amb hcl:#18171d iyr:2020 pid:259501214 byr:1978 hgt:193cm +cid:263 eyr:2022 + +hgt:161cm iyr:2015 byr:2014 eyr:2003 +pid:708958872 ecl:grt +hcl:f4a430 + +hgt:170cm eyr:2021 pid:911638274 cid:110 byr:1963 ecl:blu +iyr:2015 hcl:1eda64 + +ecl:oth byr:1949 hgt:174cm hcl:#18171d eyr:2022 iyr:2019 +pid:305857230 + +ecl:gry hcl:#a97842 pid:971971076 byr:2002 iyr:2019 +hgt:188cm +eyr:2022 cid:238 + +eyr:2027 pid:221315043 iyr:2010 hgt:159cm ecl:blu byr:1998 hcl:#6b5442 + +hcl:#888785 +byr:1926 eyr:2022 pid:433807814 ecl:grn +iyr:2010 +hgt:181cm + +ecl:grn hgt:164cm byr:1951 hcl:#18171d cid:75 pid:845508281 eyr:2021 iyr:2017 + +pid:#f59bc7 +eyr:1987 hgt:191cm hcl:z byr:2024 +iyr:1985 + +hcl:#623a2f pid:497429747 +hgt:189cm +byr:1987 +eyr:2027 iyr:2012 cid:95 ecl:hzl + +byr:2000 +hgt:165cm +iyr:2017 pid:519443292 eyr:2029 cid:240 hcl:#a97842 +ecl:blu + +cid:67 pid:038299774 +eyr:2023 iyr:2015 hgt:179cm byr:1941 hcl:#18171d ecl:amb + +byr:2000 +eyr:2025 ecl:oth iyr:2017 +pid:334154607 +hcl:#fffffd hgt:173cm + +hcl:#888785 ecl:amb +cid:131 iyr:2018 byr:1996 eyr:2026 +hgt:180cm pid:709543988 + +iyr:1988 +pid:263277424 +hcl:ee8912 byr:1942 ecl:gry eyr:2040 hgt:161cm + +eyr:2020 byr:1966 iyr:2020 hgt:169cm pid:611918000 +hcl:#7d3b0c ecl:hzl + +hgt:164cm ecl:brn +iyr:2015 pid:192054454 hcl:#6b5442 byr:1987 eyr:2022 + +byr:1952 +ecl:zzz +pid:215953654 +eyr:2021 hcl:#efcc98 hgt:153cm iyr:2026 + +hgt:167cm +hcl:#b6652a pid:847614726 +eyr:2022 ecl:gry byr:1990 iyr:2015 + +hgt:185cm ecl:oth iyr:2012 +byr:1933 +cid:250 +pid:038674023 +hcl:#c0946f + +pid:613273980 hcl:#a97842 +ecl:oth byr:1924 hgt:179cm +eyr:2027 iyr:1950 + +hcl:#cfa07d byr:2018 hgt:190cm pid:64530329 +ecl:brn +iyr:2024 + +hcl:z hgt:70cm pid:18807747 +cid:284 byr:2023 +eyr:2035 ecl:#4a1501 +iyr:1954 + +iyr:2016 hgt:152cm pid:886247173 byr:1940 hcl:#c0946f eyr:2027 ecl:oth cid:150 + +hgt:152cm hcl:#48cfdf eyr:2025 cid:277 +ecl:oth pid:246230621 byr:1932 +iyr:2020 + +ecl:amb pid:871180042 +cid:117 hcl:#602927 iyr:2011 hgt:152cm +eyr:2030 byr:1999 + +eyr:2024 ecl:hzl hgt:171cm +byr:1934 pid:356408125 iyr:2019 hcl:#b6652a +cid:169 + +eyr:2023 +hcl:#7d3b0c +byr:1934 hgt:67in ecl:oth pid:191785527 +cid:117 iyr:2016 + +iyr:2029 +hcl:#602927 eyr:2022 byr:1931 ecl:oth hgt:192cm +pid:231475143 + +ecl:grn iyr:2014 cid:250 hcl:#b6652a byr:1970 pid:675238417 hgt:162cm +eyr:2026 + +ecl:brn +hcl:#623a2f eyr:2021 pid:293293433 hgt:158 byr:1977 iyr:2019 + +ecl:oth hcl:#ceb3a1 pid:013111996 eyr:2023 hgt:180cm byr:1976 cid:224 + +hgt:61cm +eyr:2027 ecl:amb pid:181cm iyr:1932 +byr:1974 +hcl:#18171d + +byr:1968 hgt:167cm +hcl:#a97842 eyr:2022 iyr:2018 ecl:hzl pid:940968694 + +iyr:1943 +hgt:96 +cid:229 +hcl:z eyr:1990 byr:2007 pid:#25aa73 +ecl:#74592e + +hgt:182cm iyr:2018 ecl:hzl eyr:2029 byr:1946 pid:602345030 +hcl:#ceb3a1 + +pid:750306036 eyr:2020 hgt:181in ecl:xry +iyr:2011 hcl:z byr:1971 cid:71 + +pid:183825747 iyr:2019 hcl:#6b5442 +byr:1974 +hgt:180cm eyr:2028 +ecl:amb + +ecl:brn cid:200 pid:576495225 +byr:1924 +hcl:#efcc98 eyr:2022 iyr:2017 hgt:185cm + +iyr:2020 hgt:167cm byr:1965 ecl:brn hcl:#888785 +eyr:2028 pid:752062953 + +byr:2026 +hcl:z +eyr:2020 +ecl:#b4ec74 pid:187cm iyr:1974 +cid:326 hgt:150cm + +byr:1996 pid:507323629 +iyr:2015 cid:347 eyr:2026 hcl:#efcc98 +ecl:amb hgt:157cm + +byr:2017 pid:456780590 hcl:#888785 eyr:1966 ecl:amb iyr:2023 cid:187 hgt:62cm + +ecl:hzl iyr:2015 hcl:#6b5442 hgt:152cm eyr:2028 byr:1982 pid:003269467 + +iyr:2017 eyr:2026 +ecl:blu cid:70 hcl:#7d3b0c +byr:1966 pid:160330947 hgt:189cm + +iyr:2010 ecl:amb +hgt:164cm eyr:2029 byr:1963 +pid:596606374 hcl:#efcc98 + +hcl:#fffffd cid:277 pid:102326370 hgt:154cm eyr:2026 iyr:2012 byr:1968 +ecl:hzl + +ecl:oth pid:477189554 hcl:#6b5442 eyr:2022 byr:1948 hgt:74in cid:181 +iyr:2016 + +hgt:169cm hcl:#d7bc93 +cid:344 ecl:oth +pid:#09c55d iyr:2017 +eyr:2030 byr:1928 + +hcl:5d02ff ecl:#ca7901 iyr:1959 byr:2006 eyr:2022 +hgt:164in +pid:#d6cdfd + +ecl:amb pid:5739190196 eyr:2021 hgt:157in hcl:#efcc98 byr:2018 iyr:2028 + +byr:1995 ecl:hzl +iyr:2017 +hcl:#a97842 pid:917039291 eyr:2026 hgt:175cm + +iyr:2017 pid:756519868 +hcl:#623a2f +eyr:2028 +hgt:158cm +ecl:amb byr:1957 + +iyr:2012 +hgt:158cm +byr:2014 pid:973021666 hcl:f04766 eyr:2035 ecl:utc + +ecl:blu +byr:1989 eyr:2022 +pid:520765501 +cid:200 hgt:193cm hcl:#a97842 iyr:2011 + +byr:1959 +ecl:blu hcl:#733820 cid:284 hgt:162cm +eyr:2022 pid:751629408 iyr:2016 + +byr:1978 cid:301 +ecl:oth hgt:67cm hcl:#888785 +eyr:2040 iyr:2025 pid:26038514 + +iyr:2020 byr:1974 hgt:163cm ecl:blu hcl:#7d3b0c eyr:2028 cid:99 + +hcl:#a97842 +hgt:186cm +ecl:grn byr:1969 pid:460360492 iyr:2011 eyr:2028 + +byr:2009 +pid:489490924 eyr:2031 +hcl:cb5351 ecl:#083a25 hgt:164cm + +iyr:2019 +hcl:3463cc ecl:amb pid:4089063078 eyr:2022 hgt:150cm +byr:2007 + +eyr:2028 hcl:#ceb3a1 +hgt:191cm iyr:2019 pid:737842199 ecl:blu cid:268 byr:1925 + +pid:868397851 +hcl:#efcc98 ecl:grn iyr:2017 eyr:2021 byr:1943 +hgt:179cm + +hcl:#623a2f byr:1987 eyr:2023 iyr:2019 hgt:152cm +pid:473569020 +ecl:grn + +pid:953968630 +hgt:175cm +byr:1971 ecl:blu hcl:#623a2f iyr:2017 cid:336 eyr:2030 + +ecl:grt hgt:74cm byr:2022 eyr:2024 pid:39114027 +iyr:2026 hcl:4b5675 + +pid:#492988 +eyr:2032 hgt:63cm iyr:2006 +ecl:#817211 byr:2019 + +pid:800367032 hcl:#341e13 +ecl:#765111 iyr:2012 byr:2006 hgt:166cm cid:291 eyr:2027 + +eyr:2021 iyr:2012 pid:876581393 ecl:amb hcl:#866857 +hgt:64in byr:1993 + +iyr:2017 byr:1996 ecl:hzl pid:038990744 +eyr:2028 +hgt:177cm +hcl:#c0946f + +hcl:#4214a6 +eyr:2021 +iyr:2019 cid:72 byr:1939 +ecl:hzl pid:783071912 hgt:187cm + +eyr:2020 hgt:158cm +pid:274060737 cid:277 +iyr:2015 hcl:#bf9b5e byr:1950 ecl:brn + +byr:1921 hcl:#7d3b0c cid:329 hgt:155cm eyr:2030 pid:718399669 iyr:2011 ecl:brn + +cid:147 eyr:2021 hgt:167cm iyr:2010 ecl:grn byr:1975 hcl:#6b5442 +pid:285479783 + +hgt:187cm +byr:2004 eyr:2025 hcl:bb331b +pid:851189955 iyr:2016 +ecl:amb + +hcl:#94007d pid:361561551 byr:1927 eyr:2026 iyr:2020 +ecl:gry hgt:158cm + +byr:1993 pid:#24c4af iyr:2023 hgt:175cm eyr:2028 +hcl:z ecl:hzl cid:308 + +byr:1985 hcl:#c0946f eyr:2034 hgt:172cm +cid:300 iyr:2013 ecl:gry pid:389455676 + +eyr:2030 iyr:2017 byr:1956 hgt:178cm +pid:864401853 hcl:#6b5442 + +pid:836559549 +iyr:2011 +hgt:167cm +ecl:amb hcl:#c0946f +eyr:2026 byr:1981 + +pid:111085991 iyr:2011 +ecl:blu eyr:2026 cid:311 +byr:1920 hgt:182cm hcl:#602927 + +ecl:oth pid:284436132 +byr:1929 cid:121 +eyr:2027 +iyr:2010 +hgt:75in +hcl:#6b5442 + +byr:1987 +hcl:#7d3b0c iyr:2018 hgt:180cm +ecl:blu eyr:2029 pid:878348021 + +hgt:183cm cid:98 +byr:1953 hcl:#866857 eyr:2021 iyr:2012 pid:158898193 + +eyr:2030 pid:039638764 ecl:hzl hgt:190cm byr:1926 +cid:294 hcl:#b6652a iyr:2017 -- cgit v1.2.3