From 2c6be28d8617f9af5cd3879711f51c69a13731c8 Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Sat, 5 Dec 2020 10:46:08 +0530 Subject: [PATCH] Added Day 5 Part 1 --- input | 2003 ++++++++++++++++++++++----------------------------- small.input | 17 +- src/main.rs | 122 ++-- 3 files changed, 917 insertions(+), 1225 deletions(-) diff --git a/input b/input index 9074760..5c52e69 100644 --- a/input +++ b/input @@ -1,1137 +1,868 @@ -ecl:hzl byr:1926 iyr:2010 -pid:221225902 cid:61 hgt:186cm eyr:2021 hcl:#7d3b0c - -hcl:#efcc98 hgt:178 pid:433543520 -eyr:2020 byr:1926 -ecl:blu cid:92 -iyr:2010 - -iyr:2018 -eyr:2026 -byr:1946 ecl:brn -hcl:#b6652a hgt:158cm -pid:822320101 - -iyr:2010 -hgt:138 ecl:grn pid:21019503 eyr:1937 byr:2008 hcl:z - -byr:2018 hcl:z eyr:1990 ecl:#d06796 iyr:2019 -hgt:176in cid:75 pid:153cm - -byr:1994 -hcl:#ceb3a1 hgt:176cm cid:80 pid:665071929 eyr:2024 iyr:2020 ecl:grn - -cid:280 byr:1955 ecl:blu hgt:155cm hcl:#733820 -eyr:2013 iyr:2011 pid:2346820632 - -hcl:#4a5917 hgt:61cm -pid:4772651050 -iyr:2026 ecl:brn byr:2015 eyr:2026 - -iyr:2019 hcl:#a97842 hgt:182cm eyr:2024 ecl:gry pid:917294399 byr:1974 - -ecl:#9c635c pid:830491851 hgt:175cm cid:141 -iyr:2010 -hcl:z -byr:2026 eyr:1998 - -byr:1927 iyr:2011 pid:055176954 ecl:gry hcl:#7d3b0c eyr:2025 hgt:166cm - -hcl:#733820 byr:2008 ecl:utc eyr:1920 pid:159cm hgt:66cm iyr:2030 - -pid:027609878 -eyr:2022 iyr:2012 -byr:1960 hgt:157cm -hcl:#b6652a -cid:117 -ecl:grn - -iyr:2025 pid:7190749793 ecl:grn byr:1984 hgt:71in hcl:c41681 -cid:259 eyr:1928 - -eyr:2029 pid:141655389 cid:52 hcl:#cfa07d iyr:2019 -ecl:blu hgt:69in byr:1938 - -eyr:2020 hgt:166cm -ecl:gry -pid:611660309 iyr:2011 -hcl:#623a2f byr:1943 - -hgt:190cm eyr:2022 byr:2000 cid:210 pid:728418346 hcl:#a97842 ecl:xry iyr:2015 - -byr:1973 eyr:2028 iyr:2012 -hcl:#ff0ec8 pid:740554599 ecl:amb cid:58 hgt:155cm - -iyr:2016 pid:922938570 ecl:oth hcl:#fffffd hgt:154cm eyr:2021 byr:1966 - -ecl:amb -byr:1929 -hcl:#c3bbea pid:511876219 -iyr:2019 -hgt:191cm -eyr:2026 - -ecl:utc hgt:155cm pid:#9f0a41 iyr:2012 hcl:#bd4141 -byr:1998 eyr:2020 - -ecl:grn hgt:173cm cid:321 pid:851120816 byr:1968 hcl:#a97842 eyr:2027 -iyr:2014 - -hgt:155cm hcl:#f40d77 pid:038224056 byr:1953 ecl:brn iyr:2014 -eyr:2022 - -pid:181869721 -iyr:2011 hgt:151cm hcl:#733820 cid:110 ecl:blu -byr:1931 eyr:2024 - -byr:1948 -hcl:#888785 -hgt:74in -cid:112 ecl:hzl pid:921761213 eyr:2028 -iyr:2015 - -ecl:gry -byr:1931 -pid:600127430 hcl:#341e13 eyr:2027 -iyr:2013 hgt:173cm - -hgt:178cm pid:530791289 hcl:#6b5442 -eyr:2022 byr:1979 iyr:2014 ecl:hzl - -pid:412193170 hcl:#cfa07d hgt:186cm iyr:2012 cid:284 eyr:2020 byr:1967 -ecl:grn - -hcl:#6b5442 -iyr:2015 pid:808448466 ecl:blu eyr:2022 hgt:159cm byr:1969 - -eyr:2020 -iyr:2019 hgt:170cm pid:8964201562 hcl:#6b5442 byr:1947 ecl:amb - -eyr:2029 ecl:hzl hcl:#866857 byr:1961 -iyr:2017 - -ecl:#3456ba eyr:2013 iyr:2020 pid:378280953 -hcl:z hgt:174cm - -hgt:172cm -cid:202 ecl:oth eyr:2021 byr:1980 -iyr:2012 -hcl:#cfa07d pid:605707698 - -cid:281 hgt:161cm iyr:2017 pid:122936432 hcl:#602927 byr:1981 ecl:gry eyr:2021 - -byr:1959 hgt:193cm pid:083900241 iyr:2020 eyr:2037 hcl:#623a2f -ecl:hzl - -iyr:2030 hgt:153cm eyr:2022 hcl:#efcc98 cid:131 -byr:2016 ecl:hzl pid:64053944 - -hgt:172cm eyr:2025 -hcl:#866857 -byr:1938 ecl:dne -pid:192cm iyr:2014 - -pid:016297574 cid:152 iyr:2015 -eyr:2024 hcl:#341e13 byr:1965 hgt:175cm -ecl:oth - -pid:604330171 cid:125 byr:1974 hgt:160cm iyr:2014 -eyr:2022 ecl:oth hcl:#6b5442 - -pid:59747275 -byr:2027 -hgt:145 -hcl:1fd71f iyr:1944 eyr:2037 ecl:brn - -iyr:2010 -eyr:2021 byr:1953 -pid:7098774146 ecl:brn hcl:98737d hgt:158cm - -hcl:#602927 eyr:2039 pid:#81a5a1 iyr:2012 cid:67 byr:1951 -ecl:#6551f5 hgt:76cm - -hgt:170cm ecl:oth -cid:235 eyr:2022 -byr:1929 iyr:2019 -hcl:#341e13 pid:797557745 - -iyr:2011 -hcl:#733820 -eyr:2022 pid:830183476 ecl:blu byr:1976 cid:157 hgt:75in - -hgt:164cm ecl:amb pid:653425455 hcl:#623a2f byr:1977 eyr:2020 -iyr:2013 - -byr:2009 eyr:1953 hgt:178cm pid:#5d02f0 -hcl:#a97842 iyr:2016 -ecl:amb - -pid:009643210 eyr:2036 ecl:zzz -cid:97 hcl:32e540 byr:2005 hgt:187cm iyr:2021 - -pid:155cm -iyr:2022 byr:2024 eyr:2031 ecl:amb cid:79 -hcl:#cfa07d hgt:69cm - -cid:176 ecl:oth -pid:688645779 byr:1933 eyr:2026 hgt:69cm -iyr:2016 hcl:#888785 - -hcl:#888785 -eyr:2027 -iyr:2020 pid:802243213 ecl:brn -hgt:179cm byr:1976 - -hcl:#6cad3e hgt:164cm byr:1982 iyr:2020 -ecl:gry -pid:142160687 eyr:2023 - -hcl:#18171d -hgt:153cm -iyr:2014 ecl:hzl cid:231 pid:167809118 byr:1997 eyr:2028 - -byr:1940 -ecl:hzl iyr:2016 cid:67 hcl:#c800da -pid:563956960 eyr:2021 -hgt:189cm - -pid:133094996 eyr:2032 hgt:60cm hcl:#623a2f byr:2030 ecl:dne iyr:2023 - -pid:65195409 hcl:d0d492 -iyr:1956 -byr:2019 ecl:#bb043f eyr:2031 hgt:167in - -iyr:2016 byr:2006 ecl:#35d62f eyr:2029 -hgt:186cm -hcl:1d8307 - -eyr:1935 iyr:1960 pid:346667344 ecl:grn hgt:170cm hcl:cfcc36 - -ecl:oth byr:1979 pid:165581192 -hgt:177cm -hcl:#c0946f -iyr:2011 - -iyr:2011 eyr:2030 pid:250840477 -byr:1934 cid:174 hgt:179cm hcl:#866857 -ecl:blu - -hgt:157cm hcl:#7d3b0c eyr:2027 pid:979510046 -ecl:oth - -iyr:2025 -hgt:69 -ecl:grt byr:1935 -eyr:1928 pid:168cm -cid:271 hcl:z - -pid:998166233 -iyr:2020 hgt:166cm ecl:amb byr:1995 hcl:#fffffd - -hcl:#ceb3a1 ecl:amb -iyr:2019 -eyr:2024 hgt:184cm byr:1980 pid:839215481 -cid:146 - -byr:1967 -pid:444303019 ecl:oth hgt:150cm eyr:2024 - -eyr:2023 byr:1960 iyr:2010 -cid:236 hcl:#733820 pid:900635506 -hgt:69in -ecl:hzl - -eyr:2029 pid:969574247 -hgt:150cm byr:1967 -iyr:2010 ecl:blu - -pid:575879605 iyr:2010 -ecl:hzl -byr:1963 -hgt:151cm -hcl:#c0946f cid:277 - -byr:1998 pid:621374275 -ecl:brn hcl:z iyr:2029 -eyr:2024 -hgt:68cm - -pid:365407169 ecl:amb hcl:#87f433 iyr:2011 eyr:2021 byr:1987 -hgt:175cm cid:201 - -hgt:175cm iyr:2020 -ecl:gry -eyr:2029 pid:806927384 cid:59 -byr:1932 hcl:#888785 - -pid:589898274 cid:113 hcl:z hgt:184cm eyr:2000 -ecl:lzr iyr:2016 byr:2016 - -ecl:#2bafbb -eyr:2038 iyr:2027 -hcl:#fffffd -hgt:174 byr:2007 -pid:093750113 - -eyr:2022 hgt:59in -hcl:#ceb3a1 -pid:159921662 ecl:gry -byr:1948 iyr:2014 -cid:50 - -hgt:190cm -iyr:2014 pid:480507618 hcl:#fffffd byr:1945 eyr:2029 - -byr:1951 hgt:152cm ecl:brn iyr:2016 eyr:2029 cid:179 pid:027575942 -hcl:#fffffd - -cid:198 pid:728480773 eyr:2028 hgt:153cm iyr:2018 -hcl:#888785 ecl:amb byr:1983 - -byr:1968 hcl:#c0946f ecl:grn eyr:2027 -iyr:2013 pid:269749807 -cid:227 -hgt:178cm - -eyr:2024 hgt:185cm ecl:oth -hcl:#448ace byr:1987 iyr:2018 pid:454243136 - -byr:1930 ecl:grn iyr:2018 hgt:158cm -hcl:#341e13 eyr:2021 - -eyr:2024 cid:194 pid:425431271 -hgt:169cm ecl:grn byr:1973 -iyr:2014 hcl:#fffffd - -ecl:grn cid:110 iyr:2013 hcl:#18171d -hgt:155cm eyr:2024 byr:1962 pid:522435225 - -byr:1934 ecl:hzl hgt:152cm iyr:2018 -eyr:2024 pid:079740520 - -ecl:grn eyr:2023 hcl:c3f119 pid:468039715 iyr:2013 hgt:150cm byr:1955 - -pid:809357582 eyr:2025 byr:1958 -hcl:#6b5442 iyr:2013 -hgt:161cm ecl:hzl - -hcl:#b6652a pid:068979430 byr:1960 iyr:2010 ecl:grn hgt:159cm eyr:2021 - -cid:105 pid:495292692 byr:1965 -hcl:#ceb3a1 hgt:160cm ecl:amb -iyr:2020 - -iyr:2010 -eyr:2024 byr:1941 ecl:grn hcl:#b35770 hgt:171cm cid:132 pid:975699036 - -pid:767448421 hgt:186cm hcl:#733820 -byr:1972 iyr:2020 eyr:2026 ecl:grn - -pid:036236909 iyr:2012 -hgt:181cm hcl:#888785 -eyr:2026 -ecl:hzl byr:1936 - -hgt:173cm -byr:1923 ecl:blu -eyr:2026 pid:570818321 -hcl:#733820 iyr:2016 -cid:59 - -pid:2711059768 -byr:2024 -cid:139 ecl:blu hcl:z hgt:60cm - -eyr:2025 -pid:671193016 -byr:1950 hcl:#6b4b25 iyr:2017 hgt:158cm ecl:blu - -hgt:175cm iyr:2015 ecl:amb -byr:1984 eyr:2026 pid:342782894 -cid:140 - -iyr:2019 eyr:2027 byr:1972 -pid:196266458 -hgt:158cm hcl:#7d3b0c cid:69 - -pid:604018034 iyr:2016 ecl:brn eyr:2028 hgt:172cm hcl:#6b5442 byr:1922 -cid:238 - -eyr:2024 ecl:gry byr:1970 pid:356551266 cid:340 hgt:162cm iyr:2013 - -ecl:amb -hgt:151cm hcl:#18171d byr:1921 pid:187276410 eyr:2030 iyr:2015 - -eyr:2030 pid:056372924 hcl:#d236d9 hgt:156cm -iyr:2014 ecl:blu - -iyr:2014 eyr:2028 byr:1991 -hcl:#b6652a pid:119231378 hgt:155cm ecl:blu -cid:77 - -hcl:#341e13 -eyr:2027 -iyr:2012 ecl:grn hgt:152cm pid:405955710 byr:1970 - -iyr:2013 hgt:180cm eyr:1978 ecl:amb byr:1929 pid:3198111997 hcl:z - -pid:32872520 ecl:#8a0dd4 iyr:1955 eyr:2036 -byr:2027 cid:133 hcl:z hgt:184in - -hgt:152cm pid:402361044 -hcl:#efcc98 eyr:2029 ecl:grn iyr:2014 -byr:1960 - -byr:1972 eyr:2026 pid:411187543 iyr:2014 -hgt:184cm cid:211 hcl:#866857 ecl:brn - -ecl:brn -hcl:#efcc98 -pid:311916712 -byr:1957 hgt:151cm eyr:2020 iyr:2020 - -iyr:1968 -hcl:a28220 -pid:#ed250d cid:240 eyr:2031 -hgt:181cm ecl:xry - -ecl:grn byr:1946 hgt:172cm iyr:2010 hcl:#b6652a pid:372011640 eyr:2026 - -ecl:brn -eyr:2026 byr:1980 hcl:#c0946f -hgt:151cm pid:153076317 iyr:2012 - -byr:1966 pid:852999809 ecl:oth -hgt:163cm -iyr:2014 eyr:2029 hcl:#341e13 - -ecl:blu -byr:1959 hgt:191cm pid:195095631 iyr:2016 hcl:#ceb3a1 eyr:2028 - -byr:2001 ecl:gry hcl:#888785 iyr:2018 hgt:177cm pid:576714115 - -iyr:2017 -byr:1949 -ecl:blu hgt:186cm cid:289 pid:859016371 -hcl:#ceb3a1 eyr:2021 - -byr:1999 hcl:#b6652a eyr:2023 -hgt:175cm -ecl:gry iyr:2013 cid:165 pid:194927609 - -hgt:70in eyr:2027 ecl:brn iyr:2012 pid:162238378 hcl:#ceb3a1 byr:1986 - -hgt:63in ecl:xry -byr:2011 iyr:2024 -hcl:5337b0 - -hcl:#341e13 eyr:2029 -hgt:184cm ecl:amb iyr:2012 -byr:1970 - -byr:1920 pid:472914751 -eyr:2028 -hgt:187cm hcl:#cfa07d cid:290 ecl:gry - -byr:1948 ecl:gry eyr:2025 hgt:151cm cid:276 hcl:#6b5442 pid:937979267 -iyr:2016 - -byr:1934 -pid:626915978 hcl:#623a2f hgt:167cm ecl:gry -iyr:2020 eyr:2023 - -byr:1949 -hgt:68in eyr:2027 iyr:2019 hcl:#733820 ecl:brn cid:237 -pid:057797826 - -pid:155cm -hgt:68cm ecl:lzr hcl:z cid:344 eyr:2028 iyr:2020 byr:2017 - -byr:1959 -hcl:#341e13 eyr:2022 -iyr:2019 pid:728703569 -hgt:167cm -ecl:oth - -ecl:grn -eyr:2024 byr:1999 -pid:566956828 -iyr:2015 cid:293 hcl:#602927 hgt:192cm - -byr:1939 -ecl:xry pid:929512270 hgt:66in iyr:1939 eyr:2030 hcl:#efcc98 - -eyr:2026 -iyr:2014 -pid:176cm hcl:#fffffd -ecl:gry -hgt:151cm byr:1933 -cid:256 - -ecl:oth eyr:2025 iyr:2017 hgt:159cm pid:055267863 cid:55 byr:2001 hcl:#cfa07d - -eyr:2029 byr:1954 ecl:hzl cid:123 iyr:2020 hgt:192cm hcl:#866857 -pid:225593536 - -pid:320274514 cid:289 byr:1963 -eyr:1942 -ecl:gmt hcl:z hgt:167in iyr:2022 - -byr:2013 -ecl:gmt -iyr:2011 -hcl:#733820 pid:#e7962f -hgt:178cm eyr:2029 - -pid:154cm ecl:hzl -eyr:2035 byr:2023 cid:104 iyr:2026 - -eyr:2024 ecl:hzl hcl:#7d3b0c iyr:2010 -pid:105864164 -byr:1955 -hgt:163cm - -eyr:2021 hgt:151cm -iyr:2017 hcl:#c0946f -ecl:amb -cid:150 -pid:296798563 -byr:1953 - -iyr:2012 -byr:1990 hcl:#341e13 -pid:189449931 eyr:2024 hgt:64in - -hcl:z cid:79 byr:2028 -eyr:2028 pid:886152432 -ecl:#ce0596 hgt:178cm -iyr:2029 - -ecl:brn -iyr:2019 hgt:151cm -hcl:#341e13 -byr:1969 -pid:468846056 -eyr:2022 - -ecl:grn hgt:157cm iyr:2012 -eyr:2020 -hcl:#b6652a cid:338 -byr:1954 pid:153867580 - -iyr:2011 -eyr:2027 -byr:1935 -hgt:151cm -ecl:blu pid:802665934 cid:276 hcl:#623a2f - -hcl:#efcc98 eyr:2026 ecl:amb -iyr:2014 pid:320160032 -hgt:157cm -byr:1976 - -eyr:2021 cid:172 -iyr:2012 ecl:oth hgt:187cm -pid:432856831 byr:2001 hcl:#733820 - -eyr:2028 ecl:amb hcl:#efcc98 -iyr:2020 byr:1954 hgt:153cm - -byr:1930 ecl:brn hcl:#fffffd -pid:458840035 hgt:178cm eyr:2021 -iyr:2011 cid:336 - -pid:216876576 hcl:#341e13 -eyr:2028 iyr:2018 hgt:177cm byr:1938 -ecl:brn cid:214 - -byr:2029 eyr:1987 -hgt:75cm pid:193cm hcl:#b6652a cid:246 iyr:2028 - -ecl:hzl hgt:151cm hcl:#7d3b0c -eyr:2030 pid:910999919 -iyr:2019 byr:1956 - -byr:1950 -cid:95 iyr:2013 ecl:grn -eyr:2020 hcl:#623a2f -pid:603817559 hgt:159cm - -pid:913791667 -iyr:2018 byr:1959 hcl:#a97842 hgt:179cm eyr:2029 ecl:gry - -hgt:71in -ecl:blu eyr:2028 -hcl:#18171d byr:1937 iyr:2011 pid:951572571 - -hcl:#b6652a iyr:2015 hgt:170cm ecl:blu cid:292 -byr:1977 pid:475457579 eyr:2020 - -ecl:amb eyr:2029 -pid:530769382 iyr:2018 cid:53 -hgt:63in -byr:1954 hcl:#07de91 - -hcl:#cfa07d hgt:185cm -byr:1929 iyr:2011 -eyr:2027 - -iyr:2019 ecl:oth byr:2023 hcl:#341e13 pid:879919037 -eyr:2030 hgt:174cm - -hcl:z hgt:182cm ecl:grn iyr:2010 eyr:2020 pid:2063425865 -cid:182 -byr:2019 - -byr:1930 hgt:185cm pid:412694897 eyr:2025 ecl:brn iyr:2020 -hcl:#a97842 - -hgt:150cm byr:1955 eyr:2020 cid:149 pid:597600808 -hcl:#ceb3a1 -ecl:hzl - -pid:209568495 -eyr:2026 byr:1928 hcl:#341e13 hgt:183cm ecl:brn iyr:2011 - -pid:723789670 ecl:blu iyr:2013 byr:1933 -cid:239 hcl:#7d3b0c eyr:2026 hgt:151cm - -byr:1978 eyr:2027 hgt:164cm -pid:009071063 -hcl:#602927 iyr:2014 ecl:blu - -hcl:#18171d ecl:grn hgt:154cm cid:154 iyr:2016 -byr:1952 pid:730027149 eyr:2024 - -eyr:2025 hcl:#888785 iyr:2013 cid:90 -byr:1975 ecl:grn -pid:619198428 hgt:161cm - -ecl:gry iyr:2013 pid:795604673 cid:198 byr:1962 -hcl:#6b5442 hgt:64in eyr:2021 - -hcl:#ceb3a1 ecl:oth iyr:2015 -eyr:2021 pid:920586799 cid:302 hgt:60in -byr:1964 - -eyr:2021 ecl:gry iyr:2019 -hcl:#6b5442 hgt:192cm -byr:1996 -pid:692698177 - -ecl:grn pid:141369492 byr:1956 eyr:2028 hcl:#6b5442 hgt:190cm iyr:2014 - -hcl:#6b5442 -ecl:grn iyr:2020 hgt:153cm -pid:312738382 eyr:2028 -byr:1985 - -byr:1979 -eyr:2021 ecl:gry hgt:175cm pid:787676021 cid:81 hcl:#b6652a iyr:2012 - -cid:80 hgt:188cm byr:1964 pid:105773060 iyr:2014 hcl:#733820 ecl:gry eyr:2028 - -byr:1960 pid:251870522 iyr:2018 hgt:168cm ecl:blu hcl:#c0946f eyr:2026 - -cid:270 -pid:#5661f0 hgt:182in -ecl:dne -byr:1930 -hcl:z iyr:2026 - -hcl:#888785 byr:1954 pid:170544716 eyr:2028 hgt:162cm cid:244 -iyr:2014 -ecl:grn - -iyr:2017 -hgt:69in -ecl:hzl -pid:544135985 hcl:#ceb3a1 eyr:2020 - -hcl:92d4a1 iyr:2018 pid:178cm -cid:347 -hgt:97 eyr:2017 -ecl:gmt byr:2004 - -ecl:oth iyr:2018 hcl:#fffffd byr:1999 pid:853396129 -cid:119 eyr:2026 hgt:178cm - -hgt:69in -hcl:#fffffd eyr:2026 byr:1922 -iyr:2010 ecl:oth pid:664840386 - -hgt:178cm -byr:2000 -iyr:2013 hcl:#cfa07d -eyr:2028 pid:842454291 -ecl:amb - -ecl:hzl -hcl:#733820 pid:316835287 byr:1998 -eyr:2024 -iyr:2015 hgt:165cm - -pid:684064750 byr:1928 ecl:gry iyr:2015 cid:343 -hgt:189cm -hcl:#4c6cb4 eyr:2020 - -byr:1923 hcl:#a97842 eyr:2024 ecl:gry -pid:095911913 -hgt:185cm iyr:2010 - -ecl:hzl -byr:1996 -eyr:2023 -hgt:177cm -hcl:#b6652a pid:011541746 -iyr:2011 - -hcl:#efcc98 -iyr:2014 ecl:oth byr:1942 pid:730960830 -hgt:183cm -eyr:2025 - -byr:1939 eyr:2029 ecl:amb hcl:#fffffd -hgt:188cm pid:732730418 iyr:2013 cid:313 - -hgt:164cm cid:217 byr:1985 hcl:#888785 eyr:2020 -iyr:2014 ecl:oth -pid:071172789 - -eyr:2024 pid:215897274 ecl:#c67898 -byr:1972 hcl:#866857 iyr:2010 hgt:170cm cid:310 - -ecl:hzl pid:030118892 byr:1941 hgt:158cm hcl:#b6652a -eyr:2029 iyr:2012 - -ecl:gry hcl:#c0946f hgt:166cm pid:604313781 -byr:1924 eyr:2023 iyr:2020 - -hcl:#602927 hgt:168cm eyr:2027 ecl:brn -pid:764635418 byr:1968 iyr:2010 - -pid:157933284 -ecl:grn -eyr:2030 byr:2000 -hgt:81 hcl:z - -hcl:#ec24d1 -pid:647881680 byr:1922 -hgt:178cm iyr:2020 ecl:amb eyr:2021 cid:94 - -ecl:hzl byr:1971 iyr:2018 pid:975690657 eyr:2027 -hgt:192in -cid:202 hcl:#c0946f - -pid:678999378 -hgt:61in -byr:1981 hcl:#cfa07d eyr:2029 iyr:2014 -ecl:oth - -eyr:2022 iyr:2012 ecl:grn pid:883419125 -hcl:#ceb3a1 -cid:136 hgt:75in -byr:1952 - -iyr:2018 hgt:185cm -byr:1985 pid:119464380 eyr:2028 hcl:#623a2f ecl:gry - -eyr:2025 hcl:#ceb3a1 byr:1953 -cid:277 hgt:164cm iyr:2010 pid:574253234 - -cid:252 ecl:amb pid:594663323 -hgt:75in hcl:#cfa07d iyr:2019 -eyr:2026 byr:1964 - -iyr:2026 hcl:z pid:60117235 ecl:lzr -byr:2016 hgt:156in eyr:1994 - -pid:448392350 -eyr:2022 hcl:#a97842 -hgt:157cm -ecl:hzl -iyr:2018 byr:1973 - -ecl:brn -byr:1951 -eyr:2028 -hcl:#7d3b0c iyr:2018 hgt:164cm - -hgt:156cm -byr:1963 -iyr:2014 eyr:2020 ecl:blu hcl:#ceb3a1 -pid:#a87d16 - -pid:447170366 ecl:blu hcl:#888785 -iyr:2012 cid:236 -hgt:167cm -eyr:2022 byr:1942 - -hcl:#623a2f -eyr:2020 iyr:2017 cid:128 ecl:amb pid:279550425 -byr:1983 hgt:154cm - -byr:2014 eyr:2034 hgt:176in hcl:z -ecl:#d4e521 -pid:3629053477 cid:177 -iyr:1970 - -pid:30370825 byr:1966 eyr:2026 -iyr:2026 hcl:#866857 -cid:346 ecl:#f7c189 - -iyr:2010 pid:271066119 eyr:2023 hcl:#efcc98 hgt:179cm byr:1956 - -byr:1966 hgt:156cm pid:977897485 cid:287 iyr:2011 hcl:#b6652a ecl:amb eyr:2029 - -cid:211 ecl:gmt byr:2017 -hcl:z eyr:2029 hgt:180in iyr:2021 pid:81920053 - -byr:2019 -pid:5229927737 hcl:75b4f1 hgt:146 iyr:2026 ecl:#92cf7d eyr:2032 - -eyr:2027 pid:604671573 -ecl:hzl -hgt:189cm byr:1979 -hcl:#efcc98 iyr:2020 - -iyr:2018 cid:192 -eyr:2029 ecl:grn -pid:653764645 hgt:179cm -hcl:#341e13 byr:1927 - -byr:2012 -iyr:2015 -hcl:#b6652a -pid:168500059 eyr:2038 cid:234 hgt:191cm ecl:zzz - -ecl:gry hcl:#623a2f byr:1925 -iyr:2016 -eyr:2028 cid:157 -hgt:154cm -pid:196280865 - -cid:319 pid:928322396 ecl:gry -byr:1949 -eyr:2028 -hcl:#341e13 hgt:171cm -iyr:2018 - -byr:2023 -iyr:1953 hgt:154cm ecl:dne -hcl:#888785 -pid:066246061 eyr:1983 - -hcl:z -iyr:2016 byr:1986 ecl:utc -hgt:179cm eyr:2019 pid:583251408 - -ecl:amb iyr:2014 pid:499004360 -byr:1927 eyr:2021 hgt:193cm hcl:#ceb3a1 - -pid:631303194 ecl:gry -hcl:#18171d cid:216 iyr:2019 -eyr:2024 hgt:178cm - -hcl:#341e13 cid:201 -byr:1949 iyr:2019 ecl:gry pid:372356205 -eyr:2024 - -hcl:#18171d -pid:867489359 -hgt:185cm -iyr:2020 ecl:amb -eyr:2030 -byr:1955 - -byr:1991 -ecl:brn eyr:2025 hgt:184cm iyr:2016 pid:202216365 - -ecl:xry pid:#524139 hgt:151cm hcl:z eyr:2031 byr:2030 iyr:2005 - -byr:1971 hgt:178cm ecl:amb hcl:#ceb3a1 -iyr:2010 -eyr:2026 pid:396974525 - -iyr:2014 -hgt:177cm pid:928522073 -eyr:2022 -ecl:hzl -hcl:#c0946f byr:1983 - -hgt:167cm hcl:#ceb3a1 iyr:2014 -pid:172415447 -eyr:2020 byr:1956 - -iyr:2011 hgt:188cm byr:1947 eyr:2020 pid:667108134 ecl:amb hcl:#44a86b - -cid:302 ecl:brn pid:292483175 hgt:154cm -byr:1997 -eyr:2026 -iyr:2014 hcl:#623a2f - -hgt:171cm -iyr:2014 hcl:z ecl:hzl pid:321513523 eyr:2027 cid:146 -byr:2001 - -eyr:1956 ecl:dne hgt:75cm hcl:82e1fa -iyr:2030 byr:2027 - -eyr:2020 -iyr:2011 pid:656669479 ecl:oth hgt:151cm hcl:#efcc98 byr:1981 - -iyr:2013 -byr:1934 -pid:142890410 hgt:62in -eyr:2022 -hcl:#87cca4 -ecl:hzl - -pid:006232726 -hgt:173cm ecl:hzl cid:110 -eyr:2026 hcl:#866857 iyr:2017 byr:1992 - -cid:208 -iyr:2014 ecl:brn eyr:2024 byr:1935 hgt:187cm -hcl:#b6652a -pid:770836724 - -iyr:2014 cid:144 hgt:169cm -eyr:2022 -ecl:oth -pid:117575716 hcl:#fffffd byr:1926 - -byr:1971 ecl:brn -hcl:#733820 eyr:1942 iyr:2013 -pid:606274259 hgt:163cm cid:196 - -byr:1964 -pid:997828217 eyr:2029 iyr:2017 ecl:blu hcl:#341e13 -hgt:158cm - -pid:568202531 hcl:#efcc98 hgt:154cm eyr:2029 iyr:2010 -byr:1946 -ecl:blu - -iyr:2011 -pid:619355919 -byr:1955 -ecl:brn hcl:#888785 eyr:2030 hgt:155cm - -ecl:hzl pid:367152545 -hgt:162cm -cid:221 hcl:#866857 -eyr:2024 -byr:1997 iyr:2019 - -hgt:157in -cid:268 hcl:32371d byr:2020 -ecl:zzz pid:1081234390 - -ecl:hzl eyr:2026 -byr:1969 pid:850482906 cid:166 hcl:#602927 hgt:60in -iyr:2019 - -hcl:#c0946f -hgt:176cm -ecl:brn eyr:2026 iyr:2018 cid:172 byr:1986 pid:172963254 - -ecl:grn iyr:2016 -hgt:187cm -byr:1983 -hcl:#efcc98 -pid:722084344 eyr:2025 - -ecl:oth hcl:#341e13 pid:130312766 hgt:171cm iyr:2018 byr:1927 eyr:2024 - -byr:2021 hgt:152cm hcl:74dda6 -eyr:1984 cid:216 -iyr:2018 pid:95283942 - -hcl:#b6652a pid:924778815 iyr:2017 ecl:gry -eyr:2035 -hgt:68cm - -iyr:2010 -hcl:#efcc98 ecl:brn eyr:2020 pid:801894599 hgt:163cm byr:1959 - -pid:798701070 eyr:2030 -hcl:#866857 ecl:hzl hgt:169cm byr:1994 cid:219 iyr:2010 - -pid:#e9b41b -hcl:#341e13 byr:1970 -iyr:2014 -ecl:oth cid:266 hgt:68cm eyr:2023 - -byr:1931 pid:929960843 hgt:187cm hcl:#6b5442 cid:52 iyr:2010 eyr:2024 ecl:brn - -iyr:2017 byr:1974 -ecl:hzl cid:243 pid:66053995 hgt:147 eyr:1920 hcl:z - -iyr:2012 byr:1962 ecl:brn pid:773399437 hcl:#341e13 -eyr:2026 - -pid:738442771 hgt:186cm eyr:2027 hcl:#efcc98 iyr:2013 -ecl:brn byr:1928 - -pid:855794198 -ecl:oth -hgt:67in -cid:81 -iyr:2011 hcl:#b6652a eyr:2020 -byr:1921 - -hcl:176abf hgt:161in -byr:2002 iyr:2016 eyr:2027 pid:639047770 ecl:brn -cid:178 - -pid:335686451 -hcl:#86c240 iyr:2017 hgt:190cm byr:1968 ecl:amb - -hgt:150cm -hcl:094a87 ecl:#09c463 eyr:1926 pid:537511570 byr:2009 -iyr:1998 - -hgt:74in -pid:927963411 -eyr:2026 ecl:gry cid:323 iyr:2012 hcl:#fffffd byr:1959 - -iyr:2018 byr:1978 -hcl:#ff1829 eyr:2023 -pid:823129853 ecl:hzl -hgt:65in - -pid:189cm -ecl:#00391e hgt:72cm hcl:11050f -byr:2029 -eyr:1994 -iyr:1935 -cid:186 - -ecl:grn byr:1942 pid:217290710 hgt:181cm eyr:2021 hcl:#7d3b0c iyr:2019 cid:320 - -byr:1983 iyr:2013 cid:122 hcl:#ceb3a1 eyr:2030 hgt:59in ecl:grn pid:946451564 - -ecl:amb -cid:236 hgt:184cm -hcl:#cfa07d iyr:2017 pid:934730535 eyr:2021 byr:2002 - -byr:1950 ecl:hzl eyr:2030 hcl:#623a2f pid:742249321 -hgt:158cm iyr:2018 - -byr:1946 eyr:2021 hcl:#a97842 pid:204671558 ecl:grn -iyr:2010 hgt:187cm - -hcl:#b6652a pid:528124882 hgt:162cm byr:1924 ecl:amb iyr:2027 cid:157 -eyr:2028 - -hgt:180cm iyr:2013 byr:1926 pid:232265934 hcl:#602927 ecl:oth - -byr:1984 ecl:brn -iyr:2016 pid:756596443 eyr:2030 hcl:#7d3b0c hgt:183cm - -hgt:185cm -hcl:#fffffd byr:1991 eyr:2023 iyr:2014 -ecl:amb -pid:759105859 - -cid:82 iyr:2012 hgt:160cm eyr:2022 pid:593798464 ecl:gry hcl:#4e7571 byr:1983 - -pid:478427550 -iyr:2010 -ecl:amb byr:1969 hgt:68in cid:94 eyr:2021 hcl:#866857 - -ecl:amb iyr:2019 byr:1986 hgt:170cm -hcl:#c0946f -pid:779205106 eyr:2027 - -ecl:brn eyr:2025 byr:1925 -hcl:#7d3b0c hgt:76in pid:576353079 iyr:2010 - -hgt:175cm hcl:4bf5ae ecl:amb -eyr:2029 pid:173cm cid:329 -iyr:1952 byr:1972 - -ecl:grn -eyr:2030 -iyr:2015 hcl:#c0946f -byr:1989 -hgt:178cm -pid:287209519 - -pid:834505198 byr:1985 ecl:gry eyr:2024 -cid:295 hgt:169cm iyr:2017 - -hgt:170cm -pid:054644831 eyr:2023 iyr:1949 ecl:amb -hcl:#888785 -byr:1955 - -hgt:171cm -pid:947263309 iyr:2015 byr:1944 eyr:2027 ecl:grn cid:79 hcl:#341e13 - -eyr:1982 -cid:147 -iyr:2015 -hgt:70cm hcl:a77c10 ecl:zzz byr:2007 -pid:161cm - -ecl:gry byr:1933 -hcl:#c0946f pid:483275512 iyr:2012 eyr:2025 hgt:161cm - -eyr:1985 hgt:176cm hcl:7b6ddc iyr:2012 cid:326 byr:1973 pid:929418396 ecl:gmt - -ecl:gry -byr:1971 -hgt:184cm -eyr:2027 hcl:#3adf2c iyr:2017 cid:210 -pid:693561862 - -eyr:2021 pid:779298835 byr:1921 hgt:193cm ecl:amb -iyr:2016 hcl:#ceb3a1 - -hcl:4a1444 -byr:2019 iyr:2024 hgt:182in -cid:87 ecl:#122264 -pid:181cm -eyr:1927 - -cid:267 ecl:amb eyr:2020 byr:2000 -hcl:#18171d iyr:2012 hgt:190cm pid:18525759 - -ecl:oth byr:1988 -iyr:2019 pid:660570833 -hcl:#866857 hgt:176cm - -eyr:2030 hcl:#866857 -byr:1967 cid:316 pid:560346474 iyr:2015 -hgt:160cm -ecl:gry - -ecl:hzl -iyr:2014 hgt:164cm hcl:#733820 eyr:2025 -pid:106302413 byr:1920 - -iyr:2016 pid:515066491 -ecl:grn eyr:2026 hgt:179cm hcl:#b6652a byr:1982 - -ecl:#7de6a0 -iyr:2004 eyr:1955 hgt:154cm cid:138 byr:2004 -pid:758934555 -hcl:a21980 - -pid:#2a21e0 ecl:#1b9b27 hgt:165in -byr:1998 iyr:2014 eyr:2032 - -eyr:2021 hgt:184cm pid:431054313 hcl:#ceb3a1 cid:109 byr:1977 ecl:blu -iyr:2011 - -pid:006339126 hgt:177cm -cid:188 hcl:#a97842 -iyr:1959 -ecl:xry - -byr:2000 -ecl:hzl eyr:2029 -iyr:2011 hcl:#866857 hgt:74in +FFBFFFBLLL +BFBFBBFRLR +FFFBFFBLLL +FFBFBBBRRL +BFFFBBFLRR +BFBFBFBLLL +BFFFBFFLLL +FFFFFBFLLR +FBFBFFBRLL +BBFFBFBLRL +FFFBBBBLRL +BFFFFFFRLL +FBBBBFFRLL +FBFBFBFLLL +BBFFBFFLRR +BFBBFFBLRL +FBFFFBBLLR +BFFFFFBLRL +BBFBFBBLLL +FFFBBBBLRR +FBFFBFFLRR +BFFBFBFLRL +BFBBFFFLRR +FBFFBBBRLR +FBFFBBBRRR +BBFBFBFLRR +BFFBBFFLLL +BFFBBFBRRL +FFFBFFBLRR +FBBBBBBLLL +FFBFFFFRRL +BBFBFBBRLR +BFFBFFFLRR +BBFFFFBLRL +BBFFBFBLLL +BBFFFFFRLR +BFBFBBFLRL +FFFBFFBRLR +FFFFBFFLLL +FFBBFBFRLL +BFFBBFBRLL +BFFFBFFRLL +BFFFBBFRLR +BFFFFFBRRR +BFBBBFFRRL +FFBFBFFRRL +FBBFBBBRRR +FFFBBBBRLR +FBFBFBFRLR +FFBFFFFLLL +FBBFFFBLRR +BFBFFBBLLR +FBFFBBBRLL +FBFFBBFRRL +FBBBFFBLRL +BBFBFBFLLL +BFFBFBBLLL +BBFFBFBRRR +FFBBFFFLRL +BFFBBBBLRL +FFFBBFFLRL +FFBBBBBLRR +FBFFFBBRLR +BBFBFFFRLL +FFBFFBFLRL +FFBFBFFLLR +FBBBBFBRRR +FBFBFBFRRR +FBBFBBBLRL +BBFFFBBLRL +BFFBFBBLLR +FBFBBFFLRR +FFBBFFFRLR +FFFFBBFLLR +FBFFBFBRRR +FFFBFFFRLR +FBFFBFBLRL +FBBFFFFRRR +BFFFBFBLLR +FFFBBFFRLL +FFBFBFBLLL +FFBFBBFRLL +BFFBBBBRRR +BFFBFFFLRL +FFFFFFBRRL +FFBBFBBRRR +FFBFBFFRLR +FBBFFBBLRR +BFFBFFBRLR +BBFBFFFLRL +BFBFBFFLRR +BFFBBFFRLL +FFBFBBFLLR +BBFBFFFLRR +FFFFBBBLRL +FFFBFBFRLR +BFBFFFBLRL +BFFFBBFLRL +FFFFBFFRRL +BFBBBFBRLL +BFBBBFFRRR +BFFFBFBLRL +BFFBFFBRRL +FBBBFBFLLL +FBBFBBBRLR +FFBBBFBRLR +FFFBBFBLLL +BFFFFFBRLL +FBFBFFBLRR +FBFFFBFLLR +FBBFFBFRRL +BFFFFFFRLR +FFBFBBBRLL +BFFFFFBLLR +FFFBFBBLRL +FBBBFFBLRR +FBBFFBFRLR +FBBFBBFRRR +FFBFFBFLLL +BFBBBFBLRL +FBFBBBBRRR +FBBBFBFRRL +FBBFBBBRRL +BBFBFFFRLR +BFBFBBBRLL +FFBBFFFLLR +FBFFFFFRRR +BFBBFFBRRR +FBBBBFBLRL +BFBBBFBLLR +FBFBFBFLRR +FBBBFBBLLR +BFFFBFFRRR +BBFBFBFRLR +BBFFBFBRRL +FFBBBFFRRL +FBFFBFBLRR +BBFFBBBRLL +FBFFBFFLLR +FFFBFBFLLL +FFBBBFBLLL +BFBFFBFRRR +FBFBBFBLLR +BBFFFFFLLR +BBFBBFFRLL +FFFFBFBLLR +BBFFBBBLRL +FBBFFFBRLR +BFFFFBFLRL +FFBBFFBRRR +BBFFFBFLLR +BBFFFBBRRR +FBBFFBFRLL +BFFBFFBLRR +FFFBBFBRLL +FBBFFBBRLL +BFFFBFBRRR +FBFBFFFLRL +BFBBFBBRRR +FBBBFFBLLL +FBBFFBFRRR +FBFBFFFRRR +FBFFFFFRLR +FBBBFBBLLL +FFFFBFFLRR +BBFFFFBLLR +FFBFBBFLRL +FBFFFFFLRR +BFFBBFBLLL +FFBBFFFLRR +BFFFFFFLRL +BFBFBBBLRL +BBFBFFBRLL +FFBFBFBRLL +FFFFBBBLLL +FFBBBFFLRR +BFFBBBBLLR +FFFBFFBLRL +FBBBFBFRLR +FFBBFBFLLL +BBFFFBBLRR +BFBBFFFRRL +FFBBFFFRRL +BFBBFFFLRL +FBBFFFFLLL +BBFFFFBRRL +FFBFBFFLRL +FFBBFFBLLR +BFFFFBFRLR +BBFFBBBRLR +FBFBBBFRRR +FBFBFFFRRL +BBFBBFFRLR +FBFBBBFLLR +BFBFBBBRLR +BFBBBBFLRR +BFBBBBBLRL +FBFFFFFRLL +BFBBFBBLLR +BFFBFFBLRL +FBBFBBFRLR +FBBBFFBRRL +BFFFFFBLRR +BBFFFBFRRR +BFBFFFFLRR +BFBFBFFRRL +BFBBBFBRRL +FFFFFBFLLL +FBBFFBFLLR +FFBFBFBLLR +FBFFBBFLLL +BFFBFFFLLL +FFBFBFBRRR +FBBFBFBLRL +FBFFFFFRRL +FFFBBFBRLR +BBFBFFBLLL +FFBFFFBLRL +FFBBBBFLRL +FFBFFBFRRL +FBFFFFBLRR +FBBBBBBRRR +FFFFFBBLLL +FBFBFBBLRR +FBFFBBBRRL +FFBFBBBLRR +BFBFFBBRRL +BFBFFFBRLL +FFBBBFFRRR +BFFFFBBRRR +FFFBBBBLLR +BFBFBFBRRR +FFFBBFFLRR +FFFBFBFRRR +FBBBBFFLLL +BBFBFBBLRR +BBFBFBFRRL +BBFFFBBRLL +FBBBBFBLRR +FBBFBBBLLL +FFBBBFBLRL +FBBFBFFRRL +FBFFFFBRRL +BFFFFFFLRR +BBFFFBFLLL +FFFFBBFRLR +FBFFBFFLLL +FFBFBFBLRR +FFBBBFBLRR +FFFFBFBLRR +BBFBFFBLRR +BBFFFFFRRR +FBBBFFBRLL +FBBFBBFRRL +FFBFBBBRRR +BFFBFBBRLR +FFFBFFFRRL +BFBFFFFRLR +FFBFFFFRLL +FBFBBFFRLL +FBFBBBBLLL +BBFFBBFRRL +FFFFFBBLRR +FFBBFBBLLL +FFFBBBBRLL +FFFBFBBRLL +BFBFFBFRLR +FBBBFBBRLR +FFFBFBFLRR +BFFFBBBRLR +FFBBFBBLRR +FFBFBBFRLR +FFFFFBFRLL +FBBFBFFLLR +FFFFBFBRLL +BFFBBFFLLR +BFBBBBBLRR +FBFBBFBRRL +FBFBBFFRRL +BBFFBBBLLL +BFFBBBBRRL +FBBBFBBRRL +BBFBBFFRRL +FBBFBFBRRL +FBFFBFFRRR +FFFFBBBRRL +FFFBBBBRRL +BFBBFFFRRR +FBBBFBBRLL +FFBFFBFRRR +FFFFBFBLLL +FFBFFBBLLR +FBBBFBFLRL +FFFFBBFRLL +BFFFFBFLLL +FFBBFBFLRL +FBFBFBBRLL +FFBBBFFLLR +FFFBFFBRRR +FBFFBBBLLR +FFFBBFBLLR +BFBBBFFLLL +FFFFBFBRRL +BFFFBBBLRR +FFFBBBBRRR +BBFBFBBLRL +FBFFBFFRLL +FBFBBBBRRL +FBBBBBBRLR +FFFBFBFLLR +FFFFBBFRRR +BFBFBFBRRL +FFFBFFBRLL +FFBBBBFRRR +BFFBBBFRRL +FBBFFBBRRR +FBFFBBFLRR +FBFFFFBLRL +FBBBFBBLRR +BBFBFBBRRL +FBBBFFBLLR +FBFBBBFRRL +BFFFBFBRLL +BFFBBFFRRL +FFBBBBFLRR +FFBBFBBLRL +FFBFFFFLRR +FBBFBFFRLL +FFBBBBFLLL +FFBFFFBRRL +BFFBFFFLLR +BBFFFBBRLR +FFBFBFFRLL +FBFBFBBRRL +FBBBFBBLRL +FBFBFFBRLR +FBFFBBFRRR +FBFBFBBLLR +FBBBBBFLRL +FBFBBFFRRR +FBFFBBBLRR +BFFBBFFLRL +FBFBFFBRRR +FFFFBFBRRR +BFBFBFBLLR +BFFFFFBRLR +BFBBBBBLLL +FFBBFBFLRR +BFBBBFFLRR +FFBBBFFLLL +FBBFFFFLRL +BFBFBFFRLR +FFFBFBBRRL +FBFFBBBLRL +FBFBFBBRRR +FBFFFBFLLL +BFFBFFFRRL +BFFBBBBRLR +FFFFFBFRRR +FBBBFFFLRL +BFFFBFBRRL +FFFBBBFLLL +FFBFFFBLRR +FBFBBFFLLL +FBBBBFBRLR +FFFBFFBLLR +FFBFFBBRLR +BFFFBBFRRR +BBFFFFFLRL +FBFFFFBRLR +BFBFBBBLLL +FBFBFBFLLR +BFFFFFBLLL +BFFBFBFRLL +BFFBFBBRRR +BFBBFBBRRL +BBFBBFBRRL +BFBBFFBRLL +BBFBFBBRLL +FFBFFFFLRL +FFBBFBFRLR +FBBFFFFRRL +BFFFFFFRRR +FBBFFBFLLL +BFFBBFBLRR +FBFBFFBLRL +BFBFFFBRLR +BFBFFBFLLL +FFBBBFBRRL +BFFFBFFLLR +FBFBFBBLLL +BBFFFBBLLR +BFBFFBFLRR +FBFFFBBLRL +FBFBBBFRLR +BFFFBFFRLR +BBFFBBFRLR +FBBFBBFLLR +BFFFBBFLLR +FFBFFFBLLR +FBBBBBFRRR +FFFBFFFLLL +BFBFFFBRRL +BFBBBBFRLL +FFBFBBBLLR +BFBBFBFLLR +FBFFBBFLRL +FFFBFFFLLR +BFBFBFBLRL +BBFFBBBRRR +FBFBBFBRLL +FFFFBFFRLR +FBFFBBFRLL +FBFFFBFLRR +FBBFFFBLRL +FBBBBBFLLR +FFFBFBBLLR +BBFFFFBRRR +BFBFFBBRRR +BFFBFBBRRL +BBFFBBFRLL +BFFFFBFRRL +BFFFBBBRRL +FFBBFFFLLL +FFFFBBBLLR +BBFFBBFLLR +FFFBFBBRRR +BBFFFBFRRL +FFBBBBFRLR +FBBFFFBRRR +BFFFBFBLLL +FFBFBFBLRL +FBFFFFBLLR +BBFBFFBRRL +BFBBBFFRLL +FBFBFFFLRR +FBFBFFFLLR +BFBFBBBRRL +FBFFFFFLLR +BFBFFFFLRL +FBBFBBBRLL +BFBFBFFLLL +BFBBFBBLRL +FBFFFBBLLL +BFFFFFFLLL +BBFBFFBLLR +FFBFBBBLLL +FBBBBBBRLL +BFFFBBBLLR +FBFBBBBLRR +FBBFFFBLLL +FFFBFBFRRL +FFFFBBFRRL +FBFFFBFRRL +BBFFFBFRLR +FFFBBFFLLL +FFFFBFFLRL +FBFBBBBLLR +FBBBFFFRRR +FFFBBBFLRR +BFBFBBFRRR +BBFBFFBRLR +BBFBBFBRLL +BFFBBFBLRL +FBFBFBFRRL +BFFFFFFRRL +BBFFFFBRLL +BFFBBFBLLR +BFFBFBFLRR +FBFBFBBRLR +BFBFFBBLRL +FFFBBBFLRL +FBBBFFFLRR +BBFFFFFRRL +FFFBFBBLRR +FFBFFBBRLL +FFBBBBBLLR +BFBBFBBLLL +BBFBFFBRRR +FBFFFFBRRR +FFBBBBBRRR +FBFBBFBLRL +FFFBBBFRLR +BBFFBFFLLR +FFFFFBBRLL +BFFFFFBRRL +FBBBFFFRLL +FFBBBFBRRR +BBFFFBBRRL +FFFBFFFRRR +FFFBBBBLLL +BFBFFBFLRL +BFBBBBFRLR +FBBFBFBLRR +BFBFFFBLRR +FBBBBFFRRR +BFBFBFFRRR +BBFBFBFRRR +FBBFBFBLLR +FFFBBFBRRL +BFFBFFBLLR +BFBFFFFRRR +FBFFBFFRLR +FBFFFBBRLL +FBFFBFFRRL +FBFBFFBLLR +FFFBBFFRRL +FBFBFFFLLL +BFFBFBFLLR +FBBFBBFLRR +BBFFFFBRLR +BFFFBFFLRL +FBBFBFFLRL +FFBFFFFRLR +FFBFFFFLLR +FBBFBFBRLR +FFFFBBFLRL +FFFFBBFLLL +FFFFBBBRLR +BFBFBFFLRL +BFBBFFBRLR +FBFFFFBRLL +BFFFBBFRLL +FBFBFBFRLL +FFFBBFBLRR +FFBFBBBLRL +BFFBFFFRLL +BFBBFFBLLR +BBFFBFBLRR +BFFBBBFLRL +FBBFFFFLRR +BFBBBBBLLR +FFFFFBBLRL +FFBBBBBRLR +FFFFFBBRRR +BFBBBBBRLL +FBBBBBBLRL +BBFFBBBRRL +BFBBFBFLLL +BBFFFBFRLL +FFFBBFFRLR +FFFBFFBRRL +BFFFFBFRLL +BFFBBFFRRR +BFFFBBFRRL +FBBFFFFRLR +BFFBFFBRRR +BFBBFFBRRL +BFFFBFBLRR +BFFBBBBLRR +FBBBFBFLRR +BFBBBFBRLR +FFBBBFFLRL +FFFFBFFLLR +FBBFFBBRLR +BFFBFFBLLL +FBBBBFFLLR +FBBFBFBLLL +BFBFFFFLLL +FBBBFBFRRR +FBFFFBFRLL +FFBBBBBLLL +BBFBBFFLLR +FFBFBBBRLR +BBFBFFFLLL +FFFFFBBRRL +BFFBBBFLLL +BFFBFFFRLR +FFBBBBFRRL +BFBBBBBRLR +BFFBFBFLLL +BFFBBFFLRR +FBBFBBFRLL +BFBFBBFLLR +FBFFFBFRRR +FBFBBBFLRL +BFFBFBBLRL +BBFBBFBLRR +BBFBFFBLRL +BBFBFBBRRR +FBBBBFBRLL +FBFBFBBLRL +BBFBFBFLLR +FBFFBFBRLR +FFBBFFBLRR +FFFBFBFLRL +BFFBFBBRLL +FBBBBFFLRR +BFBBFFFLLR +BFBFFBFRLL +BBFBBFBLLL +FBBBBFFLRL +FBFBFFBLLL +BFFBBFFRLR +FBBFFFBLLR +BFFBFBFRLR +FBBFFBFLRL +FFBFFBFRLL +BFFFBFFRRL +BFBBFBFRRR +FFBBBFFRLL +FBBBBBFLLL +BFBBFFBLRR +FFFFFBBLLR +FFFFFFBRLR +FBBFBBFLRL +BFBFBBFLRR +BBFFBBBLRR +FFFFFBFRRL +BFFFFBFRRR +BFFFBFBRLR +BFFFFBBLLR +FBBBFBFRLL +BFFFBBFLLL +BFBBBFFLLR +BBFFBFFRLR +FBFBFBFLRL +FFBBFFBLRL +BFBBBFBLLL +FFFFBFBRLR +FBFBFFBRRL +BFFFFBFLRR +BFFBBBFRLR +FFFFBBBRLL +FBBBBFFRLR +BFBFBFFRLL +FBBBBBFRLL +BFBFFFBRRR +FBBBBBFRLR +BFFBFFFRRR +FFBBFFBRRL +BFBBBBFLRL +FFFBBBFRRL +FFFFBFFRRR +FFFBBFBRRR +BBFBFFFLLR +BFBBFBBRLL +BFFFFBBLRR +BBFFFBBLLL +FFFBBBFRRR +FFBFBBFRRL +FBFBBBFLRR +FBFFBFBLLL +BFFBFBBLRR +FFBFFFBRLL +FBBBBFFRRL +BBFBFFFRRL +FFBFFBFLRR +BFFBBFBRLR +FFBBBFBLLR +FBBFBFFRLR +BBFBBFBRLR +BFFBFFBRLL +FFBFFFFRRR +BBFFFFFLRR +FFBFBFBRRL +BBFFBFBRLR +FBBBBFBLLL +FBBFFBBLLL +FFBFFBBLLL +BFBFBBFRRL +FBFFFBBLRR +FBFFBFFLRL +BFBBBFFLRL +FBFBBFBLRR +FBFBBBFLLL +FFBBFBBLLR +FFFFBFFRLL +BBFFFFFLLL +FFBBFBFRRL +BFFFBFFLRR +FFBFBBFLRR +FBBFBFBRLL +BFFBBFBRRR +FBFBBFFLLR +BFBBBFFRLR +BBFFBFFRRL +BBFFBBFRRR +BFBBFFBLLL +BFBFBFBRLR +FBFFFBFRLR +FBFBBFBRLR +FFBBBBBLRL +BFFFBBBLLL +FBFFBFBRLL +FBFFFBBRRL +BBFBBFFLLL +BBFFBFBLLR +FBFBBFBRRR +FBFBBBBRLR +FBFBBFFRLR +BFFBBBFLRR +FBBBFFBRLR +BFBBBBFLLL +FFFBFBFRLL +BBFBFBBLLR +FFBFFBBLRL +FBBBFFFRLR +FFBBFBBRRL +BFBFBBBLRR +BBFBBFFRRR +FBBBBBFLRR +BBFBFBFLRL +BFFFFBFLLR +FBFBFFFRLR +FBBBBFBRRL +BFBFFFFLLR +FFBFBFFLRR +BFBFFFBLLR +FFBFBBFLLL +BBFBBFFLRR +BBFFFBFLRR +BFBBFFFRLL +FFFFBBBLRR +BFBFBBFRLL +BFBFFBBRLL +FFBBBBBRLL +BBFFBFFLLL +BFBBBBFRRL +FBBBFFFLLL +FFBFBFFRRR +BFBFFBBRLR +FFFFBFBLRL +FBFFFBBRRR +BFBFFBFRRL +BFBBFBFRLR +FBFBBBBRLL +FFBBFFFRRR +BFBFFFBLLL +FFFBBFFLLR +FFBFBFBRLR +FBBBBBBRRL +FFBBFBBRLL +FFBFFFBRLR +FBBFFFBRLL +FBBBFBBRRR +BFFFBBBRLL +FBBBFBFLLR +BBFFBFFLRL +FBBFBBBLLR +FBBBBBBLRR +BFBBBBBRRR +BFBFBBBRRR +BFBBFFFLLL +FFBBFFBRLL +BBFBBFBLLR +FBFFBBFLLR +FFFFFBFRLR +BBFFFBFLRL +FBBFFBFLRR +FFBFFBFRLR +FBFFBFBLLR +FFFBFBBLLL +BBFFBBFLRR +BBFFBFFRLL +FBBFBFFLLL +BFFFFBBRLL +FFBBFFBLLL +FFBFFBBRRL +BFFBBBFRRR +FBBFBFFRRR +BFFBBBBLLL +FFBBFBBRLR +FFBBFFBRLR +BFFFFBBRRL +FFBBBBBRRL +FBFFBFBRRL +BFFBFBFRRL +BBFBBBFLLL +FBBFFBBLRL +BFBFBFBRLL +FBFFFFFLRL +FFFBFFFLRR +FBBFBBBLRR +FFFFFBFLRR +FBBBBFBLLR +BFFBFBFRRR +BFFFFBBLLL +FFFFBBFLRR +BFBBFBFLRR +FFBFFBBLRR +BBFFFFFRLL +BFBFBFFLLR +BBFBFBFRLL +BBFFBBFLLL +FBFBBBFRLL +FBBFBBFLLL +BFBBFFFRLR +BFBFFBBLLL +FBBBBBFRRL +FFBBFBFRRR +FBFFFFBLLL +FFFFFBBRLR +BFBBFBBRLR +BFBBBBFLLR +BFFBBBFLLR +FFBBFBFLLR +FFBBBFBRLL +FFFFBBBRRR +FBBFFFFRLL +FFBFFFBRRR +FBBFBFBRRR +FFBBBFFRLR +BFBFFFFRLL +FBFFFBFLRL +FFBFFBBRRR +FBFBBFBLLL +BFBFBBFLLL +FFBBBBFLLR +FBFBBBBLRL +BFBBFBFLRL +BFFFBBBLRL +BFBBBBFRRR +FFFBBBFRLL +FFBFBFFLLL +BFBFFFFRRL +FFFBFBBRLR +BFBFBFBLRR +FBFFBBFRLR +BBFFFFBLLL +BFFBBBBRLL +BFFFFBBLRL +BBFBBFBRRR +BFFFFFFLLR +BBFFBBBLLR +FBBFFFFLLR +BBFFBFBRLL +FBBBFFBRRR +FBBFFBBLLR +BBFFFFBLRR +FBFFFFFLLL +FBBFBFFLRR +BFBBFBFRLL +BFBBBFBRRR +FFBFBBFRRR +FBFBFFFRLL +FFFBBFFRRR +FFFFFBFLRL +BFBFFBFLLR +FBBBFFFRRL +FBBBBBBLLR +FBBFFFBRRL +FFBBFFFRLL +BBFBFFFRRR +FFFBBFBLRL +BFFBBBFRLL +FFFFFFBRRR +BFBFFBBLRR +BBFFBBFLRL +FFFBBBFLLR +BFBBBFBLRR +FBBFFBBRRL +FFBFFBFLLR +BBFBBFBLRL +FFFBFFFRLL +BFBFBBBLLR +FFFBFFFLRL +BFFFFBBRLR +BBFFBFFRRR +BFBBFBFRRL +BBFBBFFLRL +FFBBBBFRLL +FBFFBBBLLL +FBFBBFFLRL +BFFFBBBRRR +BFBBBBBRRL +FBBBFFFLLR diff --git a/small.input b/small.input index 0ff208e..6b89eb8 100644 --- a/small.input +++ b/small.input @@ -1,13 +1,4 @@ -ecl:gry pid:860033327 eyr:2020 hcl:#fffffd -byr:1937 iyr:2017 cid:147 hgt:183cm - -iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 -hcl:#cfa07d byr:1929 - -hcl:#ae17e1 iyr:2013 -eyr:2024 -ecl:brn pid:760753108 byr:1931 -hgt:179cm - -hcl:#cfa07d eyr:2025 pid:166559648 -iyr:2011 ecl:brn hgt:59in +FBFBBFFRLR +BFFFBBFRRR +FFFBBBFRRR +BBFFBBFRLL diff --git a/src/main.rs b/src/main.rs index 0b7a6e3..a972dea 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,88 +1,58 @@ -use std::collections::HashMap; use std::io::{stdin, Read}; fn main() { let mut input = String::new(); stdin().read_to_string(&mut input).unwrap(); - let passports: usize = input - .split("\n\n") + let max_seat_id: usize = input + .split('\n') .filter(|x| !x.is_empty()) .into_iter() - .map(|x| x.replace('\n', " ")) - .map(|x| { - let mut map = HashMap::new(); + .map(|seat| { + let seat = seat.as_bytes(); + let (region, columns) = seat.split_at(7); - x.split(' ').filter(|x| !x.is_empty()).for_each(|y| { - let mut y = y.split(':'); - let key = y.next().unwrap(); - let value = y.next().unwrap(); + let mut lower = 0; + let mut upper = 127; - map.insert(key.to_owned(), value.to_owned()); - }); - - map - }) - .filter(|map| { - validate(&map, "byr") - && validate(&map, "iyr") - && validate(&map, "eyr") - && validate(&map, "hgt") - && validate(&map, "hcl") - && validate(&map, "ecl") - && validate(&map, "pid") - }) - .count(); - - println!("{:?}", passports); -} - -fn validate(map: &HashMap, key: &str) -> bool { - match (key, map.get(key)) { - ("byr", Some(v)) => { - let byr = v.parse::().unwrap(); - byr >= 1920 && byr <= 2002 - } - ("iyr", Some(v)) => { - let iyr = v.parse::().unwrap(); - iyr >= 2010 && iyr <= 2020 - } - ("eyr", Some(v)) => { - let eyr = v.parse::().unwrap(); - eyr >= 2020 && eyr <= 2030 - } - ("hgt", Some(v)) => { - if v.contains("cm") { - let v = v.trim_end_matches(char::is_alphabetic); - let v = v.parse::().unwrap(); - v >= 150 && v <= 193 - } else if v.contains("in") { - let v = v.trim_end_matches(char::is_alphabetic); - let v = v.parse::().unwrap(); - v >= 59 && v <= 76 - } else { - false + for r in region { + match r { + b'F' => { + let mid = (lower + upper) / 2; + upper = mid; + } + b'B' => { + let mid = (lower + upper + 1) / 2; + lower = mid; + } + _ => unreachable!(), + } } - } - ("hcl", Some(v)) => { - v.starts_with('#') - && v.chars() - .skip(1) - .filter(|x| match x { - '0'..='9' => true, - 'a'..='f' => true, - _ => false, - }) - .count() - == 6 - } - ("ecl", Some(v)) => match v.as_ref() { - "amb" | "blu" | "brn" | "gry" | "grn" | "hzl" | "oth" => true, - _ => false, - }, - ("pid", Some(v)) => v.len() == 9 && v.chars().filter(|&x| char::is_numeric(x)).count() == 9, - ("cid", _) => true, - (_, None) => false, - (_, _) => unreachable!(), - } + + let region = lower; + lower = 0; + upper = 7; + + for col in columns { + match col { + b'L' => { + let mid = (lower + upper) / 2; + upper = mid; + } + b'R' => { + let mid = (lower + upper + 1) / 2; + lower = mid; + } + _ => unreachable!(), + } + } + + let col = lower; + + region * 8 + col + }) + .max() + .unwrap(); + + println!("{:?}", max_seat_id); }