#+TITLE:Advent of Code 2020 #+AUTHOR:Case Duckworth Let's do this -- Advent of Code, literate-style. * Day 1 ** A *** Problem Before you leave, the Elves in accounting just need you to fix your expense report (your puzzle input); apparently, something isn't quite adding up. Specifically, they need you to find the two entries that sum to 2020 and then multiply those two numbers together. For example, suppose your expense report contained the following: 1721 979 366 299 675 1456 In this list, the two entries that sum to 2020 are 1721 and 299. Multiplying them together produces 1721 * 299 = 514579, so the correct answer is 514579. Of course, your expense report is much larger. Find the two entries that sum to 2020; what do you get if you multiply them together? *** Input #+NAME: input-1a #+begin_example 1664 1939 1658 1791 1011 1600 1587 1930 1846 1955 1885 1793 1876 1905 1997 1900 1956 1981 1890 1612 638 1897 1888 1742 1613 1982 1932 1923 1065 1827 1919 1236 1195 1917 1990 1764 1902 1911 1999 1906 1817 1841 368 747 1881 1941 1894 1898 1887 1958 1862 1940 1819 1873 1959 1977 1301 1945 1961 1673 1879 1889 1872 155 1718 1637 1899 1988 1720 1856 1816 1866 1963 1880 1884 1970 1985 1869 1686 1832 1697 1381 1585 1993 2000 587 1891 1928 1721 1904 1708 1934 1912 1927 1575 1802 2009 1871 1867 1882 1974 1994 784 1868 1967 1842 1771 2001 1843 1621 1926 1978 2003 1921 1815 1757 2005 1699 1960 2007 1626 1944 2008 1611 2004 1991 1924 1875 1915 1920 1810 1805 1936 1968 882 1976 1874 1987 1826 1910 1483 1964 1855 1979 1996 438 1863 1952 1929 1986 1937 1773 1861 1909 1870 1922 1623 1948 1984 1957 1755 1655 1950 1635 2006 1618 1966 1735 1935 1908 1589 1886 1971 1949 1707 1995 1992 1953 1925 1783 1954 1998 1980 1644 1916 1883 1913 1962 1972 1602 1896 1969 1596 1680 1907 1983 1784 1671 1807 1943 #+end_example *** Solution #+NAME: solution-1a #+begin_src emacs-lisp :var input=input-1a ;; Find the numbers that sum to 2020, then multiply them together (let* ((strlist (split-string input)) (list (seq-map #'string-to-number strlist)) (result 0)) (catch 'return (while list (setq n (pop list)) (dolist (m list result) (when (= (+ n m) 2020) (message "%d, %d" n m) (throw 'return (* n m))))))) #+end_src #+RESULTS: solution-1a : 969024 ** B *** Problem The Elves in accounting are thankful for your help; one of them even offers you a starfish coin they had left over from a past vacation. They offer you a second one if you can find three numbers in your expense report that meet the same criteria. Using the above example again, the three entries that sum to 2020 are 979, 366, and 675. Multiplying them together produces the answer, 241861950. In your expense report, what is the product of the three entries that sum to 2020? *** Solution #+NAME: solution-1b #+begin_src emacs-lisp :var input=input-1a ;; Find three numbers this time (let* ((strlist (split-string input)) (list (seq-map #'string-to-number strlist))) (catch 'return (while list (setq n (pop list)) (setq rest list) (while list (setq m (pop list)) (dolist (o list) (when (= (+ n m o) 2020) (message "%d, %d, %d" n m o) (throw 'return (* n m o))))) (setq list rest)))) #+end_src #+RESULTS: solution-1b : 230057040 ** Commentary Today was a decent start, if a little bumpy. I had to go with =elisp= because Org-Mode can't find my =bash= interpreter at work. Which, I mean, this is a good opportunity to get pretty good at elisp. The hardest part of [[*A][A]] was figuring out how to get the input to a usable state, and finding out about ~catch~ and ~throw~. Once I realized I could walk through the list by ~pop~-ing ~n~ off the front each time and adding it to all the others. Once I got to [[*B][B]], I thought I could do the same, but I was a little naive -- when I ~pop~-ed ~m~ for the inner loop, I used up the list (of course) before I was able to test for successive values of ~n~. Saving the ~cdr~ of the list and restoring it after the inner ~while~ loop. At some point, I'm sure, I'll need to figure out the ~loop~ (or ~cl-loop~ ?) macro. * Day 2 ** A *** Problem To try to debug the problem, they have created a list (your puzzle input) of passwords (according to the corrupted database) and the corporate policy when that password was set. For example, suppose you have the following list: 1-3 a: abcde 1-3 b: cdefg 2-9 c: ccccccccc Each line gives the password policy and then the password. The password policy indicates the lowest and highest number of times a given letter must appear for the password to be valid. For example, 1-3 a means that the password must contain a at least 1 time and at most 3 times. In the above example, 2 passwords are valid. The middle password, cdefg, is not; it contains no instances of b, but needs at least 1. The first and third passwords are valid: they contain one a or nine c, both within the limits of their respective policies. How many passwords are valid according to their policies? *** Input #+NAME: input-2 #+begin_example 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 #+end_example *** Solution **** Attempt 1 #+NAME: solution-2a #+begin_src emacs-lisp :var input=input-2 (defun build-pw-regex (spec) "Turn a SPEC of the format '2-7 b' to b.*b.*b?.*b?.*b?.*b?.*b?" (let* ((thing (split-string spec "[- ]")) (min (string-to-number (or (car thing) "0"))) (max (string-to-number (or (cadr thing) "0"))) (chr (caddr thing)) (min-regex (concat ".*" chr)) (max-regex (concat ".*" chr "?")) (min-full-regex "") (max-full-regex "")) (dotimes (n min min-full-regex) (setq min-full-regex (concat min-full-regex min-regex))) (dotimes (x (- max min) max-full-regex) (setq max-full-regex (concat max-full-regex max-regex))) (concat min-full-regex max-full-regex))) (let* ((strlist (split-string input "\n+")) (alist) (valid-count 0)) (dolist (line strlist alist) (let* ((thing (split-string line ": ")) (regex (build-pw-regex (car thing)))) (setq alist (cons (list regex (cadr thing)) alist)))) ;; test the regexen (dolist (a alist valid-count) (message "'%s' '%s'" (car a) (cadr a)) (if (string-match (or (car a) "") (or (cadr a) "")) (setq valid-count (1+ valid-count))))) #+end_src #+RESULTS: solution-2a : 741 Hmmm, I'm too high. Besides, this has a lot of issues with cleaning up the input; I'll keep trying tomorrow. But for now, to bed! Okay, I lied. I tried 740 as well -- since the last row was giving me such trouble I thought I could've got a false positive there. Oh well. **** Attempt 2 I think I've formatted the regex wrong; I also need to throw an error if there are too /many/ of the character! So the regex for =2-7 b= should look more like ... =^[^b]*b.*b.*b?.*b?.*[^b]*$= #+begin_src emacs-lisp :var input=input-2 (defun build-pw-regex (spec) (let* ((thing (split-string spec "[- ]")) (min (string-to-number (or (car thing) "0"))) (max (string-to-number (or (cadr thing) "0"))) (chr (caddr thing)) (regex-begin (concat "^[^" chr "]*")) (regex-end (concat "[^" chr "]*$")) (min-regex (concat chr ".*")) (max-regex (concat chr "?.*")) (min-full-regex "") (max-full-regex "")) (dotimes (n min min-full-regex) (setq min-full-regex (concat min-full-regex min-regex))) (dotimes (x (- max min) max-full-regex) (setq max-full-regex (concat max-full-regex max-regex))) (concat regex-begin min-full-regex max-full-regex regex-end))) (let* ((strlist (split-string input "\n+")) (alist) (valid-count 0)) (dolist (line strlist alist) (let* ((thing (split-string line ": ")) (regex (build-pw-regex (car thing)))) (setq alist (cons (list regex (cadr thing)) alist)))) ;; test the regexen (dolist (a alist valid-count) (message "%s '%s' '%s'" (string-match (or (car a) "") (or (cadr a) "")) (car a) (cadr a)) (if (string-match (or (car a) "") (or (cadr a) "")) (setq valid-count (1+ valid-count))))) #+end_src #+RESULTS: : 741 Well tits. Okay, tomorrow (really this time!), I'm going to look for a =count= style function. **** Attempt 3 Okay, let's see if I can find some =count= something. #+NAME: solution-2a-attempt3 #+begin_src emacs-lisp :var input=input-2 (defun test-pw (spec password) "Return whether a PASSWORD works with the SPEC. PASSWORD is a string. SPEC is a string of the form - ." (let* ((split-spec (split-string spec "[ -]")) (min-string (car split-spec)) (max-string (cadr split-spec)) (chr-string (caddr split-spec)) (min (string-to-number min-string)) (max (string-to-number max-string)) (chr (string-to-char chr-string)) (pw-char-count (count-occur chr password))) (if (<= min pw-char-count max) 1 0))) (defun count-occur (item sequence &optional eq-func) "Count occurences of ITEM in SEQUENCE." (let ((times 0) (eqf (or eq-func #'eq))) (mapcar (lambda (j) (if (funcall eqf item j) (incf times))) sequence) times)) (let* ((strlist (split-string input "\n+")) (alist) (valid-count 0)) (dolist (line strlist alist) (let* ((splitted-line (split-string line ": ")) (spec (car splitted-line)) (pw (cadr splitted-line))) (if (and spec pw) (add-to-list 'alist (list spec pw (test-pw spec pw))))))) #+end_src #+RESULTS: solution-2a-attempt3 | 2-7 b | fdbvbdb | 1 | | 5-6 r | rrcrvmr | 0 | | 18-19 m | mmmmmmmmmmmmmmmmmmm | 1 | | 7-17 n | mqhnbwxnnnmcdlkfq | 0 | | 5-8 k | kkqkkkkkk | 1 | | 2-4 v | vvjnrxnvtdmm | 1 | | 7-10 m | xmxmmwtmmmnvcrmkrmmm | 1 | | 8-9 f | fffffffff | 1 | | 3-5 q | qqqqvpqq | 0 | | 6-14 c | cpcccgcddfzcgcccc | 1 | | 1-5 p | zpppxbmj | 1 | | 2-3 s | vxgv | 0 | | 5-11 x | lfxzxxcxxxxlbwnrx | 1 | | 13-19 f | ffffffffffffgfffffnf | 1 | | 1-6 q | zvqqqmzqqt | 1 | | 2-10 w | wvwwwwwwwwf | 1 | | 12-18 c | ccccccccftccccccccc | 1 | | 11-14 m | mmmmmmmmmmmmmmmkmmm | 0 | | 6-7 j | jjzjthj | 0 | | 7-10 g | ggggggfggg | 1 | | 4-6 n | tnnnpnn | 1 | | 3-7 f | frfshbfn | 1 | | 11-13 s | ssssssssgsssss | 1 | | 15-17 s | sssbsssscsssfssspsg | 0 | | 6-7 x | xxxlqwlxxvnnvvc | 0 | | 3-4 h | hhhjq | 1 | | 3-5 p | cpprxp | 1 | | 10-11 m | mmzrmmmmmmmmm | 1 | | 5-16 x | xzxpxxxxjxqxxqms | 1 | | 7-9 m | gmmrtzmmrmmcmm | 1 | | 3-4 m | qmmjmm | 1 | | 1-5 z | zzzvzzz | 0 | | 4-7 n | nnnsnnnnnnnnnnrnn | 0 | | 3-6 l | vlljlbllrbztnl | 1 | | 1-3 j | jqjj | 1 | | 13-15 x | xnxxxxkxpxxxtxwx | 0 | | 6-8 v | vwqcvvvvvvsvvxjv | 0 | | 3-4 b | bdvbdwrgcbpwblj | 1 | | 9-12 h | hhhhhhwhthhhh | 1 | | 7-9 k | kkkkckkkck | 1 | | 9-10 v | vvvvvvvvhw | 0 | | 1-7 r | lrpcfdfksxrh | 1 | | 3-4 r | grrrr | 1 | | 4-6 b | bbtrbbbb | 1 | | 1-2 f | kfhf | 1 | | 1-2 s | ssst | 0 | | 1-4 s | sqss | 1 | | 5-7 z | gzzzzzzjz | 1 | | 2-4 s | jjlm | 0 | | 8-10 h | hhhhhhhkhc | 1 | | 2-4 c | wccb | 1 | | 3-7 q | qjxlgqd | 0 | | 3-9 m | mtmxsdmmzsmlc | 1 | | 12-16 m | mmmdmmmmmmwpmmmlm | 1 | | 14-15 d | ddddddfdddddddj | 0 | | 7-8 k | kkkkkkkb | 1 | | 1-6 d | qddddd | 1 | | 11-13 b | bbbbbbbbbbbbdbbbb | 0 | | 5-11 x | cxxzvxglxrbbqqcxf | 1 | | 5-8 f | zhfglzmkfnqmbbtffftf | 1 | | 5-7 s | zwldstwxsh | 0 | | 3-4 w | hwww | 1 | | 1-6 r | xrrrrprfl | 1 | | 10-13 c | cccmccccccccpcwcc | 0 | | 11-12 m | mmmmbmmmmmmm | 1 | | 19-20 w | wwwwwwwwwwwcwwwwwwqk | 0 | | 3-4 g | ggsgq | 1 | | 3-6 l | xllhplwhllllzqbkll | 0 | | 1-15 p | splppplppprppcppppdp | 1 | | 5-9 s | sfsslssss | 1 | | 4-5 r | ktkwwzcrv | 0 | | 4-8 t | rttttttt | 1 | | 2-4 x | xxqxx | 1 | | 1-7 n | nttvqnn | 1 | | 7-11 f | nfqdgffmwlfc | 0 | | 1-5 x | xxdxkxxxxgx | 0 | | 2-4 v | rvpvsvfft | 1 | | 6-8 c | jjcxcjnccclc | 1 | | 4-9 n | zswmtrnlspnxdnbnbvln | 1 | | 1-8 f | fffffsngffczj | 1 | | 14-15 j | jjjjjjjjjjjjjbw | 0 | | 10-11 l | lllllllllqrmllkllvl | 0 | | 1-5 n | bzvxn | 1 | | 3-6 z | zzzzzhcz | 1 | | 1-4 g | rgfg | 1 | | 11-12 b | nbbbhbbbgbhbbglqbbm | 1 | | 2-5 f | hffrfm | 1 | | 2-7 p | npnfpswbhsbgknmvlgmx | 1 | | 3-5 d | dmqddv | 1 | | 3-15 c | mcvccvccccccccd | 1 | | 8-11 k | dvhvwdpkbdnwn | 0 | | 11-14 q | qqqqqkrdqxjfqcqpqqqs | 1 | | 2-9 l | klgblptpqzdp | 1 | | 9-10 s | sssssssscrsz | 1 | | 2-4 d | dsdwhnj | 1 | | 8-11 q | kggqvqbvwfbqlv | 0 | | 8-10 l | qlrjglllxl | 0 | | 1-3 w | tcvttwhsjpzd | 1 | | 2-15 h | whxfjxtcxlwxchb | 1 | | 6-9 x | xgxdlxrgnfmsmfxcwx | 0 | | 1-18 r | rvzjrgfrkrxrgbrdlrr | 1 | | 1-2 d | dxbd | 1 | | 5-6 h | hhbhhh | 1 | | 16-20 v | vzvhjvbvvtvvvvvvvgvh | 0 | | 7-11 x | xxxxvxxxqxf | 1 | | 19-20 v | vvvvvvnvvvvvvvvvvvvg | 0 | | 3-5 c | qjfndkck | 0 | | 5-14 g | tggjggggggggggmgz | 1 | | 16-18 c | tcccccccctccccctcccc | 1 | | 3-5 g | tpgwjrr | 0 | | 2-6 b | frbbbtvb | 1 | | 10-14 r | rzrnvtrfkrrrvjrr | 0 | | 5-6 k | kllvds | 0 | | 3-4 x | xxxx | 1 | | 4-11 v | vvmzvvvpvvxk | 1 | | 15-19 r | rrfrrrnrrrrrrrrrrrr | 1 | | 6-7 v | vvvvvpz | 0 | | 4-6 n | nnnnnnnnnnnxnnnnn | 0 | | 1-3 j | zjmjjjj | 0 | | 1-4 f | zmnffhprzvrbhz | 1 | | 2-7 z | czzzkzzzrz | 1 | | 9-15 g | zggnmghgggrggxqzj | 0 | | 1-6 g | hzcpck | 0 | | 1-10 t | bsptvbqtctmwtztgtwt | 1 | | 5-10 v | vrvfvfvvwnvs | 1 | | 11-13 k | kkkkkkkkkkkkk | 1 | | 2-10 g | qgpbkxdpggfglbpvn | 1 | | 4-5 t | htkntst | 0 | | 2-3 z | qzbr | 0 | | 2-3 s | wsfdwh | 0 | | 13-16 t | tdttqxtttttttttm | 0 | | 7-8 s | ssssspgsqs | 1 | | 4-6 t | ttthtn | 1 | | 2-14 c | wkdjtjxccwvzwbgr | 1 | | 10-12 p | pgpprmwwczxjhpvpqmpp | 0 | | 4-6 w | fpbwwwwcwprflnjtwl | 1 | | 15-16 n | nnnnnnfnnnhnnnnnn | 1 | | 14-15 n | nnnnnnnnnnnnnnn | 1 | | 1-9 c | gscmdrvngstmfknsjrp | 1 | | 8-11 q | qqqqqqqqqqkqq | 0 | | 17-18 r | sxrnvrtswzzzwwrdrt | 0 | | 1-4 w | wwwv | 1 | | 2-4 l | xlwsrlclpql | 1 | | 3-7 f | fffkfffnkdff | 0 | | 1-4 w | lwnwj | 1 | | 6-7 b | wbbbbbx | 0 | | 2-7 s | dshmwzsspls | 1 | | 8-9 p | ppppjvwlpd | 0 | | 17-19 k | kkkkkkkkkkkkkkdkkkhk | 1 | | 4-12 k | kkkqkkkknknv | 1 | | 1-2 n | nkwj | 1 | | 6-7 s | gsvwsjsgssbss | 1 | | 2-4 r | hrmrtrs | 1 | | 2-3 c | kcgcrbcqk | 1 | | 4-5 r | rrkrr | 1 | | 2-3 n | vntn | 1 | | 7-8 r | rrgrrrrr | 1 | | 3-6 q | qrdqcqqqq | 1 | | 5-6 k | xpkkkk | 0 | | 4-8 c | pknvllcbxxcs | 0 | | 8-10 q | qczgcdqbqlqlzqq | 0 | | 2-4 d | ndhdsddzq | 1 | | 9-12 g | gggglggjgggggg | 1 | | 7-9 m | mmmmmmmmm | 1 | | 7-10 v | rpvvnzpcccvvhvbvvtz | 1 | | 16-18 v | vvvvdvvvvvvvvvvlvm | 0 | | 9-11 q | sblqqbqqglfqlqfzqqld | 0 | | 4-7 b | bstmbbbbbmgtqm | 1 | | 3-17 m | mmmmmmmmmmmmmmmmg | 1 | | 2-10 p | ppjppppplpp | 1 | | 9-10 b | bnphxrvfbjx | 0 | | 5-7 w | wwwwhwtw | 1 | | 2-4 b | bzplb | 1 | | 7-10 v | vvcvvvcvfzn | 0 | | 8-9 r | rrrrrrnjdr | 0 | | 1-3 s | ssss | 0 | | 3-8 c | ccccccct | 1 | | 5-11 r | wrrrdprrrrn | 1 | | 7-8 g | mrggggfg | 0 | | 4-5 j | jtwsspjj | 0 | | 6-15 k | nqkkkhkkkkkhkkkkkzkk | 1 | | 16-17 k | kkfkkkkkkkkhkkkkp | 0 | | 6-7 d | jdddfppddvdmds | 1 | | 2-3 b | gbzzqdvhpbvfgh | 1 | | 2-4 h | wshlhh | 1 | | 3-11 m | hmcmtmqmxcmm | 1 | | 12-15 x | pxxxxxxxxxfbxxx | 1 | | 5-6 j | jjjjjj | 1 | | 14-19 g | zcggccgvgpjghznmvgpg | 0 | | 1-2 b | rkpbg | 1 | | 1-4 t | rrjg | 0 | | 3-13 n | nvpnrnjnnnqnnmnhlnx | 1 | | 2-3 b | bmzb | 1 | | 6-8 l | lxlllklll | 1 | | 5-8 n | qknnnfgn | 0 | | 14-18 k | wkskkkkkkkkkkkkkkn | 1 | | 1-10 f | pmtffffjfgkfpjm | 1 | | 10-11 c | ccccxccccbc | 0 | | 10-13 g | ggggggqgxphggcg | 1 | | 8-14 b | lbdvsxcbzvfltl | 0 | | 2-7 h | hhhhhhh | 1 | | 17-18 q | qqqqqqqqqqqqqqqqqq | 1 | | 2-4 h | vhthh | 1 | | 6-16 m | mmrmlzdmzxnpmhmhmmfm | 1 | | 15-17 f | sfsffffffffffffxnfff | 1 | | 4-7 d | drkkhrd | 0 | | 11-13 x | xxjxqxxxpxwqxxxx | 1 | | 10-11 x | xjxxxsxxxfxx | 0 | | 5-6 z | zmzjznzkxzr | 1 | | 3-10 l | rszlllgzbvlll | 1 | | 4-9 s | dslxngsjssxpsssgss | 1 | | 3-4 j | jkjj | 1 | | 4-5 x | cdxxx | 0 | | 2-4 v | fpvvpv | 1 | | 1-6 k | kvxbkvmdmgdmkhkwq | 1 | | 9-13 v | nvmzrnvvvqvvvgvvvtvv | 1 | | 3-8 q | qpnqjptfrqxtdncqbg | 1 | | 4-5 z | zztzz | 1 | | 11-16 v | vvbvvvhvvvvrvvvv | 1 | | 14-16 k | kkkkkkkmkkkkkkkk | 1 | | 17-18 g | gggggggggggwggggtfg | 0 | | 4-8 q | qqqltrkqzqqxqc | 1 | | 6-9 w | wwjwmtwwfjs | 0 | | 8-17 p | fppppbppjpfpppzcnp | 1 | | 3-13 b | bbbbbbbxbqbbf | 1 | | 14-15 f | ffffjffffztfffzff | 0 | | 2-8 d | pzdrzhdddpd | 1 | | 9-10 z | bnzjzzzzzz | 0 | | 3-4 p | hpbpppnxppk | 0 | | 10-11 h | xhhhhhhjhghh | 0 | | 5-10 m | bqhbgmpmmhmwhmmm | 1 | | 8-9 m | mmmmmzmmmmm | 0 | | 4-12 r | rrrcvrrrrwrr | 1 | | 3-4 l | klzl | 0 | | 14-17 l | llllllllllllldllcll | 1 | | 3-7 l | llcllllllll | 0 | | 3-5 s | hdkshswvlmg | 0 | | 3-5 f | flhbfkbfmf | 1 | | 2-3 c | cxrwvncfl | 1 | | 16-17 l | llllllllllllllllrl | 1 | | 13-14 z | zzzzzzzzttzzzzzz | 1 | | 2-9 f | sfprndvdptlfdwh | 1 | | 3-15 l | dpxfgtznlgmptjlxhzl | 1 | | 8-9 c | cchccccwc | 0 | | 8-9 z | zffzzzzxzzz | 1 | | 3-4 r | rrrj | 1 | | 8-11 q | dcqqmnqqzqqqqqqqq | 0 | | 6-8 f | jxlfvnrwt | 0 | | 13-17 j | jjxjjvnjjjjjhjdjpjpj | 1 | | 1-5 s | pvqqhnpvcmxrwsspvnw | 1 | | 5-12 t | tdtslpttttvttgtkkt | 1 | | 14-18 l | bscmdvlczsgljvlbllwp | 0 | | 17-18 w | wwwwwwjwwwwwwwwwfj | 0 | | 8-15 t | tttttttvttttttjttt | 0 | | 10-19 m | lrzzlvfncmpplqbmxhh | 0 | | 6-11 k | spgkkxpmtkbdkmzn | 0 | | 12-16 t | tltmtttwzjtssmtt | 0 | | 11-13 m | mmmmmlmmmmmdmm | 1 | | 12-16 w | pgwllwwwwwwwvtwwww | 1 | | 11-15 c | cccccwcxcccckccccccc | 0 | | 2-5 p | jhxcptzrpfsrxj | 1 | | 5-6 p | ppppxc | 0 | | 2-4 k | kkkk | 1 | | 4-6 v | bjtvvv | 0 | | 2-8 m | rttmqfkvjgq | 0 | | 9-10 x | xxxxxxxxxj | 1 | | 4-18 v | hvvvvjqvvvqvtjmvfvvf | 1 | | 7-14 x | xxxpxxxxxxxxcn | 1 | | 4-8 r | rrrmrrrz | 1 | | 8-9 h | hhhhhhhhl | 1 | | 6-9 m | bzmppmqjdmhmgmmdm | 1 | | 3-9 f | jmhkffdhsdsf | 1 | | 5-12 n | xnnhkdpmnjnzqnc | 1 | | 10-12 l | lllllllllplt | 1 | | 10-12 k | kkkkkkkjkzkk | 1 | | 11-16 k | kkkkckkkkkkktkknkkk | 1 | | 17-20 f | ffffffmffffffffffxff | 1 | | 4-6 z | zzhzzlg | 1 | | 17-18 q | qqqqqqqqqqqqqqqqcx | 0 | | 9-11 j | jjjjjjjjwnvjkxj | 1 | | 6-8 c | cccccccc | 1 | | 3-7 m | mmkmmrdmh | 1 | | 2-7 x | rmbftbcmcxxxxpttzjwb | 1 | | 1-7 w | llvwjdjvtp | 1 | | 1-3 p | fpmp | 1 | | 6-8 b | bbbbbbbbbb | 0 | | 2-5 t | tttttt | 0 | | 2-8 l | fkxzlkdlmlllnwhlt | 1 | | 10-12 g | ggxgghbgzxztg | 0 | | 3-7 s | sgsnshspt | 1 | | 4-9 d | gsdhddtjdjg | 1 | | 3-20 v | vpvwnvrtvbvkdvnvvhrd | 1 | | 2-4 r | zrcwpcrfm | 1 | | 2-7 k | kkknkknkjk | 1 | | 4-7 x | xhxxrmx | 1 | | 6-9 z | qtzhzgvzfzkgzzsfz | 1 | | 3-15 x | klxxxslhpzwvfbxxlx | 1 | | 2-4 w | wwwgw | 1 | | 2-4 d | xcdn | 0 | | 8-10 d | dddddddkdr | 1 | | 17-19 s | mssssssslsssssssjsq | 0 | | 14-17 c | ncccccckccccccccqc | 1 | | 4-7 x | xpzrmmjxxnxlxxx | 1 | | 5-10 h | hhnhhghstmtcq | 1 | | 1-4 t | txctqzq | 1 | | 2-4 d | ngtbkhcdwgd | 1 | | 1-5 j | jjtnj | 1 | | 5-7 c | cccpcchcsmlhc | 1 | | 2-6 n | mxnnfnx | 1 | | 2-3 w | wwwrwsw | 0 | | 3-7 n | znfdhbn | 0 | | 10-12 p | pppppppppdpd | 1 | | 4-10 f | fffxfqtffff | 1 | | 7-11 s | sssssswsssrmb | 1 | | 11-13 j | jmjvjjjjjjgjw | 0 | | 4-13 l | lllcllllllllllllllll | 0 | | 2-4 p | pfppp | 1 | | 7-8 k | kkkkkkxf | 0 | | 3-6 t | xjbhzxtttb | 1 | | 3-12 t | ttfxjgttsntkxznct | 1 | | 4-5 c | cmccbcg | 1 | | 12-14 w | tkwdwwbtqwzphmzklrwk | 0 | | 12-16 g | ggggngrxhgghgggggtgg | 1 | | 12-13 d | ddvddfddjdddmqvdkdmr | 0 | | 2-12 z | hnzdxfzxpwzzz | 1 | | 1-7 h | hdhlhhfhh | 1 | | 4-5 g | gglglx | 0 | | 2-10 m | mmmmbqrmqmhmqm | 1 | | 10-13 l | mzlhlltlllllrcl | 0 | | 14-15 c | cccccccccccccgzc | 1 | | 5-9 b | bltqmxbsbbvdpvsqkpk | 0 | | 9-15 k | kckkkktskrpkkqkwklvk | 1 | | 3-6 j | jjjjjz | 1 | | 1-2 q | qkqqqqq | 0 | | 7-8 p | ppgpppppblrp | 1 | | 6-8 x | xxxxxxxx | 1 | | 5-9 k | rkkkkdtkmkjkdr | 1 | | 15-16 j | jjjjjjjjjjjjjjjp | 1 | | 13-15 b | bjbbbwbbbbbbdbbbbb | 1 | | 6-9 x | sxjxxxxxx | 1 | | 3-7 q | tsvrqqmdlzxs | 0 | | 7-10 t | ttchcttwvtttftrtt | 1 | | 1-3 j | jjjjj | 0 | | 1-7 h | wpltchhcxwhkg | 1 | | 4-15 h | hhhhhhhhhnhhhhthhhhh | 0 | | 6-8 t | jdlgtttpq | 0 | | 4-5 t | ttttt | 1 | | 2-4 n | nvntn | 1 | | 8-10 m | mbmmmmklmw | 0 | | 4-5 x | xxxfp | 0 | | 5-6 n | qnrsvnvrnnn | 1 | | 14-18 f | fffftmfffdfffftfff | 1 | | 6-10 q | qkqqqpqfxq | 1 | | 3-5 s | mjdsssssssssmss | 0 | | 10-19 x | xxxxxxjtxxwxmqswxxx | 1 | | 1-4 s | srstdtspcrqqgqsl | 1 | | 6-15 g | ggggggfggbsplggggh | 1 | | 1-4 q | vdqgqwhg | 1 | | 18-19 h | hhhhhhhhhhhhhhhhhhh | 1 | | 14-18 v | vvvvvvvvvvvvvvvvvv | 1 | | 3-4 z | zbztzgfbcf | 1 | | 1-5 h | dhrhjd | 1 | | 10-14 f | tcpfzmffffbffvpfff | 1 | | 8-10 f | fffffvflgfq | 0 | | 8-9 q | klqpmdtqqcmlnftrn | 0 | | 6-7 t | tbvtbtkjt | 0 | | 3-9 s | bgldhnxsksznscnlnhc | 1 | | 1-13 g | cgggggggggggv | 1 | | 5-13 b | bbbvbfbbdbbhb | 1 | | 12-15 m | mmmcmmmsmmmqgmm | 0 | | 2-4 m | bmmh | 1 | | 1-7 q | jppwfcqmvxjqxdf | 1 | | 14-15 r | rrrrrrrrrrrrzbj | 0 | | 3-5 r | rrrrg | 1 | | 2-5 z | zgzwlz | 1 | | 1-11 h | hhhhhhhhhhhhh | 0 | | 2-5 z | zzzzh | 1 | | 10-11 c | cccccccccmc | 1 | | 2-4 s | brkfmk | 0 | | 5-11 l | lslqdpbvslplll | 1 | | 7-9 f | fffbffffg | 1 | | 14-18 m | mjmmrmmmmmmmmtmmmd | 1 | | 4-5 f | ffzcl | 0 | | 11-12 q | qnrqlqqqqqqcqqq | 1 | | 4-7 k | rkkkkkk | 1 | | 7-16 c | cblsccjzgccccccvcc | 1 | | 15-16 z | zzzzzzzzzzzzzzzz | 1 | | 5-6 c | cgcccfj | 0 | | 4-5 q | qqqqq | 1 | | 7-11 n | nngqrnnnnnhnj | 1 | | 8-11 q | qtwqqqcbqqhqz | 0 | | 7-8 x | cvtxzlxxvls | 0 | | 6-7 l | lllllshl | 1 | | 16-18 g | bjkzbdrfjsnbldggwrqj | 0 | | 2-3 c | lcwrncsjwzss | 1 | | 2-9 x | dxxxxbxxx | 1 | | 6-7 c | xccwxqcscczcc | 1 | | 8-9 x | xxxxxxxxx | 1 | | 13-14 n | zgpqjvrsbsfgnn | 0 | | 6-10 t | tttttttttttt | 0 | | 7-13 b | bpbbbnbbrbbbh | 1 | | 3-4 x | xkxx | 1 | | 2-4 r | nrvvxsbrhghrrtr | 0 | | 1-7 z | gwzdzzhzzzzzz | 0 | | 4-5 k | lrqkkkqf | 0 | | 1-5 j | vnqpwg | 0 | | 3-5 x | xmxxxxxx | 0 | | 9-11 d | ddddddddddc | 1 | | 8-12 s | sssncsjspkxssssshs | 1 | | 11-12 g | ggggsgggggxkp | 0 | | 2-10 x | pxdcdsxdsxjmx | 1 | | 3-7 n | ndnvmnjl | 1 | | 9-10 j | jjjjjjjjstbj | 1 | | 5-10 l | llllmlljlb | 1 | | 10-11 z | zzzzkzzzzzs | 0 | | 11-13 l | llllllllllvlm | 1 | | 3-4 g | gjgggdgpwd | 0 | | 1-4 r | krrz | 1 | | 16-17 s | gjssssrhksfmdssssw | 0 | | 7-10 c | qpljmtcclfqc | 0 | | 4-6 l | slrklplgsl | 1 | | 2-8 c | cscccccbc | 1 | | 7-8 m | mmmgmmnpm | 0 | | 12-16 w | wwwrwwmwwwwwwwww | 1 | | 11-12 v | vvvvpvqvvvvvvjv | 1 | | 15-16 z | zrzzkzbzszdzzzzczzzz | 0 | | 16-17 l | tfhpllgsrlvlbvncl | 0 | | 8-11 h | hhhhhhhhhhhh | 0 | | 4-5 l | xllcv | 0 | | 5-9 r | rrrcrgrflqh | 1 | | 16-17 q | qqqhqqqqqqqqqqqqqqq | 0 | | 2-4 z | zlzqh | 1 | | 7-12 p | vnrftmwdphrzxjv | 0 | | 3-11 d | ddpddsddmddddd | 1 | | 4-6 k | lczkck | 0 | | 4-5 t | ttttvt | 1 | | 2-12 k | shkkkjtxkkklkkkk | 1 | | 12-16 v | vfvvvvvmvrvzvvzvvv | 1 | | 2-7 k | kkkkkpk | 1 | | 6-9 v | vvvvvgvvv | 1 | | 8-9 s | ssssssspws | 1 | | 3-12 m | llmntmzdjnhmcbmm | 1 | | 3-5 r | rxrrt | 1 | | 11-15 z | zzzgzzzzzzzgzzz | 1 | | 8-11 v | vvvvqvjnvvgmvvtv | 1 | | 2-19 n | njnnnnnnnwnnnnnnnnk | 1 | | 16-17 j | jtjjjjjjjjjjjjjjs | 0 | | 1-5 j | jjkjjqdjjjjpjjjjjj | 0 | | 2-7 c | cmctjltcz | 1 | | 4-10 b | tbgbjnqbbbtcbb | 1 | | 6-10 s | sfsfqnsfslsfssssst | 1 | | 12-15 b | hjjqbxwbnbbbwbfl | 0 | | 5-8 q | cgcjjbtq | 0 | | 3-4 q | qqdd | 0 | | 4-5 s | ssbnbss | 1 | | 8-10 t | dmtjzvjttxttrtftt | 1 | | 1-12 c | kccccccccccccc | 0 | | 6-10 f | fwfffcdfffsf | 1 | | 6-9 c | wchcccccccccccc | 0 | | 8-14 w | zwxrgcbjbqwghhbwwb | 0 | | 8-12 h | hhhhhhhchhhnhhhhh | 0 | | 3-4 f | ffpd | 0 | | 8-16 j | fgnjtlhjjgknmbbj | 0 | | 3-4 h | hhhh | 1 | | 2-3 c | bdrc | 0 | | 7-9 w | lwvwjwwwwwww | 1 | | 5-6 j | vwktnjjdhjsvndjjjsfj | 0 | | 6-9 n | nnnnnqndv | 1 | | 8-16 b | sqbbbbbbbbbblbbgbbxp | 1 | | 3-7 c | wdccccccdgscgcq | 0 | | 2-4 t | tttt | 1 | | 5-9 h | mhdjxshhhzlp | 0 | | 9-12 l | lfvclqlrlllvllzl | 1 | | 3-4 t | xttt | 1 | | 5-7 p | fndppppdnpp | 1 | | 10-12 f | ffffffffffft | 1 | | 11-15 b | qbbbhjbgnbbzvbk | 0 | | 1-8 k | vvdsktqkfkdqlhbwrkqc | 1 | | 9-13 l | llllllllflllsll | 1 | | 6-7 b | cpbgbkq | 0 | | 4-5 g | tgfpgksglmcg | 1 | | 5-19 d | qvddqzdddddddsxpdgdd | 1 | | 1-5 s | sssss | 1 | | 1-12 g | xkxgggggsgggggdgg | 1 | | 2-6 n | vwbttnnnnsnbnhnnnm | 0 | | 12-13 r | rrrrrrrrrbrrdrrr | 0 | | 2-4 l | hlllgdxltwllwn | 0 | | 6-7 v | hvvvvwpv | 0 | | 8-9 p | ppjpppppp | 1 | | 6-7 v | vvvvvkv | 1 | | 5-9 z | zzzzrzzzzzz | 0 | | 14-16 g | ggggggggggggrgggg | 1 | | 3-4 v | fwhvvv | 1 | | 3-5 c | clcccc | 1 | | 9-10 c | ccqrkcccpcckc | 0 | | 15-20 j | jjjjjjjrjjfjjjjjjjjj | 1 | | 7-10 v | vvvvvvvhvvv | 1 | | 2-3 l | lwkl | 1 | | 3-4 x | vgfwxx | 0 | | 2-5 w | wwnww | 1 | | 8-12 b | tmkmhnhblmhbxdvqb | 0 | | 3-10 c | ncccvmmcccxkrrcspjc | 1 | | 14-16 n | nnnnzhnnnnnnnrnrnnn | 1 | | 13-16 t | fttgrdcdttttnttttdtt | 0 | | 6-15 w | wwwkvwwwwswwwwwwww | 1 | | 8-9 t | zpsltttvv | 0 | | 8-10 r | rrrrrxrbrr | 1 | | 5-12 t | gpcttsvjnqkt | 0 | | 2-3 c | cccm | 1 | | 1-9 l | spnvxwwlmcmpd | 1 | | 7-11 b | bbbbmwhfbjb | 0 | | 3-5 v | vwvvvqwv | 1 | | 4-5 p | xlpppp | 1 | | 2-5 q | mqqsq | 1 | | 11-16 x | xxxxxxpnxxxxhxvxh | 1 | | 5-6 n | vqtnnk | 0 | | 1-16 m | mmzmlmmqmbwmmmmm | 1 | | 3-5 c | ccbgp | 0 | | 6-18 b | djrsdpkhrnfkmgkxqb | 0 | | 5-6 k | kkkhkjfbbkxh | 1 | | 13-16 s | ssssssssssssssshss | 0 | | 13-16 p | ppppwnpcpppwppprp | 0 | | 1-4 p | pgnpjtbzdlh | 1 | | 7-8 j | jjdjljjjghnjmbqjb | 1 | | 4-13 g | lgqkgpfgklggxznk | 1 | | 6-7 g | gggggtz | 0 | | 4-11 d | tngdgqrdddtvgdq | 1 | | 12-13 r | rrrrrrrrrrrqz | 0 | | 2-11 j | jkjjjsjdbjzljcpjjmj | 1 | | 8-10 s | sssssssksc | 1 | | 5-7 n | fvpfwnn | 0 | | 4-7 f | ftfffffjmmhz | 1 | | 3-4 d | ddsz | 0 | | 1-6 h | hhhhhwhh | 0 | | 5-7 x | xxxldxxxx | 1 | | 3-4 k | rxtk | 0 | | 9-10 b | bbbbbhbbbb | 1 | | 2-4 m | mmmb | 1 | | 1-4 c | xdfp | 0 | | 11-12 w | swwwrwwwwwwwwwlwl | 0 | | 9-10 b | cbbbtbbbdqsb | 0 | | 15-16 r | rrmfrrrrrrrrzrdsgrrc | 0 | | 6-7 p | pgppptp | 0 | | 1-4 m | mdmj | 1 | | 10-11 p | npwhgtcgwpptxnpztxn | 0 | | 1-3 k | tkgl | 1 | | 2-6 j | zjjsljzdppjhjrq | 1 | | 13-14 j | jjjjjjjjjjjjpr | 0 | | 10-12 q | qqqqnqqqqtqq | 1 | | 1-8 w | wwvwrwfwlwww | 1 | | 12-19 s | sgssssqjssssvhssscts | 1 | | 2-6 x | rxjvbxrxxcsthxl | 1 | | 14-15 m | mmmmmmmmmmmmmmm | 1 | | 7-11 g | gggsgglsgpf | 0 | | 4-6 j | xjjsjc | 0 | | 19-20 s | ssppfsswtssqssxlbsls | 0 | | 3-8 p | vppjpkppx | 1 | | 10-11 j | jjjjjjjjjcj | 1 | | 12-14 l | lnllldllllnllxlllll | 0 | | 13-17 g | sgvggggbggggqbggfggg | 1 | | 17-18 z | zwzzzzzzzmzzzzzzdsz | 0 | | 7-10 r | rrkrrrrrrr | 1 | | 2-7 k | kkvpkqlpkknkkhmb | 1 | | 1-2 t | txvt | 1 | | 5-9 h | hhhlbhqhljmhh | 1 | | 2-5 r | crhvhfrlfbzmcqsxcr | 1 | | 6-7 s | ssssjkstsh | 1 | | 5-10 n | nnnnztnjnn | 1 | | 3-10 d | qcddgpncddwdnldjzd | 1 | | 10-14 r | rrrtrrsrrrqrrr | 1 | | 15-16 v | vvvtvvvvvvvvvvqv | 0 | | 2-6 n | nnjnctjqnj | 1 | | 1-8 v | vvvvxvccnvv | 1 | | 4-5 z | xzzqzzz | 1 | | 3-6 q | qqcqqb | 1 | | 2-8 k | kkkcjczlblwgm | 1 | | 2-7 t | rtvqwkqdpjcfttvntpm | 1 | | 3-5 h | hhhhh | 1 | | 2-8 p | dhkfkvqp | 0 | | 9-12 q | kfqqqqqxlqgbrvqvqwq | 1 | | 7-8 q | qqwqqqqq | 1 | | 7-8 k | kkkkkkmk | 1 | | 2-4 m | mmmjmmd | 0 | | 4-5 h | hpzhhhvrtdrqd | 1 | | 1-3 j | mjjjj | 0 | | 12-19 k | kkzkkkfkkkktzkkkkkbs | 1 | | 8-9 m | mmmgmlpvgdmmdnm | 0 | | 6-8 c | dbsgwppccnwf | 0 | | 11-12 h | phhhhhhhhhhkhg | 1 | | 2-3 b | bbhbzgvd | 1 | | 5-7 r | frlkptm | 0 | | 7-19 d | rxddghsddsrpdxxdddd | 1 | | 4-7 v | vcvhvtr | 0 | | 4-6 k | ctdqjk | 0 | | 2-6 s | gffhkvzs | 0 | | 5-6 k | kkkkrqg | 0 | | 4-6 q | qqqjzq | 1 | | 13-15 j | jjjjjjjjjjjjrhj | 1 | | 1-6 z | xwzkzz | 1 | | 7-9 x | xxxxxxxxxkxxxxxxznxb | 0 | | 3-4 t | jthdftcsfqt | 1 | | 3-5 c | cgfccgc | 1 | | 5-11 k | kkqkkkbkkkwkkk | 1 | | 5-12 k | kkkkkkkkkqkc | 1 | | 2-3 z | bpxzxchzzzz | 0 | | 4-5 z | zjzzwwz | 1 | | 4-5 k | kkkkts | 1 | | 18-20 d | dndzzcdgldkmjdvvdddz | 0 | | 14-15 h | hhhhhhhhhhhhqhksd | 0 | | 2-9 h | hhhhhhxhnh | 1 | | 12-13 c | cccccccccccsx | 0 | | 3-6 t | qsdptbvtjhcjvjntwdnx | 1 | | 3-4 q | qqqqq | 0 | | 7-8 v | vvvvvvcvvvv | 0 | | 10-15 g | ggggnrgggggflggg | 1 | | 6-11 h | hfdzhwmhwhhhgvx | 1 | | 4-7 g | qkggvgggwgfgfgn | 0 | | 4-6 t | tttvtx | 1 | | 4-14 s | sdgsssgqlqwjszkcgsz | 1 | | 6-10 g | gggggvgngfgg | 1 | | 5-6 f | vffffff | 1 | | 3-4 l | nlllwlmlf | 0 | | 1-7 q | qrrhxlq | 1 | | 12-15 m | nfdmhmkqpgcmnxmqcvn | 0 | | 3-5 s | sxrcsm | 0 | | 15-16 l | lllllllgllllllsl | 0 | | 5-6 x | xbnxxxxx | 1 | | 13-14 p | pppppppppprpdj | 0 | | 4-5 x | xxxxr | 1 | | 11-19 f | krfxmnqfhfqfksfzrgfm | 0 | | 9-13 d | ddtkddlkddddbdttr | 1 | | 3-6 j | vjzmjjr | 1 | | 10-15 c | ctccncccccdccccxcwcc | 1 | | 7-11 f | fcccqmkfxfdhznwb | 0 | | 3-10 s | qssqszxqpskrwcxsss | 1 | | 3-4 f | ddrwzgcmnfxfbffpdgbh | 1 | | 9-11 k | kkbjfbhkkglwx | 0 | | 10-14 r | rrrrzrzcrvrbrzllrk | 0 | | 6-7 s | mmzwdpv | 0 | | 10-16 s | sssrssgssmsszsrrps | 1 | | 2-3 h | hwxh | 1 | | 1-7 n | mnnnnngp | 1 | | 3-4 f | ffff | 1 | | 4-8 r | chrrrrvrsm | 1 | | 1-4 z | nzzz | 1 | | 4-5 f | ffflflff | 0 | | 13-15 q | qqqqqqdqzqsbqqgqqq | 1 | | 2-8 l | vxnkllwltllllt | 1 | | 14-16 n | pnnfzdzwnscvnfnn | 0 | | 7-8 n | nvnndthznnq | 0 | | 11-18 t | tttbttstxqttrrtmtt | 1 | | 3-5 t | jrgztqxsctnz | 0 | | 4-14 l | qbklhcmthmllfl | 1 | | 4-18 l | ncqqmclxshsfkcljlll | 1 | | 2-4 s | scqskss | 1 | | 2-10 l | lcllmcnllpvtlgll | 1 | | 7-14 t | tttttttttttttttt | 0 | | 2-3 g | gggqh | 1 | | 7-8 f | mfffffffgbtsffdvvfl | 0 | | 11-13 m | mjmmxmwjmjmmmmmcmmvm | 1 | | 2-5 z | zdzzh | 1 | | 2-3 m | tdvlm | 0 | | 10-14 c | ccrccccdcccmcccbcc | 1 | | 12-14 h | hhhhhhhthhhhlhh | 1 | | 3-4 s | sssc | 1 | | 16-20 n | nnnnfnnnnnnnnqnznnnn | 1 | | 18-19 s | wssssssssssssmsssvds | 0 | | 7-9 r | wrrrrrrrrlrgtr | 0 | | 4-7 f | fffffff | 1 | | 4-8 g | kgpgbgggmngxggwfh | 1 | | 4-9 p | pfpvppppj | 1 | | 3-9 d | dddddzddd | 1 | | 13-15 b | bbbbbbbbbbwtbtmbwqb | 1 | | 7-9 v | vvvvvvvvdd | 1 | | 3-4 l | llkk | 0 | | 4-12 j | thjjjfjjjjjjjj | 1 | | 4-13 m | lmwmbmqvzxjhmlp | 1 | | 5-9 b | bbwbbbbmbwb | 1 | | 7-8 g | gvgggggggggg | 0 | | 1-3 s | ssszvs | 0 | | 1-4 d | tdgds | 1 | | 4-8 d | rdddjdljdrd | 1 | | 5-12 m | mmmmgmgmmjcxpjm | 1 | | 6-7 j | jbjjjqc | 0 | | 19-20 w | wwwwwwwwwwwwwxwwwwkw | 0 | | 7-10 d | ddfdddddcddmmd | 1 | | 2-4 q | qqqqq | 0 | | 11-14 b | bbbbnbbbsbbbbvblb | 1 | | 9-12 g | gggggggsgtgggggggg | 0 | | 12-17 j | jjmpjjjjjhtcjhzjp | 0 | | 5-14 c | rbgcpfccppccncrsc | 1 | | 6-7 d | ddddddr | 1 | | 2-4 w | wwjzvs | 1 | | 4-11 h | frhhbknrmrhv | 0 | | 2-6 b | fxbhhzhb | 1 | | 2-5 s | lskss | 1 | | 5-9 p | tpppdpppzfqlfph | 1 | | 2-6 c | cgqqbf | 0 | | 4-9 x | xxxxxxdxxmxc | 1 | | 1-2 l | lllwf | 0 | | 4-8 t | tpttmtht | 1 | | 3-16 k | kktndqkrcfnwtkkk | 1 | | 4-6 w | wwwcfnsw | 1 | | 17-19 f | fffxpfffffffcfffffnf | 0 | | 10-14 l | lllllllllllllm | 1 | | 5-14 j | djjjjjsdvcjjjjtgjrjj | 1 | | 8-13 w | dxrbwrzwtvngwwvzr | 0 | | 2-3 z | zqzz | 1 | | 5-8 k | kkkklknlk | 1 | | 13-18 w | wwmwwwwwdwhwwxpwbw | 0 | | 14-18 x | xdxxxxxxfxxxdvxxxqx | 1 | | 2-4 v | qzsmvvv | 1 | | 10-11 j | jjkmjwjbsjsjjjjjjp | 1 | | 5-10 x | xxnxwxxxxxqskxwgpz | 1 | | 14-17 s | sssssssssssssssss | 1 | | 8-12 v | vvvvvvvvvvvvvvvv | 0 | | 9-20 v | vvvvvvvvvvvvvvvvvvvg | 1 | | 5-6 f | ffffrc | 0 | | 11-17 z | vzzzzzzzzzbzzzzzlz | 1 | | 5-8 t | ktwfntjtgmvpttfx | 1 | | 6-7 m | mmmmmmx | 1 | | 6-13 d | zdwddvmddwddgp | 1 | | 4-12 j | jjjcjjjvxjjnvjqj | 1 | | 3-5 c | ccccc | 1 | | 4-6 h | zhhhhq | 1 | | 4-5 m | mmmmjmm | 0 | | 3-5 j | ljnhn | 0 | | 4-7 d | qddpsdddddr | 1 | | 2-6 k | dkkfsxzmnckggm | 1 | | 6-11 q | pzqqdqqqnqqqtqgqsqsq | 0 | | 10-12 p | hsrpgppjmpbmmv | 0 | | 4-8 f | fkfscjff | 1 | | 1-3 w | wwkw | 1 | | 9-16 d | dddddddjdrdcddzgdd | 1 | | 2-3 h | hhhh | 0 | | 9-13 l | qkllllslvwpkmnlfzlll | 1 | | 3-17 f | fskfffnfjszfffwfzfcf | 1 | | 3-5 q | zfqsqqxqv | 1 | | 3-8 w | xwjqmpvw | 0 | | 3-5 w | rqffzwzdgxwjmlk | 0 | | 10-11 v | vvvcvvvjvhrv | 0 | | 4-13 b | bbbgbbbblbbbn | 1 | | 2-6 j | mjdjlrqjjjjszqzbbv | 1 | | 5-6 k | kkkgdlc | 0 | | 14-16 l | lllzlllblllllrllllx | 1 | | 1-5 h | wpqss | 0 | | 6-10 f | gvtmdfqrhft | 0 | | 14-15 r | rrrrjvrrrrrrrcfr | 0 | | 3-6 k | dkkkkk | 1 | | 3-4 t | ztpxt | 0 | | 3-5 g | gggwg | 1 | | 5-16 t | tttctthtttptttttttt | 1 | | 1-6 b | bfgmbbt | 1 | | 5-7 j | qhhjmjvjv | 0 | | 4-12 z | xjpzjzkvzzrzwz | 1 | | 3-4 x | xxxxx | 0 | | 4-6 g | gbgxsbprgzg | 1 | | 1-3 q | vqqgq | 1 | | 11-12 x | xwxnrxxxmzxx | 0 | | 6-9 r | rvvrrrrqrr | 1 | | 16-17 j | jjjjjjjjjjjjjbjvcj | 0 | | 9-10 k | kkkwjkrwkkkrxkkvhkf | 1 | | 1-7 v | vjvvcrk | 1 | | 8-13 s | sssqrsqtsssmsssss | 1 | | 5-6 p | ctslhnhphlmpppz | 0 | | 1-7 x | zfgmlxxxxbcsfxxclh | 1 | | 12-15 w | wwwwwwwwwwwfcww | 1 | | 9-17 g | gdggghjmggsggggfgj | 1 | | 5-9 s | sscrspfvspssj | 1 | | 2-3 w | wmltwwj | 1 | | 2-10 c | ccrcjkpkccvlbckbbtc | 1 | | 7-18 t | tttttttttttttttttw | 1 | | 3-8 t | tttttsswttt | 1 | | 2-17 j | jngjjjcjhjjjjjgjs | 1 | | 2-4 l | jhlspd | 0 | | 10-20 g | nvshfzjmtgsrnhtjgzzg | 0 | | 7-11 c | bscccccxccc | 1 | | 12-14 m | mmmmmmmmmmmmmm | 1 | | 4-5 t | tttrt | 1 | | 1-2 n | szbzvnlxc | 1 | | 3-7 b | bbbbbbb | 1 | | 2-3 z | ptpzzvc | 1 | | 7-8 r | rrrxrprr | 0 | | 17-18 c | ccccccccvcccccccgw | 0 | | 5-6 g | qqrghgwx | 0 | | 14-16 h | hhhhhrhhwghkhhhhhhh | 1 | | 13-15 g | kgggxggggrgglglvgf | 0 | | 10-11 g | ggpgggngggng | 0 | | 3-5 n | sldjnxplwngpnsqm | 1 | | 5-12 k | vkrkksdkslmsrkxtslk | 1 | | 6-8 q | vdqqvqqqz | 0 | | 5-9 h | hhhhhmmhm | 1 | | 1-3 r | rrrr | 0 | | 12-13 p | ppppcplbpfppppppp | 1 | | 1-8 s | jdkssbsqks | 1 | | 13-16 j | jjtjjjjjjjwjjjjkj | 1 | | 1-2 z | jzzz | 0 | | 2-3 n | pkjt | 0 | | 7-8 l | lrdlzlqjllm | 0 | | 2-8 j | jjljjnjkjzvjjq | 1 | | 13-16 j | jjjjjjjjjjjjdjjq | 1 | | 14-16 q | qqqqqqqqqqqqqqqqqq | 0 | | 1-5 b | bqpglwpwbzzcdxhxqwq | 1 | | 11-18 q | qqqqqqqqpbqqlfqqwq | 1 | | 12-14 p | pppppppppppdpxp | 1 | | 7-10 x | slxvrxnlwh | 0 | | 7-8 z | zfzzzrbzzz | 1 | | 5-9 r | rsnzrrfrrrsmlr | 1 | | 5-6 z | zzzwzzz | 1 | | 12-13 f | fffffcfffffnnf | 0 | | 5-6 x | xbxnvx | 0 | | 11-13 v | nvvvvvvvvvrvv | 1 | | 5-14 k | xvgfkksvtccfvkmbkmz | 0 | | 1-6 x | gxlqxxxx | 1 | | 6-7 b | kbbkqbbbhxqcdpbvb | 1 | | 12-14 j | jjjjjjvjjjjjjnjjj | 0 | | 7-10 f | qfffgfdffzff | 1 | | 4-8 j | jjjkjjjjjj | 0 | | 8-9 g | ggggggggg | 1 | | 4-11 c | bdkskbwctpckccbzbcc | 1 | | 2-7 s | tsxlhfvtbzkkqssmss | 1 | | 3-4 m | mmmmmmmmmmm | 0 | | 3-5 s | zzsss | 1 | | 3-4 v | vvpb | 0 | | 17-18 d | dddddddddddddddddg | 1 | | 15-16 x | xxxxxxxxxxxxxcxx | 1 | | 1-3 p | npxrvvcgjpf | 1 | | 7-10 h | hhrhhhhhhh | 1 | | 2-13 x | xbxxxxxxxxxxcxx | 1 | | 2-3 c | gcpckck | 1 | | 1-4 k | mwkk | 1 | | 4-9 g | xvbggpltgglvggmgnpxk | 1 | | 14-17 f | nbfhblbmqzrmrfzcfn | 0 | | 11-13 c | zkccccdcccccxcvtc | 1 | | 10-12 l | lllllllllllll | 0 | | 4-5 w | wwwww | 1 | | 4-6 p | pwtpppj | 1 | | 7-9 j | jjjjjqjjrkj | 1 | | 15-17 k | krkkkkkkkkqkkkfks | 0 | | 9-10 r | rrrrrrrrgxr | 1 | | 14-17 c | mbwhtknbvrqrzxprcctd | 0 | | 2-4 h | hlhxkhhh | 0 | | 17-18 w | wwzwwwwwwwwwwwwwnpw | 0 | | 1-3 w | wdjpt | 1 | | 7-16 j | djjgjjdjbwdjzjjcjdjj | 1 | | 1-8 p | phqgprxp | 1 | | 11-17 k | kfkkkkkkkkqkkkkkhkk | 1 | | 14-15 t | httttttttttttpmt | 0 | | 9-11 w | wwwwwwwwwww | 1 | | 3-7 b | bbgbbkbbbbbbbjp | 0 | | 8-13 t | tttttttlttttjt | 1 | | 9-10 b | bbbbbbbkbbb | 1 | | 9-10 q | qqqqqqqqqs | 1 | | 12-13 p | prpppppvpppkhp | 0 | | 2-4 s | swsvs | 1 | | 8-11 j | jjjjgjcjjngjfsjs | 1 | | 2-8 r | rsrrrrrlr | 1 | | 4-9 j | xsfvbjdmj | 0 | | 13-14 b | bbbbssbbbwjqms | 0 | | 9-10 m | zxmbtjhpmhwx | 0 | | 3-4 v | fsvvdv | 1 | | 17-20 w | wgwwjqdwwwfgsrwwwsgw | 0 | | 8-10 t | ttpttttttw | 1 | | 3-8 t | mxptddtdttb | 1 | | 9-10 v | vvvvvvvvtd | 0 | | 12-14 q | qqqqqqqqqqqdqj | 1 | | 1-2 n | cnnn | 0 | | 14-17 z | gzzwtvhzgrzxzrxxhcz | 0 | | 3-5 c | clccczc | 1 | | 1-13 t | gjbzdcntxhfmg | 1 | | 1-6 z | zdmsjnz | 1 | | 6-7 j | jfjjnrjjj | 1 | | 13-14 h | hhhhhhhhhhhhrth | 1 | | 2-5 x | xxqxxt | 1 | | 3-8 w | wwwhwwwwwrdpww | 0 | | 3-10 n | nnnnnnnnnnnnnn | 0 | | 7-13 l | llfllmlslpslltll | 1 | | 4-8 w | wwwwtwwmkw | 1 | | 7-8 t | ttttttkrcwq | 0 | | 3-6 g | cxwmbgmxg | 0 | | 12-13 b | bbrdbkbmbvbbb | 0 | | 1-16 d | dsndtgbmdrdxbddddjdd | 1 | | 3-11 g | gggjwgrggzxmxbgg | 1 | | 11-18 s | ssbscmdbssksswksss | 0 | | 13-15 s | svsssssslsbsssssssz | 1 | | 5-12 n | nnnnmsnnnnbz | 1 | | 5-8 g | ggtgfggsgggggggggggg | 0 | | 2-3 c | kccc | 1 | | 14-18 t | ttttttttsttttttttt | 1 | | 3-5 r | rrbprp | 1 | | 5-7 s | jszjsgsxtzkspgs | 1 | | 11-12 m | mmmmmmmmmmjm | 1 | | 6-10 q | qqcqqqbqqp | 1 | | 5-8 s | ssjszwsts | 1 | | 5-6 x | xxxxsl | 0 | | 15-20 k | kkkkkkkkkkkkkkkkkkkk | 1 | | 13-14 s | sssgssrpssssszss | 0 | | 3-6 v | zjxcgdvswnfvvvv | 1 | | 5-6 m | mmqmmm | 1 | | 5-10 t | ttttttttltt | 1 | | 2-4 d | qsdvsgtd | 1 | | 2-11 t | btttbttznrctwwnltvnt | 1 | | 6-16 b | rgkcwbcnrdbrqvqbbq | 0 | | 2-13 j | jjjjjjjbjjjjj | 1 | | 17-18 j | jjjjjjjjjjjjjjjjjj | 1 | | 9-16 v | rvvvmvgsvvvvvhjvvqs | 1 | | 4-5 d | wldddd | 1 | | 2-13 v | mvvvvvvdvjvvvr | 1 | | 6-7 s | sdssfpwsskqbq | 0 | | 12-13 m | mmmmhmmmmxmmmm | 1 | | 14-15 j | jjjjjjjjjjjjjjj | 1 | | 2-13 d | vddnpddsdpddd | 1 | | 3-5 g | gkgggks | 1 | | 14-15 g | dwggggggggjvgkgqgggg | 1 | | 10-11 n | nnnnxnngrxhnn | 0 | | 3-6 r | rnrnrr | 1 | | 7-13 k | cpmxcndgssktpkkpfkk | 0 | | 3-7 s | sssssss | 1 | | 6-10 b | nrbmbbrhbfrbnn | 0 | | 8-9 l | lllllllft | 0 | | 6-8 x | xnxxkwknxlxxbbx | 1 | | 1-16 f | fffzkffffknfrfqqf | 1 | | 5-6 v | jvvvvvvvppvt | 0 | | 14-18 n | nnnnnnnnnnnnnknnnb | 1 | | 5-16 n | ncnnnsvlpndnkvvrcf | 1 | | 13-15 j | jjjjljjjjjjjqjj | 1 | | 4-7 s | qhrhsdbsmmlstznms | 1 | | 5-13 m | kmmctmsmmmglzxm | 1 | | 14-17 s | ssssssgsssszspssb | 0 | | 13-20 x | sjxdxqcxxxxqxkxxxxxq | 0 | | 7-9 f | ffjfffnjnff | 1 | | 10-11 m | mmmmmmmmmmxmmm | 0 | | 3-5 q | qqbqc | 1 | | 14-18 f | tfkfrbbznftcfftbmfxf | 0 | | 1-15 l | lclwqxcczgnktqltm | 1 | | 9-12 g | fgggmgggfggm | 0 | | 16-17 t | mntvzrcdttplrfzkv | 0 | | 3-5 n | nngnp | 1 | | 3-6 s | gsxznsssbbtsl | 1 | | 3-4 s | hsssv | 1 | | 10-11 m | smmmmmmmmmnm | 1 | | 11-15 k | kkkkkkkkkkkxkbkjk | 1 | | 8-11 x | xxxxrxkvmxlxwp | 0 | | 2-5 p | pppbbp | 1 | | 11-13 b | bbbbvbbbbblbrdb | 1 | | 9-16 w | wwgwwwwwhwwwwwws | 1 | | 9-10 q | zqqkqvqskqqzzqcjqq | 1 | | 4-6 j | jbkjnjddjhjhjqbxpzf | 1 | | 2-3 c | ccrccz | 0 | | 15-16 r | rrrrbrrrrrdrrrrrr | 1 | | 2-5 x | xxqrxwrchhd | 1 | | 6-7 r | rrrrrrkrr | 0 | | 5-6 h | hhhhpq | 0 | | 9-11 s | ssssssstsss | 1 | | 1-6 k | ctprksgrdgkg | 1 | | 7-8 k | kkkkdkkkkk | 0 | | 1-4 l | mllt | 1 | | 5-10 b | bbbbbjbzzbbbb | 1 | | 1-2 c | cczfkcmsdnghcnmhvx | 0 | | 12-16 z | zgzvzzzzzzzzzzzz | 1 | | 13-14 k | kksmtsrkrwxkkk | 0 | | 10-12 q | qpqsqqqhqslqqnnqjqqg | 1 | | 4-15 q | zgppzlxqvrdvnkkgnr | 0 | | 1-4 b | dbjbk | 1 | | 5-9 c | cccclcccpcccvc | 0 | | 2-6 t | ttctdtdtts | 1 | | 2-3 q | pqqtbwkr | 1 | | 12-15 v | vdvvlvvzvvvgvvv | 0 | | 2-8 c | ccbcbcbncxxgcngrck | 1 | | 2-4 z | cnzzt | 1 | | 3-4 j | jjtrjj | 1 | | 6-12 x | xxxrxqxxxqxxkxs | 1 | | 5-9 r | rqnbnrrnnrwhdrr | 1 | | 2-5 s | smssk | 1 | | 4-16 g | hgzjhgggcgnwddkq | 1 | | 4-10 l | jlgxxlgllql | 1 | | 1-5 r | rrwgrrck | 1 | | 1-11 t | wtttttttttrtttttttt | 0 | | 5-9 n | njnnksntk | 0 | | 5-8 s | ssssswsss | 1 | | 2-4 q | qqqq | 1 | | 1-9 b | jqmxlrdbbbfnwtlqjbbf | 1 | | 3-5 g | qhgsgpjdphghhjwqx | 1 | | 1-4 d | mddd | 1 | | 4-6 q | qsqqqqgqqg | 0 | | 9-15 f | ffffxffrffwfffffff | 1 | | 2-6 z | zrzshvzlzkxzp | 1 | | 7-10 s | sppscfwscfsszbsf | 0 | | 5-19 r | drwrmrvprrrdrrrrrkv | 1 | | 9-10 n | nnnnxnnnnr | 0 | | 4-10 m | mmmmqmcmlmvmm | 1 | | 10-13 v | wcnzkqgvvgxldxl | 0 | | 9-11 k | vclfkkfcdbwwk | 0 | | 12-13 r | rrrrrrrrwrrfh | 0 | | 7-8 s | szsssswfs | 0 | | 4-6 z | nzzjzk | 0 | | 5-7 w | ghwwdrr | 0 | | 2-10 x | xxnxxxwxxsx | 1 | | 9-10 b | bbktbbbxhfbpb | 0 | | | | 643 | #+TBLFM: @>$3=vsum(@1$3..@>>$3) Damn it, /still/ too high. Hmmmmmm. FINALLY!!! 643 babeeee. On to part 2. ** B *** Problem While it appears you validated the passwords correctly, they don't seem to be what the Official Toboggan Corporate Authentication System is expecting. The shopkeeper suddenly realizes that he just accidentally explained the password policy rules from his old job at the sled rental place down the street! The Official Toboggan Corporate Policy actually works a little differently. Each policy actually describes two positions in the password, where 1 means the first character, 2 means the second character, and so on. (Be careful; Toboggan Corporate Policies have no concept of "index zero"!) Exactly one of these positions must contain the given letter. Other occurrences of the letter are irrelevant for the purposes of policy enforcement. Given the same example list from above: 1-3 a: abcde is valid: position 1 contains a and position 3 does not. 1-3 b: cdefg is invalid: neither position 1 nor position 3 contains b. 2-9 c: ccccccccc is invalid: both position 2 and position 9 contain c. How many passwords are valid according to the new interpretation of the policies? *** Solution Okay, I can reuse some code from part A here. Namely, the parsing part (which I should break out into its own function) of the spec. #+NAME:solution-2b #+begin_src emacs-lisp :var input=input-2 (defun test-pw (spec password) "Return whether a PASSWORD works with the SPEC. PASSWORD is a string. SPEC is a string of the form - ." (let* ((split-spec (split-string spec "[ -]")) (min-string (car split-spec)) (max-string (cadr split-spec)) (chr-string (caddr split-spec)) (min (string-to-number min-string)) (max (string-to-number max-string)) (chr (string-to-char chr-string))) (if (xor (found-at chr password min) (found-at chr password max)) 1 0))) (defun found-at (item sequence position &optional eq-func) "Determine whether ITEM occurs at POSITION in SEQUENCE." (let ((eqf (or eq-func #'eq))) (if (<= position (length sequence)) (funcall eqf item (elt sequence (- position 1) ;; careful -- the spec's 1-indexed )) nil))) (let* ((strlist (split-string input "\n+")) (alist) (valid-count 0)) (dolist (line strlist alist) (let* ((splitted-line (split-string line ": ")) (spec (car splitted-line)) (pw (cadr splitted-line))) (if (and spec pw) (add-to-list 'alist (list spec pw (test-pw spec pw))))))) #+end_src #+RESULTS: solution-2b | 2-7 b | fdbvbdb | 1 | | 5-6 r | rrcrvmr | 0 | | 18-19 m | mmmmmmmmmmmmmmmmmmm | 0 | | 7-17 n | mqhnbwxnnnmcdlkfq | 0 | | 5-8 k | kkqkkkkkk | 0 | | 2-4 v | vvjnrxnvtdmm | 1 | | 7-10 m | xmxmmwtmmmnvcrmkrmmm | 1 | | 8-9 f | fffffffff | 0 | | 3-5 q | qqqqvpqq | 1 | | 6-14 c | cpcccgcddfzcgcccc | 1 | | 1-5 p | zpppxbmj | 0 | | 2-3 s | vxgv | 0 | | 5-11 x | lfxzxxcxxxxlbwnrx | 0 | | 13-19 f | ffffffffffffgfffffnf | 0 | | 1-6 q | zvqqqmzqqt | 0 | | 2-10 w | wvwwwwwwwwf | 1 | | 12-18 c | ccccccccftccccccccc | 0 | | 11-14 m | mmmmmmmmmmmmmmmkmmm | 0 | | 6-7 j | jjzjthj | 1 | | 7-10 g | ggggggfggg | 1 | | 4-6 n | tnnnpnn | 0 | | 3-7 f | frfshbfn | 0 | | 11-13 s | ssssssssgsssss | 0 | | 15-17 s | sssbsssscsssfssspsg | 1 | | 6-7 x | xxxlqwlxxvnnvvc | 0 | | 3-4 h | hhhjq | 1 | | 3-5 p | cpprxp | 1 | | 10-11 m | mmzrmmmmmmmmm | 0 | | 5-16 x | xzxpxxxxjxqxxqms | 1 | | 7-9 m | gmmrtzmmrmmcmm | 1 | | 3-4 m | qmmjmm | 1 | | 1-5 z | zzzvzzz | 0 | | 4-7 n | nnnsnnnnnnnnnnrnn | 1 | | 3-6 l | vlljlbllrbztnl | 1 | | 1-3 j | jqjj | 0 | | 13-15 x | xnxxxxkxpxxxtxwx | 0 | | 6-8 v | vwqcvvvvvvsvvxjv | 0 | | 3-4 b | bdvbdwrgcbpwblj | 1 | | 9-12 h | hhhhhhwhthhhh | 1 | | 7-9 k | kkkkckkkck | 1 | | 9-10 v | vvvvvvvvhw | 0 | | 1-7 r | lrpcfdfksxrh | 0 | | 3-4 r | grrrr | 0 | | 4-6 b | bbtrbbbb | 1 | | 1-2 f | kfhf | 1 | | 1-2 s | ssst | 0 | | 1-4 s | sqss | 0 | | 5-7 z | gzzzzzzjz | 0 | | 2-4 s | jjlm | 0 | | 8-10 h | hhhhhhhkhc | 0 | | 2-4 c | wccb | 1 | | 3-7 q | qjxlgqd | 0 | | 3-9 m | mtmxsdmmzsmlc | 1 | | 12-16 m | mmmdmmmmmmwpmmmlm | 0 | | 14-15 d | ddddddfdddddddj | 1 | | 7-8 k | kkkkkkkb | 1 | | 1-6 d | qddddd | 1 | | 11-13 b | bbbbbbbbbbbbdbbbb | 1 | | 5-11 x | cxxzvxglxrbbqqcxf | 0 | | 5-8 f | zhfglzmkfnqmbbtffftf | 0 | | 5-7 s | zwldstwxsh | 1 | | 3-4 w | hwww | 0 | | 1-6 r | xrrrrprfl | 0 | | 10-13 c | cccmccccccccpcwcc | 1 | | 11-12 m | mmmmbmmmmmmm | 0 | | 19-20 w | wwwwwwwwwwwcwwwwwwqk | 0 | | 3-4 g | ggsgq | 1 | | 3-6 l | xllhplwhllllzqbkll | 0 | | 1-15 p | splppplppprppcppppdp | 1 | | 5-9 s | sfsslssss | 1 | | 4-5 r | ktkwwzcrv | 0 | | 4-8 t | rttttttt | 0 | | 2-4 x | xxqxx | 0 | | 1-7 n | nttvqnn | 0 | | 7-11 f | nfqdgffmwlfc | 0 | | 1-5 x | xxdxkxxxxgx | 1 | | 2-4 v | rvpvsvfft | 0 | | 6-8 c | jjcxcjnccclc | 1 | | 4-9 n | zswmtrnlspnxdnbnbvln | 0 | | 1-8 f | fffffsngffczj | 1 | | 14-15 j | jjjjjjjjjjjjjbw | 0 | | 10-11 l | lllllllllqrmllkllvl | 0 | | 1-5 n | bzvxn | 1 | | 3-6 z | zzzzzhcz | 1 | | 1-4 g | rgfg | 1 | | 11-12 b | nbbbhbbbgbhbbglqbbm | 1 | | 2-5 f | hffrfm | 0 | | 2-7 p | npnfpswbhsbgknmvlgmx | 1 | | 3-5 d | dmqddv | 1 | | 3-15 c | mcvccvccccccccd | 0 | | 8-11 k | dvhvwdpkbdnwn | 1 | | 11-14 q | qqqqqkrdqxjfqcqpqqqs | 0 | | 2-9 l | klgblptpqzdp | 1 | | 9-10 s | sssssssscrsz | 0 | | 2-4 d | dsdwhnj | 0 | | 8-11 q | kggqvqbvwfbqlv | 0 | | 8-10 l | qlrjglllxl | 0 | | 1-3 w | tcvttwhsjpzd | 0 | | 2-15 h | whxfjxtcxlwxchb | 1 | | 6-9 x | xgxdlxrgnfmsmfxcwx | 1 | | 1-18 r | rvzjrgfrkrxrgbrdlrr | 0 | | 1-2 d | dxbd | 1 | | 5-6 h | hhbhhh | 0 | | 16-20 v | vzvhjvbvvtvvvvvvvgvh | 1 | | 7-11 x | xxxxvxxxqxf | 1 | | 19-20 v | vvvvvvnvvvvvvvvvvvvg | 1 | | 3-5 c | qjfndkck | 0 | | 5-14 g | tggjggggggggggmgz | 0 | | 16-18 c | tcccccccctccccctcccc | 1 | | 3-5 g | tpgwjrr | 1 | | 2-6 b | frbbbtvb | 0 | | 10-14 r | rzrnvtrfkrrrvjrr | 1 | | 5-6 k | kllvds | 0 | | 3-4 x | xxxx | 0 | | 4-11 v | vvmzvvvpvvxk | 0 | | 15-19 r | rrfrrrnrrrrrrrrrrrr | 0 | | 6-7 v | vvvvvpz | 0 | | 4-6 n | nnnnnnnnnnnxnnnnn | 0 | | 1-3 j | zjmjjjj | 0 | | 1-4 f | zmnffhprzvrbhz | 1 | | 2-7 z | czzzkzzzrz | 0 | | 9-15 g | zggnmghgggrggxqzj | 1 | | 1-6 g | hzcpck | 0 | | 1-10 t | bsptvbqtctmwtztgtwt | 1 | | 5-10 v | vrvfvfvvwnvs | 1 | | 11-13 k | kkkkkkkkkkkkk | 0 | | 2-10 g | qgpbkxdpggfglbpvn | 0 | | 4-5 t | htkntst | 1 | | 2-3 z | qzbr | 1 | | 2-3 s | wsfdwh | 1 | | 13-16 t | tdttqxtttttttttm | 1 | | 7-8 s | ssssspgsqs | 1 | | 4-6 t | ttthtn | 0 | | 2-14 c | wkdjtjxccwvzwbgr | 0 | | 10-12 p | pgpprmwwczxjhpvpqmpp | 0 | | 4-6 w | fpbwwwwcwprflnjtwl | 0 | | 15-16 n | nnnnnnfnnnhnnnnnn | 0 | | 14-15 n | nnnnnnnnnnnnnnn | 0 | | 1-9 c | gscmdrvngstmfknsjrp | 0 | | 8-11 q | qqqqqqqqqqkqq | 1 | | 17-18 r | sxrnvrtswzzzwwrdrt | 1 | | 1-4 w | wwwv | 1 | | 2-4 l | xlwsrlclpql | 1 | | 3-7 f | fffkfffnkdff | 0 | | 1-4 w | lwnwj | 1 | | 6-7 b | wbbbbbx | 1 | | 2-7 s | dshmwzsspls | 0 | | 8-9 p | ppppjvwlpd | 1 | | 17-19 k | kkkkkkkkkkkkkkdkkkhk | 1 | | 4-12 k | kkkqkkkknknv | 0 | | 1-2 n | nkwj | 1 | | 6-7 s | gsvwsjsgssbss | 1 | | 2-4 r | hrmrtrs | 0 | | 2-3 c | kcgcrbcqk | 1 | | 4-5 r | rrkrr | 0 | | 2-3 n | vntn | 1 | | 7-8 r | rrgrrrrr | 0 | | 3-6 q | qrdqcqqqq | 1 | | 5-6 k | xpkkkk | 0 | | 4-8 c | pknvllcbxxcs | 0 | | 8-10 q | qczgcdqbqlqlzqq | 0 | | 2-4 d | ndhdsddzq | 0 | | 9-12 g | gggglggjgggggg | 0 | | 7-9 m | mmmmmmmmm | 0 | | 7-10 v | rpvvnzpcccvvhvbvvtz | 0 | | 16-18 v | vvvvdvvvvvvvvvvlvm | 0 | | 9-11 q | sblqqbqqglfqlqfzqqld | 0 | | 4-7 b | bstmbbbbbmgtqm | 1 | | 3-17 m | mmmmmmmmmmmmmmmmg | 1 | | 2-10 p | ppjppppplpp | 0 | | 9-10 b | bnphxrvfbjx | 1 | | 5-7 w | wwwwhwtw | 0 | | 2-4 b | bzplb | 0 | | 7-10 v | vvcvvvcvfzn | 0 | | 8-9 r | rrrrrrnjdr | 0 | | 1-3 s | ssss | 0 | | 3-8 c | ccccccct | 1 | | 5-11 r | wrrrdprrrrn | 0 | | 7-8 g | mrggggfg | 1 | | 4-5 j | jtwsspjj | 0 | | 6-15 k | nqkkkhkkkkkhkkkkkzkk | 1 | | 16-17 k | kkfkkkkkkkkhkkkkp | 1 | | 6-7 d | jdddfppddvdmds | 0 | | 2-3 b | gbzzqdvhpbvfgh | 1 | | 2-4 h | wshlhh | 0 | | 3-11 m | hmcmtmqmxcmm | 1 | | 12-15 x | pxxxxxxxxxfbxxx | 1 | | 5-6 j | jjjjjj | 0 | | 14-19 g | zcggccgvgpjghznmvgpg | 0 | | 1-2 b | rkpbg | 0 | | 1-4 t | rrjg | 0 | | 3-13 n | nvpnrnjnnnqnnmnhlnx | 1 | | 2-3 b | bmzb | 0 | | 6-8 l | lxlllklll | 1 | | 5-8 n | qknnnfgn | 0 | | 14-18 k | wkskkkkkkkkkkkkkkn | 1 | | 1-10 f | pmtffffjfgkfpjm | 0 | | 10-11 c | ccccxccccbc | 1 | | 10-13 g | ggggggqgxphggcg | 1 | | 8-14 b | lbdvsxcbzvfltl | 1 | | 2-7 h | hhhhhhh | 0 | | 17-18 q | qqqqqqqqqqqqqqqqqq | 0 | | 2-4 h | vhthh | 0 | | 6-16 m | mmrmlzdmzxnpmhmhmmfm | 0 | | 15-17 f | sfsffffffffffffxnfff | 1 | | 4-7 d | drkkhrd | 1 | | 11-13 x | xxjxqxxxpxwqxxxx | 1 | | 10-11 x | xjxxxsxxxfxx | 1 | | 5-6 z | zmzjznzkxzr | 1 | | 3-10 l | rszlllgzbvlll | 0 | | 4-9 s | dslxngsjssxpsssgss | 1 | | 3-4 j | jkjj | 0 | | 4-5 x | cdxxx | 0 | | 2-4 v | fpvvpv | 1 | | 1-6 k | kvxbkvmdmgdmkhkwq | 1 | | 9-13 v | nvmzrnvvvqvvvgvvvtvv | 0 | | 3-8 q | qpnqjptfrqxtdncqbg | 0 | | 4-5 z | zztzz | 0 | | 11-16 v | vvbvvvhvvvvrvvvv | 0 | | 14-16 k | kkkkkkkmkkkkkkkk | 0 | | 17-18 g | gggggggggggwggggtfg | 0 | | 4-8 q | qqqltrkqzqqxqc | 1 | | 6-9 w | wwjwmtwwfjs | 0 | | 8-17 p | fppppbppjpfpppzcnp | 1 | | 3-13 b | bbbbbbbxbqbbf | 1 | | 14-15 f | ffffjffffztfffzff | 1 | | 2-8 d | pzdrzhdddpd | 1 | | 9-10 z | bnzjzzzzzz | 0 | | 3-4 p | hpbpppnxppk | 1 | | 10-11 h | xhhhhhhjhghh | 1 | | 5-10 m | bqhbgmpmmhmwhmmm | 0 | | 8-9 m | mmmmmzmmmmm | 0 | | 4-12 r | rrrcvrrrrwrr | 1 | | 3-4 l | klzl | 1 | | 14-17 l | llllllllllllldllcll | 0 | | 3-7 l | llcllllllll | 1 | | 3-5 s | hdkshswvlmg | 0 | | 3-5 f | flhbfkbfmf | 1 | | 2-3 c | cxrwvncfl | 0 | | 16-17 l | llllllllllllllllrl | 1 | | 13-14 z | zzzzzzzzttzzzzzz | 0 | | 2-9 f | sfprndvdptlfdwh | 1 | | 3-15 l | dpxfgtznlgmptjlxhzl | 1 | | 8-9 c | cchccccwc | 1 | | 8-9 z | zffzzzzxzzz | 1 | | 3-4 r | rrrj | 1 | | 8-11 q | dcqqmnqqzqqqqqqqq | 0 | | 6-8 f | jxlfvnrwt | 0 | | 13-17 j | jjxjjvnjjjjjhjdjpjpj | 0 | | 1-5 s | pvqqhnpvcmxrwsspvnw | 0 | | 5-12 t | tdtslpttttvttgtkkt | 1 | | 14-18 l | bscmdvlczsgljvlbllwp | 1 | | 17-18 w | wwwwwwjwwwwwwwwwfj | 0 | | 8-15 t | tttttttvttttttjttt | 0 | | 10-19 m | lrzzlvfncmpplqbmxhh | 1 | | 6-11 k | spgkkxpmtkbdkmzn | 0 | | 12-16 t | tltmtttwzjtssmtt | 1 | | 11-13 m | mmmmmlmmmmmdmm | 0 | | 12-16 w | pgwllwwwwwwwvtwwww | 0 | | 11-15 c | cccccwcxcccckccccccc | 0 | | 2-5 p | jhxcptzrpfsrxj | 1 | | 5-6 p | ppppxc | 0 | | 2-4 k | kkkk | 0 | | 4-6 v | bjtvvv | 0 | | 2-8 m | rttmqfkvjgq | 0 | | 9-10 x | xxxxxxxxxj | 1 | | 4-18 v | hvvvvjqvvvqvtjmvfvvf | 0 | | 7-14 x | xxxpxxxxxxxxcn | 1 | | 4-8 r | rrrmrrrz | 0 | | 8-9 h | hhhhhhhhl | 1 | | 6-9 m | bzmppmqjdmhmgmmdm | 1 | | 3-9 f | jmhkffdhsdsf | 0 | | 5-12 n | xnnhkdpmnjnzqnc | 0 | | 10-12 l | lllllllllplt | 0 | | 10-12 k | kkkkkkkjkzkk | 1 | | 11-16 k | kkkkckkkkkkktkknkkk | 1 | | 17-20 f | ffffffmffffffffffxff | 0 | | 4-6 z | zzhzzlg | 1 | | 17-18 q | qqqqqqqqqqqqqqqqcx | 0 | | 9-11 j | jjjjjjjjwnvjkxj | 0 | | 6-8 c | cccccccc | 0 | | 3-7 m | mmkmmrdmh | 0 | | 2-7 x | rmbftbcmcxxxxpttzjwb | 0 | | 1-7 w | llvwjdjvtp | 0 | | 1-3 p | fpmp | 0 | | 6-8 b | bbbbbbbbbb | 0 | | 2-5 t | tttttt | 0 | | 2-8 l | fkxzlkdlmlllnwhlt | 1 | | 10-12 g | ggxgghbgzxztg | 0 | | 3-7 s | sgsnshspt | 0 | | 4-9 d | gsdhddtjdjg | 1 | | 3-20 v | vpvwnvrtvbvkdvnvvhrd | 1 | | 2-4 r | zrcwpcrfm | 1 | | 2-7 k | kkknkknkjk | 1 | | 4-7 x | xhxxrmx | 0 | | 6-9 z | qtzhzgvzfzkgzzsfz | 0 | | 3-15 x | klxxxslhpzwvfbxxlx | 0 | | 2-4 w | wwwgw | 1 | | 2-4 d | xcdn | 0 | | 8-10 d | dddddddkdr | 0 | | 17-19 s | mssssssslsssssssjsq | 0 | | 14-17 c | ncccccckccccccccqc | 1 | | 4-7 x | xpzrmmjxxnxlxxx | 0 | | 5-10 h | hhnhhghstmtcq | 1 | | 1-4 t | txctqzq | 0 | | 2-4 d | ngtbkhcdwgd | 0 | | 1-5 j | jjtnj | 0 | | 5-7 c | cccpcchcsmlhc | 1 | | 2-6 n | mxnnfnx | 1 | | 2-3 w | wwwrwsw | 0 | | 3-7 n | znfdhbn | 1 | | 10-12 p | pppppppppdpd | 0 | | 4-10 f | fffxfqtffff | 1 | | 7-11 s | sssssswsssrmb | 0 | | 11-13 j | jmjvjjjjjjgjw | 0 | | 4-13 l | lllcllllllllllllllll | 1 | | 2-4 p | pfppp | 1 | | 7-8 k | kkkkkkxf | 0 | | 3-6 t | xjbhzxtttb | 0 | | 3-12 t | ttfxjgttsntkxznct | 0 | | 4-5 c | cmccbcg | 1 | | 12-14 w | tkwdwwbtqwzphmzklrwk | 0 | | 12-16 g | ggggngrxhgghgggggtgg | 1 | | 12-13 d | ddvddfddjdddmqvdkdmr | 1 | | 2-12 z | hnzdxfzxpwzzz | 1 | | 1-7 h | hdhlhhfhh | 1 | | 4-5 g | gglglx | 1 | | 2-10 m | mmmmbqrmqmhmqm | 0 | | 10-13 l | mzlhlltlllllrcl | 1 | | 14-15 c | cccccccccccccgzc | 0 | | 5-9 b | bltqmxbsbbvdpvsqkpk | 1 | | 9-15 k | kckkkktskrpkkqkwklvk | 0 | | 3-6 j | jjjjjz | 1 | | 1-2 q | qkqqqqq | 1 | | 7-8 p | ppgpppppblrp | 0 | | 6-8 x | xxxxxxxx | 0 | | 5-9 k | rkkkkdtkmkjkdr | 1 | | 15-16 j | jjjjjjjjjjjjjjjp | 1 | | 13-15 b | bjbbbwbbbbbbdbbbbb | 1 | | 6-9 x | sxjxxxxxx | 0 | | 3-7 q | tsvrqqmdlzxs | 0 | | 7-10 t | ttchcttwvtttftrtt | 0 | | 1-3 j | jjjjj | 0 | | 1-7 h | wpltchhcxwhkg | 1 | | 4-15 h | hhhhhhhhhnhhhhthhhhh | 1 | | 6-8 t | jdlgtttpq | 1 | | 4-5 t | ttttt | 0 | | 2-4 n | nvntn | 0 | | 8-10 m | mbmmmmklmw | 0 | | 4-5 x | xxxfp | 0 | | 5-6 n | qnrsvnvrnnn | 1 | | 14-18 f | fffftmfffdfffftfff | 0 | | 6-10 q | qkqqqpqfxq | 1 | | 3-5 s | mjdsssssssssmss | 1 | | 10-19 x | xxxxxxjtxxwxmqswxxx | 0 | | 1-4 s | srstdtspcrqqgqsl | 1 | | 6-15 g | ggggggfggbsplggggh | 0 | | 1-4 q | vdqgqwhg | 0 | | 18-19 h | hhhhhhhhhhhhhhhhhhh | 0 | | 14-18 v | vvvvvvvvvvvvvvvvvv | 0 | | 3-4 z | zbztzgfbcf | 1 | | 1-5 h | dhrhjd | 0 | | 10-14 f | tcpfzmffffbffvpfff | 1 | | 8-10 f | fffffvflgfq | 1 | | 8-9 q | klqpmdtqqcmlnftrn | 0 | | 6-7 t | tbvtbtkjt | 1 | | 3-9 s | bgldhnxsksznscnlnhc | 0 | | 1-13 g | cgggggggggggv | 0 | | 5-13 b | bbbvbfbbdbbhb | 0 | | 12-15 m | mmmcmmmsmmmqgmm | 1 | | 2-4 m | bmmh | 1 | | 1-7 q | jppwfcqmvxjqxdf | 1 | | 14-15 r | rrrrrrrrrrrrzbj | 0 | | 3-5 r | rrrrg | 1 | | 2-5 z | zgzwlz | 0 | | 1-11 h | hhhhhhhhhhhhh | 0 | | 2-5 z | zzzzh | 1 | | 10-11 c | cccccccccmc | 1 | | 2-4 s | brkfmk | 0 | | 5-11 l | lslqdpbvslplll | 0 | | 7-9 f | fffbffffg | 1 | | 14-18 m | mjmmrmmmmmmmmtmmmd | 0 | | 4-5 f | ffzcl | 0 | | 11-12 q | qnrqlqqqqqqcqqq | 1 | | 4-7 k | rkkkkkk | 0 | | 7-16 c | cblsccjzgccccccvcc | 0 | | 15-16 z | zzzzzzzzzzzzzzzz | 0 | | 5-6 c | cgcccfj | 1 | | 4-5 q | qqqqq | 0 | | 7-11 n | nngqrnnnnnhnj | 1 | | 8-11 q | qtwqqqcbqqhqz | 0 | | 7-8 x | cvtxzlxxvls | 0 | | 6-7 l | lllllshl | 0 | | 16-18 g | bjkzbdrfjsnbldggwrqj | 1 | | 2-3 c | lcwrncsjwzss | 1 | | 2-9 x | dxxxxbxxx | 0 | | 6-7 c | xccwxqcscczcc | 1 | | 8-9 x | xxxxxxxxx | 0 | | 13-14 n | zgpqjvrsbsfgnn | 0 | | 6-10 t | tttttttttttt | 0 | | 7-13 b | bpbbbnbbrbbbh | 1 | | 3-4 x | xkxx | 0 | | 2-4 r | nrvvxsbrhghrrtr | 1 | | 1-7 z | gwzdzzhzzzzzz | 0 | | 4-5 k | lrqkkkqf | 0 | | 1-5 j | vnqpwg | 0 | | 3-5 x | xmxxxxxx | 0 | | 9-11 d | ddddddddddc | 1 | | 8-12 s | sssncsjspkxssssshs | 0 | | 11-12 g | ggggsgggggxkp | 0 | | 2-10 x | pxdcdsxdsxjmx | 0 | | 3-7 n | ndnvmnjl | 1 | | 9-10 j | jjjjjjjjstbj | 0 | | 5-10 l | llllmlljlb | 0 | | 10-11 z | zzzzkzzzzzs | 1 | | 11-13 l | llllllllllvlm | 0 | | 3-4 g | gjgggdgpwd | 0 | | 1-4 r | krrz | 0 | | 16-17 s | gjssssrhksfmdssssw | 0 | | 7-10 c | qpljmtcclfqc | 1 | | 4-6 l | slrklplgsl | 0 | | 2-8 c | cscccccbc | 0 | | 7-8 m | mmmgmmnpm | 0 | | 12-16 w | wwwrwwmwwwwwwwww | 0 | | 11-12 v | vvvvpvqvvvvvvjv | 0 | | 15-16 z | zrzzkzbzszdzzzzczzzz | 1 | | 16-17 l | tfhpllgsrlvlbvncl | 1 | | 8-11 h | hhhhhhhhhhhh | 0 | | 4-5 l | xllcv | 0 | | 5-9 r | rrrcrgrflqh | 1 | | 16-17 q | qqqhqqqqqqqqqqqqqqq | 0 | | 2-4 z | zlzqh | 0 | | 7-12 p | vnrftmwdphrzxjv | 0 | | 3-11 d | ddpddsddmddddd | 1 | | 4-6 k | lczkck | 0 | | 4-5 t | ttttvt | 1 | | 2-12 k | shkkkjtxkkklkkkk | 0 | | 12-16 v | vfvvvvvmvrvzvvzvvv | 1 | | 2-7 k | kkkkkpk | 0 | | 6-9 v | vvvvvgvvv | 1 | | 8-9 s | ssssssspws | 0 | | 3-12 m | llmntmzdjnhmcbmm | 0 | | 3-5 r | rxrrt | 1 | | 11-15 z | zzzgzzzzzzzgzzz | 0 | | 8-11 v | vvvvqvjnvvgmvvtv | 0 | | 2-19 n | njnnnnnnnwnnnnnnnnk | 0 | | 16-17 j | jtjjjjjjjjjjjjjjs | 1 | | 1-5 j | jjkjjqdjjjjpjjjjjj | 0 | | 2-7 c | cmctjltcz | 0 | | 4-10 b | tbgbjnqbbbtcbb | 0 | | 6-10 s | sfsfqnsfslsfssssst | 0 | | 12-15 b | hjjqbxwbnbbbwbfl | 1 | | 5-8 q | cgcjjbtq | 1 | | 3-4 q | qqdd | 0 | | 4-5 s | ssbnbss | 0 | | 8-10 t | dmtjzvjttxttrtftt | 1 | | 1-12 c | kccccccccccccc | 1 | | 6-10 f | fwfffcdfffsf | 1 | | 6-9 c | wchcccccccccccc | 0 | | 8-14 w | zwxrgcbjbqwghhbwwb | 0 | | 8-12 h | hhhhhhhchhhnhhhhh | 0 | | 3-4 f | ffpd | 0 | | 8-16 j | fgnjtlhjjgknmbbj | 0 | | 3-4 h | hhhh | 0 | | 2-3 c | bdrc | 0 | | 7-9 w | lwvwjwwwwwww | 0 | | 5-6 j | vwktnjjdhjsvndjjjsfj | 1 | | 6-9 n | nnnnnqndv | 0 | | 8-16 b | sqbbbbbbbbbblbbgbbxp | 1 | | 3-7 c | wdccccccdgscgcq | 0 | | 2-4 t | tttt | 0 | | 5-9 h | mhdjxshhhzlp | 1 | | 9-12 l | lfvclqlrlllvllzl | 1 | | 3-4 t | xttt | 0 | | 5-7 p | fndppppdnpp | 0 | | 10-12 f | ffffffffffft | 1 | | 11-15 b | qbbbhjbgnbbzvbk | 1 | | 1-8 k | vvdsktqkfkdqlhbwrkqc | 1 | | 9-13 l | llllllllflllsll | 0 | | 6-7 b | cpbgbkq | 0 | | 4-5 g | tgfpgksglmcg | 1 | | 5-19 d | qvddqzdddddddsxpdgdd | 1 | | 1-5 s | sssss | 0 | | 1-12 g | xkxgggggsgggggdgg | 1 | | 2-6 n | vwbttnnnnsnbnhnnnm | 1 | | 12-13 r | rrrrrrrrrbrrdrrr | 1 | | 2-4 l | hlllgdxltwllwn | 0 | | 6-7 v | hvvvvwpv | 0 | | 8-9 p | ppjpppppp | 0 | | 6-7 v | vvvvvkv | 1 | | 5-9 z | zzzzrzzzzzz | 1 | | 14-16 g | ggggggggggggrgggg | 0 | | 3-4 v | fwhvvv | 1 | | 3-5 c | clcccc | 0 | | 9-10 c | ccqrkcccpcckc | 1 | | 15-20 j | jjjjjjjrjjfjjjjjjjjj | 0 | | 7-10 v | vvvvvvvhvvv | 0 | | 2-3 l | lwkl | 0 | | 3-4 x | vgfwxx | 0 | | 2-5 w | wwnww | 0 | | 8-12 b | tmkmhnhblmhbxdvqb | 0 | | 3-10 c | ncccvmmcccxkrrcspjc | 0 | | 14-16 n | nnnnzhnnnnnnnrnrnnn | 0 | | 13-16 t | fttgrdcdttttnttttdtt | 1 | | 6-15 w | wwwkvwwwwswwwwwwww | 0 | | 8-9 t | zpsltttvv | 0 | | 8-10 r | rrrrrxrbrr | 1 | | 5-12 t | gpcttsvjnqkt | 0 | | 2-3 c | cccm | 0 | | 1-9 l | spnvxwwlmcmpd | 0 | | 7-11 b | bbbbmwhfbjb | 1 | | 3-5 v | vwvvvqwv | 0 | | 4-5 p | xlpppp | 0 | | 2-5 q | mqqsq | 0 | | 11-16 x | xxxxxxpnxxxxhxvxh | 0 | | 5-6 n | vqtnnk | 1 | | 1-16 m | mmzmlmmqmbwmmmmm | 0 | | 3-5 c | ccbgp | 0 | | 6-18 b | djrsdpkhrnfkmgkxqb | 1 | | 5-6 k | kkkhkjfbbkxh | 1 | | 13-16 s | ssssssssssssssshss | 1 | | 13-16 p | ppppwnpcpppwppprp | 1 | | 1-4 p | pgnpjtbzdlh | 0 | | 7-8 j | jjdjljjjghnjmbqjb | 0 | | 4-13 g | lgqkgpfgklggxznk | 0 | | 6-7 g | gggggtz | 0 | | 4-11 d | tngdgqrdddtvgdq | 1 | | 12-13 r | rrrrrrrrrrrqz | 0 | | 2-11 j | jkjjjsjdbjzljcpjjmj | 0 | | 8-10 s | sssssssksc | 0 | | 5-7 n | fvpfwnn | 1 | | 4-7 f | ftfffffjmmhz | 0 | | 3-4 d | ddsz | 0 | | 1-6 h | hhhhhwhh | 1 | | 5-7 x | xxxldxxxx | 1 | | 3-4 k | rxtk | 1 | | 9-10 b | bbbbbhbbbb | 0 | | 2-4 m | mmmb | 1 | | 1-4 c | xdfp | 0 | | 11-12 w | swwwrwwwwwwwwwlwl | 0 | | 9-10 b | cbbbtbbbdqsb | 0 | | 15-16 r | rrmfrrrrrrrrzrdsgrrc | 0 | | 6-7 p | pgppptp | 1 | | 1-4 m | mdmj | 1 | | 10-11 p | npwhgtcgwpptxnpztxn | 0 | | 1-3 k | tkgl | 0 | | 2-6 j | zjjsljzdppjhjrq | 0 | | 13-14 j | jjjjjjjjjjjjpr | 0 | | 10-12 q | qqqqnqqqqtqq | 1 | | 1-8 w | wwvwrwfwlwww | 0 | | 12-19 s | sgssssqjssssvhssscts | 1 | | 2-6 x | rxjvbxrxxcsthxl | 0 | | 14-15 m | mmmmmmmmmmmmmmm | 0 | | 7-11 g | gggsgglsgpf | 0 | | 4-6 j | xjjsjc | 0 | | 19-20 s | ssppfsswtssqssxlbsls | 1 | | 3-8 p | vppjpkppx | 0 | | 10-11 j | jjjjjjjjjcj | 1 | | 12-14 l | lnllldllllnllxlllll | 1 | | 13-17 g | sgvggggbggggqbggfggg | 0 | | 17-18 z | zwzzzzzzzmzzzzzzdsz | 0 | | 7-10 r | rrkrrrrrrr | 0 | | 2-7 k | kkvpkqlpkknkkhmb | 1 | | 1-2 t | txvt | 1 | | 5-9 h | hhhlbhqhljmhh | 0 | | 2-5 r | crhvhfrlfbzmcqsxcr | 1 | | 6-7 s | ssssjkstsh | 1 | | 5-10 n | nnnnztnjnn | 1 | | 3-10 d | qcddgpncddwdnldjzd | 0 | | 10-14 r | rrrtrrsrrrqrrr | 0 | | 15-16 v | vvvtvvvvvvvvvvqv | 1 | | 2-6 n | nnjnctjqnj | 1 | | 1-8 v | vvvvxvccnvv | 1 | | 4-5 z | xzzqzzz | 1 | | 3-6 q | qqcqqb | 0 | | 2-8 k | kkkcjczlblwgm | 1 | | 2-7 t | rtvqwkqdpjcfttvntpm | 1 | | 3-5 h | hhhhh | 0 | | 2-8 p | dhkfkvqp | 1 | | 9-12 q | kfqqqqqxlqgbrvqvqwq | 0 | | 7-8 q | qqwqqqqq | 0 | | 7-8 k | kkkkkkmk | 1 | | 2-4 m | mmmjmmd | 1 | | 4-5 h | hpzhhhvrtdrqd | 0 | | 1-3 j | mjjjj | 1 | | 12-19 k | kkzkkkfkkkktzkkkkkbs | 0 | | 8-9 m | mmmgmlpvgdmmdnm | 0 | | 6-8 c | dbsgwppccnwf | 1 | | 11-12 h | phhhhhhhhhhkhg | 1 | | 2-3 b | bbhbzgvd | 1 | | 5-7 r | frlkptm | 0 | | 7-19 d | rxddghsddsrpdxxdddd | 1 | | 4-7 v | vcvhvtr | 0 | | 4-6 k | ctdqjk | 1 | | 2-6 s | gffhkvzs | 0 | | 5-6 k | kkkkrqg | 0 | | 4-6 q | qqqjzq | 1 | | 13-15 j | jjjjjjjjjjjjrhj | 1 | | 1-6 z | xwzkzz | 1 | | 7-9 x | xxxxxxxxxkxxxxxxznxb | 0 | | 3-4 t | jthdftcsfqt | 0 | | 3-5 c | cgfccgc | 1 | | 5-11 k | kkqkkkbkkkwkkk | 1 | | 5-12 k | kkkkkkkkkqkc | 1 | | 2-3 z | bpxzxchzzzz | 0 | | 4-5 z | zjzzwwz | 1 | | 4-5 k | kkkkts | 1 | | 18-20 d | dndzzcdgldkmjdvvdddz | 1 | | 14-15 h | hhhhhhhhhhhhqhksd | 1 | | 2-9 h | hhhhhhxhnh | 1 | | 12-13 c | cccccccccccsx | 0 | | 3-6 t | qsdptbvtjhcjvjntwdnx | 0 | | 3-4 q | qqqqq | 0 | | 7-8 v | vvvvvvcvvvv | 1 | | 10-15 g | ggggnrgggggflggg | 0 | | 6-11 h | hfdzhwmhwhhhgvx | 1 | | 4-7 g | qkggvgggwgfgfgn | 0 | | 4-6 t | tttvtx | 0 | | 4-14 s | sdgsssgqlqwjszkcgsz | 1 | | 6-10 g | gggggvgngfgg | 0 | | 5-6 f | vffffff | 0 | | 3-4 l | nlllwlmlf | 0 | | 1-7 q | qrrhxlq | 0 | | 12-15 m | nfdmhmkqpgcmnxmqcvn | 0 | | 3-5 s | sxrcsm | 1 | | 15-16 l | lllllllgllllllsl | 1 | | 5-6 x | xbnxxxxx | 0 | | 13-14 p | pppppppppprpdj | 0 | | 4-5 x | xxxxr | 1 | | 11-19 f | krfxmnqfhfqfksfzrgfm | 1 | | 9-13 d | ddtkddlkddddbdttr | 1 | | 3-6 j | vjzmjjr | 1 | | 10-15 c | ctccncccccdccccxcwcc | 0 | | 7-11 f | fcccqmkfxfdhznwb | 0 | | 3-10 s | qssqszxqpskrwcxsss | 0 | | 3-4 f | ddrwzgcmnfxfbffpdgbh | 0 | | 9-11 k | kkbjfbhkkglwx | 1 | | 10-14 r | rrrrzrzcrvrbrzllrk | 0 | | 6-7 s | mmzwdpv | 0 | | 10-16 s | sssrssgssmsszsrrps | 0 | | 2-3 h | hwxh | 0 | | 1-7 n | mnnnnngp | 0 | | 3-4 f | ffff | 0 | | 4-8 r | chrrrrvrsm | 0 | | 1-4 z | nzzz | 1 | | 4-5 f | ffflflff | 1 | | 13-15 q | qqqqqqdqzqsbqqgqqq | 1 | | 2-8 l | vxnkllwltllllt | 1 | | 14-16 n | pnnfzdzwnscvnfnn | 1 | | 7-8 n | nvnndthznnq | 0 | | 11-18 t | tttbttstxqttrrtmtt | 0 | | 3-5 t | jrgztqxsctnz | 1 | | 4-14 l | qbklhcmthmllfl | 0 | | 4-18 l | ncqqmclxshsfkcljlll | 1 | | 2-4 s | scqskss | 1 | | 2-10 l | lcllmcnllpvtlgll | 0 | | 7-14 t | tttttttttttttttt | 0 | | 2-3 g | gggqh | 0 | | 7-8 f | mfffffffgbtsffdvvfl | 0 | | 11-13 m | mjmmxmwjmjmmmmmcmmvm | 0 | | 2-5 z | zdzzh | 0 | | 2-3 m | tdvlm | 0 | | 10-14 c | ccrccccdcccmcccbcc | 0 | | 12-14 h | hhhhhhhthhhhlhh | 0 | | 3-4 s | sssc | 1 | | 16-20 n | nnnnfnnnnnnnnqnznnnn | 1 | | 18-19 s | wssssssssssssmsssvds | 0 | | 7-9 r | wrrrrrrrrlrgtr | 0 | | 4-7 f | fffffff | 0 | | 4-8 g | kgpgbgggmngxggwfh | 0 | | 4-9 p | pfpvppppj | 0 | | 3-9 d | dddddzddd | 0 | | 13-15 b | bbbbbbbbbbwtbtmbwqb | 1 | | 7-9 v | vvvvvvvvdd | 1 | | 3-4 l | llkk | 0 | | 4-12 j | thjjjfjjjjjjjj | 0 | | 4-13 m | lmwmbmqvzxjhmlp | 0 | | 5-9 b | bbwbbbbmbwb | 0 | | 7-8 g | gvgggggggggg | 0 | | 1-3 s | ssszvs | 0 | | 1-4 d | tdgds | 1 | | 4-8 d | rdddjdljdrd | 1 | | 5-12 m | mmmmgmgmmjcxpjm | 0 | | 6-7 j | jbjjjqc | 0 | | 19-20 w | wwwwwwwwwwwwwxwwwwkw | 1 | | 7-10 d | ddfdddddcddmmd | 0 | | 2-4 q | qqqqq | 0 | | 11-14 b | bbbbnbbbsbbbbvblb | 1 | | 9-12 g | gggggggsgtgggggggg | 0 | | 12-17 j | jjmpjjjjjhtcjhzjp | 0 | | 5-14 c | rbgcpfccppccncrsc | 1 | | 6-7 d | ddddddr | 1 | | 2-4 w | wwjzvs | 1 | | 4-11 h | frhhbknrmrhv | 0 | | 2-6 b | fxbhhzhb | 0 | | 2-5 s | lskss | 0 | | 5-9 p | tpppdpppzfqlfph | 0 | | 2-6 c | cgqqbf | 0 | | 4-9 x | xxxxxxdxxmxc | 0 | | 1-2 l | lllwf | 0 | | 4-8 t | tpttmtht | 0 | | 3-16 k | kktndqkrcfnwtkkk | 1 | | 4-6 w | wwwcfnsw | 0 | | 17-19 f | fffxpfffffffcfffffnf | 1 | | 10-14 l | lllllllllllllm | 1 | | 5-14 j | djjjjjsdvcjjjjtgjrjj | 0 | | 8-13 w | dxrbwrzwtvngwwvzr | 0 | | 2-3 z | zqzz | 1 | | 5-8 k | kkkklknlk | 0 | | 13-18 w | wwmwwwwwdwhwwxpwbw | 0 | | 14-18 x | xdxxxxxxfxxxdvxxxqx | 0 | | 2-4 v | qzsmvvv | 0 | | 10-11 j | jjkmjwjbsjsjjjjjjp | 1 | | 5-10 x | xxnxwxxxxxqskxwgpz | 1 | | 14-17 s | sssssssssssssssss | 0 | | 8-12 v | vvvvvvvvvvvvvvvv | 0 | | 9-20 v | vvvvvvvvvvvvvvvvvvvg | 1 | | 5-6 f | ffffrc | 0 | | 11-17 z | vzzzzzzzzzbzzzzzlz | 0 | | 5-8 t | ktwfntjtgmvpttfx | 1 | | 6-7 m | mmmmmmx | 1 | | 6-13 d | zdwddvmddwddgp | 0 | | 4-12 j | jjjcjjjvxjjnvjqj | 0 | | 3-5 c | ccccc | 0 | | 4-6 h | zhhhhq | 1 | | 4-5 m | mmmmjmm | 1 | | 3-5 j | ljnhn | 0 | | 4-7 d | qddpsdddddr | 1 | | 2-6 k | dkkfsxzmnckggm | 1 | | 6-11 q | pzqqdqqqnqqqtqgqsqsq | 0 | | 10-12 p | hsrpgppjmpbmmv | 1 | | 4-8 f | fkfscjff | 1 | | 1-3 w | wwkw | 1 | | 9-16 d | dddddddjdrdcddzgdd | 1 | | 2-3 h | hhhh | 0 | | 9-13 l | qkllllslvwpkmnlfzlll | 0 | | 3-17 f | fskfffnfjszfffwfzfcf | 0 | | 3-5 q | zfqsqqxqv | 0 | | 3-8 w | xwjqmpvw | 1 | | 3-5 w | rqffzwzdgxwjmlk | 0 | | 10-11 v | vvvcvvvjvhrv | 0 | | 4-13 b | bbbgbbbblbbbn | 0 | | 2-6 j | mjdjlrqjjjjszqzbbv | 1 | | 5-6 k | kkkgdlc | 0 | | 14-16 l | lllzlllblllllrllllx | 1 | | 1-5 h | wpqss | 0 | | 6-10 f | gvtmdfqrhft | 0 | | 14-15 r | rrrrjvrrrrrrrcfr | 0 | | 3-6 k | dkkkkk | 0 | | 3-4 t | ztpxt | 0 | | 3-5 g | gggwg | 0 | | 5-16 t | tttctthtttptttttttt | 0 | | 1-6 b | bfgmbbt | 0 | | 5-7 j | qhhjmjvjv | 0 | | 4-12 z | xjpzjzkvzzrzwz | 0 | | 3-4 x | xxxxx | 0 | | 4-6 g | gbgxsbprgzg | 0 | | 1-3 q | vqqgq | 1 | | 11-12 x | xwxnrxxxmzxx | 0 | | 6-9 r | rvvrrrrqrr | 0 | | 16-17 j | jjjjjjjjjjjjjbjvcj | 0 | | 9-10 k | kkkwjkrwkkkrxkkvhkf | 0 | | 1-7 v | vjvvcrk | 1 | | 8-13 s | sssqrsqtsssmsssss | 1 | | 5-6 p | ctslhnhphlmpppz | 0 | | 1-7 x | zfgmlxxxxbcsfxxclh | 1 | | 12-15 w | wwwwwwwwwwwfcww | 1 | | 9-17 g | gdggghjmggsggggfgj | 0 | | 5-9 s | sscrspfvspssj | 0 | | 2-3 w | wmltwwj | 0 | | 2-10 c | ccrcjkpkccvlbckbbtc | 0 | | 7-18 t | tttttttttttttttttw | 1 | | 3-8 t | tttttsswttt | 1 | | 2-17 j | jngjjjcjhjjjjjgjs | 0 | | 2-4 l | jhlspd | 0 | | 10-20 g | nvshfzjmtgsrnhtjgzzg | 0 | | 7-11 c | bscccccxccc | 0 | | 12-14 m | mmmmmmmmmmmmmm | 0 | | 4-5 t | tttrt | 1 | | 1-2 n | szbzvnlxc | 0 | | 3-7 b | bbbbbbb | 0 | | 2-3 z | ptpzzvc | 0 | | 7-8 r | rrrxrprr | 0 | | 17-18 c | ccccccccvcccccccgw | 0 | | 5-6 g | qqrghgwx | 1 | | 14-16 h | hhhhhrhhwghkhhhhhhh | 0 | | 13-15 g | kgggxggggrgglglvgf | 0 | | 10-11 g | ggpgggngggng | 1 | | 3-5 n | sldjnxplwngpnsqm | 1 | | 5-12 k | vkrkksdkslmsrkxtslk | 1 | | 6-8 q | vdqqvqqqz | 0 | | 5-9 h | hhhhhmmhm | 1 | | 1-3 r | rrrr | 0 | | 12-13 p | ppppcplbpfppppppp | 0 | | 1-8 s | jdkssbsqks | 0 | | 13-16 j | jjtjjjjjjjwjjjjkj | 1 | | 1-2 z | jzzz | 1 | | 2-3 n | pkjt | 0 | | 7-8 l | lrdlzlqjllm | 0 | | 2-8 j | jjljjnjkjzvjjq | 1 | | 13-16 j | jjjjjjjjjjjjdjjq | 0 | | 14-16 q | qqqqqqqqqqqqqqqqqq | 0 | | 1-5 b | bqpglwpwbzzcdxhxqwq | 1 | | 11-18 q | qqqqqqqqpbqqlfqqwq | 0 | | 12-14 p | pppppppppppdpxp | 0 | | 7-10 x | slxvrxnlwh | 0 | | 7-8 z | zfzzzrbzzz | 1 | | 5-9 r | rsnzrrfrrrsmlr | 0 | | 5-6 z | zzzwzzz | 0 | | 12-13 f | fffffcfffffnnf | 0 | | 5-6 x | xbxnvx | 1 | | 11-13 v | nvvvvvvvvvrvv | 1 | | 5-14 k | xvgfkksvtccfvkmbkmz | 0 | | 1-6 x | gxlqxxxx | 1 | | 6-7 b | kbbkqbbbhxqcdpbvb | 0 | | 12-14 j | jjjjjjvjjjjjjnjjj | 1 | | 7-10 f | qfffgfdffzff | 0 | | 4-8 j | jjjkjjjjjj | 1 | | 8-9 g | ggggggggg | 0 | | 4-11 c | bdkskbwctpckccbzbcc | 1 | | 2-7 s | tsxlhfvtbzkkqssmss | 1 | | 3-4 m | mmmmmmmmmmm | 0 | | 3-5 s | zzsss | 0 | | 3-4 v | vvpb | 0 | | 17-18 d | dddddddddddddddddg | 1 | | 15-16 x | xxxxxxxxxxxxxcxx | 0 | | 1-3 p | npxrvvcgjpf | 0 | | 7-10 h | hhrhhhhhhh | 0 | | 2-13 x | xbxxxxxxxxxxcxx | 0 | | 2-3 c | gcpckck | 1 | | 1-4 k | mwkk | 1 | | 4-9 g | xvbggpltgglvggmgnpxk | 0 | | 14-17 f | nbfhblbmqzrmrfzcfn | 0 | | 11-13 c | zkccccdcccccxcvtc | 1 | | 10-12 l | lllllllllllll | 0 | | 4-5 w | wwwww | 0 | | 4-6 p | pwtpppj | 0 | | 7-9 j | jjjjjqjjrkj | 1 | | 15-17 k | krkkkkkkkkqkkkfks | 0 | | 9-10 r | rrrrrrrrgxr | 0 | | 14-17 c | mbwhtknbvrqrzxprcctd | 1 | | 2-4 h | hlhxkhhh | 0 | | 17-18 w | wwzwwwwwwwwwwwwwnpw | 0 | | 1-3 w | wdjpt | 1 | | 7-16 j | djjgjjdjbwdjzjjcjdjj | 0 | | 1-8 p | phqgprxp | 0 | | 11-17 k | kfkkkkkkkkqkkkkkhkk | 0 | | 14-15 t | httttttttttttpmt | 0 | | 9-11 w | wwwwwwwwwww | 0 | | 3-7 b | bbgbbkbbbbbbbjp | 1 | | 8-13 t | tttttttlttttjt | 0 | | 9-10 b | bbbbbbbkbbb | 0 | | 9-10 q | qqqqqqqqqs | 1 | | 12-13 p | prpppppvpppkhp | 0 | | 2-4 s | swsvs | 0 | | 8-11 j | jjjjgjcjjngjfsjs | 1 | | 2-8 r | rsrrrrrlr | 0 | | 4-9 j | xsfvbjdmj | 1 | | 13-14 b | bbbbssbbbwjqms | 0 | | 9-10 m | zxmbtjhpmhwx | 1 | | 3-4 v | fsvvdv | 0 | | 17-20 w | wgwwjqdwwwfgsrwwwsgw | 0 | | 8-10 t | ttpttttttw | 1 | | 3-8 t | mxptddtdttb | 0 | | 9-10 v | vvvvvvvvtd | 0 | | 12-14 q | qqqqqqqqqqqdqj | 0 | | 1-2 n | cnnn | 1 | | 14-17 z | gzzwtvhzgrzxzrxxhcz | 0 | | 3-5 c | clccczc | 0 | | 1-13 t | gjbzdcntxhfmg | 0 | | 1-6 z | zdmsjnz | 1 | | 6-7 j | jfjjnrjjj | 1 | | 13-14 h | hhhhhhhhhhhhrth | 0 | | 2-5 x | xxqxxt | 0 | | 3-8 w | wwwhwwwwwrdpww | 0 | | 3-10 n | nnnnnnnnnnnnnn | 0 | | 7-13 l | llfllmlslpslltll | 0 | | 4-8 w | wwwwtwwmkw | 1 | | 7-8 t | ttttttkrcwq | 0 | | 3-6 g | cxwmbgmxg | 1 | | 12-13 b | bbrdbkbmbvbbb | 0 | | 1-16 d | dsndtgbmdrdxbddddjdd | 0 | | 3-11 g | gggjwgrggzxmxbgg | 1 | | 11-18 s | ssbscmdbssksswksss | 1 | | 13-15 s | svsssssslsbsssssssz | 0 | | 5-12 n | nnnnmsnnnnbz | 0 | | 5-8 g | ggtgfggsgggggggggggg | 0 | | 2-3 c | kccc | 0 | | 14-18 t | ttttttttsttttttttt | 0 | | 3-5 r | rrbprp | 1 | | 5-7 s | jszjsgsxtzkspgs | 0 | | 11-12 m | mmmmmmmmmmjm | 1 | | 6-10 q | qqcqqqbqqp | 1 | | 5-8 s | ssjszwsts | 0 | | 5-6 x | xxxxsl | 0 | | 15-20 k | kkkkkkkkkkkkkkkkkkkk | 0 | | 13-14 s | sssgssrpssssszss | 1 | | 3-6 v | zjxcgdvswnfvvvv | 0 | | 5-6 m | mmqmmm | 0 | | 5-10 t | ttttttttltt | 0 | | 2-4 d | qsdvsgtd | 0 | | 2-11 t | btttbttznrctwwnltvnt | 1 | | 6-16 b | rgkcwbcnrdbrqvqbbq | 0 | | 2-13 j | jjjjjjjbjjjjj | 0 | | 17-18 j | jjjjjjjjjjjjjjjjjj | 0 | | 9-16 v | rvvvmvgsvvvvvhjvvqs | 0 | | 4-5 d | wldddd | 0 | | 2-13 v | mvvvvvvdvjvvvr | 0 | | 6-7 s | sdssfpwsskqbq | 0 | | 12-13 m | mmmmhmmmmxmmmm | 0 | | 14-15 j | jjjjjjjjjjjjjjj | 0 | | 2-13 d | vddnpddsdpddd | 0 | | 3-5 g | gkgggks | 0 | | 14-15 g | dwggggggggjvgkgqgggg | 1 | | 10-11 n | nnnnxnngrxhnn | 0 | | 3-6 r | rnrnrr | 0 | | 7-13 k | cpmxcndgssktpkkpfkk | 0 | | 3-7 s | sssssss | 0 | | 6-10 b | nrbmbbrhbfrbnn | 1 | | 8-9 l | lllllllft | 0 | | 6-8 x | xnxxkwknxlxxbbx | 0 | | 1-16 f | fffzkffffknfrfqqf | 1 | | 5-6 v | jvvvvvvvppvt | 0 | | 14-18 n | nnnnnnnnnnnnnknnnb | 0 | | 5-16 n | ncnnnsvlpndnkvvrcf | 1 | | 13-15 j | jjjjljjjjjjjqjj | 1 | | 4-7 s | qhrhsdbsmmlstznms | 0 | | 5-13 m | kmmctmsmmmglzxm | 0 | | 14-17 s | ssssssgsssszspssb | 0 | | 13-20 x | sjxdxqcxxxxqxkxxxxxq | 1 | | 7-9 f | ffjfffnjnff | 0 | | 10-11 m | mmmmmmmmmmxmmm | 1 | | 3-5 q | qqbqc | 0 | | 14-18 f | tfkfrbbznftcfftbmfxf | 0 | | 1-15 l | lclwqxcczgnktqltm | 0 | | 9-12 g | fgggmgggfggm | 0 | | 16-17 t | mntvzrcdttplrfzkv | 0 | | 3-5 n | nngnp | 0 | | 3-6 s | gsxznsssbbtsl | 1 | | 3-4 s | hsssv | 0 | | 10-11 m | smmmmmmmmmnm | 1 | | 11-15 k | kkkkkkkkkkkxkbkjk | 0 | | 8-11 x | xxxxrxkvmxlxwp | 0 | | 2-5 p | pppbbp | 1 | | 11-13 b | bbbbvbbbbblbrdb | 0 | | 9-16 w | wwgwwwwwhwwwwwws | 0 | | 9-10 q | zqqkqvqskqqzzqcjqq | 1 | | 4-6 j | jbkjnjddjhjhjqbxpzf | 0 | | 2-3 c | ccrccz | 1 | | 15-16 r | rrrrbrrrrrdrrrrrr | 0 | | 2-5 x | xxqrxwrchhd | 0 | | 6-7 r | rrrrrrkrr | 1 | | 5-6 h | hhhhpq | 0 | | 9-11 s | ssssssstsss | 0 | | 1-6 k | ctprksgrdgkg | 0 | | 7-8 k | kkkkdkkkkk | 0 | | 1-4 l | mllt | 0 | | 5-10 b | bbbbbjbzzbbbb | 0 | | 1-2 c | cczfkcmsdnghcnmhvx | 0 | | 12-16 z | zgzvzzzzzzzzzzzz | 0 | | 13-14 k | kksmtsrkrwxkkk | 0 | | 10-12 q | qpqsqqqhqslqqnnqjqqg | 1 | | 4-15 q | zgppzlxqvrdvnkkgnr | 0 | | 1-4 b | dbjbk | 1 | | 5-9 c | cccclcccpcccvc | 0 | | 2-6 t | ttctdtdtts | 0 | | 2-3 q | pqqtbwkr | 0 | | 12-15 v | vdvvlvvzvvvgvvv | 1 | | 2-8 c | ccbcbcbncxxgcngrck | 1 | | 2-4 z | cnzzt | 1 | | 3-4 j | jjtrjj | 0 | | 6-12 x | xxxrxqxxxqxxkxs | 1 | | 5-9 r | rqnbnrrnnrwhdrr | 0 | | 2-5 s | smssk | 0 | | 4-16 g | hgzjhgggcgnwddkq | 0 | | 4-10 l | jlgxxlgllql | 0 | | 1-5 r | rrwgrrck | 0 | | 1-11 t | wtttttttttrtttttttt | 0 | | 5-9 n | njnnksntk | 0 | | 5-8 s | ssssswsss | 0 | | 2-4 q | qqqq | 0 | | 1-9 b | jqmxlrdbbbfnwtlqjbbf | 1 | | 3-5 g | qhgsgpjdphghhjwqx | 0 | | 1-4 d | mddd | 1 | | 4-6 q | qsqqqqgqqg | 0 | | 9-15 f | ffffxffrffwfffffff | 0 | | 2-6 z | zrzshvzlzkxzp | 0 | | 7-10 s | sppscfwscfsszbsf | 0 | | 5-19 r | drwrmrvprrrdrrrrrkv | 0 | | 9-10 n | nnnnxnnnnr | 1 | | 4-10 m | mmmmqmcmlmvmm | 0 | | 10-13 v | wcnzkqgvvgxldxl | 0 | | 9-11 k | vclfkkfcdbwwk | 0 | | 12-13 r | rrrrrrrrwrrfh | 0 | | 7-8 s | szsssswfs | 0 | | 4-6 z | nzzjzk | 0 | | 5-7 w | ghwwdrr | 0 | | 2-10 x | xxnxxxwxxsx | 1 | | 9-10 b | bbktbbbxhfbpb | 388 | #+TBLFM: @>$3=vsum(@1$3..@>>$3) *** SUCCESS! ** Debrief Today was trickier, as of course it would be. Once I figured out the counting thing, instead of the /awful/ regex (as cYmen said, "Some people, when confronted with a problem, will decide 'hey, i can solve this using regular expressions'. Now they have two problems."), it wasn't so bad. I need to make sure not to stay up so late tonight. * Day 3 This one is going to be tough already. ** A *** Problem With the toboggan login problems resolved, you set off toward the airport. While travel by toboggan might be easy, it's certainly not safe: there's very minimal steering and the area is covered in trees. You'll need to see which angles will take you near the fewest trees. Due to the local geology, trees in this area only grow on exact integer coordinates in a grid. You make a map (your puzzle input) of the open squares (.) and trees (#) you can see. For example: #+begin_example ..##....... #...#...#.. .#....#..#. ..#.#...#.# .#...##..#. ..#.##..... .#.#.#....# .#........# #.##...#... #...##....# .#..#...#.# #+end_example These aren't the only trees, though; due to something you read about once involving arboreal genetics and biome stability, the same pattern repeats to the right many times: #+begin_example ..##.........##.........##.........##.........##.........##....... ---> #...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#.. .#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#. ..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.# .#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#. ..#.##.......#.##.......#.##.......#.##.......#.##.......#.##..... ---> .#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....# .#........#.#........#.#........#.#........#.#........#.#........# #.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#... #...##....##...##....##...##....##...##....##...##....##...##....# .#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.# ---> #+end_example You start on the open square (.) in the top-left corner and need to reach the bottom (below the bottom-most row on your map). The toboggan can only follow a few specific slopes (you opted for a cheaper model that prefers rational numbers); start by counting all the trees you would encounter for the slope right 3, down 1: From your starting position at the top-left, check the position that is right 3 and down 1. Then, check the position that is right 3 and down 1 from there, and so on until you go past the bottom of the map. The locations you'd check in the above example are marked here with O where there was an open square and X where there was a tree: #+begin_example ..##.........##.........##.........##.........##.........##....... ---> #..O#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#.. .#....X..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#. ..#.#...#O#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.# .#...##..#..X...##..#..#...##..#..#...##..#..#...##..#..#...##..#. ..#.##.......#.X#.......#.##.......#.##.......#.##.......#.##..... ---> .#.#.#....#.#.#.#.O..#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....# .#........#.#........X.#........#.#........#.#........#.#........# #.##...#...#.##...#...#.X#...#...#.##...#...#.##...#...#.##...#... #...##....##...##....##...#X....##...##....##...##....##...##....# .#..#...#.#.#..#...#.#.#..#...X.#.#..#...#.#.#..#...#.#.#..#...#.# ---> #+end_example In this example, traversing the map using this slope would cause you to encounter 7 trees. Starting at the top-left corner of your map and following a slope of right 3 and down 1, how many trees would you encounter? *** Input #+NAME: input-3 #+begin_example .#...#.......#...#...#.#.#..... ####.....#.#..#...#...........# .....#...........#......#....#. ......#..#......#.#..#...##.#.# ............#......#........... ...........#.#.#....#.......##. ....#.......#..............#... ........##...#.#.....##...##.#. .#.#.....##................##.. .##................##..#...##.. ....#...###...##.........#....# .##......#.........#........... ...#.#.#....#....#...#...##...# ..#....##...#..#.#..#.....#.#.. .......#...#..#..#.....#...#..# .....#......#.......#.....#.#.. ....#..#...#..#####....##...... .#...........#......#....#....# #......#.###.....#....#....#... ....#..#.#.#..#...........##... ..#..#..#.#...#......#....#.##. .##....#......#...#.#..#....... ..###.#...#.........#.#.#...#.# #....###.........#...#...#...#. ...##.#............#...##...... ...#.........#............#.... ......##...#...##..#........... ........##..#.#.####...#.....#. .##.........#......#..#..#...#. ..........#...#..........#..... #..........#........#..#..#.#.. ..#....#.#.#.#.#..#.##......... ##.#.#.##.....#..#......###.... ##....#...#.....#.............. .#..#...#...#....###......#.... #....#......#.#..#.#........### .#....#..#...###....#...##..... .#....#.....#.....#..##..#..... #....#.##...#...#..#.##.##.#... .#.#.#.##...#####.............# ......##..#.....##..#...####... #.##..#.#....#..##.......###..# ..#.......##....#........#.##.. #.....#......#.....#....#..#... .......##...#.....##.......#..# .......#...#.#.#.........#####. #.......#.##..##........##..... ##..#...#........##....#....... .......#...##......##...##.##.. ......#..##..#.#...#...#....##. ....#.#..#.....#.##.#.....#.#.. #..#.#.#........#...#.......##. ##...........#..#........#..... ....##....#....#.#.......#..... ....##.#.#.....#.#.....#.....#. ..........#.#..##..#..#.......# #....#.......##...#...#.....#.. .........##.....#.#....#......# ..........#........#..#..#.#... ..#......#.....#......#......#. ..#...###..##..#.....##..#..##. ..#.#..###.........#.#...##.#.# #.........#..#......#...##..... ...#...#.#..#...##.#...##.#..#. #.....#.....#.##....#.#......#. #....##..##..#.#..##....#.....# .#..........#..#...#..#.......# #.#.....#..##..##..#.#......... ....#..##...#.....#.....#.#.#.# ...#.#....#........#...#.#..... .#............#.......#.##.#... ..##.......#.#...#........##..# ..................##.#...#.#..# .#.........#.......#.....#..... ....##...##..#..........#...... ..#.##..#....#..#............#. ....####...#.##....##.#....#.## #..#....#......##........##.... ..###...........##..#......#... #..#.......#........#.......#.. .....#....#..#..##.....#....... .###.####.#....#....#..#....... .............#...............#. .#..........#.#....#..#.#...... ..............##....#..#....##. .......#.#..#........#.......## #..#...#..#.#........#..#....#. ...#.........#...#..#.......... ...#....##...#..#..........#... .#......#......##..##...#.#.... .#.........#..###.............. .................#.#.....##.... ...#............#.............. #..#................#.......#.. ...#.......#......#.#.#........ #.....#.##....#.....#........#. ......##.#....#........#....#.. .#..#.##...##........#.#.....#. ..#...#....#...#..#..##..#.#..# #.................#.#.......##. ..........#........#.#.....#..# #....##....#........##..##.#... #...#....#.....#.....#.....#... #..#..........#....##....#....# ..#.#..#..#....#.#....#....#..# #....#..#.......#..........#... .#...#.#...#..#...#.......#.... ###........#......##..#...##... ...#..........##..............# .......#........##......#.....# .#..........#...#...##....###.# .#...#....#..#.....##...#..##.. .#.#.#...##..........##...#...# .#.....#...#........#........## #.......#......##.#.#..#....#.. ##..#.##........#....#..#...... ...#.......................#... ..#....#..##........##.#.##.#.. .............#.......#....#.#.# ...#...........##..#.....#..... ..#....##....#.....#........... ..#.....#......#..#.###.##....# .#.......#...........#...#....# #............##...#...#.....#.. ##...#.....#.........##...##... ...#...........#....##......... #.##..#..........##..#......#.. .......#.#.......##.......#.... ..#.....##..#...#.......#...... .#........#....##...........#.. #.......#...#.#.###...#....#... ..........##..#..#..##........# #....#....#...#....#....#...... ...........#....#...#...##.#... .........#.#.....#............. ..####...........##..........#. .....#...................#..... #..##...#........#.###.#.##.... ....##...#.##................#. .#........###.#............#.#. ..............#.##.........#... ##............#.#..###....#...# #.....#........####....#....##. ....##..#...##..##...##.....#.. ##..#....#.##.....####.....#.## ##..#....#.##.##.#.#........#.. ....#..........##.....#..#..#.. ...#.......#........#.........# #..##.######.......##........#. ###...#...####.......#.....#... #......#..#.....#......#.....#. ..................##...#....... ....#.#....#......#...#.....##. ..#..#..#..#..#....#.#...#....# ......#....###................. #.##......#...#......#......... #..#.#...##..#.......#..#...#.. .#....#.#........#.........#... #.......##..#..#............... ........#..##....#.....#..#.... ....#......##..#....#...#..#... #.....#...##..#...#......#..... .....#.....#.........##...#..#. ........#...##.#...#.#....#..## ....#....#...#.....##..#...#... #....#..#.........#.........### ..###.....##...#.#....##......# #..#.#..#.......#..#....##..... ###...#.##..#.......#......#... .....#.....##.......#...##..#.. ......#.......#.#.#......#..#.. .................##..#.###..... ..........#....#...#..........# ...#.#...#.#..##.....#.#.##..#. .......#..#....#...#......###.. ...##..........#..#.....#....#. .#..##..###...#....##.....#.... ..#.#..............#....#...#.. .....####.......#.#.##....#.... #.#.#..##.##.#..#.##.#....#..#. ........#....#.......##........ ...#...#....#...###.....###.... .....#..#..........##.#...##.## ..#.#.#..#....#...#..##...#...# ..#......#..#.#.....#....#....# .#.....#.......#............#.. #..##....#...#....##....#...... #..#.........#...#...###.#..#.. ..#.#.#..#.#..#.......##....... ...##...............#..#...#.#. .......####.#.....#..#..#...... ......#..#.....#..##....#...... ....#...#.........##.......#.#. #.#.#...#.....#...#..#.#..#.... ........#..#.........#..#..##.. ........###.#............#.#... #..#.......#.#..#.......#...#.# ..##..............#.#.....#...# ..##........................... ..#.....#.......#......##...... #...#......##.#....#.#.#...##.# #...#.#......#.#..##.........#. .##..#...#.#.....#.#.#...#.#..# .#..#...#.#.........#......#... ...........#...#...#...#..#.#.. .#........#...#......##...#.### #........#..#.#..#...........## .#...#...####.......#.......... ......#...............#........ .....#.#.....#.#...#......#.... .#........#...........#..##.#.. ....#..#.....###.......#...#... #.#.........#...##..#.#.##.#... ................##.#....#.#...# .......#.......#......#...#.... #....#.#..............#.##..### ..##.##..#.....#............#.. #....#..##........#....#....... .#.#........#.#................ ......##..#..#..........#..#.#. .....##.#..#....##.#......##... ........###.#................#. #..###.....#.###.#...#.#....... .#..#.#.#.#..#..#.#.....#.#.... #....#.....#..#......##...#..## ........#...##..#.#.....#....#. .......#..#..#..#....#.....##.. ....#..##..#...#....#.........# #.#....#..#.#...#.#...#....#... .....#......###.......#..##.#.# .......##.....#....#........#.# .##.##..#..###.#....#.#.....#.. ..##.#.......###.........#..... .#...#......#..#....#.......... .....#........#.....##...#..... ..#......#.#.#..#.#....##.#...# #.#...#...........##......#.... .................##.....#.#.##. ###..#....#..................#. ##..#.#.#...#....###.#.#...##.# #.#.#..#....#..............#... .....#....#......#..#.##....... #...#...#..###.......#.......#. .....#.#........#..#...#.#..... .....#..........#.###.......#.. ...#.##.....#....###.....#..... ####........#....#..#.#.##.#... #......#...##.....#.#..##.#.#.# .....##....#..#.........##..... ..##....##................##..# #.....#...##...##.#.....#...#.. ..#..#.#.#....#.#.......#...... ##.....##......#...#.........#. #..........#........#.#......#. .#..#.......#.#.....#.......... .........#.#.......#.#..#..#..# #......#....#....#..##..##...## .....#..#...#.......#.....##... ..#.##........#.###...#...#...# ..#..#...........#..........#.. .#.#.#...#.##.#..............#. ....#..##.......#.....#..##..#. .#.##.#....##........#...##.##. ...#.#...#....#....#......##### .....#.....##...........#...... #........#.##.......#.#.......# #...#.......##.#.......#..#.#.. #...##..#....#............#.#.. ........#.#..#...#..#...##..##. #...#....#............#........ #.#.#.#.#....##.....##......... ......##.........#.......#.#..# ...#.#....#........#........... ...#.#.......#.....#........... ##....####......##.##..#....... #......#...#..#.#..#......#..#. #......#.#....#....#..#........ ..#.###...#.....#........#.#... ..#.....##.....###....#.....#.. #.##.#.....##....#...###....... ###.#....###.#..##.#.......##.# #..#..##...#.#..........##.##.. .......####.#..#.....##..###... #...#...##..#..##.......###.... #....#.........##..#.........#. .....#.#..........#..#...#.#..# ..........#......##..#..#.#.... .#...#...#...#........###....## #....#.##..........#.#.....#.#. #....##.#.##..#.......#.#.....# .##..##..#.#...#.#...........#. ....##..#...#.#.##.#.#...#..... .#...#.##........#.##..#.#....# .#.....##.........#.....#...... ..#.....#.#..#.##.............# ##....##...#....##........#.... .#....#........#.#..#..#..#.##. .#........#............#....... .#..##..##..#..#..####....#.... ..#.###....#..#.##......#.#...# .###..#.#...##....##....#..##.# ....##........#....#.#.#...##.. ...#..#....#.#....#...#.#.....# ...##....##..#....#.........#.. .....#..##.###..#.....####..... ...#..#.........#....#.#.##..#. ...#..#...............#..#....# ...........#.....#...####..##.# ..#......#...#....#..#...##.#.. .....#..#...........#.......#.# ##....###...#.........#....#... ...#..##.......#.#.....##....#. #.#...#.#....#.....#...##.....# .#...##....#.....#..##.......#. ...#........##..........#.....# #...##..#.#....###...#..#...... ............#.......#......#.#. ......#....#.#...#...#..#...... .#..#......#....#.......#....## ...#...#.......###..###...#.... .............#.#...#..###.....# .#.....#........#...##....#..#. .....#.......#######.#.#...#... #+end_example *** Solution Okay, let's think this through first. The map loops horizontally, which means I can use modulus math for some of it. The sled will encounter a new line every 3 steps ... so I /think/ that's the ... moderand? The thing I'm modding against. #+NAME: 3a-lib #+begin_src emacs-lisp :var input=input-3 (defun calc-position (slope line-number line) "Calculate where we are in the line." (mod (* slope n) (length l))) (defun replace-char (line position char) "Replace character in LINE at POSITION with CHAR." (let ((pre (if (= position 0) "" (substring line 0 position))) (post (if (= position 0) (substring line 1) (substring line (+ 1 position))))) (concat pre (string char) post))) (defun collisionp (line position char) "If the character at POSITION in LINE is CHAR, return t." (char-equal char (elt line position))) (defun draw-line (line-number line position) "Draw a line." (list line-number (replace-char line position (if (collisionp line position ?#) ?O ?X)) (if (collisionp line position ?#) 1 0))) #+end_src #+NAME: 3a #+begin_src emacs-lisp :var input=input-3 :noweb yes <<3a-lib>> ;; do it (let* ((lines (split-string input)) (n 0) (result)) (dolist (l lines result) (let ((p (calc-position 3 n l))) (add-to-list 'result (draw-line n l p))) (incf n)) (reverse result)) #+end_src #+RESULTS: 3a | 0 | X#...#.......#...#...#.#.#..... | 0 | | 1 | ###O.....#.#..#...#...........# | 1 | | 2 | .....#X..........#......#....#. | 0 | | 3 | ......#..O......#.#..#...##.#.# | 1 | | 4 | ............O......#........... | 1 | | 5 | ...........#.#.O....#.......##. | 1 | | 6 | ....#.......#.....X........#... | 0 | | 7 | ........##...#.#.....O#...##.#. | 1 | | 8 | .#.#.....##.............X..##.. | 0 | | 9 | .##................##..#...O#.. | 1 | | 10 | ....#...###...##.........#....O | 1 | | 11 | .#O......#.........#........... | 1 | | 12 | ...#.O.#....#....#...#...##...# | 1 | | 13 | ..#....#O...#..#.#..#.....#.#.. | 1 | | 14 | .......#...O..#..#.....#...#..# | 1 | | 15 | .....#......#.X.....#.....#.#.. | 0 | | 16 | ....#..#...#..###O#....##...... | 1 | | 17 | .#...........#......O....#....# | 1 | | 18 | #......#.###.....#....#X...#... | 0 | | 19 | ....#..#.#.#..#...........O#... | 1 | | 20 | ..#..#..#.#...#......#....#.#O. | 1 | | 21 | .O#....#......#...#.#..#....... | 1 | | 22 | ..##O.#...#.........#.#.#...#.# | 1 | | 23 | #....##O.........#...#...#...#. | 1 | | 24 | ...##.#...X........#...##...... | 0 | | 25 | ...#.........O............#.... | 1 | | 26 | ......##...#...#O..#........... | 1 | | 27 | ........##..#.#.###O...#.....#. | 1 | | 28 | .##.........#......#..O..#...#. | 1 | | 29 | ..........#...#..........O..... | 1 | | 30 | #..........#........#..#..#.O.. | 1 | | 31 | X.#....#.#.#.#.#..#.##......... | 0 | | 32 | ##.O.#.##.....#..#......###.... | 1 | | 33 | ##....O...#.....#.............. | 1 | | 34 | .#..#...#X..#....###......#.... | 0 | | 35 | #....#......O.#..#.#........### | 1 | | 36 | .#....#..#...##O....#...##..... | 1 | | 37 | .#....#.....#.....O..##..#..... | 1 | | 38 | #....#.##...#...#..#.O#.##.#... | 1 | | 39 | .#.#.#.##...#####.......X.....# | 0 | | 40 | ......##..#.....##..#...###O... | 1 | | 41 | #.##..#.#....#..##.......###..O | 1 | | 42 | ..O.......##....#........#.##.. | 1 | | 43 | #....X#......#.....#....#..#... | 0 | | 44 | .......#O...#.....##.......#..# | 1 | | 45 | .......#...O.#.#.........#####. | 1 | | 46 | #.......#.##..O#........##..... | 1 | | 47 | ##..#...#........O#....#....... | 1 | | 48 | .......#...##......#O...##.##.. | 1 | | 49 | ......#..##..#.#...#...O....##. | 1 | | 50 | ....#.#..#.....#.##.#.....O.#.. | 1 | | 51 | #..#.#.#........#...#.......#O. | 1 | | 52 | #O...........#..#........#..... | 1 | | 53 | ....O#....#....#.#.......#..... | 1 | | 54 | ....##.O.#.....#.#.....#.....#. | 1 | | 55 | ..........O.#..##..#..#.......# | 1 | | 56 | #....#.......O#...#...#.....#.. | 1 | | 57 | .........##.....O.#....#......# | 1 | | 58 | ..........#........O..#..#.#... | 1 | | 59 | ..#......#.....#......O......#. | 1 | | 60 | ..#...###..##..#.....##..O..##. | 1 | | 61 | ..#.#..###.........#.#...##.O.# | 1 | | 62 | O.........#..#......#...##..... | 1 | | 63 | ...O...#.#..#...##.#...##.#..#. | 1 | | 64 | #.....O.....#.##....#.#......#. | 1 | | 65 | #....##..O#..#.#..##....#.....# | 1 | | 66 | .#..........O..#...#..#.......# | 1 | | 67 | #.#.....#..##..O#..#.#......... | 1 | | 68 | ....#..##...#.....O.....#.#.#.# | 1 | | 69 | ...#.#....#........#.X.#.#..... | 0 | | 70 | .#............#.......#.O#.#... | 1 | | 71 | ..##.......#.#...#........#O..# | 1 | | 72 | ..................##.#...#.#..O | 1 | | 73 | .#X........#.......#.....#..... | 0 | | 74 | ....#O...##..#..........#...... | 1 | | 75 | ..#.##..O....#..#............#. | 1 | | 76 | ....####...O.##....##.#....#.## | 1 | | 77 | #..#....#.....X##........##.... | 0 | | 78 | ..###...........#O..#......#... | 1 | | 79 | #..#.......#........O.......#.. | 1 | | 80 | .....#....#..#..##.....O....... | 1 | | 81 | .###.####.#....#....#..#..X.... | 0 | | 82 | .............#...............O. | 1 | | 83 | .O..........#.#....#..#.#...... | 1 | | 84 | ....X.........##....#..#....##. | 0 | | 85 | .......O.#..#........#.......## | 1 | | 86 | #..#...#..O.#........#..#....#. | 1 | | 87 | ...#.........O...#..#.......... | 1 | | 88 | ...#....##...#..O..........#... | 1 | | 89 | .#......#......##..O#...#.#.... | 1 | | 90 | .#.........#..###.....X........ | 0 | | 91 | .................#.#.....O#.... | 1 | | 92 | ...#............#...........X.. | 0 | | 93 | O..#................#.......#.. | 1 | | 94 | ...O.......#......#.#.#........ | 1 | | 95 | #.....O.##....#.....#........#. | 1 | | 96 | ......##.O....#........#....#.. | 1 | | 97 | .#..#.##...#O........#.#.....#. | 1 | | 98 | ..#...#....#...O..#..##..#.#..# | 1 | | 99 | #.................O.#.......##. | 1 | | 100 | ..........#........#.O.....#..# | 1 | | 101 | #....##....#........##..O#.#... | 1 | | 102 | #...#....#.....#.....#.....O... | 1 | | 103 | #..#..........#....##....#....O | 1 | | 104 | ..O.#..#..#....#.#....#....#..# | 1 | | 105 | #....O..#.......#..........#... | 1 | | 106 | .#...#.#X..#..#...#.......#.... | 0 | | 107 | ###........O......##..#...##... | 1 | | 108 | ...#..........O#..............# | 1 | | 109 | .......#........#O......#.....# | 1 | | 110 | .#..........#...#...O#....###.# | 1 | | 111 | .#...#....#..#.....##..X#..##.. | 0 | | 112 | .#.#.#...##..........##...O...# | 1 | | 113 | .#.....#...#........#........O# | 1 | | 114 | #X......#......##.#.#..#....#.. | 0 | | 115 | ##..O.##........#....#..#...... | 1 | | 116 | ...#...X...................#... | 0 | | 117 | ..#....#..O#........##.#.##.#.. | 1 | | 118 | .............O.......#....#.#.# | 1 | | 119 | ...#...........#O..#.....#..... | 1 | | 120 | ..#....##....#.....O........... | 1 | | 121 | ..#.....#......#..#.##O.##....# | 1 | | 122 | .#.......#...........#...O....# | 1 | | 123 | #............##...#...#.....O.. | 1 | | 124 | O#...#.....#.........##...##... | 1 | | 125 | ...O...........#....##......... | 1 | | 126 | #.##..O..........##..#......#.. | 1 | | 127 | .......#.O.......##.......#.... | 1 | | 128 | ..#.....##..O...#.......#...... | 1 | | 129 | .#........#....O#...........#.. | 1 | | 130 | #.......#...#.#.##O...#....#... | 1 | | 131 | ..........##..#..#..#O........# | 1 | | 132 | #....#....#...#....#....O...... | 1 | | 133 | ...........#....#...#...##.O... | 1 | | 134 | .........#.#.....#............X | 0 | | 135 | ..O###...........##..........#. | 1 | | 136 | .....O...................#..... | 1 | | 137 | #..##...O........#.###.#.##.... | 1 | | 138 | ....##...#.O#................#. | 1 | | 139 | .#........###.O............#.#. | 1 | | 140 | ..............#.#O.........#... | 1 | | 141 | ##............#.#..#O#....#...# | 1 | | 142 | #.....#........####....O....##. | 1 | | 143 | ....##..#...##..##...##...X.#.. | 0 | | 144 | ##..#....#.##.....####.....#.O# | 1 | | 145 | #O..#....#.##.##.#.#........#.. | 1 | | 146 | ....O..........##.....#..#..#.. | 1 | | 147 | ...#...X...#........#.........# | 0 | | 148 | #..##.####O#.......##........#. | 1 | | 149 | ###...#...###O.......#.....#... | 1 | | 150 | #......#..#.....O......#.....#. | 1 | | 151 | ..................#O...#....... | 1 | | 152 | ....#.#....#......#...O.....##. | 1 | | 153 | ..#..#..#..#..#....#.#...O....# | 1 | | 154 | ......#....###..............X.. | 0 | | 155 | O.##......#...#......#......... | 1 | | 156 | #..O.#...##..#.......#..#...#.. | 1 | | 157 | .#....O.#........#.........#... | 1 | | 158 | #.......#O..#..#............... | 1 | | 159 | ........#..#O....#.....#..#.... | 1 | | 160 | ....#......##..O....#...#..#... | 1 | | 161 | #.....#...##..#...O......#..... | 1 | | 162 | .....#.....#.........O#...#..#. | 1 | | 163 | ........#...##.#...#.#..X.#..## | 0 | | 164 | ....#....#...#.....##..#...O... | 1 | | 165 | #....#..#.........#.........##O | 1 | | 166 | ..O##.....##...#.#....##......# | 1 | | 167 | #..#.O..#.......#..#....##..... | 1 | | 168 | ###...#.O#..#.......#......#... | 1 | | 169 | .....#.....O#.......#...##..#.. | 1 | | 170 | ......#.......O.#.#......#..#.. | 1 | | 171 | .................O#..#.###..... | 1 | | 172 | ..........#....#...#X.........# | 0 | | 173 | ...#.#...#.#..##.....#.O.##..#. | 1 | | 174 | .......#..#....#...#......O##.. | 1 | | 175 | ...##..........#..#.....#....O. | 1 | | 176 | .O..##..###...#....##.....#.... | 1 | | 177 | ..#.O..............#....#...#.. | 1 | | 178 | .....##O#.......#.#.##....#.... | 1 | | 179 | #.#.#..##.O#.#..#.##.#....#..#. | 1 | | 180 | ........#....O.......##........ | 1 | | 181 | ...#...#....#...O##.....###.... | 1 | | 182 | .....#..#..........O#.#...##.## | 1 | | 183 | ..#.#.#..#....#...#..#O...#...# | 1 | | 184 | ..#......#..#.#.....#....O....# | 1 | | 185 | .#.....#.......#............O.. | 1 | | 186 | O..##....#...#....##....#...... | 1 | | 187 | #..O.........#...#...###.#..#.. | 1 | | 188 | ..#.#.O..#.#..#.......##....... | 1 | | 189 | ...##....X..........#..#...#.#. | 0 | | 190 | .......####.O.....#..#..#...... | 1 | | 191 | ......#..#.....O..##....#...... | 1 | | 192 | ....#...#.........O#.......#.#. | 1 | | 193 | #.#.#...#.....#...#..O.#..#.... | 1 | | 194 | ........#..#.........#..O..##.. | 1 | | 195 | ........###.#............#.O... | 1 | | 196 | #..#.......#.#..#.......#...#.O | 1 | | 197 | ..O#..............#.#.....#...# | 1 | | 198 | ..##.X......................... | 0 | | 199 | ..#.....O.......#......##...... | 1 | | 200 | #...#......O#.#....#.#.#...##.# | 1 | | 201 | #...#.#......#X#..##.........#. | 0 | | 202 | .##..#...#.#.....O.#.#...#.#..# | 1 | | 203 | .#..#...#.#.........O......#... | 1 | | 204 | ...........#...#...#...O..#.#.. | 1 | | 205 | .#........#...#......##...O.### | 1 | | 206 | #........#..#.#..#...........O# | 1 | | 207 | .O...#...####.......#.......... | 1 | | 208 | ....X.#...............#........ | 0 | | 209 | .....#.O.....#.#...#......#.... | 1 | | 210 | .#........O...........#..##.#.. | 1 | | 211 | ....#..#.....O##.......#...#... | 1 | | 212 | #.#.........#...O#..#.#.##.#... | 1 | | 213 | ................##.O....#.#...# | 1 | | 214 | .......#.......#......O...#.... | 1 | | 215 | #....#.#..............#.#O..### | 1 | | 216 | ..##.##..#.....#............O.. | 1 | | 217 | O....#..##........#....#....... | 1 | | 218 | .#.O........#.#................ | 1 | | 219 | ......O#..#..#..........#..#.#. | 1 | | 220 | .....##.#X.#....##.#......##... | 0 | | 221 | ........###.O................#. | 1 | | 222 | #..###.....#.##O.#...#.#....... | 1 | | 223 | .#..#.#.#.#..#..#.O.....#.#.... | 1 | | 224 | #....#.....#..#......O#...#..## | 1 | | 225 | ........#...##..#.#.....O....#. | 1 | | 226 | .......#..#..#..#....#.....O#.. | 1 | | 227 | ....#..##..#...#....#.........O | 1 | | 228 | #.O....#..#.#...#.#...#....#... | 1 | | 229 | .....O......###.......#..##.#.# | 1 | | 230 | .......#O.....#....#........#.# | 1 | | 231 | .##.##..#..O##.#....#.#.....#.. | 1 | | 232 | ..##.#.......#O#.........#..... | 1 | | 233 | .#...#......#..#.X..#.......... | 0 | | 234 | .....#........#.....O#...#..... | 1 | | 235 | ..#......#.#.#..#.#....O#.#...# | 1 | | 236 | #.#...#...........##......O.... | 1 | | 237 | .................##.....#.#.#O. | 1 | | 238 | #O#..#....#..................#. | 1 | | 239 | ##..O.#.#...#....###.#.#...##.# | 1 | | 240 | #.#.#..O....#..............#... | 1 | | 241 | .....#....O......#..#.##....... | 1 | | 242 | #...#...#..##O.......#.......#. | 1 | | 243 | .....#.#........O..#...#.#..... | 1 | | 244 | .....#..........#.#O#.......#.. | 1 | | 245 | ...#.##.....#....###..X..#..... | 0 | | 246 | ####........#....#..#.#.#O.#... | 1 | | 247 | #......#...##.....#.#..##.#.O.# | 1 | | 248 | X....##....#..#.........##..... | 0 | | 249 | ..#O....##................##..# | 1 | | 250 | #.....O...##...##.#.....#...#.. | 1 | | 251 | ..#..#.#.O....#.#.......#...... | 1 | | 252 | ##.....##...X..#...#.........#. | 0 | | 253 | #..........#...X....#.#......#. | 0 | | 254 | .#..#.......#.#...X.#.......... | 0 | | 255 | .........#.#.......#.O..#..#..# | 1 | | 256 | #......#....#....#..##..O#...## | 1 | | 257 | .....#..#...#.......#.....#O... | 1 | | 258 | ..#.##........#.###...#...#...O | 1 | | 259 | ..O..#...........#..........#.. | 1 | | 260 | .#.#.O...#.##.#..............#. | 1 | | 261 | ....#..#O.......#.....#..##..#. | 1 | | 262 | .#.##.#....O#........#...##.##. | 1 | | 263 | ...#.#...#....O....#......##### | 1 | | 264 | .....#.....##....X......#...... | 0 | | 265 | #........#.##.......O.#.......# | 1 | | 266 | #...#.......##.#.......O..#.#.. | 1 | | 267 | #...##..#....#............O.#.. | 1 | | 268 | ........#.#..#...#..#...##..#O. | 1 | | 269 | #X..#....#............#........ | 0 | | 270 | #.#.O.#.#....##.....##......... | 1 | | 271 | ......#O.........#.......#.#..# | 1 | | 272 | ...#.#....O........#........... | 1 | | 273 | ...#.#.......O.....#........... | 1 | | 274 | ##....####......O#.##..#....... | 1 | | 275 | #......#...#..#.#..O......#..#. | 1 | | 276 | #......#.#....#....#..O........ | 1 | | 277 | ..#.###...#.....#........O.#... | 1 | | 278 | ..#.....##.....###....#.....O.. | 1 | | 279 | O.##.#.....##....#...###....... | 1 | | 280 | ###X#....###.#..##.#.......##.# | 0 | | 281 | #..#..O#...#.#..........##.##.. | 1 | | 282 | .......##O#.#..#.....##..###... | 1 | | 283 | #...#...##..O..##.......###.... | 1 | | 284 | #....#.........O#..#.........#. | 1 | | 285 | .....#.#..........O..#...#.#..# | 1 | | 286 | ..........#......##..O..#.#.... | 1 | | 287 | .#...#...#...#........##O....## | 1 | | 288 | #....#.##..........#.#.....O.#. | 1 | | 289 | #....##.#.##..#.......#.#.....O | 1 | | 290 | .#O..##..#.#...#.#...........#. | 1 | | 291 | ....#O..#...#.#.##.#.#...#..... | 1 | | 292 | .#...#.#O........#.##..#.#....# | 1 | | 293 | .#.....##..X......#.....#...... | 0 | | 294 | ..#.....#.#..#X##.............# | 0 | | 295 | ##....##...#....#O........#.... | 1 | | 296 | .#....#........#.#..O..#..#.##. | 1 | | 297 | .#........#............O....... | 1 | | 298 | .#..##..##..#..#..####....O.... | 1 | | 299 | ..#.###....#..#.##......#.#..X# | 0 | | 300 | .O##..#.#...##....##....#..##.# | 1 | | 301 | ....O#........#....#.#.#...##.. | 1 | | 302 | ...#..#X...#.#....#...#.#.....# | 0 | | 303 | ...##....#O..#....#.........#.. | 1 | | 304 | .....#..##.##O..#.....####..... | 1 | | 305 | ...#..#.........O....#.#.##..#. | 1 | | 306 | ...#..#............X..#..#....# | 0 | | 307 | ...........#.....#...#O##..##.# | 1 | | 308 | ..#......#...#....#..#...O#.#.. | 1 | | 309 | .....#..#...........#.......O.# | 1 | | 310 | O#....###...#.........#....#... | 1 | | 311 | ...O..##.......#.#.....##....#. | 1 | | 312 | #.#...O.#....#.....#...##.....# | 1 | | 313 | .#...##..X.#.....#..##.......#. | 0 | | 314 | ...#........O#..........#.....# | 1 | | 315 | #...##..#.#....O##...#..#...... | 1 | | 316 | ............#.....X.#......#.#. | 0 | | 317 | ......#....#.#...#...O..#...... | 1 | | 318 | .#..#......#....#.......O....## | 1 | | 319 | ...#...#.......###..###...#X... | 0 | | 320 | .............#.#...#..###.....O | 1 | | 321 | .#X....#........#...##....#..#. | 0 | | 322 | .....O.......#######.#.#...#... | 1 | | | | 272 | #+TBLFM: @>$3=vsum(@1$3..@>>$3) SUCCESS!!! FIRST TRY!!! ** B *** Problem Time to check the rest of the slopes - you need to minimize the probability of a sudden arboreal stop, after all. Determine the number of trees you would encounter if, for each of the following slopes, you start at the top-left corner and traverse the map all the way to the bottom: - Right 1, down 1. - Right 3, down 1. (This is the slope you already checked.) - Right 5, down 1. - Right 7, down 1. - Right 1, down 2. In the above example, these slopes would find 2, 7, 3, 4, and 2 tree(s) respectively; multiplied together, these produce the answer 336. What do you get if you multiply together the number of trees encountered on each of the listed slopes? *** Solution :PROPERTIES: :header-args: :noweb yes :END: Okay, my solution so far is general enough that I can easily figure out the answers for 1-1, 5-1, and 7-1. 1-2 will be trickier though, since I'm skipping rows. Still, shouldn't be too too difficult. It has to do with /n/, I think. **** Right 1, down 1 #+NAME: 3b-1-1 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 1 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src #+RESULTS: 3b-1-1 : 85 **** Right 3, down 1 Though this was done above, let's do it again, short-style. #+NAME: 3b-3-1 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 3 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src #+RESULTS: 3b-3-1 : 272 **** Right 5, down 1 #+NAME: 3b-5-1 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 5 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src #+RESULTS: 3b-5-1 : 66 **** Right 7, down 1 #+NAME: 3b-7-1 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 7 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src #+RESULTS: 3b-7-1 : 73 **** Right 1, down 2 Okay, here's the tricky one. I need to go /down/ two when I go /over/ one. So every step, we'll skip a line. *OR* ... /hear me out/ ... we'll just ... /skip/ every other line. Then the slope is 1. #+NAME: 3b-1-2 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (when (= (mod n 2) 0) (let ((p (calc-position 1 n l))) (if (collisionp l p ?#) (incf result)))) (incf n)) result) #+end_src #+RESULTS: 3b-1-2 : 50 **** Multiplying them together I'm sure there's a way to grab all the results and multply them together, but I don't know what it is. For now, I'll just /look/ at them all and .. multiply em. #+NAME: 3b-ag #+begin_src emacs-lisp :noweb yes (* 50 73 66 272 85) #+end_src #+RESULTS: 3b-ag : 3898725600 Shit, that's too high. Damn damn damn. *** Attempt 2 :PROPERTIES: :header-args: :noweb yes :END: I'm going to be honest, I'm not sure what the problem is here. I think I'm going to have to draw everything... And, to make it easier, let's add another function. #+NAME: 3b-lib #+begin_src emacs-lisp :noweb yes <<3a-lib>> (defun sled (i x y) "Draw a sled path over INPUT with slope of X and Y." (let* ((ls (split-string i)) (n 0) (result)) (dolist (l ls result) (let ((p (calc-position x n l))) (add-to-list 'result (draw-line n l p))) (incf n)) (reverse result))) #+end_src **** Right 1, down 1 #+NAME: 3b-1-1-2 #+begin_src emacs-lisp :var input=input-3 <<3b-lib>> (sled input 1 1) #+end_src **** Right 3, down 1 Though this was done above, let's do it again, short-style. #+NAME: 3b-3-1-2 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 3 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src **** Right 5, down 1 #+NAME: 3b-5-1-2 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 5 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src **** Right 7, down 1 #+NAME: 3b-7-1-2 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (let ((p (calc-position 7 n l))) (if (collisionp l p ?#) (incf result))) (incf n)) result) #+end_src **** Right 1, down 2 Okay, here's the tricky one. I need to go /down/ two when I go /over/ one. So every step, we'll skip a line. *OR* ... /hear me out/ ... we'll just ... /skip/ every other line. Then the slope is 1. #+NAME: 3b-1-2-2 #+begin_src emacs-lisp :var input=input-3 <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (when (= (mod n 2) 0) (let ((p (calc-position 1 n l))) (if (collisionp l p ?#) (incf result)))) (incf n)) result) #+end_src *** ACTUALLY I was about to really do a lot, but then I realized something. I had the wrong number to test for =mod=. Here's the real /right 1, down 2/ code: #+NAME: 3b-1-2-correct #+begin_src emacs-lisp :var input=input-3 :noweb yes <<3a-lib>> (let* ((lines (split-string input)) (n 0) (result 0)) (dolist (l lines result) (when (= (mod n 2) 1) ;; NOTE the mod should be 1, not 0 (let ((p (calc-position 1 n l))) (if (collisionp l p ?#) (incf result)))) (incf n)) result) #+end_src #+RESULTS: 3b-1-2-correct : 35 NOW we can multiply everything: #+NAME: 3b-ag-correct #+begin_src emacs-lisp :noweb yes (* 35 73 66 272 85) #+end_src #+RESULTS: 3b-ag-correct : 3898725600 AND THAT IS CORRECT 😎 * Interlude: A Macro I need to write a macro to reduce boilerplate #+NAME: aoc #+begin_src emacs-lisp (defmacro aoc (input split &rest body) "Reduce boilerplate for AoC challenges." `(let ((lines (split-string ,input ,(or split "\n+")))) ,@body)) #+end_src ** testing it :PROPERTIES: :header-args: :noweb yes :END: #+begin_src emacs-lisp :var input=input-1a <> (aoc input nil (let ((list (seq-map #'string-to-number lines)) (result 0)) (catch 'return (while list (setq n (pop list)) (dolist (m list result) (when (= (+ n m) 2020) (throw 'return (* n m)))))))) #+end_src #+RESULTS: : 969024 Cool, it works ^_^ * Day 4 :PROPERTIES: :header-args: :noweb yes :var input=input-4 :END: Passports! ** Input #+NAME: input-4 #+begin_example ecl:grn cid:315 iyr:2012 hgt:192cm eyr:2023 pid:873355140 byr:1925 hcl:#cb2c03 byr:2027 hcl:ec0cfd ecl:blu cid:120 eyr:1937 pid:106018766 iyr:2010 hgt:154cm byr:1965 eyr:2028 hgt:157cm cid:236 iyr:2018 ecl:brn hcl:#cfa07d pid:584111467 eyr:2029 ecl:hzl iyr:1972 byr:1966 pid:2898897192 hgt:59cm hcl:z pid:231652013 hcl:#602927 hgt:166 ecl:grn eyr:2025 byr:2008 iyr:1986 byr:1928 hgt:167cm hcl:#18171d iyr:2012 ecl:oth pid:237657808 eyr:1944 hgt:73in ecl:grn byr:1931 pid:358388825 iyr:2020 hcl:#602927 eyr:2020 hcl:#efcc98 eyr:2024 ecl:hzl byr:2030 hgt:192cm iyr:2013 pid:7479289410 pid:053467220 iyr:2012 hgt:169cm cid:149 hcl:#866857 eyr:2030 byr:1995 ecl:oth hgt:162cm hcl:#efcc98 ecl:grn byr:1985 pid:419840766 eyr:2022 iyr:2020 pid:22086957 hcl:c69235 ecl:#c458c5 eyr:1986 byr:2014 hgt:72cm iyr:1934 hcl:#866857 ecl:brn eyr:2024 iyr:2017 pid:505225484 cid:144 byr:1980 hgt:170cm hcl:#866857 ecl:gry byr:1972 iyr:2019 eyr:2023 cid:234 pid:721290041 hgt:191cm pid:346301363 eyr:2020 hcl:#733820 iyr:2019 hgt:177cm byr:1998 hgt:157cm byr:1963 pid:898055805 hcl:#fffffd ecl:blu iyr:2017 cid:87 eyr:2030 pid:605900764 iyr:2011 hgt:73in ecl:hzl eyr:2024 hcl:#888785 cid:281 iyr:2010 eyr:2026 hcl:#4f7e76 pid:883386029 byr:1946 ecl:brn hcl:z iyr:2020 pid:9121928466 byr:2014 ecl:zzz eyr:2025 hgt:172in hgt:151cm cid:163 pid:670884417 iyr:2012 ecl:oth hcl:#ceb3a1 eyr:2028 hcl:z cid:92 hgt:69cm byr:2008 pid:492284612 eyr:2020 iyr:2023 ecl:hzl byr:1933 hcl:#7d3b0c eyr:2020 hgt:170cm pid:949064511 iyr:2010 ecl:oth eyr:2025 byr:1989 ecl:oth cid:100 hgt:182cm pid:629190040 iyr:2017 hcl:#b6652a ecl:hzl cid:76 hcl:#e71392 eyr:2021 iyr:2013 byr:1995 pid:762177473 hgt:179cm pid:198500564 eyr:2029 hcl:#733820 cid:51 iyr:2012 hgt:70in byr:1938 ecl:oth hgt:190cm ecl:brn byr:1952 iyr:2015 hcl:#623a2f eyr:2023 hgt:169cm hcl:#602927 byr:2001 pid:823979592 iyr:2016 eyr:2029 iyr:2010 ecl:gry eyr:2022 hgt:156cm byr:1953 pid:434063393 hcl:#733820 pid:091724580 hcl:a7069e eyr:1984 ecl:#95d01e byr:2012 iyr:2005 eyr:2022 byr:1972 hcl:#866857 ecl:hzl pid:227453248 hgt:153cm cid:324 iyr:2018 cid:195 pid:049871343 eyr:2024 hgt:169cm byr:1952 iyr:2010 ecl:grn eyr:2035 pid:189cm hgt:77 iyr:1973 ecl:#dc83d5 hcl:z byr:2004 byr:2027 pid:89338932 hcl:1de39e ecl:grn hgt:159in eyr:2034 iyr:1937 pid:076534920 hgt:152cm byr:1969 ecl:blu hcl:#866857 iyr:2011 eyr:2024 iyr:2019 eyr:2028 ecl:blu hgt:169cm hcl:#888785 pid:332202163 byr:1923 hgt:65in byr:1964 iyr:2019 pid:287612987 ecl:hzl cid:213 eyr:2023 hcl:#ceb3a1 hcl:#623a2f pid:182484027 iyr:2016 ecl:brn byr:1943 hgt:71in eyr:2021 cid:344 hcl:#cdee64 iyr:2011 ecl:brn eyr:2026 hgt:176cm byr:1985 pid:978641227 eyr:2029 ecl:brn hgt:173cm byr:1920 cid:211 hcl:#866857 iyr:2016 pid:289769625 hcl:#7d3b0c pid:770938833 iyr:2010 byr:1941 ecl:oth eyr:2029 hgt:161cm hgt:172cm iyr:2015 ecl:gry byr:1948 eyr:2029 pid:466359109 hcl:#341e13 cid:74 pid:405199325 ecl:blu hcl:#6b5442 eyr:1980 byr:2024 hgt:174cm iyr:2011 hgt:183cm pid:075760048 cid:78 byr:1960 ecl:hzl eyr:2030 hcl:#6b5442 iyr:2014 cid:264 hcl:#7d3b0c ecl:blu iyr:2011 eyr:2020 hgt:182cm byr:1929 pid:435338286 byr:1931 hcl:z ecl:amb iyr:2013 hgt:73in cid:165 eyr:2027 pid:511898552 eyr:2025 hgt:184cm hcl:#602927 iyr:2018 byr:1989 ecl:hzl iyr:2016 hgt:168in hcl:#623a2f eyr:2025 pid:310738569 ecl:#0c3039 byr:2027 pid:158cm byr:1946 ecl:grt iyr:1920 cid:189 hcl:389bce hgt:165cm pid:973732906 hcl:#cfa07d iyr:2010 eyr:2020 hgt:180cm byr:1930 ecl:brn pid:930994364 byr:1967 hgt:151cm iyr:2011 eyr:2022 eyr:1968 hgt:75cm cid:241 iyr:2011 pid:5493866745 ecl:grt byr:1976 hcl:#a97842 eyr:2026 ecl:oth iyr:2016 hcl:#c0946f byr:1929 hgt:175cm pid:9421898537 eyr:2028 iyr:2016 byr:1962 ecl:grn hgt:186cm hcl:#cfa07d pid:432962396 iyr:2010 byr:1934 eyr:2023 hgt:180cm hcl:#cfa07d ecl:gry cid:168 byr:1978 eyr:2027 hgt:189cm pid:802710287 hcl:#2f980b iyr:2014 ecl:grn eyr:1970 pid:576329104 ecl:xry iyr:1954 hcl:#341e13 byr:2026 hgt:74in eyr:2027 hgt:153cm ecl:oth hcl:#866857 pid:290407832 byr:1956 iyr:2017 iyr:2011 cid:128 ecl:amb hcl:#7d3b0c hgt:68in pid:743606119 eyr:2020 ecl:oth hcl:#cfa07d byr:2016 pid:#de98ae iyr:1984 cid:194 hgt:170cm eyr:2034 pid:526098672 hgt:168cm hcl:#7d3b0c cid:167 byr:1923 ecl:blu iyr:2016 eyr:2030 pid:495569197 hcl:#866857 hgt:193cm iyr:2013 eyr:2021 byr:1921 ecl:amb ecl:amb hcl:#a97842 pid:862249915 iyr:2012 byr:1964 cid:325 eyr:2021 iyr:1958 byr:2003 hgt:160 hcl:#18171d ecl:hzl eyr:2020 iyr:2019 byr:1997 ecl:brn pid:342735713 hcl:#efcc98 hgt:181cm cid:307 eyr:2027 pid:817121616 eyr:2020 iyr:2012 hgt:185cm hcl:#18171d byr:1969 ecl:hzl pid:381399203 ecl:oth byr:1930 iyr:2014 hcl:#6b5442 hgt:71in cid:156 eyr:2025 byr:2002 hcl:#18171d iyr:2017 pid:398245854 hgt:64in ecl:gry eyr:2025 cid:127 eyr:2028 hcl:#341e13 ecl:amb iyr:2012 pid:079796480 hgt:69cm byr:1995 cid:315 iyr:2028 pid:775929239 hgt:162cm ecl:dne byr:1940 eyr:1952 hcl:#c0946f iyr:2015 hgt:154cm byr:1997 ecl:grn cid:125 eyr:2024 pid:834780229 hcl:#18171d ecl:hzl hcl:#a97842 pid:553710574 eyr:2028 hgt:183cm cid:196 iyr:2014 pid:377912488 hgt:159cm ecl:amb eyr:2024 byr:1974 iyr:2014 hcl:#ceb3a1 eyr:2024 byr:1947 hgt:63in ecl:brn cid:69 pid:185228911 hcl:#b6652a iyr:2016 eyr:2024 hgt:168cm hcl:#602927 iyr:2013 byr:1993 pid:681091728 ecl:gry cid:203 pid:037922164 iyr:2020 byr:1990 hgt:156cm eyr:2023 hcl:#866857 cid:97 ecl:grn hgt:170cm pid:980455250 iyr:2011 ecl:hzl byr:1957 eyr:2030 hcl:#cfa07d hgt:158cm hcl:#602927 byr:2002 ecl:hzl iyr:2013 cid:99 eyr:2020 pid:48646993 byr:1955 pid:814033843 eyr:2030 hcl:#a97842 hgt:191cm iyr:2019 pid:111196491 hgt:191cm iyr:2012 ecl:blu hcl:#a97842 eyr:2026 cid:131 byr:1979 hcl:#fffffd hgt:68in cid:121 ecl:oth eyr:2024 pid:343836937 byr:1955 iyr:2020 eyr:2025 byr:1954 pid:737517118 cid:343 hcl:#b6652a iyr:2017 ecl:hzl hgt:175cm ecl:brn iyr:2011 hgt:171cm cid:102 pid:066348279 byr:1981 ecl:oth iyr:2018 byr:1975 eyr:2029 hgt:185cm cid:226 pid:978243407 hcl:#341e13 iyr:2015 pid:918017915 hcl:#3e52b7 byr:1999 ecl:brn cid:314 eyr:2025 hgt:192cm hcl:#19d1fa byr:1984 ecl:dne hgt:76in iyr:2015 cid:118 pid:417075672 eyr:2020 iyr:2019 cid:120 hgt:186cm hcl:#733820 eyr:2024 pid:423238982 ecl:brn byr:1968 hgt:70cm cid:173 pid:767014975 hcl:#866857 eyr:2039 ecl:brn byr:1985 pid:340424924 eyr:2027 hcl:#7d3b0c hgt:168cm ecl:hzl iyr:2016 byr:1994 ecl:hzl byr:1933 pid:580425691 iyr:2010 hcl:#c0946f eyr:2024 hgt:64in hcl:#9fe6b0 pid:913184461 ecl:grn eyr:2030 cid:262 iyr:2014 ecl:amb pid:640007768 eyr:2030 byr:2017 iyr:1988 hcl:z byr:1977 cid:54 eyr:1939 pid:882762394 iyr:2030 hcl:#ceb3a1 ecl:blu iyr:2011 hcl:#7d3b0c byr:1928 pid:340969354 cid:199 hgt:168cm eyr:2029 ecl:hzl pid:729464282 iyr:2012 hcl:baae60 eyr:2026 ecl:hzl hgt:166cm byr:2019 pid:930997801 iyr:2019 eyr:2030 hcl:#866857 ecl:oth byr:1960 cid:235 hgt:73in ecl:brn byr:1988 hgt:179cm iyr:2017 pid:864768439 cid:305 hcl:#c0946f eyr:2029 hcl:#7d3b0c ecl:grn hgt:182cm eyr:2021 pid:719891314 byr:1920 iyr:2017 hgt:62cm cid:71 ecl:brn hcl:#fffffd iyr:2025 eyr:1997 pid:175cm byr:2022 hcl:#cfa07d cid:239 eyr:2025 ecl:hzl hgt:189in byr:1980 iyr:2020 pid:703047050 byr:1951 eyr:2030 ecl:hzl pid:130992467 hgt:157cm hcl:#341e13 hgt:175cm hcl:#623a2f cid:68 eyr:2025 byr:2001 ecl:oth pid:253618704 iyr:2016 hcl:#fffffd pid:379344553 ecl:grn eyr:2026 hgt:72in byr:1974 iyr:2013 ecl:#b4e952 byr:1970 hcl:z eyr:2039 pid:6056894636 iyr:2021 hgt:165cm cid:328 hcl:#602927 iyr:2014 pid:890429537 byr:1957 hgt:68in eyr:2020 ecl:hzl cid:265 byr:1961 hcl:#ceb3a1 eyr:2022 iyr:2016 hgt:184cm pid:921615309 byr:1951 eyr:2024 hcl:#341e13 ecl:amb pid:414644982 iyr:2010 hgt:159cm iyr:2015 cid:319 eyr:2029 ecl:brn pid:380237898 hcl:#efcc98 hgt:157cm byr:1972 pid:237156579 ecl:#312a91 hgt:167cm iyr:2011 hcl:#c0946f eyr:2021 byr:1953 ecl:hzl iyr:2015 pid:10160221 eyr:2025 hgt:175cm hcl:z byr:1939 hgt:59in hcl:#18171d byr:1962 ecl:hzl iyr:2019 eyr:2025 cid:337 pid:491938615 ecl:utc hgt:82 pid:51674655 byr:2020 eyr:1954 iyr:2029 hcl:z pid:119530189 cid:103 iyr:2010 byr:1979 hgt:168cm hcl:#a97842 ecl:brn eyr:2029 hgt:177cm ecl:brn byr:1990 pid:015089628 eyr:2028 hcl:#733820 iyr:2020 ecl:blu iyr:2020 hgt:189cm hcl:#efcc98 byr:1982 pid:346500376 eyr:2021 cid:160 ecl:brn hgt:173cm iyr:2011 cid:259 hcl:#6b5442 eyr:2026 byr:1995 pid:654875035 ecl:grn eyr:2025 pid:147155222 byr:1942 cid:341 hcl:#602927 hgt:165cm iyr:2016 pid:543171646 hgt:153cm iyr:2019 hcl:#fffffd byr:1985 cid:266 eyr:2027 ecl:hzl ecl:blu eyr:2022 pid:667939101 byr:1974 cid:259 hcl:#888785 eyr:2030 byr:2016 iyr:2022 pid:86902982 ecl:zzz hgt:72 hcl:ceb867 hcl:#fffffd ecl:grn pid:046978329 byr:1924 eyr:2025 hgt:158cm iyr:2011 hgt:150cm eyr:2028 byr:1985 ecl:gry hcl:#866857 pid:340615189 iyr:2017 cid:50 cid:171 hcl:#18171d pid:009562218 byr:1981 hgt:175cm eyr:2024 ecl:oth iyr:2017 iyr:2019 eyr:2022 ecl:brn hcl:#cfa07d pid:050270380 cid:159 hgt:151cm byr:1951 hcl:#7d3b0c hgt:176cm iyr:2015 byr:1923 pid:348188421 ecl:blu eyr:2029 byr:1997 hgt:162cm eyr:2023 pid:445685977 iyr:2012 ecl:amb hcl:#efcc98 iyr:2017 ecl:oth eyr:2028 pid:791977055 hgt:170cm byr:1991 hcl:#623a2f byr:1998 hcl:#fffffd eyr:2020 ecl:gry pid:039483695 hgt:163cm iyr:2020 cid:165 ecl:hzl hgt:74in iyr:2016 pid:026214321 cid:152 hcl:#a1f179 eyr:2036 byr:2001 pid:257900949 cid:80 byr:1956 iyr:2012 hgt:165cm eyr:2030 pid:918371363 ecl:xry iyr:2012 byr:2012 hgt:65cm eyr:2029 pid:041789006 iyr:2018 byr:1945 eyr:2024 ecl:blu hcl:#5ab31e hgt:171cm ecl:gry byr:1956 cid:318 iyr:2020 hcl:#623a2f eyr:2030 pid:020576506 hgt:184cm hgt:173cm iyr:2025 eyr:2023 ecl:amb pid:958983168 hcl:#866857 byr:1935 byr:1974 eyr:2040 pid:57104308 iyr:1980 hcl:z hgt:192in cid:295 ecl:amb pid:180cm hcl:1109f7 eyr:2039 byr:2020 ecl:dne hgt:189in iyr:1921 iyr:2013 byr:1961 hcl:#866857 eyr:2025 hgt:158cm ecl:gry ecl:brn iyr:2013 eyr:2021 pid:978650418 byr:1980 hcl:#ceb3a1 cid:110 hgt:166cm pid:864880558 ecl:hzl hcl:#c0946f byr:1955 eyr:2027 hgt:169cm iyr:2011 eyr:2023 hgt:191cm hcl:#866857 pid:454509887 ecl:grn byr:1938 iyr:2015 pid:793008846 eyr:2025 ecl:grn hcl:#341e13 hgt:187cm byr:1973 cid:224 iyr:2013 hcl:#866857 eyr:2022 pid:802335395 hgt:171cm ecl:amb iyr:2015 byr:1991 hcl:#888785 pid:768625886 hgt:180cm eyr:2026 ecl:oth cid:178 byr:1958 pid:921387245 cid:82 hgt:190cm hcl:#c0946f ecl:grn iyr:2015 eyr:2023 pid:0704550258 hcl:1ba8f6 iyr:2010 byr:1978 cid:130 eyr:2030 ecl:dne hgt:66cm pid:626293279 hcl:#7d3b0c hgt:185cm ecl:oth eyr:2020 byr:1937 iyr:2012 hgt:175 eyr:1933 ecl:gry hcl:#7d3b0c byr:2003 pid:#5d8fcc iyr:2012 eyr:2027 byr:1927 cid:154 ecl:gry pid:683668809 hgt:164cm hcl:#a97842 iyr:2011 byr:1940 iyr:2014 hgt:172cm eyr:2024 pid:033678324 hcl:#10fded cid:292 ecl:oth iyr:1970 ecl:#201515 pid:#4cd485 eyr:2034 hgt:162 byr:2005 cid:67 hcl:#c0946f cid:306 byr:1948 hcl:#efcc98 eyr:2024 hgt:171cm pid:440657854 iyr:2015 ecl:brn hgt:172cm ecl:brn byr:1958 pid:054926969 hcl:#4b8065 iyr:2019 pid:45977569 ecl:amb byr:2002 hgt:71cm hcl:z iyr:1983 pid:811407848 hcl:#866857 cid:112 hgt:180cm byr:1986 ecl:brn eyr:2026 ecl:amb byr:1992 cid:288 pid:417117245 hcl:#623a2f iyr:2011 hgt:181cm eyr:2021 byr:1974 hgt:192cm cid:172 eyr:2022 ecl:blu hcl:#cfa07d iyr:2014 eyr:2024 ecl:gry pid:874569675 byr:1960 iyr:2017 hgt:186cm hcl:#6b5442 byr:1988 eyr:2024 iyr:2020 ecl:oth hcl:#866857 pid:227304269 hgt:170cm ecl:grn iyr:2019 byr:2002 cid:150 hcl:#efcc98 pid:600740993 hgt:167cm eyr:2027 pid:553824537 iyr:2019 ecl:blu eyr:2025 hcl:#e21269 hgt:193cm byr:1923 byr:2030 iyr:2019 ecl:#cb0911 hcl:#cfa07d hgt:74in eyr:2012 pid:7647207386 cid:289 hgt:128 pid:178cm iyr:2025 ecl:#4ad977 byr:2020 eyr:2036 hcl:#efcc98 cid:119 hgt:150in hcl:z iyr:2012 ecl:brn eyr:1975 byr:2007 pid:#0dcd32 hcl:8a1ce7 pid:0434291854 eyr:2034 iyr:2005 hgt:62cm byr:2029 ecl:utc ecl:gry hcl:#ceb3a1 byr:1976 eyr:2024 iyr:2010 hgt:188cm pid:636312902 hcl:#888785 byr:2027 hgt:178in iyr:2017 pid:973095872 eyr:1952 hgt:179cm iyr:2015 hcl:#ceb3a1 byr:1944 pid:182079308 cid:317 eyr:2025 ecl:hzl hcl:#6b5442 ecl:grn eyr:2023 hgt:71in pid:829794667 byr:2000 iyr:2014 cid:192 iyr:2014 pid:096659610 hcl:#c0946f ecl:oth byr:1991 cid:180 hgt:177cm eyr:2023 byr:2017 eyr:2036 iyr:1933 cid:225 ecl:gmt hgt:179in hcl:b5c44d pid:99932231 hcl:#18171d hgt:187cm eyr:2023 byr:1934 cid:286 pid:878541119 iyr:2020 ecl:amb hgt:185cm pid:754207134 ecl:oth eyr:2023 hcl:#a97842 cid:313 byr:1966 iyr:2015 hcl:#ceb3a1 byr:1921 eyr:2022 pid:799265846 cid:285 hgt:67in iyr:2015 iyr:2011 byr:1941 hcl:#341e13 cid:65 pid:413556937 hgt:169cm ecl:amb eyr:2020 iyr:2016 hgt:158cm ecl:grn byr:1931 hcl:#7d3b0c pid:574299170 iyr:2013 byr:1961 ecl:hzl hcl:#866857 hgt:168cm eyr:2022 eyr:2022 pid:245416405 iyr:2019 hgt:173cm hcl:#c0946f ecl:brn byr:1965 byr:1980 hgt:162cm ecl:brn pid:239318191 hcl:#fffffd cid:58 eyr:2025 iyr:2020 pid:892646915 iyr:2012 hcl:#733820 byr:1991 eyr:2021 hgt:157cm ecl:oth pid:310597466 eyr:2025 hcl:#cfa07d byr:1944 iyr:2018 ecl:oth hgt:183cm iyr:2010 hgt:187cm ecl:oth pid:975763328 hcl:#866857 eyr:2023 cid:283 byr:1997 iyr:2020 cid:225 hcl:#efcc98 pid:424680047 ecl:blu hgt:154cm byr:1968 eyr:2027 ecl:oth eyr:2020 hgt:183cm hcl:#623a2f pid:771851807 byr:1990 iyr:2017 hcl:#efcc98 ecl:blu byr:1991 hgt:191cm pid:266021118 cid:124 eyr:2025 byr:1993 ecl:hzl eyr:2020 hgt:163cm iyr:2015 pid:831538073 hcl:#18171d hgt:74in hcl:#420afb eyr:2028 ecl:grn pid:264469103 byr:1993 eyr:2020 cid:79 byr:1972 pid:084953331 hcl:#a97842 ecl:brn iyr:2010 hgt:170cm iyr:2014 ecl:gry pid:094812116 eyr:2026 hgt:190cm byr:1965 hcl:#944667 hcl:#fffffd byr:1953 iyr:2014 ecl:hzl hgt:164cm cid:123 eyr:2023 pid:546394433 iyr:2012 hgt:155cm byr:1998 pid:#2c9be6 eyr:2023 hcl:#ceb3a1 ecl:gry eyr:2029 ecl:gry pid:752489331 iyr:2015 hgt:167cm hcl:#18171d cid:70 byr:2002 byr:1938 ecl:gry pid:764937909 iyr:2014 hcl:#7d3b0c eyr:2022 cid:145 hgt:184cm cid:340 byr:1924 hgt:169cm eyr:2026 iyr:2013 ecl:amb pid:499844992 hcl:#18171d pid:838417672 hgt:175cm ecl:grt iyr:2017 eyr:2025 hcl:17aa1a eyr:2020 byr:1925 hcl:#341e13 ecl:brn cid:342 pid:047426814 hgt:156cm iyr:2012 iyr:2011 hcl:#341e13 byr:1959 ecl:amb pid:969679865 byr:1978 cid:320 hgt:180cm hcl:#435ceb pid:363518544 eyr:2023 iyr:2016 ecl:blu iyr:2010 eyr:2028 pid:183cm byr:1948 ecl:oth cid:133 hcl:#8d3298 hgt:190cm hcl:#6b5442 byr:1929 iyr:2019 pid:207713865 eyr:2029 hgt:166cm ecl:gry ecl:blu iyr:2019 byr:1985 eyr:2030 hcl:#866857 hgt:155cm pid:659180287 ecl:hzl eyr:2020 iyr:2016 pid:440624039 cid:147 hgt:61in byr:1976 hcl:#733820 hcl:#341e13 pid:178082907 eyr:2023 iyr:2015 byr:1956 ecl:amb hgt:163cm eyr:2023 iyr:2011 hcl:#cfa07d hgt:164cm pid:291621559 byr:1960 ecl:gry hcl:#efcc98 byr:1976 iyr:2017 pid:394566091 cid:248 hgt:176cm ecl:hzl eyr:2026 iyr:2013 eyr:2029 hgt:152cm ecl:gry byr:1984 hcl:#623a2f pid:511780941 pid:953716819 iyr:2010 hgt:156cm ecl:amb byr:1947 hcl:#18171d eyr:2025 eyr:2025 ecl:amb iyr:2016 hcl:#cfa07d byr:1925 pid:322787273 hgt:168cm hgt:59in iyr:2012 pid:916978929 byr:1959 hcl:#c0946f eyr:2021 ecl:brn byr:2018 eyr:1929 hgt:187in hcl:z iyr:2003 pid:0377361331 ecl:utc byr:1949 hcl:#fffffd pid:071791776 eyr:2030 iyr:2015 hgt:71in ecl:hzl hcl:#341e13 hgt:154cm byr:1927 eyr:2023 ecl:blu iyr:2017 pid:639867283 hcl:z pid:315276249 byr:2026 hgt:151cm iyr:2028 eyr:2020 ecl:hzl hcl:#341e13 eyr:2027 byr:1981 cid:342 pid:999898177 hgt:187cm ecl:blu iyr:2011 byr:2009 hgt:73cm iyr:1921 hcl:z pid:181cm ecl:xry ecl:hzl byr:1925 pid:034183103 hcl:#341e13 hgt:158cm eyr:2029 iyr:2010 byr:1976 iyr:2011 hgt:177cm pid:833479839 hcl:#dcab9d ecl:blu eyr:2020 cid:230 hcl:#7d3b0c byr:1954 iyr:2014 eyr:2026 pid:122150889 ecl:brn hgt:182cm hcl:#a97842 ecl:brn hgt:187cm eyr:2028 pid:427631634 iyr:2002 byr:2004 pid:912516995 ecl:hzl iyr:2017 hcl:#ceb3a1 byr:1929 eyr:2028 hgt:155cm pid:019809181 cid:128 iyr:2013 hcl:#f5b9f7 byr:1931 hgt:161cm ecl:amb hgt:64in byr:1924 iyr:2016 eyr:2029 ecl:hzl pid:474940085 hcl:#c0946f pid:172419213 ecl:grn hgt:193cm iyr:2010 byr:1973 hcl:#6b5442 eyr:2027 ecl:#7b5cfd iyr:2019 byr:2016 eyr:2040 hgt:191in cid:187 hcl:z pid:#c61084 eyr:2032 iyr:2014 pid:430247344 byr:1967 hcl:#ceb3a1 cid:241 ecl:brn hgt:178in hcl:#623a2f iyr:2017 cid:235 eyr:2020 byr:1978 ecl:blu hgt:175cm iyr:2013 ecl:amb hgt:174cm hcl:#866857 pid:285533942 byr:1954 hgt:152cm ecl:blu pid:952587262 eyr:2024 iyr:2019 cid:268 hcl:#602927 byr:1947 hgt:176in cid:245 byr:2011 iyr:2018 eyr:1987 hcl:z pid:346518170 ecl:utc hgt:180cm iyr:2015 ecl:brn eyr:2027 pid:807494368 cid:324 byr:1980 byr:1936 hcl:#866857 ecl:blu eyr:2021 hgt:187cm iyr:2016 pid:244556968 byr:1950 cid:125 iyr:2020 hgt:168cm hcl:#c0946f eyr:2030 pid:758313758 ecl:blu eyr:2021 pid:618915663 hcl:#cfa07d iyr:2018 byr:2002 hgt:157cm ecl:blu byr:1967 ecl:brn hcl:#c0946f pid:200495802 eyr:2021 iyr:2020 cid:335 hgt:181cm byr:1996 ecl:brn iyr:2015 eyr:2030 hcl:#fffffd cid:207 pid:022460311 hgt:158cm eyr:2022 hgt:59cm iyr:2023 byr:1974 pid:354098699 hcl:b244f7 ecl:#219505 hcl:#866857 eyr:2025 pid:370874666 byr:1947 cid:162 ecl:oth hgt:186cm iyr:2011 ecl:hzl eyr:2029 byr:1981 iyr:2012 pid:433430792 cid:252 hgt:171cm pid:512473844 hgt:186cm iyr:2012 eyr:2028 byr:1949 ecl:hzl hcl:#18171d hgt:60cm iyr:1934 ecl:#4a4017 pid:3067366202 hcl:1161df eyr:1938 byr:2008 pid:119509757 hcl:#cfa07d eyr:2022 hgt:174cm byr:1983 iyr:2015 ecl:blu byr:1955 eyr:2023 cid:114 hcl:f1aa8a pid:609049659 ecl:grn hgt:177cm iyr:2015 eyr:2027 cid:284 pid:654627982 byr:1964 iyr:2018 hgt:168cm hcl:#fffffd ecl:oth iyr:1988 hgt:191cm hcl:b87a62 byr:1990 ecl:xry pid:996624367 eyr:1960 pid:641466821 eyr:2028 hcl:#7d3b0c iyr:2010 hgt:175cm ecl:gry hcl:#b6652a ecl:oth byr:1926 eyr:2030 iyr:2019 hgt:183cm pid:057196056 iyr:2017 eyr:2022 pid:936841429 ecl:blu hcl:#6b5442 cid:179 byr:1927 hgt:161cm eyr:2021 cid:289 hgt:174cm iyr:2013 ecl:grn pid:329574701 byr:1970 eyr:2021 byr:1939 ecl:gry pid:933505139 iyr:2014 hgt:173cm hcl:#7d3b0c cid:116 hcl:045bff eyr:2030 iyr:1920 ecl:brn byr:2030 pid:#38f7f3 hgt:155in eyr:2028 pid:225829241 byr:1928 hcl:#cfa07d iyr:2019 ecl:oth hgt:166cm cid:80 byr:1936 iyr:2017 hgt:94 hcl:#2e7503 ecl:oth eyr:2030 pid:597284996 ecl:oth iyr:2019 hgt:76in byr:1956 pid:821874039 eyr:2026 hgt:168cm pid:019015588 iyr:2010 ecl:amb byr:2009 hcl:#623a2f cid:159 iyr:1980 hgt:167in pid:380644909 eyr:1966 ecl:blu byr:2004 hcl:z eyr:2020 iyr:2013 hcl:#08ad66 pid:540886868 ecl:oth byr:1980 hgt:158cm eyr:2026 hgt:186cm byr:1995 cid:275 hcl:z iyr:1958 ecl:blu eyr:2026 iyr:2012 hgt:61in byr:1936 pid:390833536 cid:298 ecl:grn hcl:#623a2f pid:393878498 eyr:2023 ecl:gry byr:1943 iyr:2010 hcl:#888785 hgt:158cm hgt:191cm cid:197 iyr:2014 byr:1945 hcl:#fffffd eyr:2020 pid:183948344 ecl:amb ecl:gmt hgt:88 cid:260 iyr:2024 byr:2022 eyr:2031 hcl:z pid:#532c6e hcl:#a97842 hgt:160cm eyr:2024 ecl:blu iyr:2015 byr:1970 byr:1964 hgt:178cm eyr:2025 pid:813643223 ecl:brn iyr:2014 hcl:#ceb3a1 byr:1965 eyr:2024 iyr:2018 hgt:165cm hcl:#18171d ecl:grn pid:475669993 hgt:116 iyr:2024 eyr:1974 hcl:504345 byr:2010 cid:206 pid:166cm ecl:zzz iyr:2014 eyr:2020 pid:096460673 byr:1948 hgt:153cm ecl:blu hcl:#341e13 hcl:#ceb3a1 iyr:2017 hgt:67cm pid:178cm byr:2028 ecl:brn cid:293 hgt:157cm hcl:#602927 byr:1941 iyr:2012 pid:611003211 eyr:2029 iyr:2019 byr:2000 pid:083917767 eyr:2024 hgt:172cm cid:248 hcl:#7e4d15 byr:1946 hgt:160cm iyr:2020 hcl:#559278 pid:989139577 ecl:amb eyr:2020 pid:165cm byr:1927 cid:178 hcl:#733820 iyr:2017 hgt:156in eyr:2029 ecl:brn hcl:#18171d hgt:163cm eyr:2022 byr:1962 pid:639124940 cid:258 ecl:hzl iyr:2015 cid:123 pid:4542006033 eyr:1987 byr:2010 iyr:2029 ecl:amb hgt:191cm hcl:#18171d hcl:z byr:1928 iyr:1965 eyr:2022 hgt:75 ecl:oth pid:400765046 hcl:#c0946f hgt:62in ecl:blu byr:1978 iyr:1923 cid:260 eyr:2021 pid:404628742 pid:#bf1611 ecl:grn iyr:2018 cid:146 byr:1948 eyr:2025 hcl:#fffffd hgt:87 pid:767547618 iyr:2018 hcl:#b6652a eyr:2029 hgt:165cm ecl:hzl byr:1937 ecl:blu iyr:2019 pid:960083875 eyr:2027 hgt:71in hcl:#c0946f byr:1921 iyr:2011 pid:9562042482 hcl:z hgt:59cm eyr:1994 cid:258 ecl:#6c1bcc byr:2025 eyr:2028 pid:494999718 byr:1928 hgt:176cm iyr:2015 ecl:oth hcl:#733820 cid:78 eyr:2020 hgt:160cm byr:1947 ecl:blu hcl:#b6652a iyr:2016 pid:069457741 hcl:#6b5442 iyr:2010 byr:1971 eyr:2028 hgt:169cm ecl:brn pid:528961949 eyr:2028 hcl:#7d3b0c byr:1952 ecl:hzl cid:317 iyr:2016 pid:832169844 hcl:#c0946f ecl:brn iyr:2017 eyr:2028 pid:161390075 byr:1993 cid:50 hgt:171cm ecl:#ae12d3 hgt:74cm cid:239 hcl:z pid:345439730 iyr:1924 byr:2029 eyr:2031 #+end_example ** A *** Problem You arrive at the airport only to realize that you grabbed your North Pole Credentials instead of your passport. While these documents are extremely similar, North Pole Credentials aren't issued by a country and therefore aren't actually valid documentation for travel in most of the world. It seems like you're not the only one having problems, though; a very long line has formed for the automatic passport scanners, and the delay could upset your travel itinerary. Due to some questionable network security, you realize you might be able to solve both of these problems at the same time. The automatic passport scanners are slow because they're having trouble detecting which passports have all required fields. The expected fields are as follows: #+begin_example byr (Birth Year) iyr (Issue Year) eyr (Expiration Year) hgt (Height) hcl (Hair Color) ecl (Eye Color) pid (Passport ID) cid (Country ID) #+end_example Passport data is validated in batch files (your puzzle input). Each passport is represented as a sequence of key:value pairs separated by spaces or newlines. Passports are separated by blank lines. Here is an example batch file containing four passports: #+begin_example 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 #+end_example The first passport is valid - all eight fields are present. The second passport is invalid - it is missing hgt (the Height field). The third passport is interesting; the only missing field is cid, so it looks like data from North Pole Credentials, not a passport at all! Surely, nobody would mind if you made the system temporarily ignore missing cid fields. Treat this "passport" as valid. The fourth passport is missing two fields, cid and byr. Missing cid is fine, but missing any other field is not, so this passport is invalid. According to the above rules, your improved system would report 2 valid passports. Count the number of valid passports - those that have all required fields. Treat cid as optional. In your batch file, how many passports are valid? *** Solution I'm thinking the best way to do this is to split each passport into a... =alist= ? Let's try it! #+NAME: 4a #+begin_src emacs-lisp <> ;; required fields (setq *rqfs* '(byr iyr eyr hgt hcl ecl pid)) ;; optional fields (setq *opfs* '(cid)) (defun parse-record (rec) "Parse a record of form KEY:VAL [KEY:VAL]... into an alist." (let ((fields (split-string rec)) (result)) (dolist (f fields result) (let ((p (split-string f ":"))) (add-to-list 'result (cons (car p) (cadr p))))))) (defun validate-record (record) "Validate a RECORD -- does it have all required fields?" (let ((result t)) (dolist (required-field *rqfs* result) (unless (assoc-string required-field record t) (setq result nil))) result)) (aoc input "\n\n" (let ((records) (result 0)) (dolist (record lines result) (let ((rec (parse-record record))) (if (validate-record rec) (incf result)))))) #+end_src So far, biggest lesson is: *USE ~assoc-string~ !!!!* #+RESULTS: 4a : 226 Huh -- I did a table-based solution before, and got =224=, too low. But with this =incf= one, I got the right answer. Who knows =̅\_(ツ)_/̅=[fn:1] ** B *** Problem The line is moving more quickly now, but you overhear airport security talking about how passports with invalid data are getting through. Better add some data validation, quick! You can continue to ignore the cid field, but each other field has strict rules about what values are valid for automatic validation: #+begin_example byr (Birth Year) - four digits; at least 1920 and at most 2002. iyr (Issue Year) - four digits; at least 2010 and at most 2020. eyr (Expiration Year) - four digits; at least 2020 and at most 2030. hgt (Height) - a number followed by either cm or in: If cm, the number must be at least 150 and at most 193. If in, the number must be at least 59 and at most 76. hcl (Hair Color) - a # followed by exactly six characters 0-9 or a-f. ecl (Eye Color) - exactly one of: amb blu brn gry grn hzl oth. pid (Passport ID) - a nine-digit number, including leading zeroes. cid (Country ID) - ignored, missing or not. #+end_example Your job is to count the passports where all required fields are both present and valid according to the above rules. Here are some example values: #+begin_example byr valid: 2002 byr invalid: 2003 hgt valid: 60in hgt valid: 190cm hgt invalid: 190in hgt invalid: 190 hcl valid: #123abc hcl invalid: #123abz hcl invalid: 123abc ecl valid: brn ecl invalid: wat pid valid: 000000001 pid invalid: 0123456789 #+end_example Here are some invalid passports: #+begin_example 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 #+end_example Here are some valid passports: #+begin_example 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 #+end_example Count the number of valid passports - those that have all required fields and valid values. Continue to treat cid as optional. In your batch file, how many passports are valid? *** Solution Okay, this shouldn't be /too/ bad. I just need to add to my =validate-record= function. #+NAME: 4b #+begin_src emacs-lisp <> ;; required fields (setq *rqfs* '(byr iyr eyr hgt hcl ecl pid)) ;; optional fields (setq *opfs* '(cid)) (defun parse-record (rec) "Parse a record of form KEY:VAL [KEY:VAL]... into an alist." (let ((fields (split-string rec)) (result)) (dolist (f fields result) (let ((p (split-string f ":"))) (add-to-list 'result (cons (car p) (cadr p))))))) (defun validate-byr (byr) "BYR should be four digits; between 1920 and 2002." (<= 1920 (string-to-number byr) 2002)) (defun validate-iyr (iyr) "IYR should be four digits; between 2010 and 2020." (<= 2010 (string-to-number iyr) 2020)) (defun validate-eyr (eyr) "EYR should be four digits; between 2020 and 2030." (<= 2020 (string-to-number eyr) 2030)) (defun validate-hgt (hgt) "HGT should be a number followed by CM or IN. If CM, the number should be between 150 and 193. If IN, the number should be between 59 and 76." (cond ((string-match (rx "cm" eos) hgt) (<= 150 (string-to-number hgt) 193)) ((string-match (rx "in" eos) hgt) (<= 59 (string-to-number hgt) 76)) (t nil))) (defun validate-hcl (hcl) "HCL should be six hexadecimal digits preceded by a #." (string-match (rx bos "#" (repeat 6 hex-digit) eos) hcl)) (defun validate-ecl (ecl) "ECL should be one of AMB BLU BRN GRY GRN HZL OTH." (string-match (rx bos (or "amb" "blu" "brn" "gry" "grn" "hzl" "oth") eos) ecl)) (defun validate-pid (pid) "PID should be nine decimal digits." (string-match (rx bos (repeat 9 digit) eos) pid)) (defun validate-record (record) "Validate a RECORD -- does it have all required fields?" (let ((result '())) (dolist (required-field *rqfs* result) (if-let ((field (car (assoc-string required-field record t))) (value (cdr (assoc-string required-field record t)))) (progn (push (cond ((string= field "byr") (message "%S %S %S" field value (validate-byr value)) (validate-byr value)) ((string= field "iyr") (message "%S %S %S" field value (validate-iyr value)) (validate-iyr value)) ((string= field "eyr") (message "%S %S %S" field value (validate-eyr value)) (validate-eyr value)) ((string= field "hgt") (message "%S %S %S" field value (validate-hgt value)) (validate-hgt value)) ((string= field "hcl") (message "%S %S %S" field value (validate-hcl value)) (validate-hcl value)) ((string= field "ecl") (message "%S %S %S" field value (validate-ecl value)) (validate-ecl value)) ((string= field "pid") (message "%S %S %S" field value (validate-pid value)) (validate-pid value)) (t "WHAT")) result)) (push nil result))) (every (lambda (i) (not (eq i nil))) result))) (aoc input "\n\n" (let ((records) (result 0)) (dolist (record lines result) (let ((rec (parse-record record))) (if (validate-record rec) (incf result)))))) #+end_src #+RESULTS: 4b : 160 Damn, *203* is too high. At least I'm getting a somewhat /meaningful/ number; it turns out regexen in Emacs are totally fucked. That's why there's a whole macro to make them easier to write, I guess. Okay, too high -- that means that I'm getting false positives somewhere. *** SUCCESS OMG. I just had to ~(push nil result)~ on failure --- duh. I had removed that because I'd had ~(push result nil)~ earlier, which of course isn't the right order of operations. But that was allowing some bad things to be ignored, which made my answer too high. Ah well. * Day 5 :PROPERTIES: :header-args: :var input=input-5 :END: ** Input #+NAME: input-5 #+begin_example FFFBFBFLRR FFBBFFFRLL FBFBFFBRLR FFFBBFBRRL BFFFBBFRRL FFBFBFFLLR FBFBBFFRLL FFBBFBBLLL BFFFBBFLLR FBBFFBBRLR FBFBBBBLLL BFFBBBFLLR BBFFBFBLRR FBBBFFBRRL FFFBFBBLRL FFBFBFBRLR FBBBBFFRRL FBBBBFBLLR BFBBBBFRRR BFBFFBBLRL FBBFBBFRLL FFBBBFBRLR FBBFFFBRLL FBFBBFBLRR FFFBBBFLLL FBFFBBFLRL BFFFBFFLLR FBFBBBBLRL FBBFBFFRLR FBFBBBBRLL FFBFFBFLLR BFFBFFBRLL FBBBBFFLRL BFFBFBBRLR FFBFFFFLLR BBFFBBFRLR BFBFBBBRRL BFFBBBBLRR FFBBBBBRLL FFFBBFFRLR BBFFFFBLRL BFBBFBFRRL BBFFBBFRRL FBFFFFBRLR FBBFBBBRLR BBFBFFFLLL BFBFBBBRLL BFFFFFFLRL FBFBFBFRRR BBFFFFFLRR FFFBBFBLLR FBFFBFBRLL BFBBFBFLLR FFBFBFFLRL BFBFFBFRRR FBBBBBFRLR FBBFFBBLLR FBFBBFFLRL FBFFFBFRRL BFFBFFFLRR FFBFBFBLRL FBFFBBBLRR BFBBFFFLLR FBFBBBBRLR FBFFFBBRRL FFFBBBFRRL FBBBBBBLRR FBBBFBBRRL FBBBFBBRRR BFFFBFBLRL FBBBFFBRLR BFBFFFBRRR BFBBFBBLRL BBFFBBFLRR FFFBFBFLLR FFBBBBFRRL BFBFBFFRRR FBFBBBBRRR BFFFBFFRLL BFBBFBBLLL FBFBFBBRLR BFFFBFBRLL FFBBFFBRLL FBFFBBFRLL FBFBFFFRRR FFBFBBBLLL BBFFBBBLRR FBBFFBBRLL BFFFFFBRRL FBBFFBFLLL FBFBFBFLRL BFFFFBBLRL BFFBBFBRLL BFBFFBFRRL BFBFFFFLRR FBFFFBFRRR BBFFBBBLLR FBFBFBFRRL BFFBFBBLRL FFFBFBBRLR BBFFFBFLRL BFBFFBFLLR BBFFBFBRRL FBBFFFBRRL FFBFFFFLLL BFBFBFFLLL BFBFFFBLRR FBBBFFBLRR FFBBFFBLLR BBFFFBBLRR BBFBFFBLRL BFFFBBFRLL FBFFBFFRRR FFBBBFBLRL FFBFBFFRRR BFFFFFFLLR BFFFFBBRRL FBFBBBFLRL BFFFFBFLRL FBFBBBFRLL FFBFBFBRRR FFFBFBBRRR FBBBFFBRLL FBFFBBFRLR FFBFBBFRLR FBBFFFBLLL BBFFBBBRLR FBBFFFFLRR BBFFFBFRLL FBBBBBBRLR BFBBFFBLLR BFBFBBBLRR FFBBFBBRLL FFFBFBBLLL BFBBBFFRLR FBFBFFFLRL BFFBBFBLLR BFBBFFFLRL BFBBFFBLRR FBFFFFBLRL FBFBFBFLRR FBBFFFFLRL FFBFBBBLLR FBFBFBBRRR BFBBBBFLRL BFBFBFBLRL BFFBFBFLRL BBFFFFBRRL FFBFFFBLRR BBFBFFBRRL FFBBBFFLRR BFFBBBBLRL FBBBFFFLLR FFFBBBFRLR BBFBFBFLLR BFBFBFFRRL FBFBFFBRRR FBFFBFFLRL FFBBFFFLLL BFFBBFBLLL BBFFFFFLRL FFBFBBBRRR FFBFFBFLLL FFBBBBFLRL FFBBFFFRLR BFBFFFBLLL FBFFFFFRRR FBBFFBBLRL BFFFFBFRRL BFFFFBFRLR FFBFBFFRLL BBFFBFFRRL FBFFBBBRRR FFBBBFFRRR BFFBBBBRLR FFBBFBBRLR BFBBFBBRLR FBFFBBBLLR BFFFFBBLRR FBBFBFBRRL FBBFBFBRLR FBBBBFFLRR FBFFFFBLRR FFBFBBFLLL FBBFFBBLRR FBFBFFFLLL FBFFFBBLRR FBBFBFFLLL FBBBFBFRLL FFBBFBBLRL BFBFFBBRRR BFFBBBBLLR FBFFBFBLRR FBBBBBBLLR FBBFBBFLRL BFBFBFBRLR FBBFFFFRLR BFFBFBBLLL BFBFFFBRLL BFFBBBBRLL BFBFBBFLLR FBFFBFFRLR BFFBBFBRRR FBBBFFFLLL BFFBFBFRRL FBFFBFFRLL FFBBBFFLRL FBFFBFFRRL BBFFBFBRLR FBBFBBBRLL FBFBBFBRRL FBFBBFFLLR BFFBFFBLRR FFBBFBFRRR BFFBBBFRRL FFBFBFBRRL BBFFBFFLLR FBBBBFFLLR FBBFBFBLLL BFBBBBFRLL FFBBBBFLLL FBBBFBBRLL BFFBFBFLLR FBFFFFFLLR FBBFBFBRLL FBFBBBFLLR FBFBFBBLLL FFFBBBBLLR FFBBBBFRRR FBBFFFBLRL BBFFBFBLLR BFBBFFFRLR BBFBFFBRLL BFBBBFBLRL BFBBBFFRRL FBFBFFBRLL BBFBFFFLRL BFBFBFBRRL BFFFBFFLLL FBFFFFFLLL FBFBBBBRRL FBFFBFBRRL BFBFBFFRLR FBFBFFFRRL BFBBBBFLLR FBBBBBFLRL FBBBFFBLLL FBBBFFFRRL BBFBFBFRRR FFBFFBBRRL FFBFBBFRRR BBFFFBFLLL BBFFBFBRRR BFFBBBFLRR FBFFFFBRLL FBFFBBBLLL FFFBBBFLLR BBFBFFBLLL FBFBFBFRLR BFBFBFBLLL BBFFFFBRRR FBBBBFBRRR FBFFFBBRLR FFFBBFFLLL FBBFFBFLRR BFFFBBBRLL FBBFBFBLRL FFBFFFFLRL FFBFFFBLLR FBBFBBBRRL BFBBFBFRLL FFBBBBBLRR BFFBBFFLRR FFBFFFBRRR BFFFFFFRLL BFFBFFBRRR FFFBBBFLRL FFBFBFBRLL BBFFBBBRRL BBFBFFFRRR BBFBFBFLRL FBBFBBBLRR FFBBFBFRLR BFBFBFBLRR FFFBBBBRRL BFFFFBBLLL FFFBBBFLRR FFBBFFBRRL FBFFBFFLRR FBFFBBFRRL BFBBFBBRRL BBFFBFBRLL FBBFFFFRRL FFBBFFBRLR BBFFFFBRLR BBFBFBFRLL FBBFBBBRRR BFFBBBBRRL BFFBBBBLLL BFBBFBBRLL BFFBBBFLRL FBFFBFBLRL BFFBBFFLLL BFBFBBFRLL FBBFFFBRRR FFBFFBFLRL FFBFFFFRLR BFBBFBBLLR BFBFBFBRRR FBBFFFFLLR FFBBFBBRRL BFFBFFFRRL FBFBBBFRRL FBBFFFFLLL BFFFFFFRRL BFBFFFBLLR BFBBFFBRRR BFFBFFFLLR FFBBBFBLLL BFFBBBFLLL FBFFFBBRRR FBBBBBFLLL BFBFFFFRRL FFBBFFBRRR BFBFBFFLLR FFFBFBBLLR BFBBFFBLRL FBFBBFFRRR BFBBBFFLLR FBBFFFBLLR BFFFBBFLRR BFFFFBBRLR FBFFFBBLRL BFBBBFBLRR FBFFBFBLLR BFBBFFFRLL FFBBFBFLLL FFBFFFBRRL FFBBFBBLRR FFBFBBFLRL FFFBBFFRRR BFBFFBFLRR BBFFFFBLRR FFBFBBFLRR FFFBBFFRLL FBBBFBBRLR BBFFFBBRRL FFFBFBFRRL FBBBBBBRRR FFBBBFBLRR FBBFBFFLRL FBBBFFFRRR FBBFFBBRRR BFFFFBBRRR FBBFFBFRLR BFFBFBFRLR BFBBBFFLRR FFBFFBFLRR BFBFFFBLRL BFFBFBFRLL FBBBBFBLLL BBFBFFFRRL FFBBFFBLLL FFBFFBBRLR FFBBBFBRRL FFBBFFFLRR BBFFBFFLRR BFFFBFFRRL FBFBBFBRRR FBFFFBFLRL BBFBFFBLRR BFFBFBFRRR BFFFFFFLLL FBBBFFBLRL FBBBFBFRRL BFFBFFBRLR BFBBBFFRRR BFFBFFFRRR FFFBBBBLLL FFBBBFBRRR FFBBFBFLLR BFBBBFBLLL FBBFBBBLLL BBFBFBFLLL BFBBBFBRRR BFBFBBFRLR FBFFBFBRLR BFFBFFFRLL BFBBFFBRRL FFBBFBFLRR FFBBBFBLLR BBFBFFFRLR FFBBFBBLLR FBFFFBBLLR FBBFBFBLLR FFBBFBFRLL BFFFFFBLLR BFBFBFBLLR BFBBFFBLLL FBBBBFBLRR BFBBBBFLLL BFFBBFFLLR FBFBFFFRLL FBBBBBFLLR BBFBFFBLLR BFBFBFFLRR FBBBBFFRLR FFFBFBBRRL FFFBBFBLLL BFBBBBFLRR BFBBBBBLRR FBBFBBFLLL BFFFBFBRLR FBBFBFFLRR FBFFFBBRLL BFFFFFBRRR BFFBBBFRLL FFBFBFBLLL BFBBFBFLRL FBBBBFFLLL FBBFBFFRRR FFFBBBBRLR BFBFBFFLRL FFBBBFFRRL BBFFBFFLRL BFFFBBBRRL FBFFFFFLRL BBFFBFFRLL BFFFBBFRLR BFBFFBBRLR FBFBFBBLLR FBBFFBBRRL BBFFBFFRLR FFBFFBBRRR BBFFFBBRLL BFBFBFBRLL FBFBBBBLLR FBFBFBFLLL FFBFBBBLRL BFFBFBBLRR BBFFFFFRRR FFFBBFFLRL BBFFFBFLRR FFBFFBFRLL FBFFBBFLLR FBFFFFBLLR FFBBBBFRLL FFFBBFFLRR BBFFFFFLLL BBFBFBFLRR FFBBBBFRLR BBFFFBBLLL FFBFBBFRLL BFFFFFFLRR FFBFFFBRLL FBFFFFFRRL BBFFFBBLLR FFFBBFBRLR BFFBBFFRRL FBBBBFFRLL BFBBFFBRLR BFFFBFBLRR BFBFFBBLLR BFFBFBBRRR BBFFFBFRRR FFBBBFFRLL BFBBFBBRRR FFBBBBBRLR BFFFBBBRLR BFFFBBFLLL FFBFFBBLRL FFBBFBFLRL FBFBFBBLRL BFFBBFBRLR FBBBBFBRRL FBFBBBFRRR BBFBFFBRRR BBFBFBFRRL FBBBBFBRLL FBFFFBBLLL BFBFBBFLLL FBBBBFFRRR FBBFBBFLRR FFBFFFFRRL FFFBFBFRLL FBFBBFBRLR FFBBBFFLLR FBFFBBFLLL FFFBBBBRRR BFFFFBFRRR BFBFFFFLRL FBFBFFBLLL BFFBBBBRRR BFFBFBFLLL FBFBBFFLLL FBBFBBFLLR FBBFBFFLLR BBFFBFFRRR FBBBBBFLRR FFBFBBBRLL FBBBBBBLLL BFBBFBBLRR FBFBFFFRLR FFBBBBBRRL FBFFFFBRRR FBBFFBFRRR FFFBBBBRLL FBBFFFFRRR BFFBFFBLRL FFFBBBBLRR BFBBBBFRRL BFFFFBBLLR BFFFFFFRLR BFFBBFFRLR BFFBBFBLRL BBFFFFBLLL BFFFFBBRLL FBBFFBFRLL FFFBBFBLRR BBFBFFBRLR BFFFBBBLRL BFBBFFFRRL BFBFFBFRLL BFFBFBBRRL FBFFBFFLLL BFBBFFBRLL BFBBBFFLRL FFFBFBFRLR BFFBFFBLLR BBFFFFBLLR FFBBFBBRRR FBBFBBFRRR FFBBBFFLLL BFBBFFFLRR FFBFFBFRRR FBBFBBFRLR FBFBFFBLRL BBFFBFBLRL BFFFFBFLRR FBBBFFFRLL FFFBBFFRRL FFBFBFFRLR FFBBBBBLLR BFFBBFBRRL BFFBFBFLRR FFFBFBBRLL FBFBBBBLRR BFBFFFBRRL FFBFBBBRRL FFBFBFFLRR FFBFBFBLRR BFFBBFBLRR FFFBFBFLRL BFFBFBBRLL BFFBFFFRLR FFBBFFBLRR FBBBBBFRLL FBFBFBFRLL BFBBBBBRRR BBFBFFFLLR FFBFFFFRLL FFFBBFFLLR BFBBFFFRRR FBBBFBFLLR BFBBBBBRRL FBBBBBBLRL FBBBFBFLLL BFFBFFBLLL BFFBFFBRRL FBFFBFBRRR FBFBFBBLRR BFFFBFFRLR FBFBFBBRRL BFBBBBBLLL FBFFBBFLRR BBFFFBBRRR FFFBFBBLRR FBBFFBBLLL BFFFFFBRLL BBFBFBFRLR BFFFBFFLRR FBFBFFBLRR BFBBBFBRLR BBFFBFBLLL FFBBBBFLLR FBBBFBFRLR FBBBBBFRRL FBBBFFBRRR FFBBBBFLRR BBFFBBBRRR BFFFFBFLLR FBFFBBFRRR BBFFFFFRRL BBFFBBBRLL FBFFFFBRRL FBFFBBBLRL BFFFFFFRRR BFFFBBBLLR FBFBBFBLRL BFBFBBBLRL FFBBFBFRRL FBFFBBBRLR BFFBBBFRLR FFBFBBBLRR BFFBFFFLLL FBBBFFBLLR BFBFBBFRRL FFBFFBBLRR BBFFFBBRLR FFBFFBBRLL FBFFFFFRLR FBBBFBBLRL BBFFFBFLLR FBBFFFFRLL BFFFBBFLRL BFBBBBBRLR BFFBFBBLLR FFBBFFBLRL BFBBBFBRLL BFBBFBFRRR FFBBFFFLRL FFBFFFBLLL FFBFFBBLLR BBFFFBFRRL BFFBBFFLRL FBBFFBFLRL BFFFBBBRRR FFBBFFFRRL FFBFBFFRRL FBBBBFBLRL BBFFBBFLLR FBBBBFBRLR BFBFFBFRLR FFBFFBBLLL FFBBBBBLLL BFBFBBFRRR BBFFFFFRLL FBFFFBFRLR BFBBBBFRLR FBBFFFBRLR BFFFFFBLRR FBFFBBBRRL FBBBFBFLRL BFFFBFFLRL BFBFBBFLRR BFBBFBFRLR FFBFFBFRLR BBFFFBBLRL BFBFFBFLLL BBFFBBFRLL FBBBBBBRRL FFBBFFFLLR FFFBBBBLRL BBFFBFFLLL FBBBFFFLRR FBFBFBFLLR FFBFBFFLLL FFBFFFBLRL BFBFFBBLLL FBFBFFFLRR BBFFBBFLRL BFFFBFFRRR FBFFBBBRLL FFFBBBFRLL FBFFFBFLLL BBFFFBFRLR BBFFBBFLLL BBFBFFFRLL BBFFBBBLLL FBFBBFBLLL FBBFBBBLRL FBFFFFFLRR FBFBBFBRLL FFFBBFBRLL FBBBFBFLRR FBFBFFFLLR FFBFFFFRRR BFFBBFFRLL BBFFFFBRLL BFBBBFBLLR BFBBFBFLLL FBBBBBFRRR FFBFBBBRLR BFFFFBFLLL BFFFFFBRLR BFBFFFFLLL BFBFFBBRRL FFBFFBFRRL FBBBFBBLRR BFBFFBFLRL FBBBBBBRLL FFFBBFBLRL FFBFBBFLLR BFBFBBBLLR FBFBBFFRLR FBFBFFBLLR BBFFBBBLRL BFBFFBBLRR FFBBFFFRRR FBFBBBFRLR BFBBFBFLRR FBBFBFFRRL FBFBBFFLRR FBBFBFBRRR FBFBBBFLRR BFBBBBBLLR FBFFFBFLLR FBFBBFBLLR FFBFFFFLRR BFBFBBBRLR FBFFFFFRLL FFBBBBBLRL BFBBBFFLLL BBFFFFFLLR BFFFBBFRRR FBFBFFBRRL FFFBBFBRRR FBBBFBBLLR BFFFFBFRLL BFBFBFFRLL BFBFBBFLRL FFBBBFFRLR BFBFBBBLLL BFFFBBBLRR BFBBFFFLLL FBFBFBBRLL BFFFFFBLLL BBFBFFFLRR BFBFFBBRLL FFBFBBFRRL FBFBBBFLLL FBFFFFBLLL FBFFBFFLLR FBBFBBFRRL BBFFBBFRRR BFFFBFBRRL BFBFFFBRLR FBBFFBFLLR BFBFFFFRLL BFBFBBBRRR BFBFFFFRLR FFBFBFBLLR FBFFFBFLRR FFBBBBBRRR FBBFFFBLRR FFBFFFBRLR BFFFBFBRRR FBBFBBBLLR BFBBBBBLRL FBBBFFFLRL BFFBBFFRRR BFBBBFFRLL BFBFFFFLLR BFFBFFFLRL BFBFFFFRRR BBFFFFFRLR FBFFFBFRLL FFFBBBFRRR BFFFBFBLLR FBBFBFFRLL FBBBFBBLLL BFBBBBBRLL BFFBBBFRRR FFFBFBFRRR BFBBBFBRRL FBFFBFBLLL FBBBFFFRLR FBFBBFFRRL FBBFFBFRRL FBBFBFBLRR BFFFFFBLRL FBBBFBFRRR BFFFBBBLLL FFBBBFBRLL #+end_example ** Part 1 *** Problem --- Day 5: Binary Boarding --- You board your plane only to discover a new problem: you dropped your boarding pass! You aren't sure which seat is yours, and all of the flight attendants are busy with the flood of people that suddenly made it through passport control. You write a quick program to use your phone's camera to scan all of the nearby boarding passes (your puzzle input); perhaps you can find your seat through process of elimination. Instead of zones or groups, this airline uses binary space partitioning to seat people. A seat might be specified like FBFBBFFRLR, where F means "front", B means "back", L means "left", and R means "right". The first 7 characters will either be F or B; these specify exactly one of the 128 rows on the plane (numbered 0 through 127). Each letter tells you which half of a region the given seat is in. Start with the whole list of rows; the first letter indicates whether the seat is in the front (0 through 63) or the back (64 through 127). The next letter indicates which half of that region the seat is in, and so on until you're left with exactly one row. For example, consider just the first seven characters of FBFBBFFRLR: #+begin_example Start by considering the whole range, rows 0 through 127. F means to take the lower half, keeping rows 0 through 63. B means to take the upper half, keeping rows 32 through 63. F means to take the lower half, keeping rows 32 through 47. B means to take the upper half, keeping rows 40 through 47. B keeps rows 44 through 47. F keeps rows 44 through 45. The final F keeps the lower of the two, row 44. #+end_example The last three characters will be either L or R; these specify exactly one of the 8 columns of seats on the plane (numbered 0 through 7). The same process as above proceeds again, this time with only three steps. L means to keep the lower half, while R means to keep the upper half. For example, consider just the last 3 characters of FBFBBFFRLR: #+begin_example Start by considering the whole range, columns 0 through 7. R means to take the upper half, keeping columns 4 through 7. L means to take the lower half, keeping columns 4 through 5. The final R keeps the upper of the two, column 5. #+end_example So, decoding FBFBBFFRLR reveals that it is the seat at row 44, column 5. Every seat also has a unique seat ID: multiply the row by 8, then add the column. In this example, the seat has ID 44 * 8 + 5 = 357. Here are some other boarding passes: #+begin_example BFFFBBFRRR: row 70, column 7, seat ID 567. FFFBBBFRRR: row 14, column 7, seat ID 119. BBFFBBFRLL: row 102, column 4, seat ID 820. #+end_example As a sanity check, look through your list of boarding passes. What is the highest seat ID on a boarding pass? *** Solution Okay, so I might've got a few spoiler-y ideas from =#adventofcode= ... though I don't understand them. Let me think on this problem a bit. I'm definitely doing a binary search thing. I /think/ I get the binary code thing now ... basically, you can encode the F as 0 and the B as 1 .. let's see. #+begin_example BFFFBBFRRR BFFFBBF B 1 - 128 F 0 - 64 F 0 - 32 F 0 - 16 B 1 - 8 B 1 - 4 F 0 - 2 1000110 = 70. CORRECT FFFBBBFRRR FFFBBBF 0001110 => 14. CORRECT #+end_example DOPE! Also, I'm looking at the seat ID ... "multiply the row by 8, then add the column." Multiplying a number by 8 is the same as shifting it by 3, right? #+begin_example 0001 -> 1000 1 -> 8 000100101010 -> 100101010000 298 -> 2384 x8 = 2384 #+end_example *DOPE* I think I'm ready for the solution now. #+begin_src emacs-lisp :noweb yes <> (defun notation-to-binary (notation) "Convert notation of seat to binary." (let ((result) (list (string-to-list notation))) (dolist (c list result) (push (cond ((eq c ?F) ?0) ((eq c ?B) ?1) ((eq c ?L) ?0) ((eq c ?R) ?1)) result)) (concat (reverse result)))) (aoc input nil (let ((result)) (dolist (line lines result) (let ((binary-string (notation-to-binary line))) (push (list line binary-string (string-to-number binary-string 2)) result))) (reverse result))) #+end_src #+RESULTS: | FFFBFBFLRR | 0001010011 | 83 | | FFBBFFFRLL | 0011000100 | 196 | | FBFBFFBRLR | 0101001101 | 333 | | FFFBBFBRRL | 0001101110 | 110 | | BFFFBBFRRL | 1000110110 | 566 | | FFBFBFFLLR | 0010100001 | 161 | | FBFBBFFRLL | 0101100100 | 356 | | FFBBFBBLLL | 0011011000 | 216 | | BFFFBBFLLR | 1000110001 | 561 | | FBBFFBBRLR | 0110011101 | 413 | | FBFBBBBLLL | 0101111000 | 376 | | BFFBBBFLLR | 1001110001 | 625 | | BBFFBFBLRR | 1100101011 | 811 | | FBBBFFBRRL | 0111001110 | 462 | | FFFBFBBLRL | 0001011010 | 90 | | FFBFBFBRLR | 0010101101 | 173 | | FBBBBFFRRL | 0111100110 | 486 | | FBBBBFBLLR | 0111101001 | 489 | | BFBBBBFRRR | 1011110111 | 759 | | BFBFFBBLRL | 1010011010 | 666 | | FBBFBBFRLL | 0110110100 | 436 | | FFBBBFBRLR | 0011101101 | 237 | | FBBFFFBRLL | 0110001100 | 396 | | FBFBBFBLRR | 0101101011 | 363 | | FFFBBBFLLL | 0001110000 | 112 | | FBFFBBFLRL | 0100110010 | 306 | | BFFFBFFLLR | 1000100001 | 545 | | FBFBBBBLRL | 0101111010 | 378 | | FBBFBFFRLR | 0110100101 | 421 | | FBFBBBBRLL | 0101111100 | 380 | | FFBFFBFLLR | 0010010001 | 145 | | BFFBFFBRLL | 1001001100 | 588 | | FBBBBFFLRL | 0111100010 | 482 | | BFFBFBBRLR | 1001011101 | 605 | | FFBFFFFLLR | 0010000001 | 129 | | BBFFBBFRLR | 1100110101 | 821 | | BFBFBBBRRL | 1010111110 | 702 | | BFFBBBBLRR | 1001111011 | 635 | | FFBBBBBRLL | 0011111100 | 252 | | FFFBBFFRLR | 0001100101 | 101 | | BBFFFFBLRL | 1100001010 | 778 | | BFBBFBFRRL | 1011010110 | 726 | | BBFFBBFRRL | 1100110110 | 822 | | FBFFFFBRLR | 0100001101 | 269 | | FBBFBBBRLR | 0110111101 | 445 | | BBFBFFFLLL | 1101000000 | 832 | | BFBFBBBRLL | 1010111100 | 700 | | BFFFFFFLRL | 1000000010 | 514 | | FBFBFBFRRR | 0101010111 | 343 | | BBFFFFFLRR | 1100000011 | 771 | | FFFBBFBLLR | 0001101001 | 105 | | FBFFBFBRLL | 0100101100 | 300 | | BFBBFBFLLR | 1011010001 | 721 | | FFBFBFFLRL | 0010100010 | 162 | | BFBFFBFRRR | 1010010111 | 663 | | FBBBBBFRLR | 0111110101 | 501 | | FBBFFBBLLR | 0110011001 | 409 | | FBFBBFFLRL | 0101100010 | 354 | | FBFFFBFRRL | 0100010110 | 278 | | BFFBFFFLRR | 1001000011 | 579 | | FFBFBFBLRL | 0010101010 | 170 | | FBFFBBBLRR | 0100111011 | 315 | | BFBBFFFLLR | 1011000001 | 705 | | FBFBBBBRLR | 0101111101 | 381 | | FBFFFBBRRL | 0100011110 | 286 | | FFFBBBFRRL | 0001110110 | 118 | | FBBBBBBLRR | 0111111011 | 507 | | FBBBFBBRRL | 0111011110 | 478 | | FBBBFBBRRR | 0111011111 | 479 | | BFFFBFBLRL | 1000101010 | 554 | | FBBBFFBRLR | 0111001101 | 461 | | BFBFFFBRRR | 1010001111 | 655 | | BFBBFBBLRL | 1011011010 | 730 | | BBFFBBFLRR | 1100110011 | 819 | | FFFBFBFLLR | 0001010001 | 81 | | FFBBBBFRRL | 0011110110 | 246 | | BFBFBFFRRR | 1010100111 | 679 | | FBFBBBBRRR | 0101111111 | 383 | | BFFFBFFRLL | 1000100100 | 548 | | BFBBFBBLLL | 1011011000 | 728 | | FBFBFBBRLR | 0101011101 | 349 | | BFFFBFBRLL | 1000101100 | 556 | | FFBBFFBRLL | 0011001100 | 204 | | FBFFBBFRLL | 0100110100 | 308 | | FBFBFFFRRR | 0101000111 | 327 | | FFBFBBBLLL | 0010111000 | 184 | | BBFFBBBLRR | 1100111011 | 827 | | FBBFFBBRLL | 0110011100 | 412 | | BFFFFFBRRL | 1000001110 | 526 | | FBBFFBFLLL | 0110010000 | 400 | | FBFBFBFLRL | 0101010010 | 338 | | BFFFFBBLRL | 1000011010 | 538 | | BFFBBFBRLL | 1001101100 | 620 | | BFBFFBFRRL | 1010010110 | 662 | | BFBFFFFLRR | 1010000011 | 643 | | FBFFFBFRRR | 0100010111 | 279 | | BBFFBBBLLR | 1100111001 | 825 | | FBFBFBFRRL | 0101010110 | 342 | | BFFBFBBLRL | 1001011010 | 602 | | FFFBFBBRLR | 0001011101 | 93 | | BBFFFBFLRL | 1100010010 | 786 | | BFBFFBFLLR | 1010010001 | 657 | | BBFFBFBRRL | 1100101110 | 814 | | FBBFFFBRRL | 0110001110 | 398 | | FFBFFFFLLL | 0010000000 | 128 | | BFBFBFFLLL | 1010100000 | 672 | | BFBFFFBLRR | 1010001011 | 651 | | FBBBFFBLRR | 0111001011 | 459 | | FFBBFFBLLR | 0011001001 | 201 | | BBFFFBBLRR | 1100011011 | 795 | | BBFBFFBLRL | 1101001010 | 842 | | BFFFBBFRLL | 1000110100 | 564 | | FBFFBFFRRR | 0100100111 | 295 | | FFBBBFBLRL | 0011101010 | 234 | | FFBFBFFRRR | 0010100111 | 167 | | BFFFFFFLLR | 1000000001 | 513 | | BFFFFBBRRL | 1000011110 | 542 | | FBFBBBFLRL | 0101110010 | 370 | | BFFFFBFLRL | 1000010010 | 530 | | FBFBBBFRLL | 0101110100 | 372 | | FFBFBFBRRR | 0010101111 | 175 | | FFFBFBBRRR | 0001011111 | 95 | | FBBBFFBRLL | 0111001100 | 460 | | FBFFBBFRLR | 0100110101 | 309 | | FFBFBBFRLR | 0010110101 | 181 | | FBBFFFBLLL | 0110001000 | 392 | | BBFFBBBRLR | 1100111101 | 829 | | FBBFFFFLRR | 0110000011 | 387 | | BBFFFBFRLL | 1100010100 | 788 | | FBBBBBBRLR | 0111111101 | 509 | | BFBBFFBLLR | 1011001001 | 713 | | BFBFBBBLRR | 1010111011 | 699 | | FFBBFBBRLL | 0011011100 | 220 | | FFFBFBBLLL | 0001011000 | 88 | | BFBBBFFRLR | 1011100101 | 741 | | FBFBFFFLRL | 0101000010 | 322 | | BFFBBFBLLR | 1001101001 | 617 | | BFBBFFFLRL | 1011000010 | 706 | | BFBBFFBLRR | 1011001011 | 715 | | FBFFFFBLRL | 0100001010 | 266 | | FBFBFBFLRR | 0101010011 | 339 | | FBBFFFFLRL | 0110000010 | 386 | | FFBFBBBLLR | 0010111001 | 185 | | FBFBFBBRRR | 0101011111 | 351 | | BFBBBBFLRL | 1011110010 | 754 | | BFBFBFBLRL | 1010101010 | 682 | | BFFBFBFLRL | 1001010010 | 594 | | BBFFFFBRRL | 1100001110 | 782 | | FFBFFFBLRR | 0010001011 | 139 | | BBFBFFBRRL | 1101001110 | 846 | | FFBBBFFLRR | 0011100011 | 227 | | BFFBBBBLRL | 1001111010 | 634 | | FBBBFFFLLR | 0111000001 | 449 | | FFFBBBFRLR | 0001110101 | 117 | | BBFBFBFLLR | 1101010001 | 849 | | BFBFBFFRRL | 1010100110 | 678 | | FBFBFFBRRR | 0101001111 | 335 | | FBFFBFFLRL | 0100100010 | 290 | | FFBBFFFLLL | 0011000000 | 192 | | BFFBBFBLLL | 1001101000 | 616 | | BBFFFFFLRL | 1100000010 | 770 | | FFBFBBBRRR | 0010111111 | 191 | | FFBFFBFLLL | 0010010000 | 144 | | FFBBBBFLRL | 0011110010 | 242 | | FFBBFFFRLR | 0011000101 | 197 | | BFBFFFBLLL | 1010001000 | 648 | | FBFFFFFRRR | 0100000111 | 263 | | FBBFFBBLRL | 0110011010 | 410 | | BFFFFBFRRL | 1000010110 | 534 | | BFFFFBFRLR | 1000010101 | 533 | | FFBFBFFRLL | 0010100100 | 164 | | BBFFBFFRRL | 1100100110 | 806 | | FBFFBBBRRR | 0100111111 | 319 | | FFBBBFFRRR | 0011100111 | 231 | | BFFBBBBRLR | 1001111101 | 637 | | FFBBFBBRLR | 0011011101 | 221 | | BFBBFBBRLR | 1011011101 | 733 | | FBFFBBBLLR | 0100111001 | 313 | | BFFFFBBLRR | 1000011011 | 539 | | FBBFBFBRRL | 0110101110 | 430 | | FBBFBFBRLR | 0110101101 | 429 | | FBBBBFFLRR | 0111100011 | 483 | | FBFFFFBLRR | 0100001011 | 267 | | FFBFBBFLLL | 0010110000 | 176 | | FBBFFBBLRR | 0110011011 | 411 | | FBFBFFFLLL | 0101000000 | 320 | | FBFFFBBLRR | 0100011011 | 283 | | FBBFBFFLLL | 0110100000 | 416 | | FBBBFBFRLL | 0111010100 | 468 | | FFBBFBBLRL | 0011011010 | 218 | | BFBFFBBRRR | 1010011111 | 671 | | BFFBBBBLLR | 1001111001 | 633 | | FBFFBFBLRR | 0100101011 | 299 | | FBBBBBBLLR | 0111111001 | 505 | | FBBFBBFLRL | 0110110010 | 434 | | BFBFBFBRLR | 1010101101 | 685 | | FBBFFFFRLR | 0110000101 | 389 | | BFFBFBBLLL | 1001011000 | 600 | | BFBFFFBRLL | 1010001100 | 652 | | BFFBBBBRLL | 1001111100 | 636 | | BFBFBBFLLR | 1010110001 | 689 | | FBFFBFFRLR | 0100100101 | 293 | | BFFBBFBRRR | 1001101111 | 623 | | FBBBFFFLLL | 0111000000 | 448 | | BFFBFBFRRL | 1001010110 | 598 | | FBFFBFFRLL | 0100100100 | 292 | | FFBBBFFLRL | 0011100010 | 226 | | FBFFBFFRRL | 0100100110 | 294 | | BBFFBFBRLR | 1100101101 | 813 | | FBBFBBBRLL | 0110111100 | 444 | | FBFBBFBRRL | 0101101110 | 366 | | FBFBBFFLLR | 0101100001 | 353 | | BFFBFFBLRR | 1001001011 | 587 | | FFBBFBFRRR | 0011010111 | 215 | | BFFBBBFRRL | 1001110110 | 630 | | FFBFBFBRRL | 0010101110 | 174 | | BBFFBFFLLR | 1100100001 | 801 | | FBBBBFFLLR | 0111100001 | 481 | | FBBFBFBLLL | 0110101000 | 424 | | BFBBBBFRLL | 1011110100 | 756 | | FFBBBBFLLL | 0011110000 | 240 | | FBBBFBBRLL | 0111011100 | 476 | | BFFBFBFLLR | 1001010001 | 593 | | FBFFFFFLLR | 0100000001 | 257 | | FBBFBFBRLL | 0110101100 | 428 | | FBFBBBFLLR | 0101110001 | 369 | | FBFBFBBLLL | 0101011000 | 344 | | FFFBBBBLLR | 0001111001 | 121 | | FFBBBBFRRR | 0011110111 | 247 | | FBBFFFBLRL | 0110001010 | 394 | | BBFFBFBLLR | 1100101001 | 809 | | BFBBFFFRLR | 1011000101 | 709 | | BBFBFFBRLL | 1101001100 | 844 | | BFBBBFBLRL | 1011101010 | 746 | | BFBBBFFRRL | 1011100110 | 742 | | FBFBFFBRLL | 0101001100 | 332 | | BBFBFFFLRL | 1101000010 | 834 | | BFBFBFBRRL | 1010101110 | 686 | | BFFFBFFLLL | 1000100000 | 544 | | FBFFFFFLLL | 0100000000 | 256 | | FBFBBBBRRL | 0101111110 | 382 | | FBFFBFBRRL | 0100101110 | 302 | | BFBFBFFRLR | 1010100101 | 677 | | FBFBFFFRRL | 0101000110 | 326 | | BFBBBBFLLR | 1011110001 | 753 | | FBBBBBFLRL | 0111110010 | 498 | | FBBBFFBLLL | 0111001000 | 456 | | FBBBFFFRRL | 0111000110 | 454 | | BBFBFBFRRR | 1101010111 | 855 | | FFBFFBBRRL | 0010011110 | 158 | | FFBFBBFRRR | 0010110111 | 183 | | BBFFFBFLLL | 1100010000 | 784 | | BBFFBFBRRR | 1100101111 | 815 | | BFFBBBFLRR | 1001110011 | 627 | | FBFFFFBRLL | 0100001100 | 268 | | FBFFBBBLLL | 0100111000 | 312 | | FFFBBBFLLR | 0001110001 | 113 | | BBFBFFBLLL | 1101001000 | 840 | | FBFBFBFRLR | 0101010101 | 341 | | BFBFBFBLLL | 1010101000 | 680 | | BBFFFFBRRR | 1100001111 | 783 | | FBBBBFBRRR | 0111101111 | 495 | | FBFFFBBRLR | 0100011101 | 285 | | FFFBBFFLLL | 0001100000 | 96 | | FBBFFBFLRR | 0110010011 | 403 | | BFFFBBBRLL | 1000111100 | 572 | | FBBFBFBLRL | 0110101010 | 426 | | FFBFFFFLRL | 0010000010 | 130 | | FFBFFFBLLR | 0010001001 | 137 | | FBBFBBBRRL | 0110111110 | 446 | | BFBBFBFRLL | 1011010100 | 724 | | FFBBBBBLRR | 0011111011 | 251 | | BFFBBFFLRR | 1001100011 | 611 | | FFBFFFBRRR | 0010001111 | 143 | | BFFFFFFRLL | 1000000100 | 516 | | BFFBFFBRRR | 1001001111 | 591 | | FFFBBBFLRL | 0001110010 | 114 | | FFBFBFBRLL | 0010101100 | 172 | | BBFFBBBRRL | 1100111110 | 830 | | BBFBFFFRRR | 1101000111 | 839 | | BBFBFBFLRL | 1101010010 | 850 | | FBBFBBBLRR | 0110111011 | 443 | | FFBBFBFRLR | 0011010101 | 213 | | BFBFBFBLRR | 1010101011 | 683 | | FFFBBBBRRL | 0001111110 | 126 | | BFFFFBBLLL | 1000011000 | 536 | | FFFBBBFLRR | 0001110011 | 115 | | FFBBFFBRRL | 0011001110 | 206 | | FBFFBFFLRR | 0100100011 | 291 | | FBFFBBFRRL | 0100110110 | 310 | | BFBBFBBRRL | 1011011110 | 734 | | BBFFBFBRLL | 1100101100 | 812 | | FBBFFFFRRL | 0110000110 | 390 | | FFBBFFBRLR | 0011001101 | 205 | | BBFFFFBRLR | 1100001101 | 781 | | BBFBFBFRLL | 1101010100 | 852 | | FBBFBBBRRR | 0110111111 | 447 | | BFFBBBBRRL | 1001111110 | 638 | | BFFBBBBLLL | 1001111000 | 632 | | BFBBFBBRLL | 1011011100 | 732 | | BFFBBBFLRL | 1001110010 | 626 | | FBFFBFBLRL | 0100101010 | 298 | | BFFBBFFLLL | 1001100000 | 608 | | BFBFBBFRLL | 1010110100 | 692 | | FBBFFFBRRR | 0110001111 | 399 | | FFBFFBFLRL | 0010010010 | 146 | | FFBFFFFRLR | 0010000101 | 133 | | BFBBFBBLLR | 1011011001 | 729 | | BFBFBFBRRR | 1010101111 | 687 | | FBBFFFFLLR | 0110000001 | 385 | | FFBBFBBRRL | 0011011110 | 222 | | BFFBFFFRRL | 1001000110 | 582 | | FBFBBBFRRL | 0101110110 | 374 | | FBBFFFFLLL | 0110000000 | 384 | | BFFFFFFRRL | 1000000110 | 518 | | BFBFFFBLLR | 1010001001 | 649 | | BFBBFFBRRR | 1011001111 | 719 | | BFFBFFFLLR | 1001000001 | 577 | | FFBBBFBLLL | 0011101000 | 232 | | BFFBBBFLLL | 1001110000 | 624 | | FBFFFBBRRR | 0100011111 | 287 | | FBBBBBFLLL | 0111110000 | 496 | | BFBFFFFRRL | 1010000110 | 646 | | FFBBFFBRRR | 0011001111 | 207 | | BFBFBFFLLR | 1010100001 | 673 | | FFFBFBBLLR | 0001011001 | 89 | | BFBBFFBLRL | 1011001010 | 714 | | FBFBBFFRRR | 0101100111 | 359 | | BFBBBFFLLR | 1011100001 | 737 | | FBBFFFBLLR | 0110001001 | 393 | | BFFFBBFLRR | 1000110011 | 563 | | BFFFFBBRLR | 1000011101 | 541 | | FBFFFBBLRL | 0100011010 | 282 | | BFBBBFBLRR | 1011101011 | 747 | | FBFFBFBLLR | 0100101001 | 297 | | BFBBFFFRLL | 1011000100 | 708 | | FFBBFBFLLL | 0011010000 | 208 | | FFBFFFBRRL | 0010001110 | 142 | | FFBBFBBLRR | 0011011011 | 219 | | FFBFBBFLRL | 0010110010 | 178 | | FFFBBFFRRR | 0001100111 | 103 | | BFBFFBFLRR | 1010010011 | 659 | | BBFFFFBLRR | 1100001011 | 779 | | FFBFBBFLRR | 0010110011 | 179 | | FFFBBFFRLL | 0001100100 | 100 | | FBBBFBBRLR | 0111011101 | 477 | | BBFFFBBRRL | 1100011110 | 798 | | FFFBFBFRRL | 0001010110 | 86 | | FBBBBBBRRR | 0111111111 | 511 | | FFBBBFBLRR | 0011101011 | 235 | | FBBFBFFLRL | 0110100010 | 418 | | FBBBFFFRRR | 0111000111 | 455 | | FBBFFBBRRR | 0110011111 | 415 | | BFFFFBBRRR | 1000011111 | 543 | | FBBFFBFRLR | 0110010101 | 405 | | BFFBFBFRLR | 1001010101 | 597 | | BFBBBFFLRR | 1011100011 | 739 | | FFBFFBFLRR | 0010010011 | 147 | | BFBFFFBLRL | 1010001010 | 650 | | BFFBFBFRLL | 1001010100 | 596 | | FBBBBFBLLL | 0111101000 | 488 | | BBFBFFFRRL | 1101000110 | 838 | | FFBBFFBLLL | 0011001000 | 200 | | FFBFFBBRLR | 0010011101 | 157 | | FFBBBFBRRL | 0011101110 | 238 | | FFBBFFFLRR | 0011000011 | 195 | | BBFFBFFLRR | 1100100011 | 803 | | BFFFBFFRRL | 1000100110 | 550 | | FBFBBFBRRR | 0101101111 | 367 | | FBFFFBFLRL | 0100010010 | 274 | | BBFBFFBLRR | 1101001011 | 843 | | BFFBFBFRRR | 1001010111 | 599 | | BFFFFFFLLL | 1000000000 | 512 | | FBBBFFBLRL | 0111001010 | 458 | | FBBBFBFRRL | 0111010110 | 470 | | BFFBFFBRLR | 1001001101 | 589 | | BFBBBFFRRR | 1011100111 | 743 | | BFFBFFFRRR | 1001000111 | 583 | | FFFBBBBLLL | 0001111000 | 120 | | FFBBBFBRRR | 0011101111 | 239 | | FFBBFBFLLR | 0011010001 | 209 | | BFBBBFBLLL | 1011101000 | 744 | | FBBFBBBLLL | 0110111000 | 440 | | BBFBFBFLLL | 1101010000 | 848 | | BFBBBFBRRR | 1011101111 | 751 | | BFBFBBFRLR | 1010110101 | 693 | | FBFFBFBRLR | 0100101101 | 301 | | BFFBFFFRLL | 1001000100 | 580 | | BFBBFFBRRL | 1011001110 | 718 | | FFBBFBFLRR | 0011010011 | 211 | | FFBBBFBLLR | 0011101001 | 233 | | BBFBFFFRLR | 1101000101 | 837 | | FFBBFBBLLR | 0011011001 | 217 | | FBFFFBBLLR | 0100011001 | 281 | | FBBFBFBLLR | 0110101001 | 425 | | FFBBFBFRLL | 0011010100 | 212 | | BFFFFFBLLR | 1000001001 | 521 | | BFBFBFBLLR | 1010101001 | 681 | | BFBBFFBLLL | 1011001000 | 712 | | FBBBBFBLRR | 0111101011 | 491 | | BFBBBBFLLL | 1011110000 | 752 | | BFFBBFFLLR | 1001100001 | 609 | | FBFBFFFRLL | 0101000100 | 324 | | FBBBBBFLLR | 0111110001 | 497 | | BBFBFFBLLR | 1101001001 | 841 | | BFBFBFFLRR | 1010100011 | 675 | | FBBBBFFRLR | 0111100101 | 485 | | FFFBFBBRRL | 0001011110 | 94 | | FFFBBFBLLL | 0001101000 | 104 | | BFBBBBFLRR | 1011110011 | 755 | | BFBBBBBLRR | 1011111011 | 763 | | FBBFBBFLLL | 0110110000 | 432 | | BFFFBFBRLR | 1000101101 | 557 | | FBBFBFFLRR | 0110100011 | 419 | | FBFFFBBRLL | 0100011100 | 284 | | BFFFFFBRRR | 1000001111 | 527 | | BFFBBBFRLL | 1001110100 | 628 | | FFBFBFBLLL | 0010101000 | 168 | | BFBBFBFLRL | 1011010010 | 722 | | FBBBBFFLLL | 0111100000 | 480 | | FBBFBFFRRR | 0110100111 | 423 | | FFFBBBBRLR | 0001111101 | 125 | | BFBFBFFLRL | 1010100010 | 674 | | FFBBBFFRRL | 0011100110 | 230 | | BBFFBFFLRL | 1100100010 | 802 | | BFFFBBBRRL | 1000111110 | 574 | | FBFFFFFLRL | 0100000010 | 258 | | BBFFBFFRLL | 1100100100 | 804 | | BFFFBBFRLR | 1000110101 | 565 | | BFBFFBBRLR | 1010011101 | 669 | | FBFBFBBLLR | 0101011001 | 345 | | FBBFFBBRRL | 0110011110 | 414 | | BBFFBFFRLR | 1100100101 | 805 | | FFBFFBBRRR | 0010011111 | 159 | | BBFFFBBRLL | 1100011100 | 796 | | BFBFBFBRLL | 1010101100 | 684 | | FBFBBBBLLR | 0101111001 | 377 | | FBFBFBFLLL | 0101010000 | 336 | | FFBFBBBLRL | 0010111010 | 186 | | BFFBFBBLRR | 1001011011 | 603 | | BBFFFFFRRR | 1100000111 | 775 | | FFFBBFFLRL | 0001100010 | 98 | | BBFFFBFLRR | 1100010011 | 787 | | FFBFFBFRLL | 0010010100 | 148 | | FBFFBBFLLR | 0100110001 | 305 | | FBFFFFBLLR | 0100001001 | 265 | | FFBBBBFRLL | 0011110100 | 244 | | FFFBBFFLRR | 0001100011 | 99 | | BBFFFFFLLL | 1100000000 | 768 | | BBFBFBFLRR | 1101010011 | 851 | | FFBBBBFRLR | 0011110101 | 245 | | BBFFFBBLLL | 1100011000 | 792 | | FFBFBBFRLL | 0010110100 | 180 | | BFFFFFFLRR | 1000000011 | 515 | | FFBFFFBRLL | 0010001100 | 140 | | FBFFFFFRRL | 0100000110 | 262 | | BBFFFBBLLR | 1100011001 | 793 | | FFFBBFBRLR | 0001101101 | 109 | | BFFBBFFRRL | 1001100110 | 614 | | FBBBBFFRLL | 0111100100 | 484 | | BFBBFFBRLR | 1011001101 | 717 | | BFFFBFBLRR | 1000101011 | 555 | | BFBFFBBLLR | 1010011001 | 665 | | BFFBFBBRRR | 1001011111 | 607 | | BBFFFBFRRR | 1100010111 | 791 | | FFBBBFFRLL | 0011100100 | 228 | | BFBBFBBRRR | 1011011111 | 735 | | FFBBBBBRLR | 0011111101 | 253 | | BFFFBBBRLR | 1000111101 | 573 | | BFFFBBFLLL | 1000110000 | 560 | | FFBFFBBLRL | 0010011010 | 154 | | FFBBFBFLRL | 0011010010 | 210 | | FBFBFBBLRL | 0101011010 | 346 | | BFFBBFBRLR | 1001101101 | 621 | | FBBBBFBRRL | 0111101110 | 494 | | FBFBBBFRRR | 0101110111 | 375 | | BBFBFFBRRR | 1101001111 | 847 | | BBFBFBFRRL | 1101010110 | 854 | | FBBBBFBRLL | 0111101100 | 492 | | FBFFFBBLLL | 0100011000 | 280 | | BFBFBBFLLL | 1010110000 | 688 | | FBBBBFFRRR | 0111100111 | 487 | | FBBFBBFLRR | 0110110011 | 435 | | FFBFFFFRRL | 0010000110 | 134 | | FFFBFBFRLL | 0001010100 | 84 | | FBFBBFBRLR | 0101101101 | 365 | | FFBBBFFLLR | 0011100001 | 225 | | FBFFBBFLLL | 0100110000 | 304 | | FFFBBBBRRR | 0001111111 | 127 | | BFFFFBFRRR | 1000010111 | 535 | | BFBFFFFLRL | 1010000010 | 642 | | FBFBFFBLLL | 0101001000 | 328 | | BFFBBBBRRR | 1001111111 | 639 | | BFFBFBFLLL | 1001010000 | 592 | | FBFBBFFLLL | 0101100000 | 352 | | FBBFBBFLLR | 0110110001 | 433 | | FBBFBFFLLR | 0110100001 | 417 | | BBFFBFFRRR | 1100100111 | 807 | | FBBBBBFLRR | 0111110011 | 499 | | FFBFBBBRLL | 0010111100 | 188 | | FBBBBBBLLL | 0111111000 | 504 | | BFBBFBBLRR | 1011011011 | 731 | | FBFBFFFRLR | 0101000101 | 325 | | FFBBBBBRRL | 0011111110 | 254 | | FBFFFFBRRR | 0100001111 | 271 | | FBBFFBFRRR | 0110010111 | 407 | | FFFBBBBRLL | 0001111100 | 124 | | FBBFFFFRRR | 0110000111 | 391 | | BFFBFFBLRL | 1001001010 | 586 | | FFFBBBBLRR | 0001111011 | 123 | | BFBBBBFRRL | 1011110110 | 758 | | BFFFFBBLLR | 1000011001 | 537 | | BFFFFFFRLR | 1000000101 | 517 | | BFFBBFFRLR | 1001100101 | 613 | | BFFBBFBLRL | 1001101010 | 618 | | BBFFFFBLLL | 1100001000 | 776 | | BFFFFBBRLL | 1000011100 | 540 | | FBBFFBFRLL | 0110010100 | 404 | | FFFBBFBLRR | 0001101011 | 107 | | BBFBFFBRLR | 1101001101 | 845 | | BFFFBBBLRL | 1000111010 | 570 | | BFBBFFFRRL | 1011000110 | 710 | | BFBFFBFRLL | 1010010100 | 660 | | BFFBFBBRRL | 1001011110 | 606 | | FBFFBFFLLL | 0100100000 | 288 | | BFBBFFBRLL | 1011001100 | 716 | | BFBBBFFLRL | 1011100010 | 738 | | FFFBFBFRLR | 0001010101 | 85 | | BFFBFFBLLR | 1001001001 | 585 | | BBFFFFBLLR | 1100001001 | 777 | | FFBBFBBRRR | 0011011111 | 223 | | FBBFBBFRRR | 0110110111 | 439 | | FFBBBFFLLL | 0011100000 | 224 | | BFBBFFFLRR | 1011000011 | 707 | | FFBFFBFRRR | 0010010111 | 151 | | FBBFBBFRLR | 0110110101 | 437 | | FBFBFFBLRL | 0101001010 | 330 | | BBFFBFBLRL | 1100101010 | 810 | | BFFFFBFLRR | 1000010011 | 531 | | FBBBFFFRLL | 0111000100 | 452 | | FFFBBFFRRL | 0001100110 | 102 | | FFBFBFFRLR | 0010100101 | 165 | | FFBBBBBLLR | 0011111001 | 249 | | BFFBBFBRRL | 1001101110 | 622 | | BFFBFBFLRR | 1001010011 | 595 | | FFFBFBBRLL | 0001011100 | 92 | | FBFBBBBLRR | 0101111011 | 379 | | BFBFFFBRRL | 1010001110 | 654 | | FFBFBBBRRL | 0010111110 | 190 | | FFBFBFFLRR | 0010100011 | 163 | | FFBFBFBLRR | 0010101011 | 171 | | BFFBBFBLRR | 1001101011 | 619 | | FFFBFBFLRL | 0001010010 | 82 | | BFFBFBBRLL | 1001011100 | 604 | | BFFBFFFRLR | 1001000101 | 581 | | FFBBFFBLRR | 0011001011 | 203 | | FBBBBBFRLL | 0111110100 | 500 | | FBFBFBFRLL | 0101010100 | 340 | | BFBBBBBRRR | 1011111111 | 767 | | BBFBFFFLLR | 1101000001 | 833 | | FFBFFFFRLL | 0010000100 | 132 | | FFFBBFFLLR | 0001100001 | 97 | | BFBBFFFRRR | 1011000111 | 711 | | FBBBFBFLLR | 0111010001 | 465 | | BFBBBBBRRL | 1011111110 | 766 | | FBBBBBBLRL | 0111111010 | 506 | | FBBBFBFLLL | 0111010000 | 464 | | BFFBFFBLLL | 1001001000 | 584 | | BFFBFFBRRL | 1001001110 | 590 | | FBFFBFBRRR | 0100101111 | 303 | | FBFBFBBLRR | 0101011011 | 347 | | BFFFBFFRLR | 1000100101 | 549 | | FBFBFBBRRL | 0101011110 | 350 | | BFBBBBBLLL | 1011111000 | 760 | | FBFFBBFLRR | 0100110011 | 307 | | BBFFFBBRRR | 1100011111 | 799 | | FFFBFBBLRR | 0001011011 | 91 | | FBBFFBBLLL | 0110011000 | 408 | | BFFFFFBRLL | 1000001100 | 524 | | BBFBFBFRLR | 1101010101 | 853 | | BFFFBFFLRR | 1000100011 | 547 | | FBFBFFBLRR | 0101001011 | 331 | | BFBBBFBRLR | 1011101101 | 749 | | BBFFBFBLLL | 1100101000 | 808 | | FFBBBBFLLR | 0011110001 | 241 | | FBBBFBFRLR | 0111010101 | 469 | | FBBBBBFRRL | 0111110110 | 502 | | FBBBFFBRRR | 0111001111 | 463 | | FFBBBBFLRR | 0011110011 | 243 | | BBFFBBBRRR | 1100111111 | 831 | | BFFFFBFLLR | 1000010001 | 529 | | FBFFBBFRRR | 0100110111 | 311 | | BBFFFFFRRL | 1100000110 | 774 | | BBFFBBBRLL | 1100111100 | 828 | | FBFFFFBRRL | 0100001110 | 270 | | FBFFBBBLRL | 0100111010 | 314 | | BFFFFFFRRR | 1000000111 | 519 | | BFFFBBBLLR | 1000111001 | 569 | | FBFBBFBLRL | 0101101010 | 362 | | BFBFBBBLRL | 1010111010 | 698 | | FFBBFBFRRL | 0011010110 | 214 | | FBFFBBBRLR | 0100111101 | 317 | | BFFBBBFRLR | 1001110101 | 629 | | FFBFBBBLRR | 0010111011 | 187 | | BFFBFFFLLL | 1001000000 | 576 | | FBBBFFBLLR | 0111001001 | 457 | | BFBFBBFRRL | 1010110110 | 694 | | FFBFFBBLRR | 0010011011 | 155 | | BBFFFBBRLR | 1100011101 | 797 | | FFBFFBBRLL | 0010011100 | 156 | | FBFFFFFRLR | 0100000101 | 261 | | FBBBFBBLRL | 0111011010 | 474 | | BBFFFBFLLR | 1100010001 | 785 | | FBBFFFFRLL | 0110000100 | 388 | | BFFFBBFLRL | 1000110010 | 562 | | BFBBBBBRLR | 1011111101 | 765 | | BFFBFBBLLR | 1001011001 | 601 | | FFBBFFBLRL | 0011001010 | 202 | | BFBBBFBRLL | 1011101100 | 748 | | BFBBFBFRRR | 1011010111 | 727 | | FFBBFFFLRL | 0011000010 | 194 | | FFBFFFBLLL | 0010001000 | 136 | | FFBFFBBLLR | 0010011001 | 153 | | BBFFFBFRRL | 1100010110 | 790 | | BFFBBFFLRL | 1001100010 | 610 | | FBBFFBFLRL | 0110010010 | 402 | | BFFFBBBRRR | 1000111111 | 575 | | FFBBFFFRRL | 0011000110 | 198 | | FFBFBFFRRL | 0010100110 | 166 | | FBBBBFBLRL | 0111101010 | 490 | | BBFFBBFLLR | 1100110001 | 817 | | FBBBBFBRLR | 0111101101 | 493 | | BFBFFBFRLR | 1010010101 | 661 | | FFBFFBBLLL | 0010011000 | 152 | | FFBBBBBLLL | 0011111000 | 248 | | BFBFBBFRRR | 1010110111 | 695 | | BBFFFFFRLL | 1100000100 | 772 | | FBFFFBFRLR | 0100010101 | 277 | | BFBBBBFRLR | 1011110101 | 757 | | FBBFFFBRLR | 0110001101 | 397 | | BFFFFFBLRR | 1000001011 | 523 | | FBFFBBBRRL | 0100111110 | 318 | | FBBBFBFLRL | 0111010010 | 466 | | BFFFBFFLRL | 1000100010 | 546 | | BFBFBBFLRR | 1010110011 | 691 | | BFBBFBFRLR | 1011010101 | 725 | | FFBFFBFRLR | 0010010101 | 149 | | BBFFFBBLRL | 1100011010 | 794 | | BFBFFBFLLL | 1010010000 | 656 | | BBFFBBFRLL | 1100110100 | 820 | | FBBBBBBRRL | 0111111110 | 510 | | FFBBFFFLLR | 0011000001 | 193 | | FFFBBBBLRL | 0001111010 | 122 | | BBFFBFFLLL | 1100100000 | 800 | | FBBBFFFLRR | 0111000011 | 451 | | FBFBFBFLLR | 0101010001 | 337 | | FFBFBFFLLL | 0010100000 | 160 | | FFBFFFBLRL | 0010001010 | 138 | | BFBFFBBLLL | 1010011000 | 664 | | FBFBFFFLRR | 0101000011 | 323 | | BBFFBBFLRL | 1100110010 | 818 | | BFFFBFFRRR | 1000100111 | 551 | | FBFFBBBRLL | 0100111100 | 316 | | FFFBBBFRLL | 0001110100 | 116 | | FBFFFBFLLL | 0100010000 | 272 | | BBFFFBFRLR | 1100010101 | 789 | | BBFFBBFLLL | 1100110000 | 816 | | BBFBFFFRLL | 1101000100 | 836 | | BBFFBBBLLL | 1100111000 | 824 | | FBFBBFBLLL | 0101101000 | 360 | | FBBFBBBLRL | 0110111010 | 442 | | FBFFFFFLRR | 0100000011 | 259 | | FBFBBFBRLL | 0101101100 | 364 | | FFFBBFBRLL | 0001101100 | 108 | | FBBBFBFLRR | 0111010011 | 467 | | FBFBFFFLLR | 0101000001 | 321 | | FFBFFFFRRR | 0010000111 | 135 | | BFFBBFFRLL | 1001100100 | 612 | | BBFFFFBRLL | 1100001100 | 780 | | BFBBBFBLLR | 1011101001 | 745 | | BFBBFBFLLL | 1011010000 | 720 | | FBBBBBFRRR | 0111110111 | 503 | | FFBFBBBRLR | 0010111101 | 189 | | BFFFFBFLLL | 1000010000 | 528 | | BFFFFFBRLR | 1000001101 | 525 | | BFBFFFFLLL | 1010000000 | 640 | | BFBFFBBRRL | 1010011110 | 670 | | FFBFFBFRRL | 0010010110 | 150 | | FBBBFBBLRR | 0111011011 | 475 | | BFBFFBFLRL | 1010010010 | 658 | | FBBBBBBRLL | 0111111100 | 508 | | FFFBBFBLRL | 0001101010 | 106 | | FFBFBBFLLR | 0010110001 | 177 | | BFBFBBBLLR | 1010111001 | 697 | | FBFBBFFRLR | 0101100101 | 357 | | FBFBFFBLLR | 0101001001 | 329 | | BBFFBBBLRL | 1100111010 | 826 | | BFBFFBBLRR | 1010011011 | 667 | | FFBBFFFRRR | 0011000111 | 199 | | FBFBBBFRLR | 0101110101 | 373 | | BFBBFBFLRR | 1011010011 | 723 | | FBBFBFFRRL | 0110100110 | 422 | | FBFBBFFLRR | 0101100011 | 355 | | FBBFBFBRRR | 0110101111 | 431 | | FBFBBBFLRR | 0101110011 | 371 | | BFBBBBBLLR | 1011111001 | 761 | | FBFFFBFLLR | 0100010001 | 273 | | FBFBBFBLLR | 0101101001 | 361 | | FFBFFFFLRR | 0010000011 | 131 | | BFBFBBBRLR | 1010111101 | 701 | | FBFFFFFRLL | 0100000100 | 260 | | FFBBBBBLRL | 0011111010 | 250 | | BFBBBFFLLL | 1011100000 | 736 | | BBFFFFFLLR | 1100000001 | 769 | | BFFFBBFRRR | 1000110111 | 567 | | FBFBFFBRRL | 0101001110 | 334 | | FFFBBFBRRR | 0001101111 | 111 | | FBBBFBBLLR | 0111011001 | 473 | | BFFFFBFRLL | 1000010100 | 532 | | BFBFBFFRLL | 1010100100 | 676 | | BFBFBBFLRL | 1010110010 | 690 | | FFBBBFFRLR | 0011100101 | 229 | | BFBFBBBLLL | 1010111000 | 696 | | BFFFBBBLRR | 1000111011 | 571 | | BFBBFFFLLL | 1011000000 | 704 | | FBFBFBBRLL | 0101011100 | 348 | | BFFFFFBLLL | 1000001000 | 520 | | BBFBFFFLRR | 1101000011 | 835 | | BFBFFBBRLL | 1010011100 | 668 | | FFBFBBFRRL | 0010110110 | 182 | | FBFBBBFLLL | 0101110000 | 368 | | FBFFFFBLLL | 0100001000 | 264 | | FBFFBFFLLR | 0100100001 | 289 | | FBBFBBFRRL | 0110110110 | 438 | | BBFFBBFRRR | 1100110111 | 823 | | BFFFBFBRRL | 1000101110 | 558 | | BFBFFFBRLR | 1010001101 | 653 | | FBBFFBFLLR | 0110010001 | 401 | | BFBFFFFRLL | 1010000100 | 644 | | BFBFBBBRRR | 1010111111 | 703 | | BFBFFFFRLR | 1010000101 | 645 | | FFBFBFBLLR | 0010101001 | 169 | | FBFFFBFLRR | 0100010011 | 275 | | FFBBBBBRRR | 0011111111 | 255 | | FBBFFFBLRR | 0110001011 | 395 | | FFBFFFBRLR | 0010001101 | 141 | | BFFFBFBRRR | 1000101111 | 559 | | FBBFBBBLLR | 0110111001 | 441 | | BFBBBBBLRL | 1011111010 | 762 | | FBBBFFFLRL | 0111000010 | 450 | | BFFBBFFRRR | 1001100111 | 615 | | BFBBBFFRLL | 1011100100 | 740 | | BFBFFFFLLR | 1010000001 | 641 | | BFFBFFFLRL | 1001000010 | 578 | | BFBFFFFRRR | 1010000111 | 647 | | BBFFFFFRLR | 1100000101 | 773 | | FBFFFBFRLL | 0100010100 | 276 | | FFFBBBFRRR | 0001110111 | 119 | | BFFFBFBLLR | 1000101001 | 553 | | FBBFBFFRLL | 0110100100 | 420 | | FBBBFBBLLL | 0111011000 | 472 | | BFBBBBBRLL | 1011111100 | 764 | | BFFBBBFRRR | 1001110111 | 631 | | FFFBFBFRRR | 0001010111 | 87 | | BFBBBFBRRL | 1011101110 | 750 | | FBFFBFBLLL | 0100101000 | 296 | | FBBBFFFRLR | 0111000101 | 453 | | FBFBBFFRRL | 0101100110 | 358 | | FBBFFBFRRL | 0110010110 | 406 | | FBBFBFBLRR | 0110101011 | 427 | | BFFFFFBLRL | 1000001010 | 522 | | FBBBFBFRRR | 0111010111 | 471 | | BFFFBBBLLL | 1000111000 | 568 | | FFBBBFBRLL | 0011101100 | 236 | | | | 0 | | | | 855 | #+TBLFM: @>$3=vmax(@1$3..@>>$3) AWESOME it worked :) Now for part 2. ** Part 2 *** Problem --- Part Two --- Ding! The "fasten seat belt" signs have turned on. Time to find your seat. It's a completely full flight, so your seat should be the only missing boarding pass in your list. However, there's a catch: some of the seats at the very front and back of the plane don't exist on this aircraft, so they'll be missing from your list as well. Your seat wasn't at the very front or back, though; the seats with IDs +1 and -1 from yours will be in your list. What is the ID of your seat? *** Solution Of /course/ we can't just see the one number that's missing; that'd be too easy, lol. I do need to slurp up the list from earlier though. Of course ... I don't think that's super easy, lol. Or rather, I don't know how to do it. Let's just do that here. #+begin_src emacs-lisp :noweb yes <> (defun notation-to-binary (notation) "Convert notation of seat to binary." (let ((result) (list (string-to-list notation))) (dolist (c list result) (push (cond ((eq c ?F) ?0) ((eq c ?B) ?1) ((eq c ?L) ?0) ((eq c ?R) ?1)) result)) (concat (reverse result)))) (defun list-of-ids (input) "Return a list of all seat IDs." (let ((result)) (dolist (line lines result) (let ((binary-string (notation-to-binary line))) (push (string-to-number binary-string 2) result))))) (defun day5-part2 (input) "Solve day 5, part 2." (let ((seats (list-of-ids input)) (result)) ;; fuck it, we're being really inefficient (dolist (s seats result) (if (not (seq-contains-p seats (+ 1 s))) (push s result))))) (aoc input nil (day5-part2 lines)) #+end_src #+RESULTS: | 855 | 551 | 0 | Since I know there are unused seats at the beginning and end of the plane ... I know that 855 is probably /not/ the answer. I'm going to try 551. BOO. Too low. **** Attempt 2 Let's try that less-shitty way of finding a seat. #+begin_src emacs-lisp :noweb yes <> (defun notation-to-binary (notation) "Convert notation of seat to binary." (let ((result) (list (string-to-list notation))) (dolist (c list result) (push (cond ((eq c ?F) ?0) ((eq c ?B) ?1) ((eq c ?L) ?0) ((eq c ?R) ?1)) result)) (concat (reverse result)))) (defun list-of-ids (input) "Return a list of all seat IDs." (let ((result)) (dolist (line lines result) (let ((binary-string (notation-to-binary line))) (push (string-to-number binary-string 2) result))))) (defun day5-part2 (input) "Solve day 5, part 2." (let* ((seats (list-of-ids input)) (sorted (seq-sort #'< seats)) (expected (number-sequence (first sorted) (car (last sorted)))) (result)) (dolist (e expected result) (if (not (seq-contains-p seats e)) (push e result))))) (aoc input nil (day5-part2 lines)) #+end_src #+RESULTS: | 552 | 80 | 79 | 78 | 77 | 76 | 75 | 74 | 73 | 72 | 71 | 70 | 69 | 68 | 67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | Well, there's a lot of garbage here but there's also 552 -- which I think is probably our answer. /Oh/ I must've had an off-by-one answer /because/ I only tested for the non-existence of /s+1/ earlier -- meaning once I got to the seat /before/ mine, it returned true. Ha. YEP that was it ! * Day 6 :PROPERTIES: :header-args: :session *day-6* :END: ** Input #+begin_src emacs-lisp (setq input "qtmdwspah sqwdamhpt phwdaqsmt stmdqwhap pqawdhtms bgsickuztovfwa yiozauvgfsbtkwc zygijavmtfkcuwobs fvsuwtiadzrncboklg dxgieku dihnxkgf mqybtd yqbtd btydq rgpbcfxtzoewy otbyrfgwxzpec yocrwtebzxgfp qcpngeodrszaky ocaqrngsyuz xwenu nwsxuye xapwvhsktlmr twpslarxhvkm vhlwmrapxkts pmkxraswvlth ksrxpvtmwahl xhcepbdsltvk khcdptsixbg spbjtdchxk cbkxspqtdrh kaishmtdl jcnprqigt pjqtekodlmwcaginxfzrushbv iuyzsfaxcvrotdmklgebpnjwqh dirxeqbswlonhzumgafvckptj zqpitfrjnmhvuxbcdlwkogase khncmsfdzlgwpvriotxujbaeq motb twm mvt nomt euwhdnlaxbtjiqz dquxjznhtlwebia atzdwxqiunhlebj jnwlzxdiuaheqbt jnktcwaovpbqzei qcrljzskbvo tangojspuvlwbryeicz eujvkaporgwdilbyfscztn pjrisxqwdoyze cvyzmjlqxsgpeirw xieqwcajzslryp xjpzerwqyamis rftxglbkpqnchvajs cnsvqgpurtjfeb m mcx wramgjy mv meacfoiqpbzy zmvqpaibegoyfc oiyzmaengcfbpq uiaqprbycmzfoe qjdnecvmsr sdmecpqn gt tg bndhmeupwszlqiycofkt fcrptkulhixjnazvmdg nrcytwdaozvbmhsjuk owarihdekqzslvnxmubyfpj suzlnmxvkwjyodhbrag fz zf zefpk fz fz zfnqcdhvjwxa hxfazjcwd xzhtajkfwcd weusntyxblcdqpvgfzoam oxiyslgabqvdhnwzm jneuovbpgfxlsmkwd kjbwonlspfdumcegthv omvfbgejaiwnkdulsp orfgdlbqjkvhumpewns mhb hb dhjxb boh af tzlbugdkq j qhgnav ngvahqp gvnqha hoer oufeq u gmy td naguhdzsmcxlye pglwjsvxzduc uosgxqzldct xugcszld qcxsgtlzoud uoxacitdkeh kypudjgbsefi bjywqhgcps uaybelqkjpiwc yblwqpjec jwvyrcpbqzt qjgywbocp cuvwxkmrnliodphaj rvuzcdxknphol hprvkucdonsxl qtgjunkhaovbw wkgvotljhbq blfvtr vrtfby mbtvjdfnr xbftpvrh svbrhptf rijakd kadnijer kqdwjifar jdrihkmaz ejnirkfda ysukmtloxgjhvnwp qjxlwnvpyzsgbutomd gxpdqomijnhkyws vyqgxmjpowhsnik mnxqhgykwiopjs fm u fc zd yplnbikosxj welcjifhgnzupo izfpwljnodctheg dtlhgznwepcojif hzwvgpcifnjleo wgpqvtcnjofhlezi azhipsvbx xwbip ixpb xbip bpxi yxhpltiuvzorefqnwm azwiylnohxmejqurftvp hvuzwfxmnqyeltpro kwxghtdyfreqmplvzuon n f a f xfoaj ofsqb eqfo canrzup znarcpu pzcnrua czaupnr puchnzra hwxtaqvsci rhxylbskwcjmoid svqexwhaic whxisc xfamongdyrhjpizqbtswl tsnermfbvidyqcwhlxuzg jz zj zj mohrs rom mro orm rnwbshdkxv vkrjwsdthnxb kjwrxhsvnb rnbhvxowas lbdahrf ralbfhd lhfadbr radhflb wztomybdgaqhu rmuohgyqbdz dgzqrumoayhb hgqdmyubjpeoz mgdquhzoyb xiy yix bixoy xyi xiy xvzqjwfkhctgeayu kdjmlrow vnlu ulnvg wluvn lvun btmcqewifuh gqvakfzrmyuicsjpdbo npfy yznfx ynf b b b b b zuhkqwfpm mqpzwkhf pnwfqchkzm kfumpqzhw qzwhkmpfu pcevtdhgylnmsxaqiuzkr pxanvcgiquethzksmylrd vdszgiqyautrpxhcnmlek bhru ubhr uhvopbr trbizhud omnpx yp cpf p fuhokrpewbyvlnjcdmqi pcijvmskndtwohxylqeurf cdvfhebukmjrqnolwpiy qpwhymlcfjrndoeuivk xwehzfud wupfdexz xbdh jxdhb hmkbuyl rtcefpsaui jlfsy oknuy kvpy hcgzs hegzs sapzhd vnhjbqk bkvqnhjd vhnkqjb jhnkqvb bnhjkvq myjnp wkyjamn kmyjna rupvd pvrud rpdvu kvnlmhgizwdbjsxf nmfdkzgjxlbvsiwh zmsphibqwglkejfxrvn ge eg g g ga eivbk vikeb bkiyve puvf fvup uvfp pvuf fvup rydhgfbmpktzvlewjusn wqgfnovcerskjad ekrfsjgvowndcxq muco ouse pxoihbg bogpxhi aik k k qa aq aq aq snezvhbkwa nvzuaksbh zbvalskhn xposdbmhnavgzk thvfcbznkulas jaxdfucymsghp hfxaqcwunsjgmkpyd glfdjpuzxacyhm sp ps cesof vsu s svu sv s t te t epnq oeyqn nqe qen qne taxpglnzkejswbo zekwtongjpbxas gasokxnzbejpwty wanzsfbgpxjeotk wzxaengjkbptfso imftvao vtmif pbjelcf prnhgwqem xopmzg zfoxg xzgo ozxg gmcybniqevotjda ytiebavgdqojcnm mr m f n mnhpxfircz cihmvrxzyf ygibvxud ykubiqxgvd xydibeuv buvqdyxi budxiyv zjpqlmftionbgu tzbfgjiqoumapn nzcjuftibompqg aztbmoiqnjfgup chpnjmvlw hlbrdvqemcnwp pnkvcmlwh lmcyfwpvhn ynlmcjvipawh kzhxeqfa feaxqzkh hzxkaeqf zfqhexka fqxahkze blwqdpy yqdaniplwbe jhxbrwdylngqs qwtdylukzvbm asobzdl jahzxpdy daksz zadufl ahunxksgp sakhpun nukathps uzhnsapk pmusknahz yzmogwp tbqcp bnpcr xhp dhyxojbvrqnml nkr rnc wngra kmdynhutpjlvxaroce pbwohkjtmyfnzg tjoikmhypnsq zduqkfivgjo oizvjfuqbd zvjuqrfigdo vudqiozjf oidvqyzuftj usmo sm sm ms njf f glft auh hwiavfug xevqipr gwxdmlsuakcyf iltoavmycurph luhcarivtomxy yihcratumoevxl louhcvmiytra miqzdtolhrcayuvwg xwtcmqso xdnimfbyr okimydfr uhgzfyjqat evjdtmcoxiklhpgwq qgnxbkftmhiy ixqrakuhngytm hfzpe uefphkb afmwhqpek fvpoygjinlhexds oly byoal yol koly oyl k k k k k ofhrz xhpruzq zrh hwgrbedykvsmzin ginxcsjevrwyqz egysvqncxzrij syvgzcnreqijx zcvxgsjrqenyi qyfvzirnjcgxes eyxfutwoqjbrvkgds xsfjoutrbeqwkvgyd vqwtjgdbrsfoyukxe vfurtykqgebjwosdx eypubrkojqvdsgtfwx odwmeztifrjxn nrgmwlxc vgkxwrlnm tz tz rtz daze ezyad ujqdozgh goujdmqkzh jghuqdzo gjozdqhu erdnakojyfzchvxg hfekdrnctgvzpyjaxom hwi wih hiw hiw krqdscaoiwhnyz rwjaknoxyidzsqhpc rnyqdawcoskifghz wahrqznyvdcskiuo swlakrxjmtpv inaylxhdjwkmsvur qbxavfrlewkcsjm ucxvtw ue u lu oztxeqjvgb tpdbjgoqe spyqunh uypnhqs fdw safw wfjh wfomxi lwfsdn daibtezjo qtxeaizjmdb aoejitbkzd etadizjb jkeynazqvobiflrushcwtgdmxp wnrjequcdxlkmtfobihsvy iksvuebxtjwmhfrdqyocln gkxq pkw kw swy ywsn jzqurhixawto gaojpfrzciq izoxrtqawj asoihjqzutr wijlermdyzhstf zjlrwfsdhmtiey elymwztijfrdhs qatxy tyq nja yha a gfsav kha uebolhvntdkfsxap fpnlskhdeuobva oahteupksbvdlnf oeulbvhdpfksna ansgphkrfdlovebu vpe vedp pev pev pev zacfpshmrequykt tuzarfpmknwc pzuimacvfktr cjeqourh eouqcljr rojueqc ykoi koyi koyi kiyo fvkhuntrmpz ckngmxirpuzvat rfuvksnozpath bntdrlyvkzupj rukwpvtzcn wczery eczwrby wrzcey xjndayl hnlyaxdj lndayxj ynjdlaxt j j j tj awhrfvjbzduistx gnyhcmteop ym y sy my zkai ajiz aiz aiz ikaz irgsokuwy lnxtcqsiwmf busyvhzidw qxhpynjewsfmkd hwpqenfkydm aedbfmx fwexa jgckhspy zpusakfeb izpev sdepzu znpwe pqjgehtxzr vqmlkjznbeiofahucdtsgw utmvhgqedbocfwkszjlain yfbqzaspnlgotrdjxuhvkemiwc idglcasthofkuemnbjwqzv uqhdebp chdbquepl qedzphbu hupdqbe qbedhpu ehnv t aksmbzu wvlhktdqpjmsirz fznykbsem ksgmz kzxsymc vnoetrhlgkcmqxdp nvdqtkolcrhxep pxcedrnhoiltqvk elrxnhitcpqdokv ymuxitzqsagrkofcvbj tauxskfigjymro cnfdjwbxkisp cpydkbjxwsifn cipnkbufswdjrx ybkxihfwejnscdp yueaplwitfdvkoxnbjcmrqgz jvlfmxoakzwiegpbdnrquct manwikovgbpuhrcfesjlzxtqd lptzwxfn fpnxtlz nxtflegzpj dkpuyaefsijvlrhgqxmnt bshiwokugpflvtmzeqxnyja in n xzou ng gn epqbvmi vqembi bvmeqizu mbeqiv cjapgriulbzeq ugiqdzcvpobjlrek zqleircpubjg cirjuqbzgepl nhpsreikdjzo hkjsnodipzer znoidphekjrs dezf edfz efdz rdfze nzitsqrfp qiznrfspt rfqizspnt nsqizrptf xntrkogqfapj nioagqtmrfkjyp is sgdi qsity pe ep ep ep uhvpiwdgsfr uwlpcqrezykovni aevu ae ea ae djzfhxmas msdxhz zexhdsymt dxzshktm dzemshxg msqiuvncoltxejg cqxfmsonlvute wmfblsrogvjinpc rplfngicojbkvwms cfbolhnjvrsimwgk gmisflrwnkcjbov vmwrcbosjngfuil kbxitoqvzajudfnsgmyc ikfwcxzgvtjedmsyouqnab aqknmufjiypcvxbgodstz eshyzxbqncuomfpwgk gzcxqpmhljeoyuikbfrn bzhxveutpfyaqmkcong evqyuicpfhl yquckvlpiejf anf szydm qt qt qt mfyovqgpnlbcxidauzh cqniopdhfgxlauvzbmy idxofbaylmcznuvqhpg qbcpihzogydlfvmnwuxa qgvcumyizpnabxdfhol btwjlohyfaq ydlwprkj rhisamcj csirha srcaih icshar mejydkgtnfovuzix enuvirjogdmkyxztf xefomztvkungysdijc jxdginfktapovyzueqhm fioktdsnemgjuzyxv hrztvexlkob lwekirhbxdzqtmo etxv arxtvue exvft fwdnqsomhtryxvcgzej eczwytuhfsgmdqnxoj ycdsqwznhftgjmkoxe tsjnexcafwmhygzbvqod xovcfts cfsopxvdt xoscfvt osfxtvc w rc t zs ik lzm zpl romqvb mvo uy y y y govwliuabszqp goiabwfusvzlpnq qpiwgbvaosulz apvguizblwsqo s m s s ozpiljymxhswnfuevt emvbwshnylzxpjti nveblmzchtwjiypsx nldfsb sfblndt sdblfn bnflds ndslbf ieg idew wonxsab wbsaoxn nobaxws wasbnox alscukjbf lsbjakfc jxcduqioabwpyhlzef ialdxwfzycqjhbepuo jfzypowishadclxbueq riydchjfnwqvtmbpsaloxe dsbwfintzelormhvxcaqpyj ejomaiyqsxcthfvpdlwbnr lrycvtunboifgxawqemhpjd xvtiafqrdwnoymclepbhj jsydqempfvntrhui miyefthpuqsrvnj zsvyrmhbtuelpqinfja nuphytvreqmfsji cltvanwuh tulachoyvwn tuwclvanh bixkgozashw hakibzoswmx poxkblmhqjftwsdcn bhtykpvzjxuiengao j j j cqodguxrzles loxqcrgeszudw ocsdqruxglze rugqoyxesdzlcf ulzdorxgsqec yvz vyz mfq sztdnk py zawgmj jawgz gwapjz sgzajw ekoadscpwhg jsuchbxmfyzlnwq wlkrqcjux xuqjclr gjrqlcxu afcosnhvprzblxtwd abszvxoglnctfhpwr bjhlvzfwceayksxtun tzvnxrhwlmsfacbd igreocyhquzjmvlx liowjethfkqszvmxdyu ljeqkvwpdazgocf cqgdyvmjuwpeotainsr mhoylsckuzxbiaevq vyczxkjeoapsbifu kxbdosyzavujiec mwsfxbkjqazpiohgnyldc xqgnadblfkwpcomshiy wgvsalrhqbmieyxodpfnkc eurqfmtkvjbosh vyqrhkotfblmseu brtfqkvoheums rvtksmehoubqf uwftdoarkmvqgehbcps ctyalrqdxskjuoh dlathrokujqxs hxsqukdoaltjr osrqkautljxdh zfdlxtr sburlzxd zlrdx ocfb cbfo uykhxqrtmnc ahigrcuptnxdqmk tckz ktzc vzgtxhkums kvzmhtgus sgthkzumv vzxsgmkuht znqmuhvkswgt jtdwk ydkti kdt dkjt mwxehozbnqpad ryjdeblzwxnpoucqahmtg liumaz izulam zauloim miludzaqr rzkjguslxohwnfdivm ofulwkhisgvjmnrxzd dikwvojugxzfrmnlsh sxjdzkcuworbnvgflmih vlmxrzikndhwjofgus fzqnodmx a v lfoeh leovfh hofsle djku kjud dukj qtiwbxfhlzjnokvpadruymgse onurjdisvgzwaqkybftlhpmex fnmqwuhtyjrkepbgildovxasz marndljbkegqxtupviscywfhzo fdbqehtxkavjimzwporsugyln aqkonbhvfdljigp phaqrlkbjdin phldcbkaumjvinq iplbjxeykqhdazn zsl sz xsyzh zs xdhlq ndlkxjyu xlde xdl blwmairvkofcuq tedokrvbqm pw p iqrbnglofs grwuylifvkbq yl yl xaizpuhlqo kiloxm ilkox puaorhzmtvfg mutoegrhzafv lrzmpt dpqyihnsa jfiodcs spi swni isn ohdmyvlpbxjnqzfrswiuaeg ceafhrujqtndivbxpwzsmg mvoxyd tvdoymx xdymov py y nutogsehiczykpmdvf ngmueistpxkfodhvzrcy yuhczioegpvmnfktsd zp z zbc z z creyt uisfmova er dltugzhniyjro lizndhrutojyg jhgnzytuordli lhgotuznirjydc xtrckznswlueia ivnwstaeulrkzjc kcwaleiuznqrts rkwiunqzatsecl y pqnae ofm fl y czoi smvbnd tzi tzanvx azgnjx ingjzyuae anrhzkq eqhafrbmw rjscmwxz lrgnyfeukdvmiqwpt tarsmxwveqdhjbk xrajvebtdmwkh taojykmefwbdzrxuvnp wbdtmjrevakx ctilgkbmaredjwvx wp p p zprwtogmdu orwdmtzuxpg omwputzdgr umgrtpwozd wgzdrtpmou xtkjsm ylqptfjmk pzgyknr kyorpngz pnzykgra rtsiypahgecuvj rsudtcgjiheyvp rpyehvtijcgsu cyprhvestgjui uvigershtyjpc jlmhtfbsoq gbtohjsqm mbstojqh mhkecsqtabjox xrhinjamvo hproxvnma mzscorhnx utwprfqjyhsvzaomcb yesrijzcagmhbwoutvpnqk porcxwmyutzajbhqsv uvrcpyzsmhajowtqb ycpwuzovatbsmjqhr fbkgycqutlmw wuybgqmlcfk xycgbkqmulwf bgcfwyuqklm vntsimju boegqz edotgsi dgoism iogds gdstio sogdixz fdi ifd rx v x qibkwyvmtxargjldc bykzitxevgrwsnqflcdjm dborhtpxjsflciveyq xbuijhdqafnsrvepozytcl qhlopsdtebcjyfrixv hlvdyqxtcroegfjbisp ormifqdhyvxjpclebst qtzumogwrclaiex iburltzgexdocwapq ixuwtoqlegnrzc xizeklwrugtqhoj iynjbsahtvfeurqkgd rtnwjgeukyadicflq deytfqknlpjuairgc oy to po wyj q vatgy xegndfrv smgv sgzbacv ifmepunrdszgh mvgdesianluzpfrh eypfughdnmszitr nepugsfimzrdh fzuiqesnjcdwoxmhkpbrg goycuvjqnpix ytwnigvcjq bsiczfhkne gwxp ojdl a uvgm kaxzjpmwutcqnv isadmolbtrfugxyhcj vxqhfryiakbn txhqbavyknri ptbqifxcwyjgordls dbpvkeauyc kovpawxf ovwxkpfa xbknwjpcoaftq oxapvfkw ybjvaftkzheqgiuposnmxc ungfezmiskqvyjaphobxtc yjqimsvbktaonpeucfzhgrx nepvgsifuqytahxzmjkocb qmaexzipshcvjkfyonutgb u u u u tpgqyvjaedlkbhwr nytwkpqlvmgrbehxjad vsruxht rdmb rfb khqyd ycj aidrbmzkxvt yzvbkiorxamdt mzwvhblrxtn vqalzwcbrxjmtnd wlvnrtxmzcbg ow ow ewuob wo gl mnacgl lg gul kdflg oqvd qodvy qdvo qvoda rd fus thoi rtnz tqagrnlb wemlvjbhuqcfrtodkxzn pjbtruvdmhowfznlxekq eoyadnxbuktqshgwfmvzirlj kumotnwel lmezwoutkn nuemkwlot efnlduohmtkw mhaubleozw zwulbhmo mhbzouwl hmwulbzo hvjpdoiswzbenma ojndsepwhiq dwsjnhiope tsohjdpwien joipwhesnd edbhi fisdhbe r v v v ezlc czei azlcei czie eynczs ngfuhekmzxvopy twogyeknxvmhbjzpuf zxpfnygeomukvh ktxduimz vtgmurjiqk mtkbuia uykwh kuyhnw dzjqnwbrouh qfncpvszdeg cydmlqnz dzqtn xga hmxpdg fnxgeu nxeogu nsxrgu xngurs jvmudzscnalhwktry lrvucmjkwztsyna wyruzcjxlbtemsknva yzwvklpcqustojrmnai zyjntswcuarkmvl zq qz qz qz zqt gbpnqrxu dqnxyvwhbtgi csqmbfjeaokxlz rdtuqpxnbzj yzsnpu fcnrzpou penzu nvukhlmizwpag tdvfgahbiw gtbpsdo ucdprxmznhbw rcumdzpwnx dxnpzrmcuw drpxcmnzuw zxwcnpmrdu dhouqlfvsakg uaofqkdsvhgl uoalfhvqsgkd klgvfudqosah auhslqfkgvdo qkwfimrogubyhljda shuprevacxlndiqfjwy crpsetajviwmqhl szqdpfvimaekgbj geyqpl gzqlei qleg kcfipzjwyugsrtahboneqxdm uwkcmtdfopayenqbshxi eudhcyfpwamoxvkqlistnb yfqbtnwuzsdl lszfnquwbtyd fsjznbdwytulq bfgldzqyutwsn n uv vjfzuhqgaypbmcd hqmbpsjyugrvfzatndc ovfazbdipqxeclykjgum vmbzptjwydaguncfrq k w k k eipruzqndlys elrysidnzqu pzlgeciqys wjvrdxmunfsb kdy kd kd dlk kd yretjs g kahzubo rjd r hlxpawm xmyeltpqw gmpxicbv burmxc ozxmsfjdn dtskziwy qxzycupgs iflherjytpxg thienjgrfxly heyftrgjlix igyfjurphtexl gtyxrjleihf nuswkhz xosqihvwfrez hgszyw ukphojt hotkpzju htupjbko mjpkouhd luhsi shliu lihqsu iqr ybndlhzrgwtmkf rxcuq j j j j rwqsbyoe fweujxcoliya mpowrey wvn wv frbuexwg xmqgdwfeb rbyjsiqxtfcvlup vqpuyrifcsjxtlb yvtqirslxpjfbcu vsribxjcufylqpt ikcvoguphqtyjdswzexa ptjocgxiuhwavydsqzek ipcuohvqdwyxsetkagjz vpgdhzqckoywxaijuest erhdoyugavcq doqsvahugec cnhezgfavbuixdo lhgvknmequsctapxzbjdorf fodnxkrlqthcubmzvpjaeg fcvqmordxhklpybujgenatz nlmbxvpcokearhdzjtqufg uthcdpbvojlqewrknafgxzmi hwjpevzgrtmoqknydfs jvzstyfdhgkoqpmw ncw gwivun wnl nxw najwbzdrke ckyowhxblrt flabyrdwctk lbwripvjtykcs pn eonwtzp yxsirvqhcm fapu njwb lsjdymwpz zmrhuajxvewysp lyisuvcbdqxotkmh bkmrldugxsycohqitv xlhcvtmyqibdosuk hscubvoelkyqdximt mb mjbf rbm zvqlg gnlvjbz zvdgl dslgvzt vczwgl bem yqpgj dxflhwokatuvnzs irqc jqp gqolch hnozqgcl dnhwl hdo fduc lug lug gurkal lgu ulg uahmzdyxbr htkmwpcxbqy cbhyxmp ajv mjt j ji bfpygmtxajnk kpnmfbxtgayj pcynamktgbjxf tfympjvqxgnkab x x x mxf vqx wlzsgdhixr hgcoaiwpbluv wyhlig iwfnlhqgs jfgqihmxwlr cqrdbpoehiwfuzvgalxm ularwipqxcfedozmbvg vurqezjkoysgpalbfimxwcdt mcvfzqplaxwrgoebiud mydhxfvgzcleojiq ixcozgyvjdfl njxuwiaovpycslrzgdf gfwtnr mojdinwkf rfnwqhcg wfn lwise arl trzbvl bal y y y y sayqdimthfrpjvgn crdphnmayqbgf sfgtqwbzej pnmlcyitj yvtng tyn nyutg ytgenh onpty bleicngomsqhwfdy mrbnfygxpiwucoldqshke cqdeimynwhsfoblg gqesldbcijmwhonfy enblgcmfwdhyqois ufmsgkbcxz xfsckzmub umbkoxzhrsvcnf kzmcsbfxgu tuiwqd hbtdou t t t t t ureltqfji ohzkrul oievpqgs sqdvopigle easvqpkgio upkr urpk wrbipknheldxjfm rhjexfldkwpb lhrpejxfwbdk drybxszfetlnwjigk fngbltzjywsroixk hodteualp dtrpuile tqrbsjni sbcirnqt rsbaitqv qbsrit gbtsriq ovjmetdznlw dtjvlmonze zdjntemolvw mlouvjngzkdter ckrnly rclkyn cyjlkrnh crynkl ylckrn zjk zkj djkz jzk jzk xoj mjro kjuxro ybsjeahf zhwvtialqegufxmrcj hwljxrecaqmztgifv vgibmzlxwrdeacfqhjt nxicerwtzolfgky hogmsvdplbweja w clq i gi cilrkspgjqmw xhvadtlyfjobnzue ckytg nqtyg gyxbt kygtc fwcd wfc oebwhmil fdwxr lomdtfsihk sfyitokldmh dimyotfkls iovdstlmkfj smulideqtfok frazxb ahfbxz bafzx aftbxpz ubdarimsqvgtlhfjze eqfrvhsguzjamtidl hjidpgrc vrp zpxwsulqrona drhpftvi kbrdhype xidcskygjwmbzr bsqexaypghjkv tgxmy atxym txym qjrbmxtluews ulbrwtjsxqop fzbksturwmxlqj tbxvnsjqriuwcl edhvzwqxojuplbkyf wfphdjyczxvlkbqo jhxbpkvyfzdloqw yhmlfwoqkjpvdxbz qfmxikhozbvwydplj seyq yogxm jzbgatxhrplowqsyecvdn nzjvohtguxpydsrlcewab apzf zanwg pza az sapxfnyhbowujlcdveqiztkm tzskjxqcoebdunyfphi caruks rhlwsv cnswqfaztmdh uxszromtanqdfb cjnmstxqvdik qmjdcksitxvn cjktvxqmdnis cjnrsqdkxptivm oq qaion omq qo kzymeqtbasgn cuktvbsorim lpjxwhdf knflw ezvkn yuhakrnc vidhwxfrmnsyuct rzumskdfeqx p p duicxvgnbeopfzlqyrks skdetoclpbmzqfghwixr gfozcdskprxeaiqbml plkhqcifedxbgosrz ydtjolrxzefiaschwng tdoerngfhzwxjcylia zrawdytxhcojlgenfi ghvjqlifws sfiqklwjehrgv q q s a s et tme a a a a a qng g wg nvmlaui audrigo atnjdu hybxcpszkwuq fnu zmngdceqikxyuapwv ciwyqekgamdzvp ikcpavfgbwmerqyz mcvyjezqxrpkiu wlfatnmghs awkqenuiorcd lkuowsracdtzqgei joxhucpqrmfyvikawe cdn ndc fybj bjfy byjucsf flybjx zfcphgxqno zhmxyncpqr iqhwaclzupsne oscpyvdebfhz pbonsjyrelkfxvz wfpvyigbmaeztoqus ypbfhaivmkx xpjfhikyoca wkzvxlebarsmcdpi xidcbpswmazekr zsxwidpmekacrb pwczxsedakirbm vfupqwdshxygkmrzol wslmypfkogrxzqdvh qwlxsrfzpgdomvyhk cmkdiapszuyb bkpyduimascz vjpxmdzfwkuq eycbgsnhltmapxo xmnklfpugdewtj okzerxjuihqcptdmysf yajvhbtowixds dvynabxjiwhs asydoixzbh ihjdxbasyk lifxrbspedahyumcg snragze gmszrnae egrazsn ensragz odi odi ido odi mvogdzfker veongkrpzmdf vgekmrzdfo ombjdfqykergvz hzsormkdgfve l l l ly kgnpliuwmsebhjfrcyqxotvazd mzqryvgsftauxpcknehbiwojld vczkrabfmhpyjteui merjtikybvaugz aieydktjrmzvubg yeslqoibauvtkmrjz vi vip eigv vix iv mcuknbexfowszpvtyi ztmfwonvcsapqxyieb etowynxzcpirmbvsf wjfnyvopzetkmiusbcx ywhqemsx banksxwemy ymsexw smyewx szxeywm yvqtnsahzpwebgr zgtjnevyapwbhrs jzynhrpvwgsbat obtynrfwslcahvzgpm eytrpagzwsjvbkhn ynwutpmvhj mvwjpuyt wupzyjvmt kwnyatozcmdqbpsvejfrxug vkzjaogfmqsxhnyctpu cozypjmtvlxquakgfnsi qrwtgecs daley emh qmbjwe qebfwjm qewjm qjiwem dqc tad qdcs zrvjnfpe zpefunyvqc fzpvern pnefvz envpfz nduhkvstxqmbfyr ufmhbtkqvxdnpy hdntqxuvmbkfy ot o yv xp evkrifstpzgbahl vzkmdtchgseajyfub bgtnkxvheoaqifsz wxec wfuie awmj ghsnkvwbqor mcexwf teosna tnkb ptm t r na ykx jdl mzjtp xbpj tzrkxba xnbjmgosv mhxbw j j j j xn lrvt htg mr hafkb fkab afbk zlyxomawvuib vxwzbaymolui tcdfzgx ql luo uh ixtbluahoeqgsv eovsiglhuqanxtb ntychjig chyijtgn hcnjtiyg tgjnhiyc tgjiychn khomqatzscydwunfe ygoazrdukh zokbrlyaudjh uojynifthzvcgqp phnvryfbtucl sbeizdtjopxu nouqbeykmszd cga gca cag hiogxbslyptfc pilwxcthogysb holsibtcypfgx oahyr pkjro qgfkj gjzk jgvk kw wk kw wk bxvmnks sfmbva fsocn ygfopn wbarmxtfyjzenicvlhps aefdirlyvzjpwtcmnh rqymwfzjpevchiaotnl lietnypmcrvhowfjaz ztjcehympnavirlwf gqsnyhtafdcbki yncbhxiakgpqt mikyzoxflndetbp ebqdwiopkhyfxnl jbscverlgfyauo bkewpj n solnxmfr ybxa ybxa xyba byax abxy sgbo sg unvqlyhzdaxrcwg dxvhaugicrzqnlw mrplcqatdxzbuvgnwh vzaurnhdgqlxwc ucdwavqhylxrngz frhdaek fpuwosv qm m smg ") #+end_src ** Part 1 *** Problem --- Day 6: Custom Customs --- As your flight approaches the regional airport where you'll switch to a much larger plane, customs declaration forms are distributed to the passengers. The form asks a series of 26 yes-or-no questions marked a through z. All you need to do is identify the questions for which anyone in your group answers "yes". Since your group is just you, this doesn't take very long. However, the person sitting next to you seems to be experiencing a language barrier and asks if you can help. For each of the people in their group, you write down the questions for which they answer "yes", one per line. For example: #+begin_example abcx abcy abcz #+end_example In this group, there are 6 questions to which anyone answered "yes": a, b, c, x, y, and z. (Duplicate answers to the same question don't count extra; each question counts at most once.) Another group asks for your help, then another, and eventually you've collected answers from every group on the plane (your puzzle input). Each group's answers are separated by a blank line, and within each group, each person's answers are on a single line. For example: #+begin_example abc a b c ab ac a a a a b #+end_example This list represents answers from five groups: The first group contains one person who answered "yes" to 3 questions: a, b, and c. The second group contains three people; combined, they answered "yes" to 3 questions: a, b, and c. The third group contains two people; combined, they answered "yes" to 3 questions: a, b, and c. The fourth group contains four people; combined, they answered "yes" to only 1 question, a. The last group contains one person who answered "yes" to only 1 question, b. In this example, the sum of these counts is 3 + 3 + 3 + 1 + 1 = 11. For each group, count the number of questions to which anyone answered "yes". What is the sum of those counts? *** Solution I think this is basic set manipulation. Basically, for each group of people, build a set out of the letters they answered /yes/ to, then find the length of that set. Then add the lengths. Okay, this shouldn’t be too hard. #+NAME: day6-part1 #+begin_src emacs-lisp :noweb yes <> (defun set-from-group (group) "Build a set from a group. The group will be a newline-separated string." ;; basically, i just need to build a list from the string ;; then remove duplicates. (let ((lst (seq-filter (lambda (c) (not (char-equal c ?\n))) (string-to-list group)))) (delete-dups lst))) (aoc input "\n\n" (seq-reduce (lambda (result group) (+ result (length (set-from-group group)))) lines 0)) #+end_src #+RESULTS: day6-part1 : 6532 Awesome, 6532 is right! ** Part 2 *** Problem --- Part Two --- As you finish the last group's customs declaration, you notice that you misread one word in the instructions: You don't need to identify the questions to which anyone answered "yes"; you need to identify the questions to which everyone answered "yes"! Using the same example as above: #+begin_example abc a b c ab ac a a a a b #+end_example This list represents answers from five groups: In the first group, everyone (all 1 person) answered "yes" to 3 questions: a, b, and c. In the second group, there is no question to which everyone answered "yes". In the third group, everyone answered yes to only 1 question, a. Since some people did not answer "yes" to b or c, they don't count. In the fourth group, everyone answered yes to only 1 question, a. In the fifth group, everyone (all 1 person) answered "yes" to 1 question, b. In this example, the sum of these counts is 3 + 0 + 1 + 1 + 1 = 6. For each group, count the number of questions to which everyone answered "yes". What is the sum of those counts? *** Solution Hm… well, it would’ve been easy if I’d set up the previous part to use =or=: this one would just use =and=. Of /course/ I didn’t make it easy on myself though! Okay, I’ve had a think and this is what I’m going to do. The number of answers /everyone/ said yes to is just the total number of answers – 26 ✕ /n/ (where /n/ is the number of people in the group) – /minus/ the number of answers where /anyone/ said yes. So I have to figure out how many people are in each group, use =set-from-group= (from part 1) to find the number of /any yeses/, then subtract that from the total possible answers. #+NAME: day6-part2-attempt1 #+begin_src emacs-lisp (aoc input "\n\n" (seq-reduce (lambda (result group) (let* ((members (split-string group)) (total-questions (length members)) (anyone-yeses-count (length (set-from-group group)))) (+ result (- total-questions anyone-yeses-count)))) lines 0)) #+end_src #+RESULTS: day6-part2-attempt1 : -4383 Damn, *36680* is too high. Hm. Let’s try breaking the lambda out into a function. (By the way, I tried adding a =-1= to the calculation too – *36193* is /still/ too high. #+NAME: day6-part2-attempt2 #+begin_src emacs-lisp (defun unanimous-yes-count (group) "Count how many answers were answered yes by everyone in GROUP. GROUP is a newline-separated string." (let* ((members (split-string group "\n")) (total-questions 26) (anyone-yes-count (length (set-from-group group)))) (list total-questions anyone-yes-count (- total-questions anyone-yes-count)))) (aoc input "\n\n" (let ((result)) (dolist (ln lines result) (push (unanimous-yes-count ln) result)) (reverse result))) #+end_src #+RESULTS: day6-part2-attempt2 | 26 | 9 | 17 | | 26 | 21 | 5 | | 26 | 10 | 16 | | 26 | 6 | 20 | | 26 | 13 | 13 | | 26 | 15 | 11 | | 26 | 7 | 19 | | 26 | 12 | 14 | | 26 | 17 | 9 | | 26 | 16 | 10 | | 26 | 26 | 0 | | 26 | 7 | 19 | | 26 | 15 | 11 | | 26 | 18 | 8 | | 26 | 22 | 4 | | 26 | 19 | 7 | | 26 | 19 | 7 | | 26 | 10 | 16 | | 26 | 17 | 9 | | 26 | 11 | 15 | | 26 | 2 | 24 | | 26 | 26 | 0 | | 26 | 26 | 0 | | 26 | 5 | 21 | | 26 | 14 | 12 | | 26 | 23 | 3 | | 26 | 24 | 2 | | 26 | 7 | 19 | | 26 | 12 | 14 | | 26 | 7 | 19 | | 26 | 12 | 14 | | 26 | 21 | 5 | | 26 | 18 | 8 | | 26 | 21 | 5 | | 26 | 19 | 7 | | 26 | 14 | 12 | | 26 | 15 | 11 | | 26 | 14 | 12 | | 26 | 20 | 6 | | 26 | 16 | 10 | | 26 | 17 | 9 | | 26 | 18 | 8 | | 26 | 10 | 16 | | 26 | 23 | 3 | | 26 | 3 | 23 | | 26 | 9 | 17 | | 26 | 8 | 18 | | 26 | 20 | 6 | | 26 | 25 | 1 | | 26 | 2 | 24 | | 26 | 5 | 21 | | 26 | 14 | 12 | | 26 | 7 | 19 | | 26 | 17 | 9 | | 26 | 5 | 21 | | 26 | 21 | 5 | | 26 | 6 | 20 | | 26 | 23 | 3 | | 26 | 6 | 20 | | 26 | 1 | 25 | | 26 | 11 | 15 | | 26 | 21 | 5 | | 26 | 11 | 15 | | 26 | 8 | 18 | | 26 | 23 | 3 | | 26 | 9 | 17 | | 26 | 5 | 21 | | 26 | 16 | 10 | | 26 | 11 | 15 | | 26 | 9 | 17 | | 26 | 8 | 18 | | 26 | 8 | 18 | | 26 | 5 | 21 | | 26 | 20 | 6 | | 26 | 3 | 23 | | 26 | 6 | 20 | | 26 | 4 | 22 | | 26 | 25 | 1 | | 26 | 6 | 20 | | 26 | 7 | 19 | | 26 | 3 | 23 | | 26 | 2 | 24 | | 26 | 21 | 5 | | 26 | 19 | 7 | | 26 | 2 | 24 | | 26 | 7 | 19 | | 26 | 3 | 23 | | 26 | 6 | 20 | | 26 | 17 | 9 | | 26 | 7 | 19 | | 26 | 14 | 12 | | 26 | 7 | 19 | | 26 | 15 | 11 | | 26 | 2 | 24 | | 26 | 2 | 24 | | 26 | 12 | 14 | | 26 | 11 | 15 | | 26 | 16 | 10 | | 26 | 19 | 7 | | 26 | 8 | 18 | | 26 | 23 | 3 | | 26 | 15 | 11 | | 26 | 12 | 14 | | 26 | 15 | 11 | | 26 | 18 | 8 | | 26 | 26 | 0 | | 26 | 15 | 11 | | 26 | 4 | 22 | | 26 | 6 | 20 | | 26 | 8 | 18 | | 26 | 19 | 7 | | 26 | 20 | 6 | | 26 | 8 | 18 | | 26 | 19 | 7 | | 26 | 24 | 2 | | 26 | 23 | 3 | | 26 | 6 | 20 | | 26 | 1 | 25 | | 26 | 21 | 5 | | 26 | 15 | 11 | | 26 | 18 | 8 | | 26 | 18 | 8 | | 26 | 3 | 23 | | 26 | 5 | 21 | | 26 | 10 | 16 | | 26 | 19 | 7 | | 26 | 3 | 23 | | 26 | 21 | 5 | | 26 | 23 | 3 | | 26 | 8 | 18 | | 26 | 12 | 14 | | 26 | 7 | 19 | | 26 | 13 | 13 | | 26 | 13 | 13 | | 26 | 26 | 0 | | 26 | 6 | 20 | | 26 | 4 | 22 | | 26 | 17 | 9 | | 26 | 14 | 12 | | 26 | 5 | 21 | | 26 | 10 | 16 | | 26 | 18 | 8 | | 26 | 4 | 22 | | 26 | 19 | 7 | | 26 | 9 | 17 | | 26 | 4 | 22 | | 26 | 24 | 2 | | 26 | 7 | 19 | | 26 | 9 | 17 | | 26 | 2 | 24 | | 26 | 23 | 3 | | 26 | 3 | 23 | | 26 | 5 | 21 | | 26 | 22 | 4 | | 26 | 14 | 12 | | 26 | 16 | 10 | | 26 | 21 | 5 | | 26 | 26 | 0 | | 26 | 10 | 16 | | 26 | 5 | 21 | | 26 | 25 | 1 | | 26 | 17 | 9 | | 26 | 19 | 7 | | 26 | 17 | 9 | | 26 | 26 | 0 | | 26 | 11 | 15 | | 26 | 25 | 1 | | 26 | 6 | 20 | | 26 | 2 | 24 | | 26 | 9 | 17 | | 26 | 17 | 9 | | 26 | 12 | 14 | | 26 | 5 | 21 | | 26 | 9 | 17 | | 26 | 15 | 11 | | 26 | 7 | 19 | | 26 | 2 | 24 | | 26 | 20 | 6 | | 26 | 4 | 22 | | 26 | 14 | 12 | | 26 | 16 | 10 | | 26 | 18 | 8 | | 26 | 23 | 3 | | 26 | 25 | 1 | | 26 | 13 | 13 | | 26 | 8 | 18 | | 26 | 2 | 24 | | 26 | 20 | 6 | | 26 | 15 | 11 | | 26 | 8 | 18 | | 26 | 23 | 3 | | 26 | 16 | 10 | | 26 | 8 | 18 | | 26 | 23 | 3 | | 26 | 9 | 17 | | 26 | 8 | 18 | | 26 | 4 | 22 | | 26 | 6 | 20 | | 26 | 2 | 24 | | 26 | 15 | 11 | | 26 | 2 | 24 | | 26 | 20 | 6 | | 26 | 7 | 19 | | 26 | 5 | 21 | | 26 | 7 | 19 | | 26 | 9 | 17 | | 26 | 19 | 7 | | 26 | 25 | 1 | | 26 | 20 | 6 | | 26 | 11 | 15 | | 26 | 12 | 14 | | 26 | 25 | 1 | | 26 | 1 | 25 | | 26 | 15 | 11 | | 26 | 3 | 23 | | 26 | 11 | 15 | | 26 | 8 | 18 | | 26 | 22 | 4 | | 26 | 10 | 16 | | 26 | 24 | 2 | | 26 | 22 | 4 | | 26 | 23 | 3 | | 26 | 21 | 5 | | 26 | 24 | 2 | | 26 | 22 | 4 | | 26 | 15 | 11 | | 26 | 10 | 16 | | 26 | 4 | 22 | | 26 | 16 | 10 | | 26 | 4 | 22 | | 26 | 13 | 13 | | 26 | 7 | 19 | | 26 | 21 | 5 | | 26 | 10 | 16 | | 26 | 20 | 6 | | 26 | 10 | 16 | | 26 | 7 | 19 | | 26 | 4 | 22 | | 26 | 26 | 0 | | 26 | 23 | 3 | | 26 | 6 | 20 | | 26 | 11 | 15 | | 26 | 17 | 9 | | 26 | 2 | 24 | | 26 | 15 | 11 | | 26 | 2 | 24 | | 26 | 12 | 14 | | 26 | 13 | 13 | | 26 | 14 | 12 | | 26 | 10 | 16 | | 26 | 25 | 1 | | 26 | 7 | 19 | | 26 | 2 | 24 | | 26 | 20 | 6 | | 26 | 4 | 22 | | 26 | 13 | 13 | | 26 | 14 | 12 | | 26 | 17 | 9 | | 26 | 10 | 16 | | 26 | 11 | 15 | | 26 | 16 | 10 | | 26 | 25 | 1 | | 26 | 26 | 0 | | 26 | 2 | 24 | | 26 | 11 | 15 | | 26 | 11 | 15 | | 26 | 9 | 17 | | 26 | 15 | 11 | | 26 | 16 | 10 | | 26 | 14 | 12 | | 26 | 24 | 2 | | 26 | 13 | 13 | | 26 | 14 | 12 | | 26 | 10 | 16 | | 26 | 3 | 23 | | 26 | 3 | 23 | | 26 | 22 | 4 | | 26 | 24 | 2 | | 26 | 22 | 4 | | 26 | 22 | 4 | | 26 | 4 | 22 | | 26 | 4 | 22 | | 26 | 16 | 10 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 22 | 4 | | 26 | 25 | 1 | | 26 | 13 | 13 | | 26 | 22 | 4 | | 26 | 14 | 12 | | 26 | 23 | 3 | | 26 | 1 | 25 | | 26 | 19 | 7 | | 26 | 11 | 15 | | 26 | 7 | 19 | | 26 | 13 | 13 | | 26 | 17 | 9 | | 26 | 5 | 21 | | 26 | 10 | 16 | | 26 | 6 | 20 | | 26 | 9 | 17 | | 26 | 9 | 17 | | 26 | 26 | 0 | | 26 | 13 | 13 | | 26 | 10 | 16 | | 26 | 17 | 9 | | 26 | 7 | 19 | | 26 | 2 | 24 | | 26 | 9 | 17 | | 26 | 18 | 8 | | 26 | 15 | 11 | | 26 | 6 | 20 | | 26 | 22 | 4 | | 26 | 12 | 14 | | 26 | 6 | 20 | | 26 | 24 | 2 | | 26 | 3 | 23 | | 26 | 26 | 0 | | 26 | 26 | 0 | | 26 | 13 | 13 | | 26 | 12 | 14 | | 26 | 12 | 14 | | 26 | 24 | 2 | | 26 | 21 | 5 | | 26 | 8 | 18 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 3 | 23 | | 26 | 26 | 0 | | 26 | 2 | 24 | | 26 | 12 | 14 | | 26 | 21 | 5 | | 26 | 4 | 22 | | 26 | 15 | 11 | | 26 | 25 | 1 | | 26 | 14 | 12 | | 26 | 14 | 12 | | 26 | 17 | 9 | | 26 | 11 | 15 | | 26 | 6 | 20 | | 26 | 19 | 7 | | 26 | 1 | 25 | | 26 | 18 | 8 | | 26 | 3 | 23 | | 26 | 11 | 15 | | 26 | 15 | 11 | | 26 | 20 | 6 | | 26 | 19 | 7 | | 26 | 26 | 0 | | 26 | 19 | 7 | | 26 | 17 | 9 | | 26 | 19 | 7 | | 26 | 22 | 4 | | 26 | 16 | 10 | | 26 | 19 | 7 | | 26 | 5 | 21 | | 26 | 13 | 13 | | 26 | 26 | 0 | | 26 | 8 | 18 | | 26 | 9 | 17 | | 26 | 6 | 20 | | 26 | 16 | 10 | | 26 | 6 | 20 | | 26 | 15 | 11 | | 26 | 5 | 21 | | 26 | 23 | 3 | | 26 | 25 | 1 | | 26 | 23 | 3 | | 26 | 15 | 11 | | 26 | 11 | 15 | | 26 | 1 | 25 | | 26 | 18 | 8 | | 26 | 17 | 9 | | 26 | 10 | 16 | | 26 | 22 | 4 | | 26 | 15 | 11 | | 26 | 9 | 17 | | 26 | 1 | 25 | | 26 | 13 | 13 | | 26 | 12 | 14 | | 26 | 4 | 22 | | 26 | 15 | 11 | | 26 | 18 | 8 | | 26 | 11 | 15 | | 26 | 12 | 14 | | 26 | 15 | 11 | | 26 | 8 | 18 | | 26 | 4 | 22 | | 26 | 14 | 12 | | 26 | 20 | 6 | | 26 | 24 | 2 | | 26 | 6 | 20 | | 26 | 26 | 0 | | 26 | 9 | 17 | | 26 | 13 | 13 | | 26 | 16 | 10 | | 26 | 9 | 17 | | 26 | 18 | 8 | | 26 | 25 | 1 | | 26 | 20 | 6 | | 26 | 6 | 20 | | 26 | 21 | 5 | | 26 | 20 | 6 | | 26 | 8 | 18 | | 26 | 22 | 4 | | 26 | 7 | 19 | | 26 | 24 | 2 | | 26 | 10 | 16 | | 26 | 17 | 9 | | 26 | 14 | 12 | | 26 | 6 | 20 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 19 | 7 | | 26 | 1 | 25 | | 26 | 25 | 1 | | 26 | 19 | 7 | | 26 | 13 | 13 | | 26 | 3 | 23 | | 26 | 3 | 23 | | 26 | 1 | 25 | | 26 | 4 | 22 | | 26 | 25 | 1 | | 26 | 20 | 6 | | 26 | 23 | 3 | | 26 | 25 | 1 | | 26 | 3 | 23 | | 26 | 9 | 17 | | 26 | 20 | 6 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 16 | 10 | | 26 | 18 | 8 | | 26 | 12 | 14 | | 26 | 24 | 2 | | 26 | 23 | 3 | | 26 | 25 | 1 | | 26 | 8 | 18 | | 26 | 3 | 23 | | 26 | 18 | 8 | | 26 | 2 | 24 | | 26 | 26 | 0 | | 26 | 23 | 3 | | 26 | 6 | 20 | | 26 | 22 | 4 | | 26 | 13 | 13 | | 26 | 22 | 4 | | 26 | 11 | 15 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 8 | 18 | | 26 | 6 | 20 | | 26 | 12 | 14 | | 26 | 16 | 10 | | 26 | 6 | 20 | | 26 | 25 | 1 | | 26 | 20 | 6 | | 26 | 10 | 16 | | 26 | 6 | 20 | | 26 | 7 | 19 | | 26 | 17 | 9 | | 26 | 1 | 25 | | 26 | 9 | 17 | | 26 | 5 | 21 | | 26 | 12 | 14 | | 26 | 12 | 14 | | 26 | 15 | 11 | | 26 | 8 | 18 | | 26 | 22 | 4 | | 26 | 18 | 8 | | 26 | 17 | 9 | | 26 | 3 | 23 | | 26 | 14 | 12 | | 26 | 8 | 18 | | 26 | 7 | 19 | | 26 | 2 | 24 | | 26 | 9 | 17 | | 26 | 8 | 18 | | 26 | 23 | 3 | | 26 | 16 | 10 | | 26 | 26 | 0 | | 26 | 14 | 12 | | 26 | 4 | 22 | | 26 | 4 | 22 | | 26 | 20 | 6 | | 26 | 13 | 13 | | 26 | 4 | 22 | No… that’s higher than the previous answer!!! hmmmmm. Let’s try this a totally different way. /Wait a minute!/ The first answer was *3680* – it makes /no sense/ that the answre to part 2 would be 10 times /higher/ than that. I’m doing something wrong. Okay, 4870 is too high too. /Now/ we’re getting somewhere. I’VE GOT IT!! It’s the /set difference/, not /arithmetic difference!/ #+NAME: day6-part2-attempt4 #+begin_src emacs-lisp (aoc input "\n\n" (seq-reduce (lambda (result group) (let* ((members (split-string group)) (total-qs 26) (anyone-yeses-count (length (set-from-group group)))) (+ result (- total-qs anyone-yeses-count)))) lines 0)) #+end_src #+RESULTS: day6-part2-attempt4 : 6130 *NOPE*. Ugggghhhh Okay, I really need to try another tack. I’ve played this one out. **** Another tack #+NAME: day6-part2-another-tack #+begin_src emacs-lisp (defun unanimous-yes-count (group) (let* ((people (split-string group)) (unanimous-candidates (string-to-list (pop people))) (result unanimous-candidates)) (dolist (person people result) (let ((p (string-to-list person))) (dolist (answer result) (if (not (memq answer p)) (setq result (remq answer result)))))) (length result) )) (aoc input "\n\n" (seq-reduce (lambda (result group) (+ result (unanimous-yes-count group))) lines 0)) #+end_src #+RESULTS: day6-part2-another-tack : 3427 THANK GOD! Okay, tomorrow I’m going to start on a new file. This one is 10734 lines long and it’s annoying. * Footnotes [fn:1]By the way, inserting this [[https://emojipedia.org/person-shrugging/][shrug emoji]] was absolutely maddening to do on Emacs on Windows. I've got to fix my clipboard character set.