Author: Nicholas Prado <nmprado@nzen.ws>
Date: Sat Dec 5 02:47:10 UTC 2020
Parent: 6de043814e0147bc4973abb052b554d545961ba6
Log message:
feat 20 04 01 struct Saves the information separately, as it seemed like the sort of thing that would be in the prompt for part two.
1: diff --git a/src/java/Exercise200401.java b/src/java/Exercise200401.java 2: new file mode 100644 3: index 0000000..fbcf610 4: --- /dev/null 5: +++ b/src/java/Exercise200401.java 6: @@ -0,0 +1,182 @@ 7: + 8: +import java.io.IOException; 9: +import java.nio.file.Files; 10: +import java.nio.file.InvalidPathException; 11: +import java.nio.file.Path; 12: +import java.nio.file.Paths; 13: +import java.util.Collection; 14: +import java.util.HashSet; 15: +import java.util.LinkedList; 16: +import java.util.List; 17: +import java.util.Map; 18: +import java.util.Set; 19: +import java.util.TreeMap; 20: + 21: +public class Exercise200401 22: +{ 23: + 24: + public static void main( String args[] ) 25: + { 26: + final String here = "e20012.m "; 27: + if ( args.length < 1 ) 28: + { 29: + throw new RuntimeException( here +"add a filename argument" ); 30: + } 31: + String userSaysFile = args[ 0 ]; 32: + List<String> fileLines = new LinkedList<>(); 33: + try 34: + { 35: + Path where = Paths.get( userSaysFile ); 36: + fileLines = Files.readAllLines( where ); 37: + } 38: + catch ( IOException | InvalidPathException ie ) 39: + { 40: + System.err.println( here +"couldn't read file "+ userSaysFile +" because "+ ie ); 41: + return; 42: + } 43: + /* 44: + - interpretation of spec - 45: + for values in file 46: + save 47: + for values in less than half 48: + for values in more than half 49: + if sum is target 50: + print less * more 51: + */ 52: + // gather 53: + int valid = 0; 54: + Collection<Passport> values = new LinkedList<>(); 55: + Collection<String> onePassport = new LinkedList<>(); 56: + int lineNum = 0; 57: + boolean parsing = false; 58: + Exercise200401 buh = new Exercise200401(); 59: + for ( String line : fileLines ) 60: + { 61: + lineNum += 1; 62: + if ( line.isEmpty() ) 63: + { 64: + if ( ! onePassport.isEmpty() ) 65: + { 66: + Exercise200401.Passport person = buh.new Passport( onePassport ); 67: + values.add( person ); 68: + if ( person.valid() ) 69: + valid += 1; 70: + } 71: + onePassport.clear(); 72: + continue; 73: + } 74: + else 75: + { 76: + onePassport.add( line ); 77: + } 78: + } 79: + System.out.println( here +"input summed to "+ valid ); 80: + } 81: + 82: + 83: + private class Passport 84: + { 85: + String birthYear = ""; 86: + String issueYear = ""; 87: + String expirationYear = ""; 88: + String height = ""; 89: + String hairColor = ""; 90: + String eyeColor = ""; 91: + String passportId = ""; 92: + String countryId = ""; 93: + final String byr = "byr", 94: + iyr = "iyr", 95: + eyr = "eyr", 96: + hgt = "hgt", 97: + hcl = "hcl", 98: + ecl = "ecl", 99: + pid = "pid", 100: + cid = "cid"; 101: + 102: + public Passport( 103: + Collection<String> input 104: + ) { 105: + parse( input ); 106: + } 107: + private void parse( 108: + Collection<String> input 109: + ) { 110: + final String here = "e20012.pp.p "; 111: + for ( String line : input ) 112: + { 113: + String[] lineElements = line.split( " " ); 114: + for ( String element : lineElements ) 115: + { 116: + int colonInd = element.indexOf( ':' ); 117: + String aspect = element.substring( 0, colonInd ); 118: + String content = element.substring( colonInd +1 ); 119: + switch ( aspect ) 120: + { 121: + case byr : 122: + birthYear = content; 123: + break; 124: + case iyr : 125: + issueYear = content; 126: + break; 127: + case eyr : 128: + expirationYear = content; 129: + break; 130: + case hgt : 131: + height = content; 132: + break; 133: + case hcl : 134: + hairColor = content; 135: + break; 136: + case ecl : 137: + eyeColor = content; 138: + break; 139: + case pid : 140: + passportId = content; 141: + break; 142: + case cid : 143: + countryId = content; 144: + break; 145: + } 146: + } 147: + } 148: + } 149: + public boolean valid( 150: + ) { 151: + return ! birthYear.isEmpty() 152: + && ! issueYear.isEmpty() 153: + && ! expirationYear.isEmpty() 154: + && ! height.isEmpty() 155: + && ! hairColor.isEmpty() 156: + && ! eyeColor.isEmpty() 157: + && ! passportId.isEmpty(); 158: + // && ! countryId.isEmpty(); // haha, hacking 159: + } 160: + } 161: +} 162: + 163: + 164: + 165: + 166: + 167: + 168: + 169: + 170: + 171: + 172: + 173: + 174: + 175: + 176: + 177: + 178: + 179: + 180: + 181: + 182: + 183: + 184: + 185: + 186: + 187: + 188: + 189: diff --git a/src/res/20_04_example.txt b/src/res/20_04_example.txt 190: new file mode 100644 191: index 0000000..3b38741 192: --- /dev/null 193: +++ b/src/res/20_04_example.txt 194: @@ -0,0 +1,13 @@ 195: +ecl:gry pid:860033327 eyr:2020 hcl:#fffffd 196: +byr:1937 iyr:2017 cid:147 hgt:183cm 197: + 198: +iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 199: +hcl:#cfa07d byr:1929 200: + 201: +hcl:#ae17e1 iyr:2013 202: +eyr:2024 203: +ecl:brn pid:760753108 byr:1931 204: +hgt:179cm 205: + 206: +hcl:#cfa07d eyr:2025 pid:166559648 207: +iyr:2011 ecl:brn hgt:59in 208: \ No newline at end of file 209: diff --git a/src/res/20_04_input.txt b/src/res/20_04_input.txt 210: new file mode 100644 211: index 0000000..3fd512c 212: --- /dev/null 213: +++ b/src/res/20_04_input.txt 214: @@ -0,0 +1,1031 @@ 215: +byr:1937 216: +eyr:2030 pid:154364481 217: +hgt:158cm iyr:2015 ecl:brn hcl:#c0946f cid:155 218: + 219: +cid:279 220: +eyr:2029 221: +pid:675014709 ecl:amb 222: +byr:1985 hgt:179in hcl:z iyr:2025 223: + 224: +iyr:2011 hgt:181cm hcl:#341e13 pid:282499883 byr:1953 225: +eyr:2023 226: +ecl:brn 227: + 228: +eyr:2040 iyr:1984 pid:2371396209 byr:1951 cid:283 hgt:164cm 229: +hcl:#623a2f 230: + 231: +iyr:2014 byr:1966 hgt:153cm pid:900693718 eyr:2020 ecl:gry hcl:#866857 232: + 233: +eyr:2020 hgt:162cm 234: +byr:1939 pid:900852891 iyr:2020 235: +ecl:oth hcl:#b6652a 236: + 237: +iyr:1956 238: +hcl:2385ac 239: +hgt:167in 240: +ecl:#9b82e8 241: +eyr:2003 242: +cid:214 byr:2012 pid:483285062 243: + 244: +cid:146 byr:1938 hcl:#c0946f pid:136823471 245: +hgt:180cm iyr:2011 246: +eyr:2020 ecl:gry 247: + 248: +cid:100 hgt:187cm 249: +byr:1973 ecl:blu 250: +iyr:2020 251: +hcl:#888785 eyr:2030 252: +pid:386799181 253: + 254: +ecl:#dbba4f 255: +hcl:z iyr:2028 pid:193cm 256: +byr:2029 257: +eyr:1962 hgt:113 258: + 259: +cid:269 byr:1928 pid:604152679 260: +iyr:2017 eyr:2027 261: +hcl:#c0946f 262: +hgt:189cm 263: +ecl:blu 264: + 265: +pid:653548437 hcl:z cid:166 iyr:2011 eyr:1967 266: +hgt:162 ecl:xry byr:2019 267: + 268: +byr:1979 ecl:hzl iyr:2018 hcl:#7d3b0c 269: +eyr:2026 270: +pid:981366150 hgt:151cm 271: + 272: +pid:055334062 cid:272 eyr:2025 ecl:grn iyr:2016 hgt:159cm hcl:#a97842 byr:1989 273: + 274: +eyr:2033 275: +hgt:170cm ecl:brn pid:#299cf2 hcl:#602927 byr:2004 iyr:2023 276: + 277: +iyr:2020 cid:273 278: +pid:038972962 279: +hcl:#c0946f hgt:152cm 280: +eyr:2021 ecl:blu byr:1986 281: + 282: +pid:015622106 hgt:154cm iyr:2012 byr:1922 283: +eyr:2028 hcl:#9dc667 ecl:blu 284: + 285: +iyr:2017 eyr:2025 hgt:179cm cid:324 286: +pid:579870519 byr:1934 287: + 288: +hcl:#6b5442 eyr:2021 289: +pid:104071480 ecl:brn 290: +hgt:162cm cid:89 byr:1949 291: +iyr:2017 292: + 293: +pid:388871409 cid:163 hgt:190cm ecl:amb eyr:2022 iyr:2019 byr:1963 hcl:#fffffd 294: + 295: +cid:190 byr:1968 iyr:2018 296: +hgt:155cm hcl:#6b5442 ecl:grn 297: +pid:891458997 eyr:2030 298: + 299: +hcl:z 300: +cid:103 iyr:2026 hgt:171 byr:1979 301: +pid:076174078 302: +eyr:2031 ecl:#fc4638 303: + 304: +hcl:#f8063e pid:684921958 ecl:gry eyr:2020 iyr:2011 305: +byr:1958 hgt:189cm 306: +cid:131 307: + 308: +ecl:gry cid:90 iyr:2010 hgt:165cm 309: +pid:683095019 byr:1953 310: +hcl:#341e13 311: +eyr:2030 312: + 313: +pid:000303662 314: +ecl:amb iyr:2014 hcl:#733820 byr:1964 hgt:184cm cid:149 315: +eyr:2027 316: + 317: +hcl:#341e13 hgt:150cm byr:1999 eyr:2022 pid:950260967 cid:72 318: +ecl:grn iyr:2012 319: + 320: +cid:159 byr:1987 321: +hcl:#623a2f pid:144877169 eyr:2021 ecl:brn hgt:164cm 322: + 323: +pid:759578668 324: +cid:235 ecl:amb hgt:154cm 325: +eyr:2023 byr:1941 hcl:#fffffd 326: +iyr:2023 327: + 328: +pid:18101245 hcl:z hgt:172in iyr:1947 byr:1956 ecl:grn eyr:1964 329: + 330: +eyr:1980 pid:#8d62b1 ecl:#3e8868 cid:235 331: +iyr:1978 hcl:#efcc98 332: +byr:2025 hgt:181in 333: + 334: +hgt:64cm hcl:3bc533 iyr:2019 byr:2015 pid:158cm eyr:2027 ecl:#1abbd7 335: + 336: +eyr:2020 iyr:2011 337: +pid:739854643 byr:1941 hgt:179cm hcl:#602927 ecl:gry cid:330 338: + 339: +hcl:#a97842 iyr:2011 hgt:167cm pid:527353688 byr:1927 cid:256 eyr:2026 ecl:grn 340: + 341: +iyr:2011 pid:350783151 hgt:168cm 342: +byr:1961 ecl:amb hcl:#341e13 343: +cid:181 344: + 345: +eyr:2025 hgt:160cm 346: +ecl:brn hcl:#cfa07d pid:136929481 347: +iyr:2017 348: + 349: +ecl:oth byr:1994 iyr:2020 hgt:162cm pid:578918570 eyr:2027 hcl:#fffffd 350: +cid:325 351: + 352: +hgt:63in byr:1925 353: +ecl:amb iyr:2014 cid:224 354: +hcl:#341e13 pid:208286938 355: + 356: +ecl:#76434f hgt:97 357: +hcl:z eyr:1968 pid:#871dc8 iyr:1955 358: +byr:2007 359: + 360: +byr:2011 361: +eyr:1962 hcl:9ac7b8 pid:6836105558 362: +ecl:#d7084f 363: +iyr:2023 hgt:76cm 364: + 365: +eyr:2016 iyr:2030 hgt:107 pid:948192703 byr:2013 366: +hcl:b80af7 ecl:#d47439 367: + 368: +eyr:2027 iyr:2017 369: +pid:#27d2a6 byr:1921 ecl:brn hcl:#c0946f hgt:59in 370: + 371: +byr:1982 hcl:#ceb3a1 ecl:brn eyr:2020 hgt:63in 372: +iyr:2017 373: + 374: +ecl:brn hgt:152cm byr:1962 375: +iyr:2013 376: +pid:381950515 hcl:#2afabd eyr:2020 377: + 378: +hgt:158cm ecl:gry pid:252068098 379: +cid:281 eyr:2023 byr:1950 iyr:2016 380: +hcl:#ceb3a1 381: + 382: +byr:1922 383: +hgt:187cm cid:74 384: +hcl:#a97842 385: +ecl:amb 386: +pid:045338811 387: +eyr:2025 iyr:2019 388: + 389: +hgt:176cm eyr:2022 iyr:2019 byr:1938 ecl:blu pid:610286298 390: +hcl:#a97842 391: + 392: +iyr:2028 byr:2025 393: +eyr:2039 pid:72530856 ecl:#a819ad hgt:69 hcl:z 394: + 395: +iyr:2018 eyr:2030 396: +hcl:#8b1e1f ecl:hzl byr:1971 397: +pid:189005628 398: + 399: +pid:531154383 eyr:2020 hcl:#733820 ecl:oth 400: +hgt:72in 401: +iyr:2016 402: +byr:1983 403: + 404: +hgt:178cm hcl:#623a2f pid:562756202 405: +eyr:2020 406: +byr:1929 ecl:oth 407: +iyr:2013 408: + 409: +iyr:2013 byr:1983 pid:510998389 ecl:gry 410: +cid:99 hcl:#a97842 411: + 412: +ecl:gry eyr:2026 413: +cid:202 hgt:191cm byr:1981 414: +pid:414853225 415: +hcl:#7d3b0c 416: + 417: +hcl:#866857 byr:1951 eyr:2020 hgt:169cm pid:844496997 418: +iyr:2016 ecl:brn 419: + 420: +pid:083641628 iyr:2019 eyr:2030 421: +byr:1938 ecl:hzl hcl:#b6652a hgt:68in 422: + 423: +hcl:#18171d 424: +byr:1981 425: +pid:425911593 cid:309 eyr:2026 ecl:brn hgt:168cm 426: + 427: +hcl:c84fda pid:#80d5e6 byr:1925 hgt:162cm iyr:2026 428: +eyr:2036 ecl:#62c166 429: + 430: +pid:461660733 eyr:2028 431: +hgt:167cm ecl:hzl hcl:#cfa07d iyr:2010 432: +cid:183 433: + 434: +eyr:1930 byr:2021 iyr:2016 pid:163cm 435: +hcl:79428f cid:136 436: +ecl:amb 437: + 438: +hcl:#efcc98 hgt:176cm eyr:2022 ecl:brn iyr:2013 pid:541033681 byr:1952 439: + 440: +hgt:59cm 441: +ecl:#d9b0bc pid:#3ab4b4 hcl:7aa29f 442: +eyr:2034 443: +byr:2011 cid:266 iyr:2004 444: + 445: +byr:1991 hcl:#cfa07d cid:259 hgt:67cm eyr:2024 pid:631601343 ecl:brn iyr:2011 446: + 447: +byr:2020 448: +ecl:gry iyr:1944 449: +pid:421649652 hgt:107 450: +hcl:6d8593 eyr:2026 451: + 452: +ecl:blu 453: +byr:1953 hgt:66in hcl:#888785 eyr:2021 pid:174284708 454: + 455: +ecl:#8f2c20 456: +pid:27713962 iyr:2010 cid:149 byr:1952 hcl:#866857 eyr:2030 457: +hgt:186cm 458: + 459: +eyr:2023 byr:1989 ecl:blu 460: +hcl:#18171d pid:480641 iyr:2020 461: +hgt:74in 462: + 463: +hcl:#efcc98 464: +eyr:2023 hgt:157cm byr:1968 465: +iyr:2013 466: +ecl:amb pid:436599087 467: + 468: +eyr:2021 469: +hgt:175cm hcl:#efcc98 ecl:hzl pid:701245439 470: +byr:1943 iyr:2015 471: + 472: +hgt:164cm pid:310546869 473: +eyr:2021 hcl:#b6652a ecl:oth iyr:2011 cid:181 474: +byr:2001 475: + 476: +byr:2016 hcl:94f4b9 eyr:1922 hgt:155cm ecl:hzl iyr:2009 pid:83440078 477: + 478: +iyr:2014 hgt:60in 479: +eyr:2031 480: +hcl:#c0946f 481: +byr:1948 ecl:grt pid:117909137 482: + 483: +byr:1965 hgt:186cm iyr:2010 cid:117 hcl:#602927 pid:806868279 484: +eyr:2029 485: +ecl:grn 486: + 487: +ecl:amb hgt:187cm hcl:#c0946f byr:1935 488: +cid:139 iyr:2019 eyr:2023 489: + 490: +pid:925865182 491: +byr:1952 hgt:158cm hcl:#619e03 ecl:gry eyr:2026 492: +iyr:2016 493: + 494: +iyr:2012 hgt:73in 495: +cid:199 496: +byr:1959 497: +ecl:hzl hcl:#fcd2f7 pid:268810283 498: + 499: +eyr:2025 500: +pid:317239854 ecl:brn byr:1955 hcl:#fffffd cid:220 hgt:175cm 501: +iyr:2015 502: + 503: +ecl:blu 504: +byr:1939 hcl:#3332c0 505: +iyr:2019 pid:832588457 eyr:2030 hgt:192cm 506: + 507: +hgt:64cm cid:326 ecl:oth byr:2025 eyr:2025 hcl:z iyr:2012 pid:0394683801 508: + 509: +ecl:amb byr:1966 510: +pid:734257450 hgt:65in hcl:#fffffd iyr:2018 eyr:2025 511: +cid:287 512: + 513: +cid:249 514: +eyr:2034 ecl:#7b7bf5 byr:2009 pid:171cm hcl:709fe4 515: + 516: +hcl:d7c488 ecl:#b9bbb2 517: +pid:55277333 518: +cid:90 byr:2022 iyr:1978 519: +hgt:69cm eyr:1981 520: + 521: +hcl:z 522: +byr:1949 pid:057966198 eyr:1941 523: +iyr:2025 524: + 525: +hgt:168cm ecl:hzl hcl:#866857 iyr:2011 pid:052204052 eyr:2030 526: +byr:1970 527: + 528: +pid:318707043 eyr:2029 ecl:hzl hcl:#888785 529: +byr:1932 iyr:2010 530: +hgt:166cm 531: + 532: +hcl:z iyr:2010 ecl:oth byr:2006 cid:120 pid:#15d5ef eyr:2039 hgt:73cm 533: + 534: +hcl:96c534 hgt:193in eyr:2036 byr:2008 ecl:#090691 cid:109 pid:603339169 iyr:2027 535: + 536: +iyr:2029 537: +ecl:utc 538: +pid:5845500732 hcl:2a32b8 539: +byr:2009 eyr:2040 540: +cid:305 hgt:71cm 541: + 542: +byr:1994 iyr:2015 543: +eyr:2026 544: +hcl:#623a2f pid:678627790 545: +hgt:176cm ecl:blu 546: + 547: +byr:2005 hcl:z 548: +ecl:zzz pid:#47729a eyr:2039 hgt:62cm iyr:1983 549: + 550: +hcl:#cfa07d ecl:blu 551: +iyr:2014 eyr:2025 pid:824483836 hgt:174cm byr:1933 552: + 553: +hgt:70in 554: +iyr:2010 cid:53 eyr:2023 pid:093704222 ecl:amb hcl:#a97842 byr:1945 555: + 556: +ecl:brn hcl:#602927 byr:1986 eyr:2029 557: +pid:422160398 558: +cid:134 559: +hgt:156cm 560: +iyr:2020 561: + 562: +iyr:2014 hgt:187cm byr:1921 eyr:2022 ecl:amb 563: + 564: +pid:765750572 eyr:2021 565: +ecl:hzl 566: +iyr:1997 hgt:66 567: + 568: +iyr:2016 569: +ecl:blu 570: +cid:335 571: +hgt:175cm pid:297297703 hcl:#b6652a 572: +eyr:2030 573: + 574: +hgt:64in hcl:#866857 pid:159cm byr:1972 575: +cid:321 eyr:2021 ecl:brn 576: +iyr:2017 577: + 578: +pid:884038003 579: +iyr:2016 hgt:188cm ecl:grn 580: +byr:1928 eyr:2027 hcl:#341e13 581: + 582: +pid:020315021 hgt:60in ecl:amb iyr:2018 583: +hcl:#602927 584: +eyr:2028 585: +byr:1935 586: + 587: +byr:1946 eyr:2021 hcl:#efcc98 iyr:2015 588: +cid:52 589: +hgt:177cm 590: +pid:841348804 591: + 592: +ecl:gry eyr:2027 593: +byr:1959 pid:482204272 594: +hcl:#888785 595: +iyr:2013 596: + 597: +hcl:#623a2f 598: +eyr:2027 iyr:2011 hgt:189cm pid:767923916 ecl:hzl 599: +byr:1987 600: + 601: +hgt:152in hcl:#efcc98 ecl:hzl eyr:2030 byr:1971 iyr:1978 pid:499148724 602: +cid:194 603: + 604: +pid:#87513f hcl:e2a5de byr:2015 iyr:2016 hgt:155cm eyr:2024 605: +ecl:gry cid:123 606: + 607: +byr:1977 608: +iyr:2028 609: +hcl:#888785 pid:69801913 eyr:2026 hgt:165in ecl:brn 610: + 611: +byr:1938 hcl:#efcc98 hgt:154cm pid:621714851 eyr:1972 ecl:gry iyr:2014 cid:161 612: + 613: +hcl:#a97842 614: +hgt:184cm ecl:oth pid:009682326 615: +cid:233 eyr:2023 iyr:2019 byr:1982 616: + 617: +hcl:#ceb3a1 pid:700761574 eyr:2020 byr:1940 iyr:2017 618: +ecl:gry hgt:76in 619: + 620: +iyr:2017 cid:73 621: +ecl:hzl 622: +hcl:#efcc98 pid:363441284 623: +hgt:177cm byr:1924 eyr:2028 624: + 625: +hcl:#a97842 eyr:2023 byr:1989 pid:589573553 626: +ecl:oth 627: +iyr:2017 hgt:162cm 628: + 629: +ecl:oth 630: +byr:2001 hgt:167cm hcl:#18171d eyr:2028 iyr:2015 pid:253666913 631: + 632: +byr:1943 ecl:amb 633: +hcl:#888785 pid:163cm iyr:2025 hgt:76 eyr:2026 634: + 635: +byr:1963 eyr:2030 636: +hgt:158in iyr:2023 pid:399153486 hcl:#733820 637: + 638: +pid:43290252 hgt:167cm cid:302 iyr:2016 hcl:f81436 639: +byr:1992 ecl:gry 640: +eyr:1922 641: + 642: +pid:487300118 hgt:167cm hcl:#888785 643: +iyr:2018 ecl:oth cid:286 byr:1971 eyr:2021 644: + 645: +eyr:2036 646: +hgt:94 647: +byr:2013 648: +cid:162 hcl:37408d pid:527721797 ecl:dne 649: +iyr:2022 650: + 651: +hcl:5e67df byr:1973 pid:48217944 hgt:65in eyr:2023 652: +iyr:2001 ecl:gry 653: + 654: +hcl:717ef8 eyr:1996 pid:154cm ecl:#e2c90e 655: +iyr:2028 656: +byr:2009 hgt:184cm 657: + 658: +iyr:2015 pid:549968053 hcl:#efcc98 659: +hgt:151cm eyr:2025 660: +byr:1993 661: +ecl:gry 662: + 663: +hgt:165cm ecl:gry 664: +iyr:2020 665: +byr:1927 hcl:#602927 pid:278946330 666: +eyr:2027 667: + 668: +eyr:2031 669: +ecl:#b01aae pid:151cm 670: +cid:188 iyr:2025 671: +hgt:60cm byr:2015 672: + 673: +eyr:2028 pid:928740840 674: +byr:1931 675: +hgt:191cm iyr:2014 cid:305 676: +hcl:#6b5442 677: +ecl:oth 678: + 679: +hcl:#7d3b0c cid:283 byr:1923 ecl:amb 680: +pid:781290431 iyr:2019 681: +eyr:2021 682: +hgt:191cm 683: + 684: +byr:2027 685: +pid:51702036 686: +iyr:2028 hgt:165in ecl:gry hcl:z 687: +eyr:2036 688: + 689: +byr:1971 690: +ecl:blu iyr:2012 pid:986042111 691: +eyr:2021 hcl:#888785 692: +hgt:68in 693: + 694: +hgt:183cm byr:2030 695: +iyr:2013 696: +cid:209 pid:989002507 697: +ecl:hzl eyr:2028 hcl:59c2ce 698: + 699: +ecl:gry iyr:2020 pid:895856989 hcl:#888785 700: +hgt:185cm byr:1964 eyr:2025 701: + 702: +ecl:gry 703: +hgt:183cm cid:97 hcl:#93be9b eyr:2021 704: +byr:1995 pid:668647173 705: + 706: +hcl:#733820 eyr:2027 707: +byr:1977 pid:242773849 hgt:184cm iyr:2017 708: +cid:76 ecl:brn 709: + 710: +hgt:167 hcl:z byr:2012 eyr:2027 711: +pid:590438786 ecl:hzl 712: +cid:101 iyr:1994 713: + 714: +iyr:2015 715: +hcl:#888785 eyr:2024 716: +ecl:blu pid:279218875 cid:178 byr:1944 hgt:74in 717: + 718: +ecl:oth cid:334 pid:169599381 719: +hcl:#7d3b0c eyr:2028 hgt:172cm iyr:2010 720: + 721: +eyr:2033 byr:1973 cid:333 iyr:2019 hcl:z ecl:utc 722: +hgt:178cm pid:#e7abc0 723: + 724: +eyr:2026 ecl:blu cid:264 byr:1998 hgt:177cm hcl:#602927 725: +pid:770052780 726: +iyr:2019 727: + 728: +ecl:blu 729: +iyr:2016 cid:232 eyr:2023 730: +pid:643597545 hgt:167cm byr:1986 hcl:#cfa07d 731: + 732: +pid:017818204 733: +iyr:2017 eyr:2028 hgt:168cm hcl:#602927 byr:1931 ecl:oth 734: + 735: +byr:1984 ecl:grn hgt:191cm hcl:#efcc98 pid:408382086 736: +iyr:2010 eyr:2025 737: + 738: +hgt:158cm ecl:#25e195 byr:1929 pid:0367744553 eyr:1957 iyr:2017 739: +hcl:z 740: + 741: +hgt:168cm byr:1977 pid:006609828 742: +eyr:2024 743: +iyr:2015 744: +ecl:amb hcl:#b6652a 745: + 746: +pid:635167847 iyr:2010 hcl:#18171d hgt:163cm ecl:grn 747: +eyr:2026 748: + 749: +pid:423029177 byr:1995 750: +iyr:2014 ecl:hzl 751: +hgt:185cm hcl:#c0946f eyr:2024 cid:230 752: + 753: +pid:#3e3109 ecl:#a8a0aa iyr:2020 hcl:#733820 eyr:2021 byr:2010 hgt:179in 754: + 755: +iyr:2017 byr:1938 eyr:2022 hcl:#733820 ecl:amb hgt:157cm pid:162425330 756: + 757: +hgt:160cm 758: +cid:339 byr:1938 759: +hcl:#341e13 760: +eyr:2025 iyr:2015 761: +pid:562755634 762: + 763: +cid:283 byr:1954 ecl:blu hcl:#ceb3a1 hgt:169cm iyr:2013 pid:616439723 764: + 765: +pid:830940520 eyr:2022 766: +byr:1981 hgt:193cm hcl:#18171d iyr:2013 767: +cid:117 768: + 769: +hcl:#866857 iyr:2019 ecl:hzl byr:1962 hgt:72in eyr:2020 770: + 771: +byr:2015 pid:4530685490 ecl:#c7604e hcl:z 772: +hgt:151 eyr:1972 iyr:1948 773: + 774: +pid:0800674852 hcl:z 775: +ecl:#2a275e hgt:61cm 776: +iyr:1950 eyr:1938 777: + 778: +iyr:2028 779: +eyr:1998 780: +pid:#c604ca 781: +hgt:122 hcl:z 782: +ecl:dne cid:160 byr:2018 783: + 784: +hcl:z 785: +cid:67 iyr:2029 786: +byr:1973 787: +ecl:amb eyr:2030 788: +hgt:66 789: + 790: +ecl:hzl 791: +pid:483557353 eyr:2021 792: +hgt:172cm iyr:2011 793: +hcl:#888785 794: +byr:1963 795: + 796: +eyr:2030 ecl:brn hcl:#fffffd byr:1969 797: +hgt:161cm pid:632930895 798: +iyr:2017 799: + 800: +iyr:2015 byr:2000 801: +pid:525557240 hgt:156cm eyr:2029 802: +ecl:brn hcl:#64bf85 803: + 804: +byr:2007 805: +iyr:2012 eyr:2029 ecl:#7c1d6f pid:612320497 hgt:165in 806: + 807: +eyr:2026 ecl:grn cid:93 808: +hcl:#888785 hgt:134 pid:745552484 iyr:2019 byr:1999 809: + 810: +byr:2001 pid:984678649 hgt:173cm ecl:oth iyr:2012 cid:345 hcl:#fffffd 811: +eyr:2028 812: + 813: +hcl:#341e13 pid:308853935 814: +byr:1972 hgt:160cm iyr:2012 eyr:2026 815: +ecl:amb cid:97 816: + 817: +hcl:z hgt:151 818: +ecl:grn pid:132866718 819: +iyr:2021 byr:1932 820: +eyr:2024 821: + 822: +eyr:2027 byr:1923 823: +ecl:oth hgt:174cm hcl:#733820 824: +pid:099185839 825: +iyr:2017 826: + 827: +iyr:2017 ecl:gry byr:1941 828: +hgt:74in 829: +pid:540930352 830: +hcl:#888785 eyr:2023 831: + 832: +hgt:161cm cid:277 833: +hcl:#866857 834: +byr:1928 835: +eyr:2030 ecl:blu 836: +iyr:2020 pid:358953579 837: + 838: +hgt:155cm eyr:1930 839: +iyr:2015 ecl:utc 840: +pid:163cm 841: +byr:2008 hcl:#733820 cid:156 842: + 843: +byr:1946 hgt:164cm 844: +cid:234 iyr:2015 845: +pid:168804387 eyr:2025 846: +ecl:hzl hcl:#a97842 847: + 848: +hgt:184cm 849: +hcl:#7d3b0c byr:1996 cid:193 iyr:2011 ecl:amb eyr:2030 pid:940497049 850: + 851: +hcl:#733820 iyr:2016 hgt:168 852: +eyr:2020 853: +cid:118 pid:9871436 ecl:gry 854: + 855: +pid:416683862 856: +hgt:162in 857: +hcl:#602927 byr:2027 858: +eyr:2027 ecl:gmt 859: + 860: +ecl:#771e11 861: +iyr:2024 862: +cid:81 pid:741843390 863: +hcl:#866857 byr:2012 eyr:1964 864: +hgt:157in 865: + 866: +pid:720946735 867: +byr:2002 hcl:#18171d iyr:2026 hgt:70cm 868: +ecl:brn eyr:2025 869: + 870: +byr:1987 hcl:#623a2f 871: +hgt:165cm pid:087526326 ecl:grn 872: +iyr:2017 eyr:2021 873: + 874: +byr:2014 hgt:193cm 875: +iyr:2018 hcl:z 876: +eyr:2027 pid:792398819 877: + 878: +cid:233 879: +hcl:z ecl:#18002d hgt:174cm iyr:2027 eyr:1944 880: + 881: +pid:142615460 ecl:blu eyr:2021 882: +hcl:#c88693 iyr:2017 cid:182 hgt:152cm byr:1966 883: + 884: +hcl:z hgt:65cm 885: +eyr:1944 ecl:dne byr:2029 pid:1066768764 886: +iyr:2015 887: +cid:149 888: + 889: +hcl:z pid:25144284 hgt:152in 890: +byr:2009 891: +cid:276 eyr:2037 892: +iyr:2010 ecl:gmt 893: + 894: +cid:88 hcl:ed6b8a ecl:xry hgt:178in pid:36832491 byr:2020 iyr:2012 eyr:1993 895: + 896: +byr:1972 iyr:2009 pid:324213657 hgt:160 hcl:z cid:259 eyr:2021 ecl:grn 897: + 898: +hcl:#7d3b0c pid:164496070 eyr:2024 ecl:brn hgt:165cm 899: + 900: +pid:955035528 901: +byr:1967 eyr:2021 iyr:2015 hcl:#fffffd hgt:156cm 902: +cid:237 903: +ecl:blu 904: + 905: +hcl:z 906: +eyr:2038 iyr:1973 ecl:grt hgt:193in 907: +pid:41385449 byr:2011 908: +cid:119 909: + 910: +byr:1934 pid:713339056 hgt:157cm cid:250 iyr:2016 ecl:blu hcl:#866857 eyr:2026 911: + 912: +hgt:186cm byr:2012 913: +eyr:2022 914: +iyr:2013 hcl:#733820 pid:226693031 ecl:hzl 915: + 916: +cid:118 pid:56750275 hcl:#cfa07d iyr:2028 eyr:2033 byr:1933 hgt:166cm 917: + 918: +byr:1973 919: +ecl:hzl hgt:167 hcl:z 920: +iyr:2015 pid:70648423 921: + 922: +byr:1929 923: +iyr:2012 pid:083005744 ecl:brn hgt:162cm 924: +eyr:2024 925: +hcl:#cfa07d 926: + 927: +hcl:#623a2f hgt:174cm 928: +eyr:2026 iyr:2020 929: +ecl:grn 930: +byr:1981 931: + 932: +cid:236 byr:1979 iyr:2013 ecl:amb eyr:2030 hcl:#6b5442 pid:768869830 933: + 934: +hcl:#341e13 byr:1998 iyr:2020 935: +pid:857980686 936: +ecl:hzl hgt:175cm eyr:2028 937: + 938: +hgt:169in 939: +cid:305 eyr:2023 940: +ecl:gry pid:833031763 hcl:#ceb3a1 iyr:2015 byr:1974 941: + 942: +pid:370671195 hgt:162cm 943: +iyr:2018 ecl:oth byr:2001 hcl:#7d3b0c 944: +eyr:2021 945: + 946: +eyr:2026 947: +ecl:brn 948: +cid:288 949: +hcl:#866857 iyr:2010 byr:1922 950: +pid:309109383 951: + 952: +byr:1949 iyr:2015 pid:832774982 eyr:2029 953: +hgt:182cm 954: +hcl:#b7144c ecl:amb 955: + 956: +eyr:2029 iyr:2020 957: +hcl:#c0946f 958: +pid:953788134 959: +byr:1954 hgt:167cm 960: + 961: +pid:981508704 eyr:2023 iyr:2013 hgt:66in cid:68 hcl:#fffffd byr:1996 ecl:oth 962: + 963: +iyr:2011 byr:1932 cid:232 eyr:2030 964: +hcl:#c0946f 965: +hgt:169cm pid:994763987 966: +ecl:hzl 967: + 968: +ecl:gmt eyr:2031 hcl:z 969: +byr:2006 cid:86 hgt:59cm iyr:1998 pid:#349a7f 970: + 971: +hcl:#7d3b0c iyr:2013 pid:549500594 eyr:2024 byr:1971 ecl:oth 972: +hgt:153cm 973: + 974: +iyr:2015 975: +byr:1940 pid:798926275 eyr:2027 976: +hcl:#cfa07d 977: +hgt:158cm ecl:amb 978: + 979: +ecl:brn pid:077141823 980: +eyr:1945 iyr:2023 hcl:#602927 byr:1956 981: +hgt:152 982: + 983: +iyr:2022 984: +byr:2007 985: +hcl:f87f81 pid:8404831740 eyr:2033 hgt:170cm 986: +ecl:gmt 987: + 988: +iyr:1958 989: +ecl:dne hcl:840fbe 990: +cid:55 eyr:2032 pid:19403738 hgt:170cm 991: +byr:2029 992: + 993: +ecl:brn pid:864743117 994: +eyr:2025 995: +hgt:188cm byr:1934 hcl:#623a2f 996: +iyr:2011 997: + 998: +iyr:2010 pid:877675472 hcl:#7d3b0c eyr:2027 byr:1954 hgt:182cm 999: +ecl:oth 1000: + 1001: +iyr:2015 hcl:#a97842 pid:719192774 ecl:brn 1002: +byr:1993 1003: +hgt:186cm 1004: + 1005: +eyr:2021 hgt:176cm pid:395161956 hcl:#602927 1006: +ecl:grn iyr:2020 byr:1972 1007: + 1008: +hcl:#fffffd hgt:167cm byr:1945 ecl:grn iyr:2017 eyr:2026 1009: + 1010: +hcl:#6b5442 ecl:gry cid:208 hgt:155cm iyr:2010 byr:1933 pid:040244553 1011: +eyr:2029 1012: + 1013: +iyr:1960 cid:281 ecl:#8f7c45 hcl:z pid:11609858 eyr:1955 hgt:150in 1014: +byr:1985 1015: + 1016: +hgt:150cm byr:2002 hcl:#fffffd 1017: +pid:337375886 iyr:2011 ecl:amb 1018: +eyr:2037 1019: + 1020: +iyr:2014 ecl:oth hgt:155cm hcl:#866857 eyr:2025 pid:614859979 cid:338 1021: +byr:1952 1022: + 1023: +hcl:#623a2f hgt:156cm 1024: +iyr:2010 ecl:amb byr:1997 1025: +cid:285 1026: +pid:225568504 eyr:2020 1027: + 1028: +iyr:2021 hcl:#ceb3a1 ecl:#d6db5a pid:185cm eyr:2020 cid:130 byr:2009 1029: + 1030: +byr:1956 1031: +cid:245 iyr:1954 ecl:dne hcl:#341e13 eyr:2040 hgt:71cm pid:838134394 1032: + 1033: +eyr:2027 1034: +byr:1994 ecl:amb iyr:2014 hgt:168cm 1035: +cid:278 1036: +hcl:#602927 pid:758176176 1037: + 1038: +hcl:#941519 ecl:gry eyr:2030 byr:1921 1039: +pid:9477831046 1040: +iyr:2018 hgt:189cm 1041: + 1042: +cid:339 hcl:#6b5442 1043: +byr:1972 1044: +ecl:oth 1045: +iyr:2014 hgt:183cm eyr:2020 1046: + 1047: +cid:165 1048: +eyr:1926 hcl:#6b5442 iyr:1956 hgt:65cm byr:2029 1049: +pid:9240052093 ecl:xry 1050: + 1051: +ecl:grn 1052: +eyr:2027 1053: +hcl:#fffffd byr:1975 iyr:2011 hgt:177cm pid:825090410 cid:121 1054: + 1055: +byr:1934 1056: +hcl:#733820 pid:133141914 eyr:2027 1057: +hgt:66in 1058: +ecl:amb 1059: +iyr:2010 cid:262 1060: + 1061: +iyr:1951 1062: +ecl:#bb9733 hcl:89fcbf 1063: +byr:2018 pid:#13265f hgt:85 1064: +eyr:1977 1065: + 1066: +hcl:#324bed ecl:hzl hgt:155cm 1067: +iyr:2013 byr:1942 eyr:2021 1068: +pid:758516520 1069: + 1070: +ecl:gry 1071: +pid:#567782 iyr:2015 hcl:276a6d eyr:2028 1072: +hgt:60cm 1073: +byr:2005 1074: + 1075: +hcl:#18171d hgt:191cm eyr:2030 1076: +ecl:grn pid:748729106 byr:1922 iyr:2017 1077: + 1078: +byr:1984 hcl:#733820 eyr:2020 iyr:2013 hgt:64in pid:444446114 1079: +ecl:hzl 1080: + 1081: +byr:2006 ecl:dne iyr:2029 hcl:z 1082: +eyr:2023 hgt:68cm 1083: +pid:131910019 1084: + 1085: +iyr:1976 hcl:45191a eyr:2017 hgt:68cm 1086: +ecl:oth pid:153cm byr:1968 1087: + 1088: +ecl:gry byr:1959 eyr:2023 pid:781945569 1089: +iyr:2015 hcl:#ceb3a1 hgt:167cm 1090: + 1091: +hgt:151cm 1092: +byr:1959 hcl:#7d3b0c 1093: +cid:76 pid:069205247 ecl:gry eyr:2029 1094: +iyr:2013 1095: + 1096: +pid:055193304 1097: +hcl:#fffffd 1098: +hgt:67in ecl:grn iyr:2011 1099: + 1100: +eyr:2026 1101: +byr:1975 1102: +pid:681437369 1103: +hgt:173cm hcl:#a97842 1104: +iyr:2017 ecl:brn 1105: + 1106: +pid:298214774 hgt:158cm ecl:hzl 1107: +hcl:#866857 byr:1993 iyr:2013 1108: +eyr:2028 1109: + 1110: +hcl:#b6652a eyr:2023 pid:879418046 hgt:193cm 1111: +iyr:2014 1112: +ecl:brn 1113: + 1114: +hgt:164cm 1115: +eyr:2028 hcl:fbd462 ecl:gry 1116: +iyr:2011 byr:1938 pid:029003659 1117: + 1118: +byr:1999 hgt:171cm eyr:2024 cid:195 pid:041799326 ecl:gry iyr:2012 hcl:#a97842 1119: + 1120: +byr:1963 pid:7471206322 iyr:2015 ecl:brn hcl:#623a2f hgt:72cm 1121: +cid:63 1122: + 1123: +byr:1961 1124: +ecl:hzl hcl:#efcc98 1125: +pid:617022365 1126: +eyr:2020 hgt:155cm iyr:2018 1127: + 1128: +pid:385763432 byr:1977 cid:228 hcl:#733820 eyr:2020 1129: +hgt:163cm ecl:grt 1130: +iyr:2015 1131: + 1132: +byr:1979 hgt:186in eyr:2037 1133: +ecl:dne 1134: +iyr:2025 hcl:d93e3e 1135: +pid:187cm 1136: + 1137: +iyr:2018 1138: +cid:158 eyr:2020 1139: +byr:1929 1140: +pid:334374178 hgt:181cm hcl:z ecl:grn 1141: + 1142: +cid:135 ecl:oth hcl:#623a2f 1143: +iyr:2017 1144: +eyr:2024 byr:1940 1145: +hgt:66in 1146: + 1147: +cid:92 eyr:2026 hcl:#888785 pid:827526879 byr:1990 1148: +hgt:186cm ecl:amb iyr:2014 1149: + 1150: +pid:575519103 1151: +iyr:2016 byr:1964 hcl:#7d3b0c cid:252 hgt:172cm 1152: + 1153: +hcl:#c0946f 1154: +ecl:grn hgt:75in 1155: +eyr:2021 pid:426544544 1156: + 1157: +cid:171 byr:2004 1158: +hcl:z 1159: +hgt:191cm eyr:2028 pid:#292b3b ecl:brn 1160: + 1161: +iyr:2016 ecl:hzl 1162: +byr:2007 1163: +hgt:167cm hcl:#653b4c cid:124 eyr:2022 1164: +pid:#27024c 1165: + 1166: +hgt:177cm byr:2025 1167: +hcl:z cid:303 iyr:2016 eyr:2000 ecl:dne 1168: +pid:345555418 1169: + 1170: +eyr:2040 1171: +hcl:70fbf6 cid:318 1172: +byr:2027 iyr:2022 1173: +ecl:#3a037c pid:644624005 1174: +hgt:62cm 1175: + 1176: +ecl:brn iyr:2016 hgt:150cm pid:680594195 cid:324 hcl:#602927 1177: +byr:1944 1178: + 1179: +hcl:z eyr:2022 byr:2020 cid:112 ecl:dne iyr:2029 1180: +pid:#3a3560 hgt:153in 1181: + 1182: +cid:86 1183: +ecl:gry byr:1972 hcl:#866857 pid:758976621 hgt:188cm 1184: + 1185: +pid:#850e8b eyr:2025 hgt:163in 1186: +ecl:#71e9e2 1187: +hcl:#623a2f 1188: + 1189: +ecl:amb byr:1958 hgt:193cm 1190: +pid:343803154 iyr:2010 eyr:2029 cid:86 hcl:#602927 1191: + 1192: +hgt:178cm byr:1987 ecl:blu hcl:#866857 iyr:2017 1193: +pid:222443921 eyr:2027 1194: + 1195: +byr:1964 iyr:2001 1196: +hgt:180cm eyr:1945 1197: +hcl:#fffffd pid:305189916 ecl:#ac3c49 1198: +cid:142 1199: + 1200: +byr:1979 hgt:166cm ecl:brn 1201: +cid:202 hcl:#5311ca eyr:2028 pid:874418818 iyr:2014 1202: + 1203: +hgt:161cm byr:1987 ecl:grn hcl:#6b5442 pid:986096798 1204: +cid:74 1205: +eyr:2027 iyr:2019 1206: + 1207: +byr:1964 iyr:1979 eyr:2022 ecl:#77ada3 1208: +hcl:#733820 1209: +cid:56 1210: + 1211: +hgt:185cm iyr:2010 pid:214991920 eyr:2023 cid:236 hcl:#866857 ecl:brn byr:1965 1212: + 1213: +pid:885169578 iyr:2010 byr:1948 ecl:hzl hcl:#18171d 1214: +eyr:2025 hgt:175cm 1215: + 1216: +ecl:oth pid:34655368 1217: +hgt:186 1218: +byr:1968 1219: +hcl:2653c9 1220: +eyr:2030 iyr:2024 1221: + 1222: +eyr:2022 iyr:2015 ecl:gry hgt:65in byr:1994 1223: +pid:766704860 1224: + 1225: +hcl:#c0946f cid:104 iyr:2015 1226: +pid:739274357 1227: +ecl:#ef45c8 1228: +byr:1960 hgt:61in eyr:2026 1229: + 1230: +pid:849044092 eyr:2020 hgt:186cm iyr:2014 1231: +byr:1991 hcl:#866857 1232: + 1233: +hgt:159cm iyr:1950 1234: +eyr:2021 pid:325442644 hcl:#888785 1235: +ecl:gry byr:1986 1236: + 1237: +eyr:2023 hgt:188cm 1238: +iyr:2014 1239: +pid:945115479 byr:1979 ecl:blu hcl:#b6652a 1240: + 1241: +eyr:2024 1242: +cid:274 pid:390115952 byr:1934 hgt:161cm iyr:2017 hcl:#b95b0d 1243: + 1244: +ecl:#a16ec8 pid:187cm hcl:z iyr:2029 hgt:170 1245: +byr:2008