diff --git a/jour4/Makefile b/jour4/Makefile new file mode 100644 index 0000000..2e76cf5 --- /dev/null +++ b/jour4/Makefile @@ -0,0 +1,18 @@ +CC=gcc +CFLAGS= -Wall -g + +all: clean main clean + +main: main.o utils.o + $(CC) -o $@ $^ + +main.o: main.c + $(CC) $(CFLAGS) $^ -o $@ -c + +utils.o: utils.c + $(CC) $(CFLAGS) $^ -o $@ -c + +.PHONY: all clean + +clean: + rm -f *.o diff --git a/jour4/input b/jour4/input new file mode 100644 index 0000000..54db857 --- /dev/null +++ b/jour4/input @@ -0,0 +1,1159 @@ +iyr:2010 ecl:gry hgt:181cm +pid:591597745 byr:1920 hcl:#6b5442 eyr:2029 cid:123 + +cid:223 byr:1927 +hgt:177cm hcl:#602927 iyr:2016 pid:404183620 +ecl:amb +eyr:2020 + +byr:1998 +ecl:hzl +cid:178 hcl:#a97842 iyr:2014 hgt:166cm pid:594143498 eyr:2030 + +ecl:hzl +pid:795349208 iyr:2018 +eyr:2024 hcl:#de745c hgt:157cm + +hgt:159cm pid:364060467 eyr:2025 byr:1978 iyr:2018 cid:117 +ecl:hzl +hcl:#18171d + +hcl:#cfa07d +ecl:amb iyr:2012 +hgt:182cm cid:338 +eyr:2020 +pid:374679609 byr:1925 + +eyr:2021 byr:1981 +hcl:#623a2f cid:195 iyr:2010 +pid:579769934 ecl:grn hgt:192cm + +byr:1970 +ecl:oth +eyr:2025 +pid:409994798 iyr:2018 hgt:189cm + +hgt:153cm pid:817651329 iyr:2019 +eyr:2029 +hcl:#623a2f byr:1920 +ecl:gry + +iyr:2011 ecl:amb hcl:#a97842 byr:1965 pid:648375525 eyr:2028 hgt:177cm cid:287 + +iyr:2012 pid:369979235 hcl:#c0946f +ecl:amb hgt:178cm + +byr:1927 ecl:brn hgt:178cm eyr:2026 hcl:#efcc98 +iyr:2011 pid:770851101 + +eyr:2028 +ecl:oth cid:298 +byr:1943 +hgt:168cm iyr:2018 hcl:#ceb3a1 pid:116783406 + +eyr:2027 hgt:175cm hcl:#733820 +ecl:gry cid:349 iyr:2017 byr:1960 +pid:257797292 + +cid:66 ecl:amb +eyr:2030 +iyr:2026 byr:2024 +hcl:a22966 hgt:179cm pid:155cm + +eyr:2023 hcl:#c0946f pid:081232570 ecl:hzl +iyr:2010 hgt:158cm byr:1969 + +byr:1958 +ecl:grn hcl:#ceb3a1 +hgt:173cm +pid:600039004 +cid:107 iyr:2012 eyr:2027 + +ecl:amb pid:021066381 +hcl:#ceb3a1 byr:1982 iyr:2017 +hgt:167cm eyr:2025 cid:61 + +hcl:#341e13 +cid:268 +pid:358390884 hgt:188cm byr:1961 iyr:2014 eyr:2027 ecl:blu + +ecl:brn eyr:2020 +pid:607203641 +hcl:#fffffd iyr:2011 +byr:1962 +hgt:156cm + +iyr:2018 +hcl:#b6652a +byr:1942 ecl:blu eyr:2029 hgt:154cm pid:649263319 + +ecl:oth hgt:73in iyr:2012 hcl:#888785 eyr:2020 +pid:147939289 +byr:1961 + +ecl:oth iyr:2015 +hgt:189cm hcl:#341e13 pid:686943691 eyr:2023 byr:1987 + +pid:568844323 +eyr:2023 byr:1921 hgt:167cm cid:154 hcl:#b6652a +ecl:gry iyr:2020 + +eyr:2023 byr:1994 +iyr:1937 hgt:177cm hcl:#c0946f pid:686240814 cid:231 ecl:#a8ba32 + +hcl:#b6652a +byr:1946 pid:543383899 iyr:2013 hgt:153cm ecl:hzl cid:238 eyr:2023 + +eyr:2028 ecl:blu +hgt:154cm cid:252 +pid:196374590 +byr:1987 iyr:2011 +hcl:#7d3b0c + +iyr:2013 +ecl:amb cid:187 +hgt:187cm pid:593027548 byr:1963 +eyr:2024 hcl:#fffffd + +pid:588211492 hgt:156cm +iyr:2021 eyr:2021 ecl:gry hcl:z byr:1928 + +ecl:amb hcl:#888785 hgt:180cm eyr:2022 byr:1923 pid:490291639 cid:173 iyr:2015 + +iyr:2014 cid:211 pid:404157420 hcl:#602927 +ecl:oth byr:1946 eyr:2030 hgt:175cm + +hcl:z byr:2026 +pid:61805448 +hgt:125 iyr:2025 + +eyr:2028 +hgt:156cm +hcl:#341e13 cid:103 ecl:amb iyr:2017 byr:1937 pid:320691739 + +hgt:185cm +pid:440489464 byr:1929 ecl:amb iyr:2011 eyr:2021 cid:327 hcl:#341e13 + +byr:1988 ecl:grn +pid:062728732 iyr:2013 +hgt:181cm +hcl:#18171d +eyr:2026 + +pid:000647617 +eyr:2029 byr:1937 +ecl:gry hcl:#e8eff3 hgt:164cm cid:151 +iyr:2016 + +hgt:179cm +byr:1949 +eyr:2029 pid:459190453 +ecl:grn iyr:2020 hcl:#c0946f + +hgt:160cm pid:476613532 cid:190 iyr:2016 hcl:#4657e5 +byr:1929 +eyr:2028 + +ecl:grn +eyr:2027 byr:1982 +hcl:#18171d +pid:630408328 +cid:65 iyr:2020 +hgt:161cm + +pid:752776254 +hcl:#888785 +hgt:189cm +eyr:2027 iyr:2020 ecl:hzl +cid:194 byr:1934 + +iyr:2015 hgt:167cm byr:1977 +eyr:2021 hcl:#14564f pid:504471386 ecl:oth + +hgt:84 pid:168cm +hcl:8532fb eyr:2023 +iyr:2012 ecl:xry byr:2008 cid:288 + +cid:323 eyr:2024 +iyr:2019 +pid:495737304 byr:1966 hcl:#7d3b0c ecl:hzl +hgt:73in + +iyr:2020 byr:1953 ecl:hzl hcl:#efcc98 hgt:174cm eyr:2026 pid:546906638 + +pid:839249028 +hcl:z byr:2024 +hgt:145 eyr:2034 iyr:2021 ecl:#891c47 + +eyr:2036 +ecl:#89d2ae +cid:183 byr:2014 +hcl:b3af0f +pid:12086913 iyr:1981 +hgt:61cm + +ecl:brn eyr:2030 pid:083487445 byr:1929 hcl:z iyr:2021 +hgt:182 cid:318 + +eyr:2020 +pid:188609216 hcl:#341e13 +iyr:2012 hgt:179cm + +eyr:2029 +hcl:#888785 pid:704026565 hgt:173cm iyr:2020 ecl:blu byr:1950 cid:237 + +ecl:grn +eyr:2030 +byr:1961 pid:695808266 +iyr:2012 cid:56 +hgt:155cm + +iyr:2011 ecl:amb +byr:1986 pid:243061330 hgt:163cm eyr:2021 + +eyr:2030 hcl:#623a2f hgt:170cm ecl:hzl +pid:694575319 iyr:2011 +byr:1939 + +iyr:2014 pid:184152121 +hcl:#c0946f hgt:163cm +eyr:2028 byr:1992 cid:114 + +ecl:hzl +hgt:75in cid:233 +hcl:#866857 pid:269157261 iyr:2020 +byr:1973 eyr:2029 + +hgt:174cm +hcl:#f86751 iyr:2016 +pid:904779190 +ecl:brn eyr:2024 byr:1950 + +cid:123 iyr:2019 +eyr:2030 pid:402585706 +ecl:brn byr:1995 hcl:#4ff7fa +hgt:65in + +ecl:grn eyr:2029 +pid:083364259 iyr:2013 cid:50 byr:1938 hgt:187cm +hcl:#a97842 + +hcl:#6b5442 cid:101 iyr:2011 +ecl:amb eyr:2029 byr:1963 pid:664573740 + +eyr:2025 hcl:#602927 +hgt:188cm +iyr:2019 +pid:521514539 byr:1940 ecl:gry + +hcl:dc0449 eyr:1981 pid:188cm +cid:151 iyr:1979 hgt:61cm ecl:dne +byr:2028 + +iyr:2017 byr:1924 +hgt:163cm eyr:2024 hcl:#ceb3a1 pid:424127124 +ecl:amb + +eyr:2039 pid:7837217107 hcl:z byr:2005 +iyr:1989 ecl:#d95f4d hgt:190in + +ecl:#329eb1 cid:178 hgt:192 +eyr:2020 iyr:2012 +hcl:#602927 +byr:2028 pid:7175349420 + +ecl:gry byr:1931 +hgt:162cm iyr:2014 +eyr:2030 cid:50 +hcl:#cfa07d pid:653585396 + +eyr:2025 hgt:177cm +ecl:gry hcl:#efcc98 +iyr:2015 +byr:1942 +pid:388475446 + +hcl:#efcc98 ecl:grn +hgt:185cm +byr:1921 pid:253592171 +eyr:2031 cid:220 iyr:2024 + +byr:1950 +hgt:158cm ecl:gry iyr:2015 hcl:#18171d +eyr:2023 +pid:151cm + +byr:1957 +hcl:z +eyr:2026 +ecl:grn +iyr:1971 hgt:192in pid:5479810865 + +hgt:161cm pid:473851111 iyr:2018 +ecl:brn byr:1982 +eyr:2029 + +pid:136216608 byr:1958 +cid:226 eyr:2023 hcl:#866857 iyr:2017 ecl:hzl hgt:159cm + +byr:1993 hcl:#866857 hgt:169cm pid:488392920 +cid:109 iyr:2017 ecl:oth eyr:2029 + +cid:248 ecl:amb eyr:2025 iyr:2017 byr:1951 hcl:#ceb3a1 pid:731763175 hgt:162cm + +hcl:#835e79 +eyr:2021 +ecl:oth pid:617055193 byr:1997 iyr:2010 +hgt:173cm + +eyr:2024 pid:257895944 +hcl:#ceb3a1 +hgt:165cm +ecl:oth iyr:2020 +byr:1958 + +pid:438580092 +ecl:grt byr:2025 +hcl:z iyr:2000 eyr:1952 +cid:271 hgt:170in + +iyr:2010 hcl:#6b5442 hgt:156cm +eyr:2026 ecl:grn pid:409793041 byr:1941 + +pid:076486440 +hgt:177cm hcl:#888785 ecl:blu iyr:2017 eyr:2029 + +eyr:2028 ecl:amb hgt:186cm hcl:#1d5836 pid:563307670 iyr:2019 byr:1950 + +byr:1939 ecl:hzl hgt:193cm pid:329759796 +hcl:#cfa07d eyr:2025 iyr:2011 cid:73 + +byr:1995 +hgt:188cm eyr:2028 +ecl:blu +iyr:2016 hcl:#888785 pid:459613739 cid:115 + +hcl:#623a2f +eyr:2021 cid:197 hgt:187cm ecl:oth +byr:1969 +iyr:2010 pid:385660251 + +hgt:192cm cid:143 byr:1995 hcl:#fffffd +iyr:2017 ecl:oth +eyr:2020 pid:087661720 + +ecl:oth +byr:1994 hgt:183cm +eyr:2020 iyr:2020 pid:448389966 cid:92 hcl:#866857 + +pid:088166852 hgt:155cm cid:307 byr:1940 +hcl:#7d3b0c +ecl:#af542f eyr:2023 iyr:2014 + +byr:2026 eyr:2039 hcl:5449b3 +ecl:hzl hgt:176in +iyr:1962 pid:177cm + +iyr:2020 ecl:amb hgt:164cm hcl:#c0946f +pid:931543453 eyr:2024 byr:2001 + +iyr:2010 eyr:2023 hgt:188cm +hcl:#866857 ecl:hzl pid:866631112 byr:1997 + +byr:1958 hgt:184cm +cid:117 hcl:#7d3b0c iyr:2019 pid:615734013 eyr:2028 ecl:gry + +hgt:86 iyr:1935 ecl:grt pid:#af8e67 eyr:2031 +byr:2018 hcl:6a2940 + +hgt:73in eyr:2022 pid:580461358 byr:1962 +cid:129 iyr:2015 hcl:#7d3b0c + +iyr:2019 hcl:#b6652a hgt:172cm ecl:blu pid:077121198 eyr:2021 +byr:1995 + +hcl:#ceb3a1 cid:253 +iyr:2015 hgt:177cm byr:1973 +ecl:hzl pid:311289324 eyr:2025 + +iyr:2017 hcl:#efcc98 +cid:57 byr:1940 ecl:blu +eyr:2025 hgt:157cm pid:827480048 + +eyr:2028 hgt:189cm +iyr:2016 byr:1978 ecl:hzl pid:127497651 cid:87 +hcl:#623a2f + +hcl:#341e13 byr:2015 +ecl:brn hgt:187in +pid:82075551 +eyr:1936 +cid:200 +iyr:1939 + +ecl:grn byr:1962 +iyr:2011 hgt:169cm +pid:661559147 +hcl:#623a2f eyr:2023 + +ecl:gry +hcl:#efcc98 eyr:2009 byr:2028 +hgt:170in +cid:129 pid:161cm iyr:2018 + +pid:098090405 hcl:#623a2f byr:1943 ecl:hzl +hgt:152cm iyr:2013 eyr:2029 + +pid:495271053 iyr:2011 ecl:gry hcl:#623a2f cid:285 +byr:1925 eyr:2024 hgt:187cm + +cid:306 +hgt:73in +iyr:2010 hcl:#448fd7 +byr:1946 +ecl:grn pid:137146932 eyr:2021 + +eyr:2020 hgt:159cm cid:90 iyr:2010 ecl:brn hcl:#341e13 byr:1955 + +hcl:#18171d iyr:2017 ecl:amb +pid:168517472 +eyr:2021 hgt:181cm byr:1942 + +cid:325 eyr:2022 pid:947158470 byr:1994 iyr:2019 ecl:grn hgt:172cm hcl:#ec63ce + +iyr:2011 +pid:243339529 +ecl:amb +hgt:169cm +byr:1967 +eyr:2025 hcl:#b6652a + +pid:664966826 eyr:2036 iyr:2015 byr:1972 hgt:68in +hcl:z +ecl:#038105 + +eyr:2021 pid:236054221 +hgt:179cm +hcl:#b6652a iyr:2020 ecl:blu + +ecl:grn +iyr:2010 +pid:870519416 byr:1945 hcl:#a97842 +hgt:176cm eyr:2030 + +hcl:#3318db eyr:2022 +byr:1966 +ecl:grn iyr:2013 +cid:349 +hgt:168cm pid:827688488 + +pid:124116963 +hcl:#866857 eyr:2026 +iyr:2013 ecl:grn byr:1983 hgt:183cm + +iyr:2017 byr:1993 +hcl:#18171d ecl:utc hgt:68in cid:168 eyr:2030 pid:#2fd9f2 + +ecl:blu cid:134 eyr:2025 pid:588957573 +iyr:2017 +hgt:151cm byr:1942 hcl:#4280c1 + +hcl:#51b593 +iyr:2013 +ecl:amb pid:668244584 +cid:282 +byr:1936 +eyr:1985 hgt:161cm + +pid:494051052 +hgt:185cm byr:1996 eyr:2028 iyr:2018 +ecl:amb +hcl:#efcc98 + +ecl:brn +eyr:2025 +iyr:2011 +hgt:163cm hcl:#a97842 +byr:1989 pid:557549000 + +pid:828235468 cid:55 +iyr:2010 byr:1926 eyr:2029 hgt:153cm hcl:#cfa07d +ecl:blu + +hgt:158cm iyr:2015 pid:957913612 ecl:grn eyr:2020 byr:1984 cid:76 hcl:#6b5442 + +ecl:amb eyr:2020 pid:596116320 +byr:1936 +hcl:#cfa07d +hgt:165cm cid:86 iyr:2014 + +iyr:2012 +cid:278 hcl:#602927 +eyr:2020 ecl:hzl +hgt:176cm byr:1987 pid:594817909 + +iyr:2011 byr:1929 pid:073211525 eyr:2022 +hgt:188cm +ecl:blu +hcl:#733820 + +hcl:#602927 hgt:187cm +pid:706155322 cid:203 +ecl:brn byr:1952 iyr:2017 eyr:2020 + +hcl:bcb5f7 +byr:2002 eyr:2029 pid:850069752 iyr:2019 ecl:hzl +hgt:167cm + +hcl:#b6652a hgt:72in iyr:2013 +ecl:grn eyr:2024 byr:1920 cid:114 +pid:983486664 + +byr:1931 iyr:2020 pid:182737852 hgt:162cm +ecl:grn hcl:#888785 eyr:2028 + +eyr:2035 +byr:1962 iyr:2012 cid:120 +ecl:xry +hgt:61cm hcl:ce89a8 pid:335540582 + +pid:#05153d iyr:1990 +eyr:1927 hgt:71cm +byr:2019 cid:346 ecl:#e38688 +hcl:c6abd9 + +ecl:#cd58d8 pid:166cm iyr:2012 +hcl:0d1b02 hgt:68 +eyr:1958 + +pid:976419172 byr:1922 cid:345 hcl:#6b5442 iyr:2010 eyr:2026 +ecl:grn hgt:155cm + +ecl:gry hcl:#1bbadc hgt:168cm +eyr:2028 +byr:1984 cid:179 iyr:2013 pid:706186218 + +ecl:blu hgt:188cm +pid:764775319 byr:1936 hcl:#7d3b0c iyr:2020 + +hcl:#623a2f +iyr:2012 +pid:382832140 ecl:gry +eyr:2026 +cid:350 +hgt:165cm byr:1968 + +hcl:0b87a1 byr:2020 pid:4365879329 +cid:110 ecl:grn +eyr:2032 hgt:155cm +iyr:2018 + +hgt:193cm eyr:2029 hcl:#733820 pid:081071142 byr:1929 ecl:oth + +ecl:brn +eyr:2023 pid:876924536 cid:165 +hcl:#efcc98 hgt:151cm byr:1972 +iyr:2020 + +hgt:186cm eyr:2022 +ecl:grn +byr:1972 pid:997639611 hcl:#ceb3a1 iyr:2013 + +byr:1926 +pid:808460262 +iyr:2012 eyr:2031 hcl:#a97842 ecl:amb +hgt:190cm + +hgt:163cm +hcl:#ceb3a1 eyr:2028 +ecl:grn +byr:1944 pid:381144425 iyr:2012 + +hcl:#95a232 pid:015229624 byr:1947 iyr:2013 hgt:66cm ecl:gry eyr:2027 + +hcl:z byr:1965 iyr:2013 hgt:157cm ecl:#8b12fb cid:246 pid:283039791 eyr:2023 + +ecl:gry byr:1950 +hcl:#623a2f cid:276 iyr:2013 eyr:2030 pid:798610943 hgt:189in + +eyr:2030 cid:52 hcl:#fffffd pid:041625574 ecl:amb iyr:2016 byr:1944 +hgt:191cm + +byr:1995 +iyr:2015 cid:221 pid:279080024 +eyr:2022 +hgt:181cm ecl:brn hcl:#888785 + +hcl:z +ecl:blu +iyr:1970 +eyr:2022 +hgt:193cm pid:#540e31 cid:95 byr:1952 + +hcl:z eyr:2024 ecl:hzl +byr:2028 +cid:323 pid:1949331457 +hgt:69 + +eyr:2030 hcl:#866857 +cid:173 iyr:2017 +hgt:190cm byr:1941 +ecl:blu +pid:269015932 + +hcl:#b6652a +iyr:2018 +eyr:2022 ecl:brn hgt:185cm pid:456195468 + +hcl:#6b5442 hgt:188cm +iyr:2019 byr:1966 cid:298 +pid:050653473 +ecl:gry eyr:2028 + +cid:208 +ecl:amb eyr:2023 hgt:176cm byr:1971 hcl:#7d3b0c pid:650190272 iyr:2018 + +hgt:68in pid:615309584 +iyr:2011 byr:1950 +hcl:#efcc98 ecl:oth +eyr:2024 + +eyr:2022 iyr:2011 hcl:#623a2f ecl:amb byr:1955 +hgt:190cm +pid:244918527 + +iyr:2013 hcl:#ceb3a1 eyr:2029 hgt:164cm +ecl:oth +byr:1928 pid:337615663 + +hcl:#ceb3a1 pid:#ae7eea byr:2027 +cid:254 +hgt:125 +iyr:1940 +ecl:zzz + +pid:033663619 iyr:2012 byr:1989 eyr:2030 ecl:hzl +hcl:#b6652a hgt:154cm + +hgt:175cm byr:1929 pid:100788192 +ecl:#92b14c +iyr:1940 hcl:#ceb3a1 eyr:2033 + +eyr:2029 +pid:357835141 ecl:oth iyr:2019 hcl:#866857 hgt:154cm byr:1954 + +pid:895992818 byr:1965 iyr:2017 hcl:#efcc98 ecl:amb hgt:153cm eyr:2025 + +byr:1928 ecl:amb hgt:168cm pid:346938111 eyr:2025 iyr:2014 +hcl:#cfa07d + +hcl:#b6652a pid:825661608 eyr:2020 iyr:2019 byr:1974 +hgt:180cm ecl:amb + +byr:1970 hgt:159cm hcl:#733820 pid:101838832 iyr:2015 eyr:2027 ecl:blu + +byr:1941 ecl:amb +eyr:2024 pid:015890498 +hgt:175cm +iyr:2018 hcl:#cfa07d + +hgt:67in +pid:404983369 eyr:2023 iyr:2018 byr:1974 hcl:#602927 +ecl:blu + +byr:1957 +hcl:#fcc940 pid:615831236 +iyr:2018 eyr:2020 ecl:brn hgt:181cm cid:218 + +hcl:#fffffd ecl:grn pid:271614109 +eyr:2028 hgt:184cm byr:1974 iyr:2015 + +ecl:#e45ee0 pid:151cm cid:127 iyr:2014 byr:2022 hcl:973bc1 eyr:2033 hgt:181in + +hcl:#6b5442 pid:502739402 eyr:2020 byr:1926 ecl:brn +iyr:2010 + +ecl:xry hgt:169cm byr:2023 +iyr:1973 pid:4137668 +eyr:2037 hcl:z + +ecl:#3a8c46 hcl:43730a pid:57210146 eyr:2031 cid:117 iyr:2013 byr:2010 + +hcl:#341e13 cid:237 hgt:150cm iyr:2016 byr:1967 ecl:blu +pid:674080319 eyr:2024 + +iyr:2011 hcl:#866857 pid:111247018 +byr:1920 hgt:192in ecl:#8bf268 eyr:2021 + +iyr:2022 hcl:z ecl:gry +hgt:159cm +pid:#88e8df +byr:2026 eyr:2032 cid:221 + +hgt:156cm eyr:2026 +ecl:blu +hcl:#192dea cid:280 pid:788808021 byr:1980 +iyr:2013 + +hgt:156in +byr:2024 hcl:4e4dd6 +eyr:2030 +iyr:2028 pid:35683378 +ecl:#3a9fba + +pid:081236370 cid:150 hcl:d15b43 byr:2029 hgt:118 iyr:2026 eyr:2038 +ecl:grt + +eyr:2034 pid:186cm +ecl:utc cid:300 iyr:2009 byr:2018 hcl:163913 hgt:74cm + +ecl:hzl +pid:249858519 byr:1936 hgt:182cm +cid:343 iyr:2013 eyr:2030 hcl:#7d3b0c + +cid:168 +ecl:hzl +hgt:174cm iyr:2020 +pid:446135799 hcl:#888785 +eyr:2024 byr:1998 + +pid:545342162 +hcl:#5cd3bd cid:126 +eyr:2024 +iyr:2012 ecl:grn + +pid:104835585 +byr:1989 hcl:#733820 ecl:oth eyr:2024 iyr:2017 +hgt:180cm + +hgt:184cm byr:2001 pid:199216567 ecl:gry +eyr:2022 +cid:185 hcl:#7d3b0c +iyr:2019 + +byr:1996 eyr:2022 pid:503963080 ecl:grn iyr:2010 hcl:#fffffd + +eyr:2030 iyr:2017 +pid:472300557 hcl:#a97842 +ecl:grn hgt:190cm +byr:1994 + +ecl:#2a8a59 +eyr:2027 +iyr:2015 byr:2021 hgt:158cm pid:365979521 hcl:z cid:242 + +ecl:gry +iyr:2020 hcl:#866857 +pid:363851353 cid:319 hgt:154cm eyr:2027 +byr:1953 + +ecl:grn hgt:165cm eyr:2026 +pid:443722683 hcl:#341e13 +iyr:2018 byr:1923 + +byr:1920 ecl:blu +cid:193 hgt:153cm hcl:#341e13 iyr:2010 pid:934896568 +eyr:2021 + +eyr:2025 +pid:524699651 cid:92 +hcl:#602927 byr:1999 +iyr:2011 ecl:brn hgt:164cm + +eyr:2030 pid:739947771 iyr:2018 +byr:1990 +hgt:185cm hcl:#602927 ecl:gry + +byr:1967 ecl:amb iyr:2020 hcl:#341e13 +hgt:165cm +pid:681478012 eyr:2028 + +pid:807715479 ecl:blu byr:1955 eyr:1972 iyr:2018 hcl:#a97842 hgt:151 + +pid:635008585 cid:97 +hgt:186cm hcl:#b6652a iyr:2015 eyr:2020 ecl:gry byr:1959 + +iyr:2017 +cid:155 byr:1999 pid:550276277 +hcl:#18171d +eyr:2020 hgt:164cm ecl:amb + +byr:1977 hcl:#6b5442 ecl:grn iyr:2012 hgt:156cm +eyr:2028 pid:125635376 + +hgt:65in pid:042700658 byr:1962 iyr:2020 +hcl:#888785 eyr:2021 ecl:gry + +ecl:blu iyr:2017 hcl:#efcc98 pid:447451869 hgt:176cm +byr:1958 +eyr:2024 + +ecl:amb hgt:155cm eyr:2022 hcl:#efcc98 +pid:614496034 byr:1957 +iyr:2016 + +cid:99 +eyr:2020 +ecl:amb iyr:2017 +hgt:163cm pid:128207503 byr:1977 +hcl:#866857 + +ecl:amb cid:342 eyr:2026 hgt:172cm pid:317675262 +byr:1942 hcl:#a97842 iyr:2010 + +ecl:grn pid:077163993 +hgt:187cm hcl:#341e13 iyr:2012 byr:1934 eyr:2024 + +pid:423538706 hgt:156cm +ecl:oth hcl:#341e13 iyr:2016 eyr:2028 + +iyr:2030 ecl:#faff64 +byr:2012 +pid:734434105 hgt:164in hcl:z eyr:2023 + +hgt:150in iyr:2016 pid:173cm hcl:db675a cid:219 eyr:2032 byr:1958 +ecl:xry + +pid:087437383 +eyr:2025 hgt:178cm ecl:gry byr:1954 +cid:227 hcl:#fffffd +iyr:2018 + +pid:152cm +iyr:2030 eyr:2030 +byr:2010 hcl:z +hgt:155cm +ecl:amb + +byr:1934 +hcl:#341e13 hgt:167cm +pid:#7356dd ecl:amb +iyr:2011 +eyr:2030 +cid:123 + +eyr:2027 +byr:2005 +hgt:173cm cid:174 hcl:#ceb3a1 iyr:2018 ecl:amb pid:179cm + +iyr:2019 ecl:grn eyr:2023 +hgt:162cm +pid:649681621 hcl:#4ee6d2 byr:1955 + +hgt:165cm byr:1929 ecl:blu pid:839016251 iyr:2017 hcl:#c0946f +eyr:2020 + +eyr:2020 +iyr:2017 hcl:#c7ed42 ecl:blu byr:1928 +hgt:74in pid:112604496 + +eyr:2026 hgt:184 cid:113 +byr:1933 +pid:952646285 +iyr:2019 hcl:#fffffd ecl:gry + +pid:455008820 byr:1982 eyr:2030 ecl:gry iyr:2020 cid:103 hcl:#733820 hgt:184cm + +hcl:#733820 iyr:2020 hgt:182cm ecl:grn +cid:226 pid:081011361 eyr:2022 byr:1995 + +iyr:1999 +hcl:#18171d pid:9252198900 +ecl:amb byr:1999 hgt:175cm eyr:2021 + +iyr:2020 hgt:165cm +ecl:blu +eyr:2023 pid:760213482 +byr:1968 +hcl:#c0946f + +pid:242381670 ecl:amb +hgt:172cm byr:1980 eyr:2020 iyr:2014 hcl:#866857 + +byr:2021 pid:#a94a22 hcl:#cfa07d iyr:1969 eyr:2030 ecl:zzz +hgt:76cm + +ecl:oth cid:168 +byr:1954 pid:079481919 eyr:2025 hcl:#c0946f hgt:172cm + +hgt:171cm +eyr:2030 +byr:1969 cid:170 +pid:164128658 ecl:amb +hcl:#c2265e iyr:2019 + +byr:1983 +cid:163 +eyr:2020 pid:232659795 iyr:2013 hcl:#888785 hgt:162cm +ecl:blu + +ecl:gry hcl:#7d3b0c +pid:001171231 eyr:2020 +byr:1935 hgt:160cm +iyr:2011 + +iyr:2012 hcl:#a97842 +eyr:2029 pid:809880438 hgt:164cm cid:83 byr:1961 ecl:hzl + +cid:288 eyr:2027 +hgt:181cm byr:1955 +iyr:2020 +ecl:oth pid:754135833 hcl:#c0946f + +iyr:2012 pid:053980893 +cid:54 byr:1961 ecl:gry hcl:#602927 eyr:2020 hgt:167cm + +iyr:2013 +eyr:2025 +hgt:176cm pid:169006156 cid:270 ecl:oth byr:2001 + +cid:244 pid:914067457 +iyr:2017 byr:1926 hcl:#733820 ecl:brn hgt:187cm +eyr:2030 + +ecl:oth byr:1942 +hgt:176cm iyr:2020 eyr:2027 +hcl:#efcc98 +pid:688816242 + +hgt:177cm hcl:#efcc98 eyr:2030 pid:888703414 +iyr:2010 byr:1973 ecl:gry + +cid:257 eyr:2030 +ecl:brn +pid:359774824 +byr:1988 hcl:#6b5442 iyr:2013 hgt:187cm + +iyr:2011 hgt:173cm cid:290 byr:2000 ecl:gry +hcl:#7d3b0c +pid:743371399 eyr:2029 + +cid:162 +eyr:1920 byr:2010 pid:#69d6ba hgt:74 hcl:z ecl:#d256f3 iyr:1933 + +pid:435518624 byr:1938 eyr:2027 iyr:2016 hcl:#18171d +hgt:161cm +ecl:gry + +ecl:gry eyr:2027 hcl:#7d3b0c hgt:170cm +pid:928345976 iyr:2020 + +hcl:#5f4023 ecl:blu +pid:024527693 +eyr:1932 iyr:2023 hgt:154cm byr:1948 + +cid:284 iyr:2011 byr:1920 eyr:2024 ecl:blu hgt:153cm +hcl:#602927 pid:005741906 + +iyr:2029 hgt:108 byr:2029 hcl:c8b25d +pid:522512400 eyr:2038 ecl:zzz cid:163 + +pid:371295649 +eyr:2022 ecl:hzl +iyr:2019 hgt:153cm byr:1961 +hcl:z + +eyr:2027 iyr:2020 pid:619653661 byr:1968 hcl:#b6652a cid:62 ecl:hzl +hgt:186cm + +iyr:1931 +pid:565552342 ecl:#af97bb hcl:c92cd6 eyr:1931 byr:2025 hgt:184in + +hgt:187cm +ecl:grn +byr:1954 cid:145 +iyr:2016 +hcl:#efcc98 eyr:2030 pid:202254357 + +cid:177 +iyr:2013 byr:1926 hcl:#efcc98 +pid:298693475 hgt:181cm eyr:2023 ecl:dne + +byr:2014 +cid:255 +iyr:1951 hgt:72in +hcl:#efcc98 eyr:2039 pid:135688013 +ecl:grn + +byr:2019 eyr:1971 pid:#a95cb4 +hcl:#ceb3a1 ecl:#6f919c +hgt:193cm iyr:2012 + +pid:497726268 +ecl:grn +eyr:2025 hcl:#efcc98 iyr:2019 hgt:170cm byr:1970 + +byr:1939 hcl:#18171d cid:250 +iyr:2011 ecl:blu pid:216607711 +hgt:158cm eyr:2029 + +byr:1937 +eyr:1931 +hcl:#5ee898 +pid:#876b1a hgt:190cm +cid:277 ecl:#5f0f80 iyr:2013 + +ecl:oth hgt:191cm eyr:2025 byr:1978 pid:271136754 hcl:#888785 +iyr:2012 + +hcl:#6b5442 +iyr:2015 byr:1958 pid:510020331 hgt:158cm eyr:2024 ecl:blu + +byr:1998 cid:142 eyr:2026 iyr:2015 hcl:#733820 +pid:671943334 hgt:186cm ecl:oth + +eyr:2025 ecl:brn hcl:#7d3b0c pid:000803215 +byr:1947 +iyr:2017 hgt:168cm cid:230 + +pid:612432109 hgt:186cm byr:1963 ecl:hzl iyr:2019 eyr:2027 +hcl:#efcc98 +cid:148 + +hcl:#c0946f pid:846986027 eyr:2025 byr:1941 +cid:154 hgt:158cm iyr:2012 +ecl:brn + +ecl:gry hgt:186cm +iyr:2015 hcl:#602927 byr:1923 eyr:2023 +pid:48544569 + +pid:857428120 hgt:158cm hcl:#e4a267 iyr:2014 eyr:2020 byr:1975 ecl:blu + +ecl:blu pid:559783197 byr:1935 cid:119 iyr:2017 hgt:157cm hcl:#6b5442 eyr:2020 + +ecl:oth pid:724332293 hcl:#602927 +cid:77 iyr:2019 +byr:2001 hgt:192cm eyr:2024 + +ecl:hzl eyr:2031 +hcl:#efcc98 byr:2011 cid:280 iyr:2017 +pid:377875085 +hgt:172cm + +byr:1947 hgt:174cm ecl:amb iyr:2018 cid:94 hcl:#a97842 eyr:2026 pid:286225332 + +hgt:85 ecl:xry eyr:2033 iyr:1952 pid:92902290 +hcl:a6f86d +byr:2013 + +byr:1935 hcl:#c0946f pid:368741489 ecl:blu +eyr:2020 hgt:164cm +iyr:2018 +cid:196 + +pid:718568707 +ecl:oth byr:2003 hcl:#a97842 iyr:2010 hgt:168cm eyr:2025 cid:261 + +hcl:#6b5442 +pid:675429853 +hgt:62in ecl:grn iyr:2016 +eyr:2027 byr:1932 + +byr:1978 +pid:080846464 hcl:#ceb3a1 ecl:gry iyr:2015 hgt:190cm eyr:2029 + +pid:1756319674 +iyr:2010 byr:1998 hcl:#866857 cid:259 +eyr:2025 hgt:73in ecl:hzl + +eyr:2035 +hcl:z hgt:61cm +pid:3267812127 +cid:230 +byr:2029 iyr:2028 ecl:lzr + +hgt:161cm ecl:hzl byr:1934 iyr:2011 eyr:2025 hcl:#cfa07d pid:354474868 + +pid:727482965 +hcl:#623a2f iyr:2010 hgt:156cm eyr:2020 cid:68 ecl:grn byr:1950 + +pid:040800697 hgt:186cm +hcl:#341e13 iyr:2030 ecl:hzl +byr:1937 eyr:2020 + +iyr:2013 byr:1928 pid:752644096 eyr:2030 hgt:191cm ecl:hzl +cid:93 hcl:#a97842 + +pid:022267155 hcl:#cfa07d eyr:2026 +ecl:hzl +hgt:187cm iyr:2014 cid:347 + +hgt:73in +eyr:2021 pid:054367702 ecl:amb hcl:#18171d byr:1965 +iyr:2020 cid:267 + +eyr:2022 +cid:140 pid:189859171 byr:1984 iyr:2020 ecl:brn hgt:166cm hcl:#623a2f + +byr:1971 iyr:2015 +hgt:168cm +eyr:2020 pid:650970816 hcl:#341e13 +ecl:grn +cid:168 + +hcl:#c0946f byr:1948 hgt:189cm +pid:868785851 +cid:194 ecl:amb eyr:2024 iyr:2011 + +eyr:2040 +byr:2030 hcl:afde59 +hgt:172cm pid:72468598 iyr:1990 cid:165 ecl:#896a8e + +iyr:2009 hcl:#6b5442 +eyr:2028 +cid:53 ecl:hzl +hgt:165cm byr:1999 pid:844037301 + +cid:281 eyr:2022 +iyr:2020 byr:1976 hgt:176cm hcl:#6b5442 ecl:amb pid:755280305 + +hgt:154cm iyr:2013 +pid:059284139 byr:1992 +cid:215 ecl:blu eyr:2025 hcl:#b6652a + +ecl:grn +cid:308 +hgt:187cm pid:009080324 eyr:2027 +iyr:2012 byr:1955 + +pid:083241291 hcl:#7c1810 eyr:2030 iyr:2019 byr:1950 ecl:brn hgt:72in + +cid:148 byr:1953 hcl:#623a2f +pid:076848285 hgt:175cm iyr:2017 +eyr:2022 +ecl:oth + +iyr:2020 +hgt:160cm +eyr:2028 cid:312 ecl:brn hcl:#888785 pid:681067688 byr:1986 + +iyr:1972 cid:170 eyr:2023 +pid:21811501 ecl:#17c6e8 +hgt:158in byr:2015 hcl:5b7956 + +pid:720571739 cid:304 byr:1951 hgt:191cm +eyr:2025 hcl:#341e13 +iyr:2011 + +eyr:2020 ecl:blu hcl:#cfa07d pid:097863725 +hgt:150cm +byr:1951 +cid:143 iyr:2013 + +eyr:2027 iyr:2019 ecl:#a0eeca hcl:#c0946f pid:724783488 byr:1943 cid:282 hgt:124 + +byr:2012 +iyr:2013 eyr:2036 hcl:z hgt:97 +pid:#677847 ecl:dne + +pid:341708492 hgt:190cm +byr:1988 hcl:#888785 +ecl:hzl +iyr:2015 eyr:2029 + +iyr:2020 byr:1968 +ecl:gry +eyr:2030 hcl:#1976b0 +cid:127 pid:701862616 +hgt:161cm diff --git a/jour4/main.c b/jour4/main.c new file mode 100644 index 0000000..8348583 --- /dev/null +++ b/jour4/main.c @@ -0,0 +1,139 @@ +#include +#include +#include + +#include "utils.h" + +#define FILENAME "input" + +void premPartie(FILE *ptr); +void deuxPartie(FILE *ptr); + +int main() +{ + FILE *ptr = fopen(FILENAME, "r"); + if (ptr == NULL) + return 1; + + //premPartie(ptr); + deuxPartie(ptr); + + fclose(ptr); + return 0; +} + +void deuxPartie(FILE *ptr) +{ + int find = 0, tmp; + int nbData = 0; // est incrémenté si arg bon + char checkLigne[2]; // vérifie 2 lignes plus loin pour détecter ligne vide + char value[10]; + char key[3]; + char *tmpChar = NULL; + fscanf(ptr, "%s:%s", key, value); + + while (!feof(ptr)) + { + if (!strncmp(key, "byr", 3)) + { + tmp = sub_digit(value); + if (tmp >= 1920 && tmp <= 2002) + nbData++; + } + else if (!strncmp(key, "iyr", 3)) + { + tmp = sub_digit(value); + if (tmp >= 2010 && tmp <= 2020) + nbData++; + } + else if (!strncmp(key, "eyr", 3)) + { + tmp = sub_digit(value); + if (tmp >= 2020 && tmp <= 2030) + nbData++; + } + else if (!strncmp(key, "hgt", 3)) + { + int checkH = sub_digit(value); + + if (strstr(value, "cm") != NULL && checkH >= 150 && checkH <= 193) + nbData++; + else if (strstr(value, "in") != NULL && checkH >= 59 && checkH <= 76) + nbData++; + } + else if (!strncmp(key, "ecl", 3)) + { + if (check_ecl(value)) + nbData++; + } + else if (!strncmp(key, "pid", 3)) + { + tmpChar = strpbrk(value, "0123456789"); + if (strspn(tmpChar, "0123456789") == 9) + nbData++; + } + else if (!strncmp(key, "hcl", 3)) + { + //comme le 1er char est :, on doit tout décaler de 1 + if (value[1] == '#' && strlen(value) == 8) + { + int i = 2; + while (isalnum(value[i]) && value[i] != '\0') + i++; + + if (i == strlen(value)) + nbData++; + } + } + + checkLigne[0] = getc(ptr); + checkLigne[1] = getc(ptr); + if (checkLigne[0] == '\n' && (checkLigne[1] == '\n' || checkLigne[1] == EOF)) + { + if (nbData == 7) + find++; + nbData = 0; + } + + // reviens un caractère en arrière pour éviter de perdre des infos + // quand on check la présence d’une ligne vide + fseek(ptr, -1, SEEK_CUR); + fscanf(ptr, "%s:%s", key, value); + } + + printf("%d bons passeports trouvés.\n", find); +} + +void premPartie(FILE *ptr) +{ + int find = 0; + int nbData = 0, cid = 0; + char checkLigne[2]; // vérifie 2 lignes plus loin pour détecter ligne vide + char word[256]; + fscanf(ptr, "%s", word); + + while (!feof(ptr)) + { + nbData++; + + if (!strncmp(word, "cid", 3)) + cid = 1; + + checkLigne[0] = getc(ptr); + checkLigne[1] = getc(ptr); + if (checkLigne[0] == '\n' && (checkLigne[1] == '\n' || checkLigne[1] == EOF)) + { + if ((nbData == 7 && !cid) || nbData == 8) + find++; + nbData = 0; + cid = 0; + } + + // reviens un caractère en arrière pour éviter de perdre des infos + // quand on check la présence d’une ligne vide + fseek(ptr, -1, SEEK_CUR); + fscanf(ptr, "%s", word); + } + + printf("%d bons passeports trouvés.\n", find); +} diff --git a/jour4/utils.c b/jour4/utils.c new file mode 100644 index 0000000..7fc56eb --- /dev/null +++ b/jour4/utils.c @@ -0,0 +1,30 @@ +#include +#include + +#include "utils.h" + +int sub_digit(char *str) +{ + int ret = 0; + char *beginning = strpbrk(str, "0123456789"); + int len = strspn(beginning, "0123456789"); + + char *tmp = (char *) malloc(sizeof(char) * len); + strncpy(tmp, beginning, len); + ret = atoi(tmp); + free(tmp); + + return ret; +} + +int check_ecl(char *str) +{ + str = str + 1; + + if (!strcmp(str, "amb") || !strcmp(str, "blu") || !strcmp(str, "brn") + || !strcmp(str, "gry") || !strcmp(str, "grn") || !strcmp(str, "hzl") + || !strcmp(str, "oth")) + return 1; + + return 0; +} diff --git a/jour4/utils.h b/jour4/utils.h new file mode 100644 index 0000000..183efc4 --- /dev/null +++ b/jour4/utils.h @@ -0,0 +1,2 @@ +int sub_digit(char *str); +int check_ecl(char *str);