From 462062498fe0c6ccb6ac41d993a16b487c56d4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Wed, 1 Dec 2021 15:57:08 -0300 Subject: [PATCH] Add 2020 advent. I only completed up to day 5. --- 2020/day1/data | 200 +++++++ 2020/day1/day1.c | 51 ++ 2020/day2/data | 1000 +++++++++++++++++++++++++++++++++++ 2020/day2/day2.py | 37 ++ 2020/day3/data | 323 ++++++++++++ 2020/day3/day3.go | 75 +++ 2020/day4/data | 1129 ++++++++++++++++++++++++++++++++++++++++ 2020/day4/day4.bash | 119 +++++ 2020/day4/example-data | 13 + 2020/day4/invalid | 13 + 2020/day4/valid | 12 + 2020/day5/data | 816 +++++++++++++++++++++++++++++ 2020/day5/day5.lua | 60 +++ 13 files changed, 3848 insertions(+) create mode 100644 2020/day1/data create mode 100644 2020/day1/day1.c create mode 100644 2020/day2/data create mode 100755 2020/day2/day2.py create mode 100644 2020/day3/data create mode 100644 2020/day3/day3.go create mode 100644 2020/day4/data create mode 100755 2020/day4/day4.bash create mode 100644 2020/day4/example-data create mode 100644 2020/day4/invalid create mode 100644 2020/day4/valid create mode 100644 2020/day5/data create mode 100644 2020/day5/day5.lua diff --git a/2020/day1/data b/2020/day1/data new file mode 100644 index 0000000..277bb69 --- /dev/null +++ b/2020/day1/data @@ -0,0 +1,200 @@ +1593 +1575 +1583 +1609 +1835 +2008 +1638 +1396 +1833 +1524 +1778 +1574 +1653 +1962 +1831 +1557 +1847 +1587 +1876 +1914 +1565 +1585 +1713 +35 +1862 +1885 +1735 +1497 +1989 +1871 +1923 +1917 +1719 +1797 +1222 +1493 +1939 +1139 +1260 +1622 +1625 +1683 +1742 +1996 +1579 +1703 +1692 +1920 +1536 +1965 +1936 +1947 +1800 +1556 +1633 +1530 +1612 +1764 +1810 +1845 +1750 +1854 +1973 +1512 +1856 +1568 +1634 +1630 +1602 +1555 +1681 +1844 +1544 +1909 +1690 +1851 +1785 +863 +1866 +1988 +1715 +1881 +1570 +1380 +1956 +777 +1693 +1717 +1724 +1975 +790 +1484 +1822 +1922 +1963 +1741 +1809 +1896 +1837 +1980 +1244 +1832 +1834 +1643 +1775 +1818 +1503 +1802 +1957 +1174 +1826 +1649 +1941 +1571 +1930 +1629 +1502 +2002 +1700 +1880 +1723 +1803 +2007 +1543 +1872 +1993 +1740 +1919 +1688 +1067 +1680 +1580 +1558 +1772 +1694 +1480 +1257 +1796 +2001 +537 +1701 +1613 +1784 +1559 +1482 +1968 +1604 +983 +1842 +1817 +1850 +1788 +1982 +1535 +1615 +453 +1895 +1443 +1308 +1533 +1714 +1765 +1037 +1992 +1843 +1883 +1981 +1525 +1038 +1540 +1766 +1886 +1546 +1716 +810 +1899 +1708 +1508 +1870 +1051 +1867 +1840 +1617 +1726 +1566 +1616 +1948 +1771 +1627 +1994 +1486 +1913 +1600 +1983 +1501 +2003 +1667 +1620 +1943 +1674 diff --git a/2020/day1/day1.c b/2020/day1/day1.c new file mode 100644 index 0000000..6a4499b --- /dev/null +++ b/2020/day1/day1.c @@ -0,0 +1,51 @@ +#include +#include + +int main() { + FILE *f = fopen("data", "r"); + if (!f) { + return 1; + } + int lines = 0; + for (;;) { + char *line = NULL; + size_t n = 0; + ssize_t e = getline(&line, &n, f); + free(line); + if (e > 0) { + lines++; + } else { + break; + } + } + + printf("lines: %d\n", lines); + int *v = calloc(sizeof *v, lines); + + fseek(f, 0, 0); + for (int i = 0; i < lines; i++) { + char *line = NULL; + size_t n = 0; + getline(&line, &n, f); + v[i] = atoi(line); + free(line); + + for (int j = 0; j < i; j++) { + int sum2 = v[i] + v[j]; + if (sum2 == 2020) { + printf("found match: %d and %d\n", v[i], v[j]); + printf("product: %d\n", v[i] * v[j]); + } else if (sum2 < 2020) { + for (int k = 0; k < j; k++) { + if (v[i] + v[j] + v[k] == 2020) { + printf("found match: %d and %d and %d\n", v[i], v[j], v[k]); + printf("product: %d\n", v[i] * v[j] * v[k]); + } + } + } + } + } + + fclose(f); + free(v); +} diff --git a/2020/day2/data b/2020/day2/data new file mode 100644 index 0000000..da2de15 --- /dev/null +++ b/2020/day2/data @@ -0,0 +1,1000 @@ +9-10 b: bbktbbbxhfbpb +2-10 x: xxnxxxwxxsx +5-7 w: ghwwdrr +4-6 z: nzzjzk +7-8 s: szsssswfs +12-13 r: rrrrrrrrwrrfh +9-11 k: vclfkkfcdbwwk +10-13 v: wcnzkqgvvgxldxl +4-10 m: mmmmqmcmlmvmm +9-10 n: nnnnxnnnnr +5-19 r: drwrmrvprrrdrrrrrkv +7-10 s: sppscfwscfsszbsf +2-6 z: zrzshvzlzkxzp +9-15 f: ffffxffrffwfffffff +4-6 q: qsqqqqgqqg +1-4 d: mddd +3-5 g: qhgsgpjdphghhjwqx +1-9 b: jqmxlrdbbbfnwtlqjbbf +2-4 q: qqqq +5-8 s: ssssswsss +5-9 n: njnnksntk +1-11 t: wtttttttttrtttttttt +1-5 r: rrwgrrck +4-10 l: jlgxxlgllql +4-16 g: hgzjhgggcgnwddkq +2-5 s: smssk +5-9 r: rqnbnrrnnrwhdrr +6-12 x: xxxrxqxxxqxxkxs +3-4 j: jjtrjj +2-4 z: cnzzt +2-8 c: ccbcbcbncxxgcngrck +12-15 v: vdvvlvvzvvvgvvv +2-3 q: pqqtbwkr +2-6 t: ttctdtdtts +5-9 c: cccclcccpcccvc +1-4 b: dbjbk +4-15 q: zgppzlxqvrdvnkkgnr +10-12 q: qpqsqqqhqslqqnnqjqqg +13-14 k: kksmtsrkrwxkkk +12-16 z: zgzvzzzzzzzzzzzz +1-2 c: cczfkcmsdnghcnmhvx +5-10 b: bbbbbjbzzbbbb +1-4 l: mllt +7-8 k: kkkkdkkkkk +1-6 k: ctprksgrdgkg +9-11 s: ssssssstsss +5-6 h: hhhhpq +6-7 r: rrrrrrkrr +2-5 x: xxqrxwrchhd +15-16 r: rrrrbrrrrrdrrrrrr +2-3 c: ccrccz +4-6 j: jbkjnjddjhjhjqbxpzf +9-10 q: zqqkqvqskqqzzqcjqq +9-16 w: wwgwwwwwhwwwwwws +11-13 b: bbbbvbbbbblbrdb +2-5 p: pppbbp +8-11 x: xxxxrxkvmxlxwp +11-15 k: kkkkkkkkkkkxkbkjk +10-11 m: smmmmmmmmmnm +3-4 s: hsssv +3-6 s: gsxznsssbbtsl +3-5 n: nngnp +16-17 t: mntvzrcdttplrfzkv +9-12 g: fgggmgggfggm +1-15 l: lclwqxcczgnktqltm +14-18 f: tfkfrbbznftcfftbmfxf +3-5 q: qqbqc +10-11 m: mmmmmmmmmmxmmm +7-9 f: ffjfffnjnff +13-20 x: sjxdxqcxxxxqxkxxxxxq +14-17 s: ssssssgsssszspssb +5-13 m: kmmctmsmmmglzxm +4-7 s: qhrhsdbsmmlstznms +13-15 j: jjjjljjjjjjjqjj +5-16 n: ncnnnsvlpndnkvvrcf +14-18 n: nnnnnnnnnnnnnknnnb +5-6 v: jvvvvvvvppvt +1-16 f: fffzkffffknfrfqqf +6-8 x: xnxxkwknxlxxbbx +8-9 l: lllllllft +6-10 b: nrbmbbrhbfrbnn +3-7 s: sssssss +7-13 k: cpmxcndgssktpkkpfkk +3-6 r: rnrnrr +10-11 n: nnnnxnngrxhnn +14-15 g: dwggggggggjvgkgqgggg +3-5 g: gkgggks +2-13 d: vddnpddsdpddd +14-15 j: jjjjjjjjjjjjjjj +12-13 m: mmmmhmmmmxmmmm +6-7 s: sdssfpwsskqbq +2-13 v: mvvvvvvdvjvvvr +4-5 d: wldddd +9-16 v: rvvvmvgsvvvvvhjvvqs +17-18 j: jjjjjjjjjjjjjjjjjj +2-13 j: jjjjjjjbjjjjj +6-16 b: rgkcwbcnrdbrqvqbbq +2-11 t: btttbttznrctwwnltvnt +2-4 d: qsdvsgtd +5-10 t: ttttttttltt +5-6 m: mmqmmm +3-6 v: zjxcgdvswnfvvvv +13-14 s: sssgssrpssssszss +15-20 k: kkkkkkkkkkkkkkkkkkkk +5-6 x: xxxxsl +5-8 s: ssjszwsts +6-10 q: qqcqqqbqqp +11-12 m: mmmmmmmmmmjm +5-7 s: jszjsgsxtzkspgs +3-5 r: rrbprp +14-18 t: ttttttttsttttttttt +2-3 c: kccc +5-8 g: ggtgfggsgggggggggggg +5-12 n: nnnnmsnnnnbz +13-15 s: svsssssslsbsssssssz +11-18 s: ssbscmdbssksswksss +3-11 g: gggjwgrggzxmxbgg +1-16 d: dsndtgbmdrdxbddddjdd +12-13 b: bbrdbkbmbvbbb +3-6 g: cxwmbgmxg +7-8 t: ttttttkrcwq +4-8 w: wwwwtwwmkw +7-13 l: llfllmlslpslltll +3-10 n: nnnnnnnnnnnnnn +3-8 w: wwwhwwwwwrdpww +2-5 x: xxqxxt +13-14 h: hhhhhhhhhhhhrth +6-7 j: jfjjnrjjj +1-6 z: zdmsjnz +1-13 t: gjbzdcntxhfmg +3-5 c: clccczc +14-17 z: gzzwtvhzgrzxzrxxhcz +1-2 n: cnnn +12-14 q: qqqqqqqqqqqdqj +9-10 v: vvvvvvvvtd +3-8 t: mxptddtdttb +8-10 t: ttpttttttw +17-20 w: wgwwjqdwwwfgsrwwwsgw +3-4 v: fsvvdv +9-10 m: zxmbtjhpmhwx +13-14 b: bbbbssbbbwjqms +4-9 j: xsfvbjdmj +2-8 r: rsrrrrrlr +8-11 j: jjjjgjcjjngjfsjs +2-4 s: swsvs +12-13 p: prpppppvpppkhp +9-10 q: qqqqqqqqqs +9-10 b: bbbbbbbkbbb +8-13 t: tttttttlttttjt +3-7 b: bbgbbkbbbbbbbjp +9-11 w: wwwwwwwwwww +14-15 t: httttttttttttpmt +11-17 k: kfkkkkkkkkqkkkkkhkk +1-8 p: phqgprxp +7-16 j: djjgjjdjbwdjzjjcjdjj +1-3 w: wdjpt +17-18 w: wwzwwwwwwwwwwwwwnpw +2-4 h: hlhxkhhh +14-17 c: mbwhtknbvrqrzxprcctd +9-10 r: rrrrrrrrgxr +15-17 k: krkkkkkkkkqkkkfks +7-9 j: jjjjjqjjrkj +4-6 p: pwtpppj +4-5 w: wwwww +10-12 l: lllllllllllll +11-13 c: zkccccdcccccxcvtc +14-17 f: nbfhblbmqzrmrfzcfn +4-9 g: xvbggpltgglvggmgnpxk +1-4 k: mwkk +2-3 c: gcpckck +2-13 x: xbxxxxxxxxxxcxx +7-10 h: hhrhhhhhhh +1-3 p: npxrvvcgjpf +15-16 x: xxxxxxxxxxxxxcxx +17-18 d: dddddddddddddddddg +3-4 v: vvpb +3-5 s: zzsss +3-4 m: mmmmmmmmmmm +2-7 s: tsxlhfvtbzkkqssmss +4-11 c: bdkskbwctpckccbzbcc +8-9 g: ggggggggg +4-8 j: jjjkjjjjjj +7-10 f: qfffgfdffzff +12-14 j: jjjjjjvjjjjjjnjjj +6-7 b: kbbkqbbbhxqcdpbvb +1-6 x: gxlqxxxx +5-14 k: xvgfkksvtccfvkmbkmz +11-13 v: nvvvvvvvvvrvv +5-6 x: xbxnvx +12-13 f: fffffcfffffnnf +5-6 z: zzzwzzz +5-9 r: rsnzrrfrrrsmlr +7-8 z: zfzzzrbzzz +7-10 x: slxvrxnlwh +12-14 p: pppppppppppdpxp +11-18 q: qqqqqqqqpbqqlfqqwq +1-5 b: bqpglwpwbzzcdxhxqwq +14-16 q: qqqqqqqqqqqqqqqqqq +13-16 j: jjjjjjjjjjjjdjjq +2-8 j: jjljjnjkjzvjjq +7-8 l: lrdlzlqjllm +2-3 n: pkjt +1-2 z: jzzz +13-16 j: jjtjjjjjjjwjjjjkj +1-8 s: jdkssbsqks +12-13 p: ppppcplbpfppppppp +1-3 r: rrrr +5-9 h: hhhhhmmhm +6-8 q: vdqqvqqqz +5-12 k: vkrkksdkslmsrkxtslk +3-5 n: sldjnxplwngpnsqm +10-11 g: ggpgggngggng +13-15 g: kgggxggggrgglglvgf +14-16 h: hhhhhrhhwghkhhhhhhh +5-6 g: qqrghgwx +17-18 c: ccccccccvcccccccgw +7-8 r: rrrxrprr +2-3 z: ptpzzvc +3-7 b: bbbbbbb +1-2 n: szbzvnlxc +4-5 t: tttrt +12-14 m: mmmmmmmmmmmmmm +7-11 c: bscccccxccc +10-20 g: nvshfzjmtgsrnhtjgzzg +2-4 l: jhlspd +2-17 j: jngjjjcjhjjjjjgjs +3-8 t: tttttsswttt +7-18 t: tttttttttttttttttw +2-10 c: ccrcjkpkccvlbckbbtc +2-3 w: wmltwwj +5-9 s: sscrspfvspssj +9-17 g: gdggghjmggsggggfgj +12-15 w: wwwwwwwwwwwfcww +1-7 x: zfgmlxxxxbcsfxxclh +5-6 p: ctslhnhphlmpppz +8-13 s: sssqrsqtsssmsssss +1-7 v: vjvvcrk +9-10 k: kkkwjkrwkkkrxkkvhkf +16-17 j: jjjjjjjjjjjjjbjvcj +6-9 r: rvvrrrrqrr +11-12 x: xwxnrxxxmzxx +1-3 q: vqqgq +4-6 g: gbgxsbprgzg +3-4 x: xxxxx +4-12 z: xjpzjzkvzzrzwz +5-7 j: qhhjmjvjv +1-6 b: bfgmbbt +5-16 t: tttctthtttptttttttt +3-5 g: gggwg +3-4 t: ztpxt +3-6 k: dkkkkk +14-15 r: rrrrjvrrrrrrrcfr +6-10 f: gvtmdfqrhft +1-5 h: wpqss +14-16 l: lllzlllblllllrllllx +5-6 k: kkkgdlc +2-6 j: mjdjlrqjjjjszqzbbv +4-13 b: bbbgbbbblbbbn +10-11 v: vvvcvvvjvhrv +3-5 w: rqffzwzdgxwjmlk +3-8 w: xwjqmpvw +3-5 q: zfqsqqxqv +3-17 f: fskfffnfjszfffwfzfcf +9-13 l: qkllllslvwpkmnlfzlll +2-3 h: hhhh +9-16 d: dddddddjdrdcddzgdd +1-3 w: wwkw +4-8 f: fkfscjff +10-12 p: hsrpgppjmpbmmv +6-11 q: pzqqdqqqnqqqtqgqsqsq +2-6 k: dkkfsxzmnckggm +4-7 d: qddpsdddddr +3-5 j: ljnhn +4-5 m: mmmmjmm +4-6 h: zhhhhq +3-5 c: ccccc +4-12 j: jjjcjjjvxjjnvjqj +6-13 d: zdwddvmddwddgp +6-7 m: mmmmmmx +5-8 t: ktwfntjtgmvpttfx +11-17 z: vzzzzzzzzzbzzzzzlz +5-6 f: ffffrc +9-20 v: vvvvvvvvvvvvvvvvvvvg +8-12 v: vvvvvvvvvvvvvvvv +14-17 s: sssssssssssssssss +5-10 x: xxnxwxxxxxqskxwgpz +10-11 j: jjkmjwjbsjsjjjjjjp +2-4 v: qzsmvvv +14-18 x: xdxxxxxxfxxxdvxxxqx +13-18 w: wwmwwwwwdwhwwxpwbw +5-8 k: kkkklknlk +2-3 z: zqzz +8-13 w: dxrbwrzwtvngwwvzr +5-14 j: djjjjjsdvcjjjjtgjrjj +10-14 l: lllllllllllllm +17-19 f: fffxpfffffffcfffffnf +4-6 w: wwwcfnsw +3-16 k: kktndqkrcfnwtkkk +4-8 t: tpttmtht +1-2 l: lllwf +4-9 x: xxxxxxdxxmxc +2-6 c: cgqqbf +5-9 p: tpppdpppzfqlfph +2-5 s: lskss +2-6 b: fxbhhzhb +4-11 h: frhhbknrmrhv +2-4 w: wwjzvs +6-7 d: ddddddr +5-14 c: rbgcpfccppccncrsc +12-17 j: jjmpjjjjjhtcjhzjp +9-12 g: gggggggsgtgggggggg +11-14 b: bbbbnbbbsbbbbvblb +2-4 q: qqqqq +7-10 d: ddfdddddcddmmd +19-20 w: wwwwwwwwwwwwwxwwwwkw +6-7 j: jbjjjqc +5-12 m: mmmmgmgmmjcxpjm +4-8 d: rdddjdljdrd +1-4 d: tdgds +1-3 s: ssszvs +7-8 g: gvgggggggggg +5-9 b: bbwbbbbmbwb +4-13 m: lmwmbmqvzxjhmlp +4-12 j: thjjjfjjjjjjjj +3-4 l: llkk +7-9 v: vvvvvvvvdd +13-15 b: bbbbbbbbbbwtbtmbwqb +3-9 d: dddddzddd +4-9 p: pfpvppppj +4-8 g: kgpgbgggmngxggwfh +4-7 f: fffffff +7-9 r: wrrrrrrrrlrgtr +18-19 s: wssssssssssssmsssvds +16-20 n: nnnnfnnnnnnnnqnznnnn +3-4 s: sssc +12-14 h: hhhhhhhthhhhlhh +10-14 c: ccrccccdcccmcccbcc +2-3 m: tdvlm +2-5 z: zdzzh +11-13 m: mjmmxmwjmjmmmmmcmmvm +7-8 f: mfffffffgbtsffdvvfl +2-3 g: gggqh +7-14 t: tttttttttttttttt +2-10 l: lcllmcnllpvtlgll +2-4 s: scqskss +4-18 l: ncqqmclxshsfkcljlll +4-14 l: qbklhcmthmllfl +3-5 t: jrgztqxsctnz +11-18 t: tttbttstxqttrrtmtt +7-8 n: nvnndthznnq +14-16 n: pnnfzdzwnscvnfnn +2-8 l: vxnkllwltllllt +13-15 q: qqqqqqdqzqsbqqgqqq +4-5 f: ffflflff +1-4 z: nzzz +4-8 r: chrrrrvrsm +3-4 f: ffff +1-7 n: mnnnnngp +2-3 h: hwxh +10-16 s: sssrssgssmsszsrrps +6-7 s: mmzwdpv +10-14 r: rrrrzrzcrvrbrzllrk +9-11 k: kkbjfbhkkglwx +3-4 f: ddrwzgcmnfxfbffpdgbh +3-10 s: qssqszxqpskrwcxsss +7-11 f: fcccqmkfxfdhznwb +10-15 c: ctccncccccdccccxcwcc +3-6 j: vjzmjjr +9-13 d: ddtkddlkddddbdttr +11-19 f: krfxmnqfhfqfksfzrgfm +4-5 x: xxxxr +13-14 p: pppppppppprpdj +5-6 x: xbnxxxxx +15-16 l: lllllllgllllllsl +3-5 s: sxrcsm +12-15 m: nfdmhmkqpgcmnxmqcvn +1-7 q: qrrhxlq +3-4 l: nlllwlmlf +5-6 f: vffffff +6-10 g: gggggvgngfgg +4-14 s: sdgsssgqlqwjszkcgsz +4-6 t: tttvtx +4-7 g: qkggvgggwgfgfgn +6-11 h: hfdzhwmhwhhhgvx +10-15 g: ggggnrgggggflggg +7-8 v: vvvvvvcvvvv +3-4 q: qqqqq +3-6 t: qsdptbvtjhcjvjntwdnx +12-13 c: cccccccccccsx +2-9 h: hhhhhhxhnh +14-15 h: hhhhhhhhhhhhqhksd +18-20 d: dndzzcdgldkmjdvvdddz +4-5 k: kkkkts +4-5 z: zjzzwwz +2-3 z: bpxzxchzzzz +5-12 k: kkkkkkkkkqkc +5-11 k: kkqkkkbkkkwkkk +3-5 c: cgfccgc +3-4 t: jthdftcsfqt +7-9 x: xxxxxxxxxkxxxxxxznxb +1-6 z: xwzkzz +13-15 j: jjjjjjjjjjjjrhj +4-6 q: qqqjzq +5-6 k: kkkkrqg +2-6 s: gffhkvzs +4-6 k: ctdqjk +4-7 v: vcvhvtr +7-19 d: rxddghsddsrpdxxdddd +5-7 r: frlkptm +2-3 b: bbhbzgvd +11-12 h: phhhhhhhhhhkhg +6-8 c: dbsgwppccnwf +8-9 m: mmmgmlpvgdmmdnm +12-19 k: kkzkkkfkkkktzkkkkkbs +1-3 j: mjjjj +4-5 h: hpzhhhvrtdrqd +2-4 m: mmmjmmd +7-8 k: kkkkkkmk +7-8 q: qqwqqqqq +9-12 q: kfqqqqqxlqgbrvqvqwq +2-8 p: dhkfkvqp +3-5 h: hhhhh +2-7 t: rtvqwkqdpjcfttvntpm +2-8 k: kkkcjczlblwgm +3-6 q: qqcqqb +4-5 z: xzzqzzz +1-8 v: vvvvxvccnvv +2-6 n: nnjnctjqnj +15-16 v: vvvtvvvvvvvvvvqv +10-14 r: rrrtrrsrrrqrrr +3-10 d: qcddgpncddwdnldjzd +5-10 n: nnnnztnjnn +6-7 s: ssssjkstsh +2-5 r: crhvhfrlfbzmcqsxcr +5-9 h: hhhlbhqhljmhh +1-2 t: txvt +2-7 k: kkvpkqlpkknkkhmb +7-10 r: rrkrrrrrrr +17-18 z: zwzzzzzzzmzzzzzzdsz +13-17 g: sgvggggbggggqbggfggg +12-14 l: lnllldllllnllxlllll +10-11 j: jjjjjjjjjcj +3-8 p: vppjpkppx +19-20 s: ssppfsswtssqssxlbsls +4-6 j: xjjsjc +7-11 g: gggsgglsgpf +14-15 m: mmmmmmmmmmmmmmm +2-6 x: rxjvbxrxxcsthxl +12-19 s: sgssssqjssssvhssscts +1-8 w: wwvwrwfwlwww +10-12 q: qqqqnqqqqtqq +13-14 j: jjjjjjjjjjjjpr +2-6 j: zjjsljzdppjhjrq +1-3 k: tkgl +10-11 p: npwhgtcgwpptxnpztxn +1-4 m: mdmj +6-7 p: pgppptp +15-16 r: rrmfrrrrrrrrzrdsgrrc +9-10 b: cbbbtbbbdqsb +11-12 w: swwwrwwwwwwwwwlwl +1-4 c: xdfp +2-4 m: mmmb +9-10 b: bbbbbhbbbb +3-4 k: rxtk +5-7 x: xxxldxxxx +1-6 h: hhhhhwhh +3-4 d: ddsz +4-7 f: ftfffffjmmhz +5-7 n: fvpfwnn +8-10 s: sssssssksc +2-11 j: jkjjjsjdbjzljcpjjmj +12-13 r: rrrrrrrrrrrqz +4-11 d: tngdgqrdddtvgdq +6-7 g: gggggtz +4-13 g: lgqkgpfgklggxznk +7-8 j: jjdjljjjghnjmbqjb +1-4 p: pgnpjtbzdlh +13-16 p: ppppwnpcpppwppprp +13-16 s: ssssssssssssssshss +5-6 k: kkkhkjfbbkxh +6-18 b: djrsdpkhrnfkmgkxqb +3-5 c: ccbgp +1-16 m: mmzmlmmqmbwmmmmm +5-6 n: vqtnnk +11-16 x: xxxxxxpnxxxxhxvxh +2-5 q: mqqsq +4-5 p: xlpppp +3-5 v: vwvvvqwv +7-11 b: bbbbmwhfbjb +1-9 l: spnvxwwlmcmpd +2-3 c: cccm +5-12 t: gpcttsvjnqkt +8-10 r: rrrrrxrbrr +8-9 t: zpsltttvv +6-15 w: wwwkvwwwwswwwwwwww +13-16 t: fttgrdcdttttnttttdtt +14-16 n: nnnnzhnnnnnnnrnrnnn +3-10 c: ncccvmmcccxkrrcspjc +8-12 b: tmkmhnhblmhbxdvqb +2-5 w: wwnww +3-4 x: vgfwxx +2-3 l: lwkl +7-10 v: vvvvvvvhvvv +15-20 j: jjjjjjjrjjfjjjjjjjjj +9-10 c: ccqrkcccpcckc +3-5 c: clcccc +3-4 v: fwhvvv +14-16 g: ggggggggggggrgggg +5-9 z: zzzzrzzzzzz +6-7 v: vvvvvkv +8-9 p: ppjpppppp +6-7 v: hvvvvwpv +2-4 l: hlllgdxltwllwn +12-13 r: rrrrrrrrrbrrdrrr +2-6 n: vwbttnnnnsnbnhnnnm +1-12 g: xkxgggggsgggggdgg +1-5 s: sssss +5-19 d: qvddqzdddddddsxpdgdd +4-5 g: tgfpgksglmcg +6-7 b: cpbgbkq +9-13 l: llllllllflllsll +1-8 k: vvdsktqkfkdqlhbwrkqc +11-15 b: qbbbhjbgnbbzvbk +10-12 f: ffffffffffft +5-7 p: fndppppdnpp +3-4 t: xttt +9-12 l: lfvclqlrlllvllzl +5-9 h: mhdjxshhhzlp +2-4 t: tttt +3-7 c: wdccccccdgscgcq +8-16 b: sqbbbbbbbbbblbbgbbxp +6-9 n: nnnnnqndv +5-6 j: vwktnjjdhjsvndjjjsfj +7-9 w: lwvwjwwwwwww +2-3 c: bdrc +3-4 h: hhhh +8-16 j: fgnjtlhjjgknmbbj +3-4 f: ffpd +8-12 h: hhhhhhhchhhnhhhhh +8-14 w: zwxrgcbjbqwghhbwwb +6-9 c: wchcccccccccccc +6-10 f: fwfffcdfffsf +1-12 c: kccccccccccccc +8-10 t: dmtjzvjttxttrtftt +4-5 s: ssbnbss +3-4 q: qqdd +5-8 q: cgcjjbtq +12-15 b: hjjqbxwbnbbbwbfl +6-10 s: sfsfqnsfslsfssssst +4-10 b: tbgbjnqbbbtcbb +2-7 c: cmctjltcz +1-5 j: jjkjjqdjjjjpjjjjjj +16-17 j: jtjjjjjjjjjjjjjjs +2-19 n: njnnnnnnnwnnnnnnnnk +8-11 v: vvvvqvjnvvgmvvtv +11-15 z: zzzgzzzzzzzgzzz +3-5 r: rxrrt +3-12 m: llmntmzdjnhmcbmm +8-9 s: ssssssspws +6-9 v: vvvvvgvvv +2-7 k: kkkkkpk +12-16 v: vfvvvvvmvrvzvvzvvv +2-12 k: shkkkjtxkkklkkkk +4-5 t: ttttvt +4-6 k: lczkck +3-11 d: ddpddsddmddddd +7-12 p: vnrftmwdphrzxjv +2-4 z: zlzqh +16-17 q: qqqhqqqqqqqqqqqqqqq +5-9 r: rrrcrgrflqh +4-5 l: xllcv +8-11 h: hhhhhhhhhhhh +16-17 l: tfhpllgsrlvlbvncl +15-16 z: zrzzkzbzszdzzzzczzzz +11-12 v: vvvvpvqvvvvvvjv +12-16 w: wwwrwwmwwwwwwwww +7-8 m: mmmgmmnpm +2-8 c: cscccccbc +4-6 l: slrklplgsl +7-10 c: qpljmtcclfqc +16-17 s: gjssssrhksfmdssssw +1-4 r: krrz +3-4 g: gjgggdgpwd +11-13 l: llllllllllvlm +10-11 z: zzzzkzzzzzs +5-10 l: llllmlljlb +9-10 j: jjjjjjjjstbj +3-7 n: ndnvmnjl +2-10 x: pxdcdsxdsxjmx +11-12 g: ggggsgggggxkp +8-12 s: sssncsjspkxssssshs +9-11 d: ddddddddddc +3-5 x: xmxxxxxx +1-5 j: vnqpwg +4-5 k: lrqkkkqf +1-7 z: gwzdzzhzzzzzz +2-4 r: nrvvxsbrhghrrtr +3-4 x: xkxx +7-13 b: bpbbbnbbrbbbh +6-10 t: tttttttttttt +13-14 n: zgpqjvrsbsfgnn +8-9 x: xxxxxxxxx +6-7 c: xccwxqcscczcc +2-9 x: dxxxxbxxx +2-3 c: lcwrncsjwzss +16-18 g: bjkzbdrfjsnbldggwrqj +6-7 l: lllllshl +7-8 x: cvtxzlxxvls +8-11 q: qtwqqqcbqqhqz +7-11 n: nngqrnnnnnhnj +4-5 q: qqqqq +5-6 c: cgcccfj +15-16 z: zzzzzzzzzzzzzzzz +7-16 c: cblsccjzgccccccvcc +4-7 k: rkkkkkk +11-12 q: qnrqlqqqqqqcqqq +4-5 f: ffzcl +14-18 m: mjmmrmmmmmmmmtmmmd +7-9 f: fffbffffg +5-11 l: lslqdpbvslplll +2-4 s: brkfmk +10-11 c: cccccccccmc +2-5 z: zzzzh +1-11 h: hhhhhhhhhhhhh +2-5 z: zgzwlz +3-5 r: rrrrg +14-15 r: rrrrrrrrrrrrzbj +1-7 q: jppwfcqmvxjqxdf +2-4 m: bmmh +12-15 m: mmmcmmmsmmmqgmm +5-13 b: bbbvbfbbdbbhb +1-13 g: cgggggggggggv +3-9 s: bgldhnxsksznscnlnhc +6-7 t: tbvtbtkjt +8-9 q: klqpmdtqqcmlnftrn +8-10 f: fffffvflgfq +10-14 f: tcpfzmffffbffvpfff +1-5 h: dhrhjd +3-4 z: zbztzgfbcf +14-18 v: vvvvvvvvvvvvvvvvvv +18-19 h: hhhhhhhhhhhhhhhhhhh +1-4 q: vdqgqwhg +6-15 g: ggggggfggbsplggggh +1-4 s: srstdtspcrqqgqsl +10-19 x: xxxxxxjtxxwxmqswxxx +3-5 s: mjdsssssssssmss +6-10 q: qkqqqpqfxq +14-18 f: fffftmfffdfffftfff +5-6 n: qnrsvnvrnnn +4-5 x: xxxfp +8-10 m: mbmmmmklmw +2-4 n: nvntn +4-5 t: ttttt +6-8 t: jdlgtttpq +4-15 h: hhhhhhhhhnhhhhthhhhh +1-7 h: wpltchhcxwhkg +1-3 j: jjjjj +7-10 t: ttchcttwvtttftrtt +3-7 q: tsvrqqmdlzxs +6-9 x: sxjxxxxxx +13-15 b: bjbbbwbbbbbbdbbbbb +15-16 j: jjjjjjjjjjjjjjjp +5-9 k: rkkkkdtkmkjkdr +6-8 x: xxxxxxxx +7-8 p: ppgpppppblrp +1-2 q: qkqqqqq +3-6 j: jjjjjz +9-15 k: kckkkktskrpkkqkwklvk +5-9 b: bltqmxbsbbvdpvsqkpk +14-15 c: cccccccccccccgzc +10-13 l: mzlhlltlllllrcl +2-10 m: mmmmbqrmqmhmqm +4-5 g: gglglx +1-7 h: hdhlhhfhh +2-12 z: hnzdxfzxpwzzz +12-13 d: ddvddfddjdddmqvdkdmr +12-16 g: ggggngrxhgghgggggtgg +12-14 w: tkwdwwbtqwzphmzklrwk +4-5 c: cmccbcg +3-12 t: ttfxjgttsntkxznct +3-6 t: xjbhzxtttb +7-8 k: kkkkkkxf +2-4 p: pfppp +4-13 l: lllcllllllllllllllll +11-13 j: jmjvjjjjjjgjw +7-11 s: sssssswsssrmb +4-10 f: fffxfqtffff +10-12 p: pppppppppdpd +3-7 n: znfdhbn +2-3 w: wwwrwsw +2-6 n: mxnnfnx +5-7 c: cccpcchcsmlhc +1-5 j: jjtnj +2-4 d: ngtbkhcdwgd +1-4 t: txctqzq +5-10 h: hhnhhghstmtcq +4-7 x: xpzrmmjxxnxlxxx +14-17 c: ncccccckccccccccqc +17-19 s: mssssssslsssssssjsq +8-10 d: dddddddkdr +2-4 d: xcdn +2-4 w: wwwgw +3-15 x: klxxxslhpzwvfbxxlx +6-9 z: qtzhzgvzfzkgzzsfz +4-7 x: xhxxrmx +2-7 k: kkknkknkjk +2-4 r: zrcwpcrfm +3-20 v: vpvwnvrtvbvkdvnvvhrd +4-9 d: gsdhddtjdjg +3-7 s: sgsnshspt +10-12 g: ggxgghbgzxztg +2-8 l: fkxzlkdlmlllnwhlt +2-5 t: tttttt +6-8 b: bbbbbbbbbb +1-3 p: fpmp +1-7 w: llvwjdjvtp +2-7 x: rmbftbcmcxxxxpttzjwb +3-7 m: mmkmmrdmh +6-8 c: cccccccc +9-11 j: jjjjjjjjwnvjkxj +17-18 q: qqqqqqqqqqqqqqqqcx +4-6 z: zzhzzlg +17-20 f: ffffffmffffffffffxff +11-16 k: kkkkckkkkkkktkknkkk +10-12 k: kkkkkkkjkzkk +10-12 l: lllllllllplt +5-12 n: xnnhkdpmnjnzqnc +3-9 f: jmhkffdhsdsf +6-9 m: bzmppmqjdmhmgmmdm +8-9 h: hhhhhhhhl +4-8 r: rrrmrrrz +7-14 x: xxxpxxxxxxxxcn +4-18 v: hvvvvjqvvvqvtjmvfvvf +9-10 x: xxxxxxxxxj +2-8 m: rttmqfkvjgq +4-6 v: bjtvvv +2-4 k: kkkk +5-6 p: ppppxc +2-5 p: jhxcptzrpfsrxj +11-15 c: cccccwcxcccckccccccc +12-16 w: pgwllwwwwwwwvtwwww +11-13 m: mmmmmlmmmmmdmm +12-16 t: tltmtttwzjtssmtt +6-11 k: spgkkxpmtkbdkmzn +10-19 m: lrzzlvfncmpplqbmxhh +8-15 t: tttttttvttttttjttt +17-18 w: wwwwwwjwwwwwwwwwfj +14-18 l: bscmdvlczsgljvlbllwp +5-12 t: tdtslpttttvttgtkkt +1-5 s: pvqqhnpvcmxrwsspvnw +13-17 j: jjxjjvnjjjjjhjdjpjpj +6-8 f: jxlfvnrwt +8-11 q: dcqqmnqqzqqqqqqqq +3-4 r: rrrj +8-9 z: zffzzzzxzzz +8-9 c: cchccccwc +3-15 l: dpxfgtznlgmptjlxhzl +2-9 f: sfprndvdptlfdwh +13-14 z: zzzzzzzzttzzzzzz +16-17 l: llllllllllllllllrl +2-3 c: cxrwvncfl +3-5 f: flhbfkbfmf +3-5 s: hdkshswvlmg +3-7 l: llcllllllll +14-17 l: llllllllllllldllcll +3-4 l: klzl +4-12 r: rrrcvrrrrwrr +8-9 m: mmmmmzmmmmm +5-10 m: bqhbgmpmmhmwhmmm +10-11 h: xhhhhhhjhghh +3-4 p: hpbpppnxppk +9-10 z: bnzjzzzzzz +2-8 d: pzdrzhdddpd +14-15 f: ffffjffffztfffzff +3-13 b: bbbbbbbxbqbbf +8-17 p: fppppbppjpfpppzcnp +6-9 w: wwjwmtwwfjs +4-8 q: qqqltrkqzqqxqc +17-18 g: gggggggggggwggggtfg +14-16 k: kkkkkkkmkkkkkkkk +11-16 v: vvbvvvhvvvvrvvvv +4-5 z: zztzz +3-8 q: qpnqjptfrqxtdncqbg +9-13 v: nvmzrnvvvqvvvgvvvtvv +1-6 k: kvxbkvmdmgdmkhkwq +2-4 v: fpvvpv +4-5 x: cdxxx +3-4 j: jkjj +4-9 s: dslxngsjssxpsssgss +3-10 l: rszlllgzbvlll +5-6 z: zmzjznzkxzr +10-11 x: xjxxxsxxxfxx +11-13 x: xxjxqxxxpxwqxxxx +4-7 d: drkkhrd +15-17 f: sfsffffffffffffxnfff +6-16 m: mmrmlzdmzxnpmhmhmmfm +2-4 h: vhthh +17-18 q: qqqqqqqqqqqqqqqqqq +2-7 h: hhhhhhh +8-14 b: lbdvsxcbzvfltl +10-13 g: ggggggqgxphggcg +10-11 c: ccccxccccbc +1-10 f: pmtffffjfgkfpjm +14-18 k: wkskkkkkkkkkkkkkkn +5-8 n: qknnnfgn +6-8 l: lxlllklll +2-3 b: bmzb +3-13 n: nvpnrnjnnnqnnmnhlnx +1-4 t: rrjg +1-2 b: rkpbg +14-19 g: zcggccgvgpjghznmvgpg +5-6 j: jjjjjj +12-15 x: pxxxxxxxxxfbxxx +3-11 m: hmcmtmqmxcmm +2-4 h: wshlhh +2-3 b: gbzzqdvhpbvfgh +6-7 d: jdddfppddvdmds +16-17 k: kkfkkkkkkkkhkkkkp +6-15 k: nqkkkhkkkkkhkkkkkzkk +4-5 j: jtwsspjj +7-8 g: mrggggfg +5-11 r: wrrrdprrrrn +3-8 c: ccccccct +1-3 s: ssss +8-9 r: rrrrrrnjdr +7-10 v: vvcvvvcvfzn +2-4 b: bzplb +5-7 w: wwwwhwtw +9-10 b: bnphxrvfbjx +2-10 p: ppjppppplpp +3-17 m: mmmmmmmmmmmmmmmmg +4-7 b: bstmbbbbbmgtqm +9-11 q: sblqqbqqglfqlqfzqqld +16-18 v: vvvvdvvvvvvvvvvlvm +7-10 v: rpvvnzpcccvvhvbvvtz +7-9 m: mmmmmmmmm +9-12 g: gggglggjgggggg +2-4 d: ndhdsddzq +8-10 q: qczgcdqbqlqlzqq +4-8 c: pknvllcbxxcs +5-6 k: xpkkkk +3-6 q: qrdqcqqqq +7-8 r: rrgrrrrr +2-3 n: vntn +4-5 r: rrkrr +2-3 c: kcgcrbcqk +2-4 r: hrmrtrs +6-7 s: gsvwsjsgssbss +1-2 n: nkwj +4-12 k: kkkqkkkknknv +17-19 k: kkkkkkkkkkkkkkdkkkhk +8-9 p: ppppjvwlpd +2-7 s: dshmwzsspls +6-7 b: wbbbbbx +1-4 w: lwnwj +3-7 f: fffkfffnkdff +2-4 l: xlwsrlclpql +1-4 w: wwwv +17-18 r: sxrnvrtswzzzwwrdrt +8-11 q: qqqqqqqqqqkqq +1-9 c: gscmdrvngstmfknsjrp +14-15 n: nnnnnnnnnnnnnnn +15-16 n: nnnnnnfnnnhnnnnnn +4-6 w: fpbwwwwcwprflnjtwl +10-12 p: pgpprmwwczxjhpvpqmpp +2-14 c: wkdjtjxccwvzwbgr +4-6 t: ttthtn +7-8 s: ssssspgsqs +13-16 t: tdttqxtttttttttm +2-3 s: wsfdwh +2-3 z: qzbr +4-5 t: htkntst +2-10 g: qgpbkxdpggfglbpvn +11-13 k: kkkkkkkkkkkkk +5-10 v: vrvfvfvvwnvs +1-10 t: bsptvbqtctmwtztgtwt +1-6 g: hzcpck +9-15 g: zggnmghgggrggxqzj +2-7 z: czzzkzzzrz +1-4 f: zmnffhprzvrbhz +1-3 j: zjmjjjj +4-6 n: nnnnnnnnnnnxnnnnn +6-7 v: vvvvvpz +15-19 r: rrfrrrnrrrrrrrrrrrr +4-11 v: vvmzvvvpvvxk +3-4 x: xxxx +5-6 k: kllvds +10-14 r: rzrnvtrfkrrrvjrr +2-6 b: frbbbtvb +3-5 g: tpgwjrr +16-18 c: tcccccccctccccctcccc +5-14 g: tggjggggggggggmgz +3-5 c: qjfndkck +19-20 v: vvvvvvnvvvvvvvvvvvvg +7-11 x: xxxxvxxxqxf +16-20 v: vzvhjvbvvtvvvvvvvgvh +5-6 h: hhbhhh +1-2 d: dxbd +1-18 r: rvzjrgfrkrxrgbrdlrr +6-9 x: xgxdlxrgnfmsmfxcwx +2-15 h: whxfjxtcxlwxchb +1-3 w: tcvttwhsjpzd +8-10 l: qlrjglllxl +8-11 q: kggqvqbvwfbqlv +2-4 d: dsdwhnj +9-10 s: sssssssscrsz +2-9 l: klgblptpqzdp +11-14 q: qqqqqkrdqxjfqcqpqqqs +8-11 k: dvhvwdpkbdnwn +3-15 c: mcvccvccccccccd +3-5 d: dmqddv +2-7 p: npnfpswbhsbgknmvlgmx +2-5 f: hffrfm +11-12 b: nbbbhbbbgbhbbglqbbm +1-4 g: rgfg +3-6 z: zzzzzhcz +1-5 n: bzvxn +10-11 l: lllllllllqrmllkllvl +14-15 j: jjjjjjjjjjjjjbw +1-8 f: fffffsngffczj +4-9 n: zswmtrnlspnxdnbnbvln +6-8 c: jjcxcjnccclc +2-4 v: rvpvsvfft +1-5 x: xxdxkxxxxgx +7-11 f: nfqdgffmwlfc +1-7 n: nttvqnn +2-4 x: xxqxx +4-8 t: rttttttt +4-5 r: ktkwwzcrv +5-9 s: sfsslssss +1-15 p: splppplppprppcppppdp +3-6 l: xllhplwhllllzqbkll +3-4 g: ggsgq +19-20 w: wwwwwwwwwwwcwwwwwwqk +11-12 m: mmmmbmmmmmmm +10-13 c: cccmccccccccpcwcc +1-6 r: xrrrrprfl +3-4 w: hwww +5-7 s: zwldstwxsh +5-8 f: zhfglzmkfnqmbbtffftf +5-11 x: cxxzvxglxrbbqqcxf +11-13 b: bbbbbbbbbbbbdbbbb +1-6 d: qddddd +7-8 k: kkkkkkkb +14-15 d: ddddddfdddddddj +12-16 m: mmmdmmmmmmwpmmmlm +3-9 m: mtmxsdmmzsmlc +3-7 q: qjxlgqd +2-4 c: wccb +8-10 h: hhhhhhhkhc +2-4 s: jjlm +5-7 z: gzzzzzzjz +1-4 s: sqss +1-2 s: ssst +1-2 f: kfhf +4-6 b: bbtrbbbb +3-4 r: grrrr +1-7 r: lrpcfdfksxrh +9-10 v: vvvvvvvvhw +7-9 k: kkkkckkkck +9-12 h: hhhhhhwhthhhh +3-4 b: bdvbdwrgcbpwblj +6-8 v: vwqcvvvvvvsvvxjv +1-3 s: ssss +13-15 x: xnxxxxkxpxxxtxwx +1-3 j: jqjj +3-6 l: vlljlbllrbztnl +4-7 n: nnnsnnnnnnnnnnrnn +1-5 z: zzzvzzz +3-4 m: qmmjmm +7-9 m: gmmrtzmmrmmcmm +5-16 x: xzxpxxxxjxqxxqms +10-11 m: mmzrmmmmmmmmm +3-5 p: cpprxp +3-4 h: hhhjq +6-7 x: xxxlqwlxxvnnvvc +15-17 s: sssbsssscsssfssspsg +11-13 s: ssssssssgsssss +3-7 f: frfshbfn +4-6 n: tnnnpnn +7-10 g: ggggggfggg +6-7 j: jjzjthj +11-14 m: mmmmmmmmmmmmmmmkmmm +12-18 c: ccccccccftccccccccc +2-10 w: wvwwwwwwwwf +1-6 q: zvqqqmzqqt +13-19 f: ffffffffffffgfffffnf +5-11 x: lfxzxxcxxxxlbwnrx +2-3 s: vxgv +1-5 p: zpppxbmj +6-14 c: cpcccgcddfzcgcccc +3-5 q: qqqqvpqq +8-9 f: fffffffff +7-10 m: xmxmmwtmmmnvcrmkrmmm +2-4 v: vvjnrxnvtdmm +5-8 k: kkqkkkkkk +7-17 n: mqhnbwxnnnmcdlkfq +18-19 m: mmmmmmmmmmmmmmmmmmm +5-6 r: rrcrvmr +2-7 b: fdbvbdb diff --git a/2020/day2/day2.py b/2020/day2/day2.py new file mode 100755 index 0000000..8bd5725 --- /dev/null +++ b/2020/day2/day2.py @@ -0,0 +1,37 @@ +#!/usr/bin/python3 + +count = 0 +lines = 0 +count2 = 0 # for part 2 +with open("data", "r") as f: + for line in f: + lines += 1 + parts = line.split(' ') + amount = parts[0] + char = parts[1] + pwd = parts[2] + + first, second = amount.split('-') + first, second = int(first), int(second) + + c = char[0] + cpwd = pwd.count(c) + if not first <= cpwd <= second: + #print(f"bad: {first}-{second} {c}: {pwd} - has {cpwd}") + count += 1 + + l = len(pwd) + match = 0 + for p in [first, second]: + if l >= p: + if pwd[p - 1] == c: + match += 1 + if match != 1: + count2 += 1 + +print(f'bad count: {count}') +print(f'good count: {lines - count}') +print(f'total lines: {lines}') + +print(f'2: bad count: {count2}') +print(f'2: good count: {lines - count2}') diff --git a/2020/day3/data b/2020/day3/data new file mode 100644 index 0000000..49c14b1 --- /dev/null +++ b/2020/day3/data @@ -0,0 +1,323 @@ +..#.#...#.#.#.##.....###.#....# +...........##.#...#.#.......... +....#.....#..#.............#... +.#....###..##...#...##...#.#..# +#.......#.........#..#.......#. +...#.##..##...#.#......#.##.#.. +#.#..##.....#.....#..##........ +...#.####...#.##...#........... +.#...#..#..#....#.#.#.#.##..... +##.#..#.##..#......#..##.#.#..# +.#.##.....#.#...............#.# +..##.#.....#.....##..##.#....#. +#..#..........#...##........#.. +#..##.#.#...............#..#... +..#....#...#.......#.......#... +.........#.#.##.#........#..... +#...##....#..#.........#.#...## +...#.#...#...........#..#...#.. +...#..#........#...#........... +.#....##.#...#.#....#....##.... +...#...#......#.#.......#...##. +####..........##....#.......... +#..#........................... +#....#...####..##.#......#.#... +..#..#.....##.....#...#....#..# +#.##......#..##........#....... +..........#.....#...#.#.#....## +....##...##..#........#...#..#. +#..#..#...##..............##... +###.##..##.###...#....##.#..#.. +.#......#.................#.#.. +#.#..#.##.#.#.#.....#.........# +..##......#.......##........#.. +#..............#.##.#.....#.... +............................##. +..#.##......#..........#....#.. +..##.....#..##.#....#.......##. +..#.#.##.#.........#........... +...........##.#.#...#......###. +#....#...#........#.#...#.#.### +..............#...#.....##....# +#...#...#..............#..#...# +.##..#.........#.##.#..#...##.. +.....#.........#..#..#.......#. +.#......#.#.#....##..#...#..##. +#....................#.#....#.. +......#.....##............#.... +.#.....#......####.....#....##. +##.####.#..#..........#......#. +##....................#..##.... +.....#...#.#.##.#.###.....#.... +.#..#...####.#.#...#.#.....#... +#.....##.........##.##.##.....# +....#....##.###.........#...### +.......#........#.##.....#####. +...#.##..#...#...####.....##... +..#....#....#......#......#.#.. +...#.#.#.........#.......#..#.. +.....#...........#.#........##. +..##...#.#.##.#.#.#...###.#.... +..##.............###....#.#.... +#.......#....#..#...#..##..#... +....##..#.......####....#..#.## +##....#...#.#.#...#...#........ +....#.#................#...#... +...#.....#.#.......##....#.#..# +#....##.#...#.#..#.#.........#. +#..##.........##.....#...#..... +....#.....#.#..#..##..##.##...# +#.....#...#.#.#.##....#.#.##... +.#.#........#..##.......#...#.# +..###.....#..#.##....#...#....# +...#..###...#...#.......#..#... +.#....##.......#.#..........##. +...#.#.............##.....##... +..#..#...#.....#...#........... +.#.#......#.##....#.....#...... +........#.#.....#.#...#..#.#..# +#.....#.#.....#.##..#.#....#.#. +..#..###.#.#........#.....##..# +#.#....#......#.#....###..#...# +...#.#....#..#.##.....#...#.... +....##....#.#...#.........#..## +.#......#...#.............#..#. +#........#........#.#.....##... +..##..#.##..#........#......... +.....#...#...#..#.....#.#.##.#. +..#..#..#.........#...#.......# +....#.....#.......#.##.#.##..## +......#.......##...#......#.... +....#....##.......###.#......#. +.....#..#.#........#....#.....# +#...#...#....#...###........#.. +#...........####.......#.#..#.# +..###....#..........#...#.###.. +....#.#.....#....#..#.....#.##. +...##.#..#..#.......#......#.#. +....#......###..#.....#.....#.. +.....#.#.#.....#.##.#....####.. +.##....#.....#.#....##..#...... +#..#.....#..#...#....#.#....... +.##.#..####..#.##.#......#..... +......#....#.......##.##....#.. +...#....#....#..##.......##.### +..##..........##.............#. +.#...#.#...##..##.....#..#..... +....#.#.##...................#. +.......#.#..#....#.....#....... +.#.#..#....####...#.#.##....#.. +.#.##...#..#..#...#.#.......#.. +##.#.....##.........#.......#.. +.##...#.....#.........##.#....# +.............#..#............## +...##.......#.....#.......#.##. +##..##......................... +.##.#........#........#........ +.....#................#.#...... +.............#....#....##....#. +#..##...##...#..#.#............ +.......#...####.#..#..#.....##. +..#.#..#......#.....#.#.#.....# +...#..##........#..#.#....#.#.. +.#.....#..###..#....#.##.#...#. +#.#..#.##.#..#......#.###...#.. +##..#.#..###....##.#...#...##.# +##..#.........#...##......#.... +#.#...#.#..#..........#.......# +.......#.#.......#.....##..#... +........#..##............##.#.. +........##.....#........#..#... +#..##.#..###......##........... +..#.....#.#.#....#...#.#..#..## +#...............#.......#.#.##. +#..#.....#....#............#.#. +...#....#...#....#..#..###..... +..#....#.#.....#..#......##.#.# +.#.#....#..#...#....#........#. +..##....##....#.....#.#........ +.#...#....##..##.....##.....##. +.#...........#....##...##.#.... +...#.....#......###.##.#....... +......#.#..##.#.#....#...#...## +....#...###.##....#.#.....#.... +.......#.....#......#.....##..# +.####.#...##..#....#........... +................###...#....#..# +...#...#.....###.#.##.......#.. +..#....#...##...#.###......#.#. +#...#......#............#.....# +#.........#...............#..#. +...#.##.....#............#..... +........#......##..#..#..#.#..# +....#....#.....#.#.....##..#... +.....#....#..##.....#.......... +.##....#..#...........##....... +#......##.....#...#.....#...... +...#.....#......#.#....#....... +...#................##...#..#.. +........#..........#....#...... +......#....#.#.#...........#.#. +.#............#....##.......##. +#.......#.....#...##.#..##..... +.#.....#.##..#..#....#.#..#.#.# +....#...............###........ +#####...........#..#.......#..# +...#.......#...#.#............# +#...#..#.#...#.#...#.##.....##. +.#..#..#..#.....#....#...#..... +.#...#......#.......#.........# +.#....#.....#...#...#..#....#.. +#....#....#.......#.....##..... +.#...#.#.##.#....#..##........# +..##...#............#.......... +..........#..#..#...#....#..... +..#.......#....#.....##..##.... +.#...#......#...#..###...#...#. +..##...#......#...#.#.#...#.... +.....#..#.#.#.#.#...#....##..#. +##..#..##....#.#........##.#... +.##..#.#...##..#....#..#....... +.....#...#...#..#.#..#......#.. +.#.....##.##..#....####..#....# +......##.................#....# +....##.......###...#.##...##.#. +...#...#.................##.#.. +.#.....##...#...#.....#.....##. +##.........####..#...#...#....# +...##.....#......#.###..#...... +.....###..##.#.......###..##... +#....#...#.#...#...#.#....#..#. +#...#.........##.#.........###. +#....#..###..........##........ +.###.....#.#.....#........##..# +....#.........##..#..#.#.#..#.. +..#......#...........#..##...#. +...#.#..#..#...#.##..#..#.....# +.#...#...#....................# +..#..##..#.............#.....#. +.....###.#.#.#...##..#.##....#. +..#...####..##.#....#...#...#.. +.....#..#........#.#.#..#.##... +#.#.........####..#...#.#...... +..............#..#........#.... +....#........#......#.........# +#..#.##......#.#.......#....#.. +....#..............#.#.#..#.... +#.#......#.....##.......#..##.. +.#.#..........#....#......#.... +.....#.......#.##.....#......## +...#...#.##.............####... +..#....##...#...##..#.#..##.#.. +..#.........##.......###.#..... +..#.........#####..##...#...... +..#.#...#.......#.####......##. +......#.#.#....#......####....# +.###...........#...#..#..#..##. +..#...#..##.##...#.#.##.....#.. +.....#..#....##.......#...#.... +......#.....#.........#..#..#.. +...#..#.........##.....##.#...# +....##...#......#..#.....#..... +....#..#....#....#........##... +##.....#.......#.....#.#.#..#.. +.....#..##.....##.##.#......... +.#.#..##.............#.#....... +......#.##.#.....#.#......#..#. +..........#.#..#....#.#.#.#..## +...##.....#..#...#...#...##.... +........#.#......#..###..#..... +..#.##......#.......#.......#.. +...#....##.##.........#.#...... +......#....#.#.........#......# +.....#...#....#...#......#..#.. +.##...#......#.........#...#.#. +..#.#.#......#....#............ +..#.....##.............#.##.##. +#......#......#...##.......#.#. +##........#.....#.............. +.#.###.................#.#....# +........##.#..##........#.#.... +.......###...#...##.#..#....#.. +.#..#....#..#......##......#... +.#...#....#..........##..##.#.. +.#..###.......#............#... +...#.....###.#..#........#.#.#. +...#....#..#.##..........#.#.#. +.#..##..#.....#...........#.... +#...#...##....#..#....##....... +#..#......#................#... +#..##....#.#..#......#.#.#..... +##.#..#...#.....#.#...#......## +#....#.#.#....#.....##.....##.. +....#...##.#...####.#.#.#.#..#. +.....#.#....#..#.....#..#...... +.........#.#................... +........#.....####......#..#..# +.#.#.##.#...#.#......#...##.##. +.#......#.#.#...#..#.......#... +..#......#.##.##.#.#....#...... +..........#.#...###............ +.##..#..#.#.#..#.....#..#.#.... +......#.......#.#..#.#....#...# +.#.......###......#...#.#.#.... +.............##..#..#...#....#. +....#......#.#...#.#...#...#... +..#....#.......#.#..#..#.#..#.# +.#..#.#...#.....#.#...#####...# +.##............#....#.......... +#.......####...#.#.#........... +...#.......##.#..........#....# +..#.#......#.......##.....#..## +#......#.###..#......#......#.# +##....#..#....#.##....#..#..... +...##...#.#....#.#.......#..... +#...####....#..#.#..#.##....### +.....#..#..........###..#...... +.#..#..#...#....#.##..#..#..... +#..#.....#....#..#.##...##..... +.....###.#..#.......#...###.##. +#..#........#.#..#.#.........#. +....##........................# +.#....#.#.#.#.#...#......#....# +#....#...#.##.......#.#.###.... +..........###..##....#..##.#... +...##..###...#.#.#.......##...# +##.#...#..#.....###....#....... +..#..##....###........##....### +.....##..#...#..#.....#..#....# +#................#....#...#..## +#....#.#....#..###.#.#...#..#.# +........##.#...#.#.#.#...#..... +..#..###....#......##.#...##... +..#..##....#.##..#.....#.....#. +.#.#...#.....#..#..#......##.#. +........#.#...#..##....#..#.... +...##...#...#...#...##...##..#. +.......#..#..#....#.#..#...##.. +.#.....#.##........#...#.#..... +##.#..#....#.#....#.#....#...#. +..#.#......#.......##...#....#. +#.#..####..#........#.......### +....#.......#.......##.#...#.#. +..#..#.#.............#..#...... +........###.....##....#.......# +...#.....#...#...#....#.###.... +#...##.#........#..#...##..#..# +...##..#....#....#.#.#...#.#... +#......#.....#....###......##.. +.....#.........####...##..#.... +.......#...##...#..#..#.#...... +.#.#....#.....#.......#........ +...##...#....##..#.....###..... +.#....#........##......#....#.# +.........#.#.#.#...........#.#. +....#.#..##......#.#.#..##..... +.........#.....##....#......... +....#.............#...........# +...#..##........#.....###...... +#....#....#......#..#..#..#.#.. +#......##.....#..#....#..#.#... +#..............#....#.#....###. +..##..#..#...#...##........##.. +..#.##....#..#......###..#..... diff --git a/2020/day3/day3.go b/2020/day3/day3.go new file mode 100644 index 0000000..081eb18 --- /dev/null +++ b/2020/day3/day3.go @@ -0,0 +1,75 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "log" +) + +func main() { + f, _ := os.Open("data") + defer f.Close() + + // arbitrary max length + first_line := make([]byte, 255) + max_le, _ := f.Read(first_line) + repeat_after := 0 + for i, c := range first_line { + if c == '\n' { + repeat_after = i + break + } + if i == max_le { + log.Fatal("line too long!") + } + } + + fmt.Printf("line length: %d\n", repeat_after) + // arbitrary max lines + themap := make([][]byte, 1000) + for i := range themap { + themap[i] = make([]byte, repeat_after) + } + + f.Seek(0, 0) + scanner := bufio.NewScanner(f) + ln := 0 + for scanner.Scan() { + copy(themap[ln], scanner.Bytes()) + ln += 1 + } + + // movement: right,down + // 1,1 - 3,1 - 5,1 - 7,1 + counts := []int{0, 0, 0, 0} + hoff := []int{1, 3, 5, 7} + // 1,2 + count2 := 0 + // (v,h): vertical and horizontal + for v := 0; v < ln; v++ { + for i := range counts { + h:= (v * hoff[i]) % repeat_after + if themap[v][h] == '#' { + counts[i]++ + } + } + + if v % 2 == 0 { + h := (v / 2) % repeat_after + if themap[v][h] == '#' { + count2++ + } + } + } + + // part 1 + fmt.Printf("total trees: %d\n", counts[1]) + // part 2 + mul := 1 + for _, v := range counts { + mul *= v + } + mul *= count2 + fmt.Printf("product of total trees: %d\n", mul) +} diff --git a/2020/day4/data b/2020/day4/data new file mode 100644 index 0000000..c55a2a9 --- /dev/null +++ b/2020/day4/data @@ -0,0 +1,1129 @@ +eyr:2029 byr:1931 hcl:z cid:128 +ecl:amb hgt:150cm iyr:2015 pid:148714704 + +byr:2013 hgt:70cm pid:76982670 ecl:#4f9a1c +hcl:9e724b eyr:1981 iyr:2027 + +pid:261384974 iyr:2015 +hgt:172cm eyr:2020 +byr:2001 hcl:#59c2d9 ecl:amb cid:163 + +eyr:2024 hcl:#b6652a +cid:340 +byr:1929 ecl:oth iyr:2014 pid:186640193 +hgt:193in + +iyr:2015 eyr:2024 hgt:184cm +ecl:blu hcl:#a97842 byr:1959 pid:932817398 + +iyr:1933 hcl:7c63aa cid:72 eyr:2028 +ecl:hzl +byr:2009 hgt:164cm pid:104496116 + +byr:1980 +hgt:181cm pid:192793676 hcl:8f6ae6 iyr:2021 eyr:1978 + +pid:#63f479 hgt:75cm +hcl:z iyr:1956 +byr:2024 ecl:#051344 + +byr:2014 pid:159cm +hgt:161cm +ecl:#b4eef2 +iyr:2027 eyr:1933 hcl:743b1a + +cid:79 hgt:172cm byr:1932 eyr:2020 pid:127319843 hcl:#6b5442 iyr:2017 ecl:brn + +ecl:gry eyr:2020 byr:1976 +pid:093137171 iyr:2012 hgt:178cm hcl:#733820 + +byr:1933 hcl:#733820 hgt:165cm eyr:2027 iyr:2018 ecl:oth pid:0952910465 + +iyr:2014 +byr:1965 pid:304542033 +eyr:2032 +ecl:brn hgt:153in cid:259 hcl:z + +byr:2004 ecl:amb iyr:2013 +hcl:#a97842 +hgt:68in +pid:248926471 eyr:1930 + +pid:048596900 iyr:2021 byr:2021 eyr:2021 cid:104 +hcl:c3c9e0 ecl:hzl +hgt:75cm + +pid:590195280 cid:159 byr:1951 hcl:#ceb3a1 ecl:brn iyr:2012 hgt:189cm eyr:2024 + +iyr:2015 pid:639647361 hcl:#b6652a +hgt:151cm byr:1957 cid:284 +ecl:gry +eyr:2026 + +ecl:blu hgt:175cm pid:462959720 hcl:#602927 iyr:2014 byr:1972 +eyr:2023 + +ecl:blu eyr:2023 hgt:175cm +pid:090406335 hcl:#b6652a iyr:2012 byr:1921 + +eyr:2025 hcl:#733820 +pid:775468504 ecl:hzl byr:1934 hgt:187cm iyr:2019 + +ecl:#b35d5b hgt:121 hcl:z iyr:2002 eyr:2034 +byr:2014 + +ecl:hzl byr:2026 hgt:77 iyr:1952 +hcl:#a97842 pid:#1461ed +eyr:1921 + +iyr:2019 +hgt:171in eyr:2040 pid:788162609 ecl:grn byr:2023 + +hcl:#efcc98 eyr:2039 hgt:158cm byr:2026 pid:216112069 + +ecl:blu hcl:#fffffd eyr:2020 pid:496018604 +byr:1982 hgt:168cm +cid:70 iyr:2016 + +eyr:2031 iyr:1958 +hcl:#c0946f hgt:181in ecl:#f88f2c pid:7896132641 + +byr:1933 cid:118 eyr:2037 hcl:#cfa07d iyr:2030 +ecl:#686f76 hgt:170 + +iyr:2010 +hgt:161cm ecl:grn byr:1958 hcl:#7d3b0c +pid:523557068 + +hcl:ba3af2 pid:157cm eyr:2037 cid:135 ecl:zzz hgt:153 byr:2030 + +ecl:grn byr:1967 cid:191 +iyr:2012 hcl:#866857 +pid:822899368 hgt:152cm eyr:2024 + +iyr:2015 +cid:343 hcl:#6b5442 pid:119981062 hgt:67in eyr:2027 +ecl:gry +byr:2001 + +pid:#c68245 ecl:blu hgt:107 hcl:74f3fb eyr:1996 iyr:1955 byr:2025 + +hgt:63cm eyr:1925 +iyr:2019 byr:2013 pid:#3ab227 ecl:#e33d1d hcl:#efcc98 + +byr:1941 eyr:2029 iyr:2011 hgt:159cm +hcl:#602927 +ecl:brn cid:245 pid:977877701 + +pid:575539099 +eyr:2031 byr:1987 ecl:oth hcl:#cfa07d +iyr:2017 +hgt:69cm + +pid:563180951 hgt:153cm ecl:amb iyr:2016 +byr:1951 hcl:#341e13 eyr:2029 +cid:277 + +hcl:#623a2f iyr:2011 hgt:171cm byr:1929 ecl:oth +eyr:2024 pid:959212059 + +byr:1943 ecl:#3925f3 hgt:68cm pid:155cm cid:127 eyr:2011 +hcl:2a53fd +iyr:2030 + +hgt:160in byr:2014 pid:7846412647 +hcl:2d18c8 +ecl:#8655df eyr:2034 iyr:2023 + +byr:1932 hgt:170cm cid:331 eyr:2020 pid:52551410 ecl:gry +iyr:2013 +hcl:#c6944c + +hcl:#888785 pid:177cm ecl:oth +hgt:160cm eyr:2021 byr:1957 +iyr:2013 + +iyr:2020 pid:6245137 eyr:2027 cid:111 hgt:181cm +byr:2024 ecl:gmt hcl:fe8828 + +pid:648300488 cid:230 hcl:#efcc98 +byr:1989 hgt:159cm +ecl:gry iyr:2015 +eyr:2030 + +iyr:1929 cid:144 hgt:168in pid:185cm +byr:2017 hcl:z eyr:1960 ecl:#d406d2 + +hcl:3a4933 +hgt:155cm +pid:337576945 byr:1925 iyr:2014 ecl:brn eyr:2026 + +pid:170cm cid:291 eyr:2017 iyr:2017 hgt:177cm hcl:z ecl:gmt + +pid:271148544 hgt:163cm +byr:1926 hcl:#fffffd iyr:2013 +eyr:2022 + +hgt:64in iyr:2030 ecl:#15c6b5 eyr:2028 byr:2025 +pid:3426144 + +eyr:1923 byr:1943 hcl:#64d609 iyr:2017 pid:154cm hgt:160cm ecl:brn + +hcl:#602927 hgt:170cm ecl:utc iyr:1954 pid:370180054 +byr:1925 cid:162 +eyr:1983 + +hcl:#888785 byr:1932 hgt:163cm +eyr:2026 +ecl:grn pid:799844918 + +eyr:2029 +ecl:blu cid:231 hgt:157cm +pid:609233861 +hcl:#462640 +byr:1940 iyr:2012 + +iyr:2025 +byr:2004 pid:#e92a77 +eyr:2014 cid:78 +ecl:zzz hgt:187in hcl:76be6e + +eyr:2027 iyr:2012 ecl:brn byr:1955 pid:128923308 +cid:313 hgt:156cm hcl:#623a2f + +hcl:#ceb3a1 +hgt:178cm byr:1984 +pid:121442385 eyr:2036 iyr:2014 ecl:hzl + +eyr:2038 ecl:#c6149f iyr:1983 +cid:304 hgt:193 byr:2019 +hcl:z pid:5871630079 + +iyr:2028 eyr:2002 +hgt:146 +hcl:#623a2f +pid:390145814 +byr:1937 + +pid:923652966 ecl:amb +eyr:2027 hgt:174cm byr:1932 iyr:2014 +hcl:#fffffd + +iyr:2026 cid:202 byr:1995 hcl:69c01a +hgt:164cm eyr:2020 ecl:hzl + +hgt:156cm +byr:2004 +pid:537532371 +hcl:z iyr:1988 +eyr:2024 +ecl:utc + +iyr:2018 byr:1924 hcl:#602927 cid:132 pid:947815343 eyr:2030 ecl:grn + +byr:1978 hcl:#c0946f iyr:2012 hgt:67cm +eyr:2032 pid:929470763 ecl:amb + +eyr:2028 +pid:545502229 ecl:gry +hcl:#866857 hgt:182cm +byr:1964 iyr:2016 + +hcl:z cid:82 hgt:108 byr:2010 pid:#1650b3 eyr:2020 iyr:2017 ecl:hzl + +iyr:2018 +hgt:61cm +ecl:lzr byr:1980 hcl:1d4bc2 cid:306 +pid:763925614 eyr:2006 + +byr:2021 eyr:2029 +pid:610596568 +ecl:oth +hcl:#7d3b0c +iyr:2010 cid:83 hgt:156cm + +cid:181 ecl:hzl +hcl:#8d79d2 +hgt:192cm +byr:1958 iyr:2014 eyr:2026 pid:118367138 + +byr:1978 +eyr:2020 +iyr:2025 hgt:176cm +ecl:grn hcl:faedc2 + +hgt:156cm eyr:1989 pid:#7acc45 cid:235 hcl:1332ba +ecl:#2b7525 iyr:1950 byr:1943 + +pid:147647267 hcl:#341e13 +ecl:hzl +iyr:2019 +byr:1975 +hgt:153cm eyr:2020 + +iyr:2026 hgt:170cm ecl:oth +byr:2017 pid:047129729 +eyr:2024 hcl:#733820 + +hcl:#fffffd byr:1960 ecl:gry eyr:2023 +iyr:2013 hgt:186cm pid:145757697 + +hgt:64in +ecl:amb +byr:1930 pid:808797855 iyr:2019 +hcl:#b6652a eyr:2022 + +eyr:2030 +hcl:z iyr:2013 hgt:165cm ecl:#5ba775 +pid:168306092 byr:1988 + +eyr:2026 ecl:gry iyr:2020 hcl:#b6652a hgt:177cm +byr:1991 pid:780666689 + +iyr:2020 +pid:#d08e64 eyr:2010 hcl:411b04 cid:140 hgt:76cm ecl:grn byr:2005 + +iyr:1945 +pid:973836167 ecl:zzz +hcl:z hgt:181in byr:2008 eyr:1993 + +cid:58 eyr:2024 hgt:159cm byr:1977 ecl:hzl pid:402427328 +hcl:#888785 +iyr:2012 + +pid:533381616 byr:2027 +eyr:2040 hgt:60cm iyr:2023 hcl:z +ecl:gmt + +pid:229044973 cid:149 hgt:178in eyr:2029 +byr:2006 ecl:dne iyr:2012 +hcl:bf4bc2 + +hgt:161cm byr:1973 ecl:oth iyr:2015 hcl:#341e13 pid:658452720 +eyr:2024 + +hcl:#efcc98 hgt:156cm +byr:1931 iyr:1997 pid:0548175409 ecl:utc + +pid:575623915 iyr:2017 eyr:2023 hcl:#733820 byr:1938 +ecl:blu +hgt:185cm + +hcl:#55ebaa +hgt:157cm ecl:blu byr:1945 +pid:946614649 +eyr:2020 iyr:2012 + +hgt:158cm hcl:#b80425 iyr:2017 eyr:2025 ecl:gry +byr:1944 pid:838975683 + +hcl:#41731c iyr:2020 byr:1971 ecl:oth +hgt:186cm +eyr:2030 pid:495358045 + +pid:3884291521 +eyr:2037 hgt:74cm byr:2003 ecl:hzl iyr:2022 hcl:#888785 cid:124 + +hgt:175cm cid:340 byr:1921 +pid:183491348 +iyr:2017 ecl:brn hcl:#602927 eyr:2028 + +hcl:#cfa07d +hgt:161cm byr:2006 +eyr:2024 +pid:109854634 +ecl:xry iyr:2024 + +ecl:#ec6311 hcl:z iyr:2015 +pid:#783693 +eyr:1932 +cid:271 +hgt:82 + +ecl:grn +hgt:164cm hcl:#efcc98 eyr:2020 pid:824236769 +byr:1952 iyr:2014 + +eyr:1964 pid:85558869 byr:2017 hcl:c81d94 +iyr:2028 +hgt:63cm +ecl:#c00640 cid:115 + +byr:2010 +pid:431600716 +hcl:z hgt:112 ecl:#3057e9 eyr:2027 iyr:2017 cid:91 + +byr:2026 +eyr:2037 +pid:3800489571 ecl:grn +cid:91 hcl:94b4d1 hgt:59cm + +cid:199 byr:2030 +iyr:2021 +hcl:c55653 +hgt:168cm +pid:160cm + +hgt:68cm +byr:2025 iyr:2023 eyr:1983 +hcl:0004d4 ecl:#19fca6 pid:89901951 + +hgt:170cm byr:2012 +eyr:1981 hcl:c95b58 +pid:#d28b3f cid:302 iyr:1953 ecl:#151ea4 + +hcl:#6b5442 eyr:2024 hgt:161cm +cid:210 ecl:#793ac0 +pid:480283173 +iyr:2019 byr:1967 + +cid:82 ecl:amb iyr:2017 eyr:2023 byr:1980 hgt:59in hcl:#888785 pid:323524654 + +hcl:#341e13 hgt:154cm +iyr:2015 eyr:2023 +byr:1953 ecl:blu pid:872964523 + +iyr:2019 +byr:1945 hcl:#efcc98 +hgt:155in +ecl:#1608c7 eyr:2030 pid:406045604 + +ecl:lzr byr:2015 iyr:1938 +eyr:2026 hcl:z +pid:542894703 hgt:185 + +eyr:2021 hcl:#cfa07d ecl:hzl hgt:82 +iyr:2018 byr:1932 +pid:661993261 + +ecl:brn hcl:#602927 +hgt:193cm pid:572216250 +byr:1929 eyr:2020 iyr:2010 cid:206 + +ecl:amb +eyr:2025 +pid:932260335 byr:1978 iyr:2012 +hcl:#cfa07d +cid:260 hgt:67in + +pid:635410614 +byr:1948 hgt:156cm hcl:#071bc0 eyr:2026 +ecl:grn +cid:275 +iyr:2014 + +hcl:#8a4888 byr:1986 +iyr:2010 ecl:amb cid:113 +pid:974757414 hgt:174cm +eyr:2024 + +byr:1934 ecl:amb iyr:2016 +pid:280206549 hgt:176cm +eyr:2020 hcl:#fffffd + +pid:544634927 +eyr:2021 hgt:188cm byr:1947 iyr:2020 +hcl:#008716 ecl:oth +cid:97 + +eyr:2026 pid:863010622 +byr:1978 hcl:#b6652a hgt:157cm cid:323 iyr:2020 ecl:blu + +cid:105 +byr:1926 +hcl:#6b5442 pid:049198636 eyr:2026 hgt:75in +iyr:2018 ecl:blu + +eyr:2038 hgt:76cm byr:2020 pid:9036865757 iyr:2025 +ecl:#a2c975 +hcl:z +cid:340 + +pid:425619875 cid:263 byr:1935 +eyr:2028 hgt:192cm iyr:2010 hcl:#a6ddfc ecl:hzl + +cid:107 hgt:189cm +hcl:#733820 ecl:blu +eyr:2028 iyr:2020 pid:814895947 + +cid:96 hgt:74in +hcl:z +pid:170cm ecl:#0240fd byr:2004 iyr:2013 eyr:1936 + +ecl:blu +eyr:2027 hcl:#341e13 +iyr:2020 +cid:94 +hgt:174cm + +iyr:2013 ecl:amb +eyr:2030 hcl:#b6652a +byr:1964 +pid:329942894 + +byr:1995 ecl:hzl eyr:2030 +hgt:177cm hcl:#341e13 +cid:64 + +eyr:2027 pid:708191313 +ecl:#390609 byr:2022 iyr:2010 cid:292 hgt:129 +hcl:#733820 + +hcl:#733820 ecl:hzl eyr:2030 +iyr:2011 +hgt:156cm +byr:2002 pid:932464949 + +iyr:1941 +byr:2027 ecl:xry eyr:1949 pid:82479270 +hgt:175 hcl:z +cid:157 + +byr:1927 pid:708954312 eyr:2028 ecl:oth hgt:167cm hcl:#602927 iyr:2011 + +cid:125 eyr:2034 iyr:2030 +hgt:116 byr:2030 +hcl:f773ce pid:#d24ed1 ecl:lzr + +hcl:#efcc98 byr:1947 pid:423105162 ecl:brn iyr:2019 hgt:154cm +eyr:2026 +cid:174 + +iyr:2017 +ecl:gry +hcl:#341e13 +pid:314487906 eyr:2038 hgt:171cm byr:2014 + +pid:630479640 ecl:brn hgt:163cm +iyr:2013 eyr:2028 byr:1998 hcl:#866857 + +iyr:2013 hcl:z byr:2016 +ecl:#43d879 pid:996281170 +cid:200 hgt:153 eyr:2030 + +byr:2023 +pid:081908248 iyr:2020 +eyr:2035 +hgt:175in ecl:grt hcl:30ab42 + +iyr:2018 byr:1995 eyr:2029 ecl:grn pid:882123182 hgt:62cm hcl:#fffffd + +byr:1978 hcl:z +iyr:1923 ecl:blu eyr:2037 pid:#1f3467 hgt:186cm + +cid:264 ecl:#ab07c5 iyr:1927 hcl:2d6f9c +hgt:74cm byr:2008 pid:874594495 eyr:2035 + +ecl:lzr hgt:69cm +hcl:76854c cid:336 pid:7830555583 +iyr:1920 +byr:2021 eyr:2038 + +hgt:160cm byr:2029 ecl:#7f9d1b hcl:z iyr:1975 +pid:652466273 +eyr:2031 + +ecl:oth +eyr:2027 iyr:2019 pid:544347482 +byr:1988 hgt:182cm hcl:#cfa07d + +hgt:176cm iyr:2016 hcl:ec1dc3 +pid:521230755 byr:2030 ecl:amb eyr:2025 + +pid:005216805 byr:1951 +ecl:hzl hcl:#efcc98 eyr:2022 +iyr:2016 +hgt:154cm + +byr:1943 hcl:#866857 +eyr:1984 hgt:64cm +pid:3105984 iyr:1997 +ecl:lzr + +eyr:2024 +byr:1931 pid:929699878 hgt:169cm cid:81 hcl:#efcc98 + +iyr:2011 pid:558972589 +hgt:163cm cid:155 eyr:2025 byr:1952 ecl:oth +hcl:#c0946f + +pid:787560595 eyr:2036 +hcl:#888785 byr:1999 iyr:1971 ecl:blu + +hgt:165in pid:032310066 +eyr:1926 byr:1954 ecl:brn hcl:41964f iyr:2023 + +hcl:#733820 +pid:563740385 +hgt:184cm +iyr:1959 +ecl:gmt cid:242 byr:1999 + +pid:4949046383 byr:2011 hcl:fcf63b +ecl:hzl +hgt:174in +iyr:2023 eyr:1939 + +cid:331 +ecl:grt hcl:z eyr:2003 hgt:172in byr:2012 iyr:1954 pid:#9f4663 + +cid:223 byr:1939 eyr:2025 +ecl:oth hgt:161cm iyr:2015 pid:214576789 hcl:#866857 + +ecl:oth pid:912009529 byr:1968 hgt:161cm +hcl:#ceb3a1 eyr:2023 iyr:2017 + +pid:858541281 hgt:150cm eyr:2021 +iyr:2013 ecl:gry +hcl:#fffffd byr:1959 + +ecl:#0024e0 byr:2006 cid:107 +iyr:2015 hcl:684416 hgt:94 pid:152cm eyr:2031 + +byr:1987 hcl:z +ecl:gry pid:#246fe1 hgt:65cm eyr:1992 iyr:2020 + +pid:426999585 +ecl:hzl byr:1949 hcl:#888785 hgt:191cm +iyr:2020 eyr:2020 + +byr:1951 hcl:#623a2f +cid:308 ecl:hzl +hgt:174cm pid:226138254 +eyr:2028 +iyr:2018 + +ecl:brn hgt:62in +eyr:2020 hcl:#ceb3a1 pid:650916481 +byr:1940 +iyr:2018 + +hcl:#efcc98 ecl:brn +byr:1940 eyr:2024 pid:#68d3ab +hgt:177cm cid:83 +iyr:2017 + +pid:9704738756 hcl:#fffffd eyr:1925 +iyr:2019 byr:1929 ecl:blu hgt:191cm + +ecl:brn hgt:151cm hcl:#c0946f iyr:2018 pid:602505609 eyr:2020 +byr:1974 + +hgt:178cm +eyr:2023 byr:1922 +iyr:2013 +hcl:#fffffd pid:205291054 ecl:blu + +byr:1985 +iyr:2016 hcl:#ceb3a1 hgt:161cm eyr:2030 ecl:amb +pid:871809978 + +iyr:2027 ecl:#d9c9cb hgt:110 +eyr:2034 +hcl:99d4ee pid:13355969 cid:168 + +ecl:utc byr:2019 +iyr:2016 hgt:173in cid:266 +hcl:z eyr:2033 +pid:1835189643 + +pid:364874100 ecl:amb hcl:#6b5442 hgt:184cm +iyr:2017 eyr:2026 byr:1920 cid:127 + +ecl:dne eyr:2020 +byr:2018 cid:262 +iyr:2010 hgt:60cm +pid:95409983 hcl:z + +eyr:2026 +pid:135963889 iyr:2018 hcl:#ceb3a1 +ecl:amb + +hcl:#341e13 eyr:2028 iyr:2014 byr:1978 +cid:309 +pid:503628987 +ecl:oth hgt:159cm + +hcl:#a97842 +pid:171194014 hgt:193cm eyr:2023 +byr:1945 ecl:grt +iyr:2019 + +eyr:1967 cid:135 hcl:z +ecl:gmt +iyr:2024 pid:#a87744 +byr:2023 hgt:168cm + +pid:169cm +cid:337 ecl:hzl hcl:#888785 byr:1927 hgt:153cm +iyr:2022 eyr:2020 + +byr:1963 hcl:#fffffd eyr:2021 +hgt:62in pid:702188504 iyr:2013 +ecl:hzl + +iyr:2024 ecl:amb hcl:#ceb3a1 +eyr:2017 pid:49752568 hgt:179cm byr:1938 + +byr:2006 +ecl:#08021a +eyr:2022 pid:520309937 +hgt:61in hcl:#ceb3a1 +iyr:2013 + +hgt:150cm hcl:#733820 byr:1971 ecl:zzz cid:347 +iyr:2020 eyr:2020 pid:6028818045 + +byr:2005 hgt:69cm +ecl:lzr hcl:z iyr:2009 eyr:2038 pid:79626157 + +iyr:2020 byr:2015 pid:882923693 hcl:#888785 eyr:2030 +ecl:xry hgt:65in + +hcl:z hgt:187cm pid:4397913655 iyr:1973 eyr:1925 +ecl:#93ae1a + +hgt:169cm +iyr:2019 eyr:2023 pid:678937529 +ecl:blu byr:1998 hcl:#fffffd + +cid:87 hcl:#efcc98 +ecl:#e56390 +iyr:2013 hgt:191in +eyr:2027 pid:923358773 byr:1960 + +hgt:190cm byr:1939 +cid:55 eyr:2026 ecl:blu hcl:#623a2f pid:363917612 +iyr:2012 + +pid:177cm hgt:165cm cid:276 eyr:2002 byr:2010 hcl:#7bea4c iyr:2017 +ecl:grt + +byr:2023 eyr:2031 +iyr:1987 hgt:172 hcl:z +pid:4973557135 ecl:#7517e2 + +eyr:2036 iyr:1989 ecl:#ef5492 hgt:188in pid:#b50065 +hcl:92e9ee byr:2015 + +pid:873654822 iyr:2016 cid:310 +hgt:76in +eyr:2029 hcl:#888785 byr:1958 +ecl:brn + +iyr:2013 ecl:amb byr:2024 +hgt:166cm +cid:221 eyr:2040 pid:358648642 hcl:#733820 + +hgt:181cm cid:295 ecl:blu eyr:2027 +iyr:2016 +byr:1932 +hcl:#2502ba +pid:177357899 + +pid:154588649 eyr:2028 +byr:1945 iyr:2020 +ecl:amb cid:220 +hgt:189cm hcl:#a97842 + +iyr:2011 +eyr:2030 cid:143 byr:1998 pid:403108989 +ecl:oth hcl:#6b5442 +hgt:151cm + +pid:071042426 cid:217 iyr:2017 ecl:grn byr:1989 eyr:2026 hgt:193cm hcl:#7d3b0c + +eyr:2025 +iyr:2025 pid:3942412883 hcl:#cfa07d cid:237 ecl:utc hgt:182 + +iyr:2012 eyr:1982 byr:2029 pid:8573047090 +hgt:159in ecl:#1e0124 hcl:#b6652a + +hcl:53c64f ecl:gmt iyr:1984 byr:2029 +hgt:59cm +pid:#106076 eyr:2031 + +hcl:#733820 iyr:2019 +eyr:2031 +pid:706963298 +hgt:134 +byr:2004 + +byr:2012 cid:161 +eyr:2039 ecl:gry hgt:61cm iyr:1949 pid:870113802 hcl:z + +byr:1961 eyr:2023 pid:353075198 iyr:2020 hcl:#888785 ecl:oth +hgt:163cm + +byr:2001 iyr:2015 +hgt:159cm hcl:#623a2f ecl:#3303fc +pid:86352609 eyr:2030 + +pid:392475721 ecl:brn byr:1927 iyr:2014 eyr:2024 hcl:#fffffd + +hgt:160cm eyr:2022 byr:1979 iyr:2010 +pid:974489456 +hcl:#efcc98 + +ecl:grn eyr:2024 +hgt:166cm byr:1961 +pid:221051556 +hcl:#6b5442 +iyr:2028 + +iyr:2010 cid:156 +byr:2005 hgt:155cm ecl:amb eyr:1988 +hcl:#866857 +pid:169cm + +eyr:2038 byr:1991 pid:#9b82ce +iyr:2027 hcl:z +cid:278 hgt:59cm ecl:#179d81 + +ecl:blu hgt:151cm +iyr:2013 +cid:117 pid:129843687 hcl:#c429e7 byr:1961 +eyr:2022 + +hcl:#602927 byr:1996 pid:507775673 eyr:2020 hgt:153cm ecl:oth +cid:251 iyr:2010 + +hgt:170cm ecl:oth iyr:2010 eyr:2025 hcl:#602927 byr:1983 pid:113809908 + +hcl:#c0946f pid:172142380 +iyr:2017 byr:1926 +hgt:190cm eyr:2028 +ecl:brn + +pid:812443511 hcl:#6b5442 eyr:2021 ecl:amb +cid:60 iyr:2017 hgt:157cm byr:1926 + +hgt:177cm +ecl:gry eyr:2022 hcl:#888785 pid:570572334 byr:1943 iyr:2017 + +pid:#967cbc hcl:z byr:2020 ecl:oth eyr:2035 iyr:2015 +cid:99 hgt:65cm + +iyr:2019 pid:285935311 hcl:#4c1ee4 byr:1954 eyr:2028 hgt:157cm + +ecl:xry eyr:1939 +pid:192cm +hgt:114 +hcl:b97555 byr:2004 iyr:1970 + +ecl:grn byr:2021 iyr:2030 +hcl:z pid:305489303 hgt:61cm eyr:2020 + +eyr:2036 hgt:179cm +pid:#8be5f5 byr:1981 +hcl:#cb5848 iyr:2015 + +iyr:2011 ecl:oth hgt:176cm cid:344 pid:539941547 hcl:#efcc98 + +eyr:1987 ecl:amb +byr:2029 pid:046017350 +cid:182 iyr:2011 hcl:z hgt:191cm + +iyr:2019 byr:1948 eyr:2020 ecl:hzl hgt:176cm hcl:#733820 pid:235101182 + +ecl:hzl +eyr:2029 pid:262843012 hgt:76in hcl:#efcc98 iyr:2015 byr:1931 + +iyr:2011 ecl:blu hgt:184cm +byr:1945 +hcl:#c0946f pid:105042852 + +iyr:2010 +pid:485638522 hcl:949a37 eyr:2030 +hgt:193cm +ecl:gry byr:2021 + +pid:565896801 eyr:2029 hcl:#fffffd ecl:amb iyr:2016 byr:1977 +hgt:170cm + +byr:1987 +hcl:#c0946f pid:931311386 +iyr:2010 eyr:2022 + +eyr:2030 +hgt:177cm hcl:#a97842 byr:1978 +ecl:hzl pid:358177000 +iyr:2014 + +iyr:2025 +pid:3639383157 cid:82 hcl:f2aec0 hgt:179cm +eyr:1944 byr:1969 +ecl:#e167d3 + +hgt:107 ecl:gmt iyr:2030 hcl:#866857 byr:2026 eyr:1990 pid:#87773e + +cid:220 hcl:z iyr:1921 hgt:65cm byr:1998 ecl:#34397f eyr:2035 + +hcl:44e552 pid:#6f341e ecl:#59aeb1 +eyr:1926 hgt:187 iyr:1988 +byr:1991 + +hcl:z hgt:70cm pid:653386115 iyr:1964 byr:2026 cid:103 +ecl:#b81c45 eyr:2034 + +hcl:#623a2f cid:307 pid:204266921 hgt:172cm +iyr:2012 +ecl:hzl +eyr:2021 +byr:1984 + +hgt:192cm +byr:1930 pid:39349843 hcl:#866857 iyr:2013 cid:130 ecl:blu eyr:1962 + +cid:97 eyr:2036 pid:#279c0b ecl:dne hgt:186in iyr:1973 hcl:691266 + +byr:2026 hgt:185cm hcl:z ecl:grt pid:#562f7a eyr:1986 iyr:2029 + +ecl:brn +hcl:#b6652a eyr:2028 +pid:570023672 +byr:1988 hgt:162cm iyr:2015 + +hgt:180in ecl:zzz hcl:5b1477 byr:2024 +eyr:2028 +pid:#b03174 + +pid:157cm eyr:1989 hgt:188cm +iyr:2015 +hcl:3362a9 ecl:gry byr:2027 + +pid:111584950 +byr:1941 ecl:grn iyr:2013 hgt:179cm hcl:#866857 +eyr:2024 + +ecl:#7f4baa +iyr:2015 hcl:de1367 +eyr:2024 byr:1959 +pid:#cf4e78 hgt:60cm + +byr:2024 eyr:1953 pid:21579220 +hgt:179 +cid:94 +hcl:#a97842 +iyr:1977 ecl:xry + +hgt:179cm eyr:2020 +ecl:hzl hcl:#efcc98 +pid:905622096 byr:1929 + +ecl:oth +byr:2001 eyr:2008 iyr:2020 +hcl:#ceb3a1 pid:244298637 hgt:160cm + +eyr:2030 +byr:1972 hcl:#341e13 +ecl:grn iyr:2014 pid:274475554 hgt:71in + +byr:1938 hcl:z iyr:1956 pid:153cm hgt:62cm ecl:grt +eyr:2036 + +hgt:177cm cid:276 iyr:1921 hcl:19aa96 pid:843799864 eyr:2033 +ecl:#812d68 + +pid:686496844 +ecl:brn hcl:#733820 +byr:1948 iyr:2010 eyr:2020 +hgt:164cm + +pid:39436322 ecl:blu hcl:25b3d4 hgt:185in +iyr:2019 byr:1959 eyr:2022 + +pid:119603708 hcl:#866857 byr:1983 hgt:157cm iyr:1978 ecl:hzl eyr:1945 + +cid:331 hcl:z iyr:2017 +pid:255988517 +byr:2015 +eyr:2020 ecl:amb +hgt:171 + +hgt:180cm iyr:2013 ecl:brn +hcl:#602927 byr:1943 +pid:898265221 eyr:2025 + +eyr:2024 +hgt:163cm +pid:892793767 byr:1971 ecl:oth iyr:2013 cid:119 hcl:#02f6b3 + +byr:1920 cid:221 +pid:#7515a7 hgt:160in +eyr:1921 iyr:1983 hcl:z + +byr:2029 hcl:z hgt:75cm eyr:1975 pid:184cm iyr:1992 ecl:dne + +iyr:1990 +hgt:174in eyr:1961 ecl:brn +hcl:#a3313e byr:2029 + +hgt:191cm eyr:2026 iyr:2019 ecl:brn +byr:1930 hcl:#7d3b0c cid:174 + +ecl:amb iyr:2015 hgt:163cm +pid:664966673 hcl:#602927 eyr:2026 cid:229 byr:1941 + +pid:3123244013 eyr:2037 iyr:2022 hcl:103dfa +hgt:156cm byr:2027 ecl:gmt cid:195 + +cid:151 ecl:blu pid:693382940 +iyr:2011 byr:1954 +hgt:170cm eyr:2030 hcl:#866857 + +hcl:#341e13 eyr:2023 byr:1948 iyr:2010 pid:607929427 +ecl:oth hgt:160cm + +hcl:#c0946f +ecl:brn +hgt:189cm +cid:116 iyr:2013 pid:277606931 +byr:1975 + +eyr:2027 +cid:206 ecl:gry iyr:2010 hcl:#866857 byr:1997 hgt:190cm pid:687577894 + +eyr:2029 iyr:2015 pid:681485527 +byr:1925 hgt:152cm +ecl:amb hcl:#341e13 + +eyr:2030 +hcl:#c396d9 +hgt:159cm pid:686268817 +ecl:brn byr:1983 +iyr:2017 + +eyr:2038 byr:2012 +cid:303 +iyr:1941 hcl:z ecl:utc pid:203595168 +hgt:71cm + +pid:863355278 hcl:#888785 +iyr:2018 +byr:1953 eyr:2022 hgt:167cm +ecl:amb + +pid:141244310 eyr:2025 hcl:#733820 ecl:amb hgt:154cm cid:61 iyr:2017 +byr:1929 + +pid:361065637 +hcl:#623a2f byr:1964 iyr:2015 eyr:2027 ecl:gry hgt:67in + +cid:117 ecl:brn iyr:2025 byr:1982 +hcl:#ceb3a1 hgt:185cm +pid:34652522 + +cid:275 ecl:#7a4722 eyr:2001 byr:2018 iyr:1995 +hgt:105 +pid:95250112 hcl:z + +iyr:2017 ecl:amb hgt:152cm hcl:#733820 cid:57 eyr:2020 pid:701621326 +byr:1944 + +hcl:#18171d +ecl:brn iyr:2015 hgt:175cm eyr:2028 pid:311636591 cid:113 +byr:1979 + +ecl:grn +hgt:185cm +pid:920998407 iyr:2016 byr:1930 eyr:2029 hcl:#7d3b0c + +iyr:2021 eyr:1931 +hcl:z byr:2010 +hgt:177in +pid:#cfb659 ecl:zzz + +cid:171 hcl:#888785 iyr:2010 byr:1970 ecl:hzl +pid:141430645 hgt:160cm +eyr:2026 + +hgt:172cm ecl:gry +pid:428207256 cid:237 hcl:#733820 iyr:2012 +eyr:2027 byr:1951 + +hgt:70cm cid:76 ecl:#c544c3 byr:2019 +pid:6133497812 +hcl:#efcc98 +eyr:2037 iyr:2015 + +hgt:176in pid:582383714 byr:1980 ecl:amb hcl:08097e iyr:2020 eyr:2021 + +ecl:oth +eyr:2024 +hgt:176cm byr:1923 +iyr:2014 pid:737058734 +hcl:#b6652a cid:203 + +ecl:amb +eyr:2029 +hgt:186cm +pid:440986981 iyr:2010 hcl:#cfa07d +byr:1967 + +pid:8729818647 hcl:z +ecl:#ae70eb cid:168 hgt:161cm iyr:2030 +eyr:2020 byr:2022 + +hcl:#43a092 hgt:165cm byr:1961 +pid:026098019 +iyr:2019 eyr:2020 ecl:amb + +cid:154 hgt:192cm +eyr:2016 iyr:2030 +ecl:brn pid:#8e0762 byr:2020 + +hgt:175cm ecl:brn byr:1944 +pid:553456151 iyr:2016 eyr:2027 hcl:#085f41 + +ecl:gry +byr:1975 eyr:2025 cid:122 pid:111078821 +hcl:#b6652a iyr:2015 +hgt:151cm + +hgt:159cm pid:946458516 eyr:2020 hcl:#a97842 byr:1972 +iyr:2016 cid:88 ecl:oth + +eyr:2023 +cid:156 +byr:1999 +hgt:186cm hcl:#fffffd pid:499141155 +ecl:grn + +hcl:#888785 hgt:165cm pid:864544116 +ecl:gry byr:1937 +iyr:2020 eyr:2026 + +hgt:155cm +iyr:2018 ecl:blu +hcl:#a97842 +byr:1994 eyr:2024 + +eyr:2021 iyr:2019 hgt:175cm cid:127 byr:1982 hcl:#888785 ecl:amb + +eyr:2022 iyr:2011 ecl:blu +pid:202081532 hcl:z hgt:177in byr:1923 + +iyr:2017 cid:213 hcl:#fffffd +ecl:hzl +hgt:193cm pid:564823661 byr:1966 eyr:2030 + +hcl:#623a2f iyr:2014 hgt:177cm byr:1950 ecl:amb +cid:290 eyr:2025 pid:669369557 + +hgt:67cm +eyr:2028 ecl:brn +hcl:411b18 pid:222472243 + +byr:1981 ecl:gry hcl:#b6652a eyr:2033 iyr:1943 pid:832989613 hgt:167cm + +byr:1970 +cid:172 hcl:#64fbcb eyr:2007 +ecl:hzl pid:982450142 +hgt:61cm iyr:2019 + +eyr:2025 +hgt:161cm iyr:1962 +pid:394421140 +ecl:gry +cid:209 hcl:#efcc98 byr:2001 diff --git a/2020/day4/day4.bash b/2020/day4/day4.bash new file mode 100755 index 0000000..5f611e5 --- /dev/null +++ b/2020/day4/day4.bash @@ -0,0 +1,119 @@ +#!/bin/bash + +isyear() { + case $1 in + [[:digit:]][[:digit:]][[:digit:]][[:digit:]]) + ;; + *) + return 1 + ;; + esac +} + +check_pass() { + e= + + # ignore cid + for f in byr iyr eyr hgt hcl ecl pid + do + if [[ "$1" != *"${f}:"* ]]; then + return 1 + fi + done + + f= + + # validate each + for v in $1 + do + e=${v#*:} + case "$v" in + byr:*) + isyear $e || return 1 + [ $e -lt 1920 -o $e -gt 2002 ] && return 1 + ;; + iyr:*) + isyear $e || return 1 + [ $e -lt 2010 -o $e -gt 2020 ] && return 1 + ;; + eyr:*) + isyear $e || return 1 + [ $e -lt 2020 -o $e -gt 2030 ] && return 1 + ;; + hgt:*) + case $e in + *cm) + m=${e%cm} + [ $m -lt 150 -o $m -gt 193 ] && return 1 + ;; + *in) + m=${e%in} + [ $m -lt 59 -o $m -gt 76 ] && return 1 + ;; + *) + return 1 + ;; + esac + ;; + hcl:*) + case $e in + \#[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]) + ;; + *) + return 1 + ;; + esac + ;; + ecl:*) + case $e in + amb|blu|brn|gry|grn|hzl|oth) + ;; + *) + return 1 + ;; + esac + ;; + pid:*) + case $e in + [[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]) + ;; + *) + return 1 + ;; + esac + ;; + esac + done + + return 0 +} + +total_count=0 +invalid_count=0 + +total= +while read -r input +do + if [ -n "$input" ]; then + total+=" $input" + else + if ! check_pass "$total"; then + invalid_count=$(($invalid_count + 1)) + [ "$f" ] && echo missing $f $total + [ "$e" ] && echo bad value $e - $total + fi + total= + total_count=$(($total_count + 1)) + fi +done < data + +# count trailing data +total_count=$(($total_count + 1)) +if ! check_pass "$total"; then + invalid_count=$(($invalid_count + 1)) + [ "$e" ] && echo bad value $e - $total +fi + +echo "total: $total_count" +echo "inval: $invalid_count" +echo " val: $(($total_count - $invalid_count))" diff --git a/2020/day4/example-data b/2020/day4/example-data new file mode 100644 index 0000000..0ff208e --- /dev/null +++ b/2020/day4/example-data @@ -0,0 +1,13 @@ +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 diff --git a/2020/day4/invalid b/2020/day4/invalid new file mode 100644 index 0000000..a7fa5bb --- /dev/null +++ b/2020/day4/invalid @@ -0,0 +1,13 @@ +eyr:1972 cid:100 +hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 + +iyr:2019 +hcl:#602927 eyr:1967 hgt:170cm +ecl:grn pid:012533040 byr:1946 + +hcl:dab227 iyr:2012 +ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 + +hgt:59cm ecl:zzz +eyr:2038 hcl:74454a iyr:2023 +pid:3556412378 byr:2007 diff --git a/2020/day4/valid b/2020/day4/valid new file mode 100644 index 0000000..ca41800 --- /dev/null +++ b/2020/day4/valid @@ -0,0 +1,12 @@ +pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 +hcl:#623a2f + +eyr:2029 ecl:blu cid:129 byr:1989 +iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm + +hcl:#888785 +hgt:164cm byr:2001 iyr:2015 cid:88 +pid:545766238 ecl:hzl +eyr:2022 + +iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719 diff --git a/2020/day5/data b/2020/day5/data new file mode 100644 index 0000000..d9e3a32 --- /dev/null +++ b/2020/day5/data @@ -0,0 +1,816 @@ +FBFBFBFRRL +BFBBFFFRRL +FFBFFFFRLL +BFFFBBBRLL +BBFFBFBLLR +FFFFBBBRLR +FBBBBFFLRR +FBFFFBFRLL +FFFFBFFRRR +FFFBBFFRLR +BFBBBBFRLL +FBBFBFFLLL +FFFBFFBRRL +BFBFFBBLLL +FFBBFBBLLR +FFBFFBBRRL +BFBFBBBRRL +FFBFFBBLLL +BFFFBBBLRR +BFBFFBFRRR +BFFBFFBRRL +BFBFFFFLLR +FFFFBBBLRR +FFBBFBFRRR +BFFFBFBLLL +FBFFBBBRRL +FBBBBBBRRL +BBFBFFBLLL +BFFBFFFLLL +FBFFBBFLLR +FBFBFFBLRL +FFBFFFBRLR +FFBBBBFRLL +FBFBFFFLRL +FBBFBBFRLR +FFBBBBBLLL +FBFFBFBLLL +FBFFFBBRRR +BBFFBBFRRR +FBFFBFBRLL +FBBBFBBRRR +BFFFBFFRRL +FFBFBFBLLL +FBFBFFFRLR +FBBFBBBLLL +FFFBBBBLLL +FFFBFFBLLL +BFBFFBBLRR +FFBBFFFLLR +FFBBBBBLRR +BBFFFFBRLL +BFFFBBFLRR +BFBFFFBRRR +FBBFFFBLRR +BFBFBFFLLL +FBBFFBFRLL +FFBBBBFLRL +BFFFFBFLLR +FBFBBBFLLR +FFFBBFBRLL +FFBFFBBRLL +BFBBFFBRRR +FFFFBFBRLL +FBFFFBFRRL +FBBFFBBLLR +FFBBFFBRRL +FBBBFFBRRL +BFFFBBFLRL +FFBBBFBRRL +FFFFBFBRRL +BFBFFBFLLR +FBBBBBFLLR +BFFBFFFLRL +FFFBFBFRRL +FFFFBBBRLL +BFFFBFFRLL +BFFFBBBLLR +BBFFFFFRLR +BBFFFBFRLR +BFBBFBBLLL +FBFBBBFRLL +BFFBBFFRLR +BFFBFBBLRR +FFBFBBFRRR +BFBBBFFLRR +BFFBFBBRRR +BBFFFFFRRL +BBFFBFBLLL +BFBBFBFLRL +FBBFFBFLLL +FBBFBFFRLL +FBBBBFFLRL +FBBFBFFRRL +FFFBFBFLLL +FFBFFBFRLR +FBBFFFBLLR +FFFFBFBLRL +FFFBBFBLRR +FFBBBFFRLL +FBFBBBFRRR +BFBBBBFLLL +BBFFBFFLRL +FFFFBBBLLL +FFBFBBBLLL +BFBFBFFRRL +FBFFBBFRRR +FFFBBBBLRR +FBBBBFBLLL +FBBBBBBLRL +FFBFFFBLRR +BBFBFFBRRL +BFBBFFBLLL +BFFFFFFLRL +BFFFFBFRLR +FBFFFFFLLL +BFFBBFFRRL +BFBFBBFLLL +BFBFBFBRLL +FBFBFBBLLL +BFFFBFFLLR +FBBBFBBLLL +FFBFFFBRLL +FBBFFBBLRR +FFBFBFBRLL +BFFFBBBRLR +BBFFBFBLRL +BBFFBFBLRR +BBFFBBFRLL +BFFFFBBRRR +FBFBBFFLRR +FFBBBBBRRR +BFBBBFFRLL +BFBBFFFLRR +FBFBFFBRRR +FFBFFBFLRR +BFBBBBBLRL +FBFFFFBRRR +FFBFFFFLLR +BFFFFFBLRL +FFBBBBFLLL +FBFFFBBLRL +BBFFBFFLLR +FBBFFFBRLL +BBFFBBBRLR +FBFFFBFLRR +BFFBBFBRRL +FBBFFFFRLR +BFFBBBFLRR +FFBBFBBLRR +BFBBBBFRRL +FBFBBBBLLL +BBFFBFBRRR +FFFFBBFRLR +BFBBBBFRLR +FBBFFBFRLR +BFBFFFBRLL +FBFBFBBRRL +FBFBBFBRLR +BFBBBBBRRR +BBFBFFBRLR +FFBFFFBLRL +FBBFFBFLLR +BFFBFBFLLL +BFFFFFBLLL +BFBFFBBRLR +FBBBBFBRLR +BFBBBFBRLR +BFBBFBBRLL +BBFFFFBLLR +FBFBFBFRLL +FFFBBFBRRL +FBFFBBFRLR +FFFBBBBLLR +BBFFBFFLRR +FBBBFFFRRL +BBFFBBFLLL +BBFFFBFRLL +FFBFBBFLRR +BFBFFFBLRL +FFBFBBFLLR +FBBBBFFLLL +FFBBBBFLRR +FFFBFBBLRL +FFFBBFFLRR +FBBBFBBRLL +FFBFFFFLLL +FBBBFBFLRL +FBFBFBFRRR +FFBBFBFLRR +FFBFBBFRRL +FBFBBFFLRL +BFFFBBBRRL +BFBBBBFLLR +FFFBBFFRRR +BFBBFBBRRL +BBFFFBBLRL +BFBFBFFLRR +FFFFBFFLRL +BFBFFBFRLL +BFBFBBFRLR +BFFBFFFLRR +FBFFFFFLRR +BFFBFBFRLL +FBBFBFFLRR +FBFBBBBLRR +BFFFFFFRLR +FBBFBBBRRL +BFFBFBFRLR +FFFBFFFRRL +FFBFFFFRLR +BFFBFFBLLL +FFBFBBFLRL +BBFFFFFLRL +FFFBBFFRRL +FFBBBFFLRL +BFBBFFBLRR +FFBBFBFRLR +FFBFBFFRRR +FFFFBFFLRR +FBBBBFBRRL +BFBBFBBLRL +BFFBBFFLLR +FBFFFBFLLR +FBFBFFBLRR +FFBBFBBRLL +FBFFFFFRLR +FFBBBBFRRL +FBBFFBFRRR +FFFFBBFRRR +FBBBFFBLLL +FFBBFBBLLL +BFBFBFFRLL +BFFFBBFLLL +BFFBBFFRLL +FBFBBFFRRL +BBFBFFFLLR +BBFBFFBLRR +FBFFFFFRRR +FBFFBFFRRR +BFFBBFBRLR +FBFBFBFLLL +BFFBBBBLRR +BFBBFBBRLR +FFBBBFFLRR +FBFBBBBRRR +BFBBBBBRLL +BFBFFBBRRR +FBFBBFBRLL +FBFFBFBLRL +FBBFBBBRLL +FBFBBBBLRL +FBFFFBBLLR +BBFFFBFRRL +FBFBFBBRLL +BFBBBBBRLR +BFBFFFFRLR +FBFBBFBLRR +BFBBFBFRLR +BBFFBBBLLL +BFFFFFFRRR +BFBBBFBLRL +FBFBBFFLLR +FBFBBFFRLR +FFFBFBBLLR +FFBBFFFRLL +BFBFFFFLRR +FFFFBBBRRL +BFFFBFFRRR +BFFFBFBRLL +FFFFBFFRRL +BFFFBBFRRL +FFFBBFFLLL +BFBBFFBRRL +FBFBFFFRRR +FBFBFBFLRL +BFBFBFBLLL +FBBBFFBRLL +FBFFBBBLRL +BFBFFFFRRL +BFFBBFBLLL +FBFFFBBRLR +BBFBFFFRLL +FFBFBFFLRL +FBBFBBBLRL +BBFBFFFLRR +BBFBFFBRRR +BFFBFFBRLR +BBFFBBFRRL +FBFBBBFLRR +FBBFFFFLLL +BFFBBFBLRR +BFBFFFFLLL +BFFBBBBRLL +FFBFFBFLLL +FBBBBFBLLR +BBFFFBFLLR +BFBBBFBRLL +FBFFFFBRLR +FFBBBFFRRL +FFBFFFBRRR +BFFBFFFRLL +FFFBFBBLLL +FFFBBBFLLL +BFBBFBFRLL +BFBFFFBRLR +FBBFBBFRLL +FBBBFBFRRL +FFBFBFFRLR +BFBBFBBLLR +FBBFBFBRLR +BBFFFBBLLL +FBFBFFFLLL +BBFBFFFRRR +FBFBBFBLRL +FFBBBFBRLR +BFBBFFBRLR +FBFFBBBLRR +FFBBFFBRRR +BBFFBFBRRL +FFBBBFFRRR +BFBFFBFLRL +FBFFFFBLLL +BBFFFFBRRL +BBFFFFBLRR +FFBBFFBRLL +BFBBFFFLLL +FBBFBFBLLL +FBBBFFFLRL +FBFBBBBRRL +FFFBBBFRRR +FFBFFBBRRR +FBFFFFFLRL +BFFBFBFLRR +BBFFBBBRRR +FBFFFFFRRL +FBBFBFBLRR +BFFBBBBLLL +FBBBFFFLLR +BFFFFBFLLL +FFBFBFBLLR +FBFFFBBRLL +BFFFBFBRLR +FBBBFBFLLR +FBBBBFFLLR +BFFFFBBLLR +FFBBBBBRLR +BFFFBFBLRR +FBBBFFBLLR +FBFFBFBRRL +FBFBFBBRRR +FBBBBBBLRR +FFBBBBBRRL +FBFFFFBLLR +BBFBFFBRLL +FFFBBBFRLR +FBFFFBBLLL +FBFFBBBLLR +BFBFBBFRRL +BBFFBFBRLL +BFFFBBFRRR +BFFBBFBLRL +FBBBFBFLRR +FFFBFBFRRR +FFBBBFBLRR +BFBFBBFRRR +FFBBBFBRLL +BFFFBBBLLL +BFFFBFBRRL +BFFBFBBRLL +FBBFFFFLRL +FFFFBFFRLR +FFFBBBBRRL +BFFBFBFRRL +FFFBBFBRRR +FFBFBFBLRR +FFFFBBFLRL +BBFFFFBLRL +BFBBBBBRRL +FBBBBBFLLL +FBFFBFFLRL +FFBFBBBRRR +FBFBBBBRLL +BBFFFBBRRL +FFBBFBFRRL +FFBBBFFRLR +FFFBFBFRLL +FBBFBFBLLR +FFBBBBBLLR +FBFBFFBLLR +BFFFBBFRLR +FFBBFFFRRL +FFFFBBFLRR +BBFFFFFRRR +FFBBFFBLLR +FBFFFFBLRR +FFFFBFFRLL +BFBBFFFRLL +BFBBFFBRLL +BBFFFBBRLR +FFBFFFFRRR +BFBFBFBRRR +FFBBFBFLLR +BFFBBBFRLL +FBBBFFFRRR +BFBBBBBLLL +FFBFFFFLRR +FBFFFFBRLL +BFFFFBFRRL +FBBBBBBRRR +FFFFBBFLLL +FBFFBFFLRR +FFFBBBFRRL +FBBFFFBRRL +BFBFBBBRLL +BBFFFBFLRR +FBBFBFBRRL +FBBFFFFLRR +BFBBBFBLLL +BFFFFFBRRL +BBFFFBBLRR +BFFFFFBLRR +BFBBBBFLRL +FBFBFFBRRL +BBFFFFFLRR +FFFFBBBLLR +BFBBFBFLLL +FBBFFFBRRR +FFBBBFBRRR +FFBFBFFRLL +FFBBFBBLRL +FBBFFBFRRL +FFFBBFBLRL +FFBBFFBLRR +BFFFFBBLLL +FBBFBBFLRL +FFFBFFBLRL +FBBFFBBRRL +FBFFFBFRRR +BFBBBFFLRL +FFFFBFFLLL +FBFFFFFRLL +BFBFFFFRLL +FFBFBBBLRL +BFFBBBBLLR +BFFBBBFRRL +FFBBBBFLLR +FFFBFBFLRR +FBFFBFFRLR +BFBFBBBRLR +BFFBFFFLLR +FFFFBFBLLR +FBFFBFBLRR +BFFBFBFRRR +BFFBFFBLRL +FBBBBBFRRR +BFBBFFBLRL +FFBBFBBRRL +FBFFBFFRLL +FFBFFBFLLR +BFBBBBBLRR +BFFBBFFLRL +FBBBFBBRRL +BBFFBBBLRR +BBFFFBFRRR +FBFFBFBRLR +FBFBFFBRLR +BBFFFFBLLL +FBBFBFFRRR +FFBBFBFRLL +FFFFBFBLRR +FBFBFFFRRL +FBBFBBFRRL +FFBFFBFLRL +FFBFBFBRRR +FFFFBBFRRL +BFFBBBFRLR +FFBFBBBRRL +BFFBFBBLLL +FBBBBFFRRL +FFFBFBFRLR +FFBFFBBLRL +BFFBFFBLRR +FBBBFFFRLR +FBBBFFBRLR +FBBBBBBLLR +FBBFBFFLLR +BBFFBFFRRL +FBBBBBFRRL +FFFBBFFRLL +FFFBBFFLRL +FFBFFBBLRR +FBBFFFBLLL +FFFFBBFRLL +FFBFFBBLLR +BFFFBFFLLL +BFFBBFBRLL +FBBFFFBRLR +FFFBFBBLRR +BFBFFBBLRL +FBFFFBFRLR +BFBFFFFLRL +BFBBBBBLLR +FFFBBFFLLR +BFBFFFBLLR +FFFFBBFLLR +FBBFBBFLRR +FBBBFBBLLR +BFFFFFBRRR +FBFBFFFLLR +FBFBBBBRLR +FFFBFFBLLR +FFFBBFBLLL +BFFBFBBRRL +BFBFBBBLRL +BFFFBBFRLL +FBBFFBFLRL +BFBFBBBRRR +FFFBFFBRRR +BFFFBFFLRL +BBFFBBFRLR +FFFBBBBLRL +FBBFFFFRRL +FBFFBFFRRL +BFFFFFBRLL +FBFBBFBRRR +FBFBBBFLRL +FBFFBBBLLL +FFFFBBBRRR +FBBBFBBLRL +BFBFFBBRLL +FBFBBBFRLR +FFFBBBFLRR +BFFBFFFRLR +BFBFFBFRLR +BFBBFFFLLR +FBFFBBBRRR +FBBBFFBLRL +BFBFBBBLRR +FBBBBBFLRR +FBBBBBBRLR +BFBFFFFRRR +BFBBBBFLRR +BFBBFFFRRR +FFBFBFFLLL +FBFFFBFLRL +BFBBFBFLLR +BFFBBBFLLR +FBBFBFBRRR +FFBFFBFRLL +BFFFBFFLRR +FBFBBFFLLL +FFFBFBBRRR +FBBBFBBRLR +BFFFBBBRRR +FFFBFBFLLR +BFFBFBBLRL +FBFBBFFRLL +BFBBFBBLRR +FFFBBBBRLR +BFFFFFFLRR +FBFFBBFLRL +BFBFFFBRRL +BBFFBFFLLL +FFBBFBBRRR +BFBFFBFRRL +BFFFFBBLRL +BFBBFFFLRL +FBFFFBFLLL +FBBFFBBRLL +FFBBFFBRLR +FFFBFFBLRR +BFBFBFFLRL +FBBBBFBRRR +FBBFFBFLRR +BFFBBFBRRR +FFFBFFBRLL +FFBFBFFLRR +FFFBFFFLRL +BFBFBFBRRL +BFFFFBFRRR +FFBFBBBRLR +BFFBFFBRRR +FBBBFBFRRR +FBBBBBFRLL +BBFBFBFLLL +FBFFFBBRRL +FBBBBFBRLL +BBFFBFBRLR +FFFFBFBLLL +FFBFBBBLLR +FFFBBFBRLR +BFBFFBBRRL +FFBFBFBRRL +FFBFBFBRLR +FFFBBBFRLL +FFBFBBFRLL +FFFFBFBRRR +FFFFBFBRLR +BBFFFFFLLL +BFBFFFBLLL +BFBBBFFRRR +FBBBBBBLLL +FFBFBBBRLL +FBFBBBFLLL +FBBBFFBRRR +BFBBFBFLRR +FFFBBFBLLR +FFFBBBBRRR +FFBFBFBLRL +FFBBFFFLRR +FBBFBFBLRL +FBBFFBBRLR +FBBFFBBRRR +BFBFFBFLLL +FBFFFFBLRL +FFBBBBBRLL +FBFBFBBLRL +FBFFFFBRRL +BFBBBFBRRR +FFFBBBFLRL +FBFBFBFLRR +BFFBFFBLLR +BFBFBFBRLR +FBBFBBFRRR +BFBFFBBLLR +BFBFFFBLRR +FBBBBBFLRL +BFFFBFBLLR +BBFFFFBRLR +BBFBFFFRRL +BBFBFFBLRL +BBFFFBFLRL +FFBBFFFLRL +FBBBFBFRLL +BFFFFBFRLL +FBBBFFFLRR +FFBFFBFRRR +FBBBFBFRLR +FFBFBFFRRL +FBFBBFBLLL +FFBBBFBLRL +FFBBBBFRRR +FBFBFBBLLR +FBBBBFBLRL +FFBBBFFLLL +FBFFBBFLRR +FBFBFBBRLR +BBFFBBFLRR +FBFBBBFRRL +BFFBBFFRRR +BBFFFBBRRR +BFFBBBBRRL +BBFFFFFLLR +BFBBBFFLLR +BBFBFFFLLL +BFFBBBFLRL +BFBFFBFLRR +FBBFBFBRLL +BFFFFFBLLR +BFBFBBFRLL +FBBFBBBRRR +FFBFFFBRRL +BFBBBBFRRR +BFFFBBFLLR +FBBBFFFLLL +FBFFFFFLLR +FFBFFFFRRL +FFBBFFFRLR +FBFBFFFRLL +FFBBBBBLRL +FBFFBFBLLR +BFBFBBFLRL +BFFFBFFRLR +BBFFBBFLRL +BFFBFFBRLL +BFFFFBBLRR +BFBFBBBLLR +BFFBBBBRLR +FBBBBFFRRR +BBFFBBBLRL +FBBBFFFRLL +FBBFFFFRRR +FFBBBFFLLR +BBFFBBFLLR +BFFBBBBRRR +BFBBFFBLLR +BFBFBBBLLL +BFFBBFBLLR +BFBBFBFRRR +BFFFBFBRRR +BFBBBFFLLL +BBFFBFFRLL +FBBFFFBLRL +FFFBFFFLLL +BFBBBFBLRR +FFBBBBFRLR +BFFBFBFLRL +BFBFBFBLLR +BBFFFBBLLR +FBFBFFFLRR +FFBFBFFLLR +FFBBFFBLLL +BFBFBFFRRR +FBFBBBBLLR +BFBFBBFLLR +FBBFFBBLLL +FBFFBBBRLR +FBFFBBBRLL +FBFFBFFLLR +BFFBBBFRRR +BFFFFFFLLR +BFBBFBFRRL +FFBFFBBRLR +FBBBBFFRLR +BFFBFFFRRL +FFBFBBFLLL +FFFBFBBRLL +FFFBBBBRLL +FBBFBBBRLR +FFFBFBBRRL +FFBBFFFRRR +BFFFFFFRRL +FFBBFFBLRL +BFFFFFBRLR +BFFBBBFLLL +FBFFBFFLLL +FFBFFFFLRL +FFFFBBBLRL +FBFBBFFRRR +FBFFBBFRLL +BFFFFFFLLL +FFBFFFBLLL +BFBFBBFLRR +FBBFFFFLLR +BFBFBFFRLR +BFBBFFFRLR +BFBBBFFRLR +BFFBBFFLRR +BBFFBBBRLL +FBBFFFFRLL +BFFFFBBRRL +FBFBBFBRRL +BFFBFFFRRR +FFBFFBFRRL +BFFFFBBRLR +BFFFFBFLRL +BFBBBFFRRL +FBBBFBFLLL +BFFBFBBLLR +FBFBFBBLRR +FBBFBBBLRR +BFBFBFFLLR +BFFBBBBLRL +BFFFFFFRLL +FFFBFFFRLR +FFBBFBFLRL +FBFBFFBLLL +BBFFBFFRLR +FBBFBBFLLL +BFBBFBBRRR +FBBBBFFRLL +BFBBBFBLLR +FFBFFFBLLR +FFFBFFFLRR +FBFBFBFRLR +BBFFFFBRRR +FBBFBBBLLR +BFBBBFBRRL +BBFBFFBLLR +FFBFBBBLRR +FFBBBFBLLL +FBBBFFBLRR +FFFBFBFLRL +FBFFBBFRRL +FFFBBBFLLR +BFFFBBBLRL +BBFFFBBRLL +BBFFFBFLLL +FBBFBFFLRL +FFFBFBBRLR +FFBFBBFRLR +FBBBFBBLRR +FBFFBFBRRR +BFFBBFFLLL +FFBBFFFLLL +FFFBFFBRLR +FFBBFBFLLL +FBBFBBFLLR +FFFFBFFLLR +BFFBFBBRLR +FBFBFFBRLL +BBFFFFFRLL +BBFBFFFLRL +FFFBFFFRRR +BFFBFBFLLR +FFBBBFBLLR +FBFFBBFLLL +FBFFFBBLRR +BBFFBBBRRL +FBFBBFBLLR +FFFBFFFLLR +BBFFBFFRRR +FBBFFBBLRL +FBBFBFFRLR +BBFBFFFRLR +BFBFBFBLRR +FFBBFBBRLR +FFFBFFFRLL +BBFFBBBLLR +FBBBBFBLRR +FBFBFBFLLR +BFFFFBFLRR +BFFFFBBRLL +FBBBBBBRLL +FBBBBBFRLR +BFFFBFBLRL diff --git a/2020/day5/day5.lua b/2020/day5/day5.lua new file mode 100644 index 0000000..a3ad028 --- /dev/null +++ b/2020/day5/day5.lua @@ -0,0 +1,60 @@ +max_id_possible = 127 * 7 + 7 +--[[ table to hold seats accounted for --]] +occupied = {} +for i = 0,max_id_possible +do + occupied[i] = false +end + +--[[ max id in data --]] +m = 0 +for l in io.lines("data") +do + row1 = 0 + row2 = 127 + for i = 1,7,1 + do + c = l:sub(i,i) + median = (row1 + row2) / 2 + if (c == 'F') + then + row2 = math.floor(median) + else + row1 = math.ceil(median) + end + end + col1 = 0 + col2 = 7 + for i = 8,10,1 + do + c = l:sub(i,i) + median = (col1 + col2) / 2 + if (c == 'L') + then + col2 = math.floor(median) + else + col1 = math.ceil(median) + end + end + + id = row1 * 8 + col1 + if (id > m) + then + m = id + end + + occupied[id] = true +end + +print("max id: ", m) + +for i = 0,max_id_possible +do + if (occupied[i] == false) + then + if(occupied[i-1] and occupied[i+1]) + then + print("your id: ", i) + end + end +end