From 367f8e5c9a925a4ed530be8fba1383e2a0f1c492 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Tue, 1 Dec 2020 18:13:57 +0000 Subject: [PATCH 01/14] Day 1 --- 01/input | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 01/part1.js | 24 +++++++ 01/part2.js | 26 +++++++ 3 files changed, 250 insertions(+) create mode 100644 01/input create mode 100644 01/part1.js create mode 100644 01/part2.js diff --git a/01/input b/01/input new file mode 100644 index 0000000..74507ab --- /dev/null +++ b/01/input @@ -0,0 +1,200 @@ +1974 +1773 +1841 +1932 +1951 +1852 +2000 +1988 +1998 +1670 +969 +2008 +1713 +2007 +1916 +1286 +1652 +1821 +1730 +2002 +1761 +1656 +814 +1999 +2010 +1936 +1794 +1905 +1250 +1920 +1986 +1709 +1914 +1681 +1820 +1982 +1961 +1931 +1331 +1923 +1972 +1631 +1643 +1719 +1926 +1994 +1952 +1981 +1847 +1774 +1296 +1946 +873 +2005 +173 +2006 +1960 +1872 +1894 +1695 +1769 +1800 +1734 +1675 +1860 +1383 +1947 +1768 +1827 +1877 +1721 +1738 +384 +1996 +1958 +1909 +1639 +1831 +1212 +1627 +1699 +1661 +1653 +1748 +1919 +1983 +1223 +1690 +1948 +1218 +1971 +1969 +1753 +1957 +1977 +1943 +1978 +1778 +1937 +1868 +1641 +1979 +1854 +1959 +1739 +2004 +1964 +760 +1890 +1701 +1940 +1840 +1817 +1966 +1799 +1941 +1934 +1929 +1962 +1691 +1927 +1764 +1945 +795 +1993 +1804 +1693 +1970 +1728 +1818 +1545 +1992 +1965 +1786 +2009 +1980 +1698 +1647 +1935 +1880 +1921 +1904 +1953 +1871 +1671 +1826 +1989 +1950 +1791 +1990 +1949 +1301 +1975 +1968 +1895 +1208 +1424 +1985 +1665 +1685 +1942 +1669 +64 +1832 +1995 +1987 +1955 +352 +1984 +1925 +1891 +1933 +1679 +2001 +1930 +1991 +1227 +1973 +1723 +1683 +132 +1718 +1944 +1908 +1900 +1657 +1954 +92 +1997 +1938 +1976 +1747 +1226 +1782 +1963 +1746 +1540 +1759 +1939 +1743 diff --git a/01/part1.js b/01/part1.js new file mode 100644 index 0000000..9fb4f84 --- /dev/null +++ b/01/part1.js @@ -0,0 +1,24 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +let numbers = []; + +readInterface.on('line', function(line) { + numbers.push(Number(line)); +}); + +readInterface.on('close', function(line) { + numbers.forEach(function(a) { + numbers.forEach(function(b) { + if (a + b == 2020) { + console.log(a*b); + process.exit(); + } + }); + }); +}); diff --git a/01/part2.js b/01/part2.js new file mode 100644 index 0000000..bd25a8c --- /dev/null +++ b/01/part2.js @@ -0,0 +1,26 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +let numbers = []; + +readInterface.on('line', function(line) { + numbers.push(Number(line)); +}); + +readInterface.on('close', function(line) { + numbers.forEach(function(a) { + numbers.forEach(function(b) { + numbers.forEach(function(c) { + if (a + b + c == 2020) { + console.log(a*b*c); + process.exit(); + } + }); + }); + }); +}); From 9c5205044c46ba05ca1ce57504b6b39e1e9bcfe4 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Wed, 2 Dec 2020 20:03:21 +0000 Subject: [PATCH 02/14] Day 2 --- 02/input | 1001 +++++++++++++++++++++++++++++++++++++++++++++++++++ 02/part1.js | 33 ++ 02/part2.js | 30 ++ 3 files changed, 1064 insertions(+) create mode 100644 02/input create mode 100644 02/part1.js create mode 100644 02/part2.js diff --git a/02/input b/02/input new file mode 100644 index 0000000..9b7c94f --- /dev/null +++ b/02/input @@ -0,0 +1,1001 @@ +2-5 l: fllxf +4-5 r: rrrjmrrrrrrh +1-4 k: kkksk +7-8 k: tknsqknzkckrwkjkk +2-3 p: mpbstpxmsxmpnhbwlb +2-7 j: xkjjtjjjj +2-7 m: gczbmgk +15-16 q: qqqqqqqqqckqqqfqqq +7-14 d: dgdddlddddddrvfddnsd +7-12 r: rrrrrrrrbrrrl +2-11 p: zppjpwpqppbnppd +6-8 w: wqhwwnpwwwr +4-10 m: fmkmrrrdkmr +1-2 n: nnjvtnzk +3-8 t: tdxmzslxtvft +13-14 m: mmmmmhmmmmmmmm +9-10 l: lljllllllll +12-16 t: vdtbdtxtttttrctttkt +2-6 q: nqghxqgjqvzswbxww +4-6 k: khkkkkvrkgfwvbd +4-5 r: hrrpv +5-8 g: gggggggg +5-8 f: fjsfftfs +9-12 p: ppfpnxpvppfspp +14-19 x: lrxxxtxxxxxxxzxxxxx +4-6 b: pqbqbbx +10-12 x: mlxkxxxzctrkz +2-7 b: tmbzmsb +16-19 k: kkkdkkkkkkkmklhkkkkk +4-11 h: lpnhfccshxhg +4-5 n: nsnhgnk +1-7 j: jjjjjwsjd +9-12 s: snsssssskssss +7-8 w: wwlwwwhww +3-12 h: znhvqgfgjvlh +9-11 d: dddfddddddg +2-5 j: jjkkrndpdmscjfwvx +1-10 v: vfgbvzlwvvcc +6-15 q: mcqqqqbqcgltqqjz +5-9 q: qprqvzkqsqqt +4-6 l: kldtxl +6-14 j: jjjjjjjjjjjjjjjj +3-6 m: mmmjwwsm +6-15 p: pffpppppdqpfppbpppk +12-14 s: sssssssssssssz +7-13 b: xmbblmsksbbbwbb +4-5 q: dfqfmtqjcvqrq +3-5 l: kvrll +2-4 w: wsww +8-10 f: bfffzfpcfjhw +9-10 c: ccccjcccckc +11-14 q: vqqqpqtqqqlqqqqqxsft +2-4 l: xrzlkmcfl +7-17 c: cccccsccccccccccg +6-8 z: jzzljvmzzvzzgvzz +5-10 w: fwwwwxwmqwz +10-12 d: dddddddddmddd +1-2 k: lzptzkccbmnpqpc +3-5 j: bjmzzjt +4-10 q: qrjtfzgqdt +8-14 m: mmmmmmsmmmmmmm +12-13 b: bbbbbbbbbbbrz +2-4 p: vppzp +4-8 q: tqqqnvhqprdqrqd +6-8 r: gcrwjcrq +9-13 p: pgppvppppppsp +8-10 n: npnngnndvndn +3-9 h: hwmkhhhnnh +4-12 l: lnllwtrsctgl +3-4 b: bpbbkqddb +1-3 d: dbdsfhnzp +9-10 l: lllllftlllll +3-5 v: vvvvvv +3-5 p: dpvppp +1-4 z: zzzfz +6-7 q: qqqqqcq +4-6 p: pcppppbbfrcfbp +3-8 x: qqxfbxjtmqk +4-5 m: tmmmrmm +9-10 h: hhshhhhhhhhhhh +3-4 b: dbbvbx +2-5 s: sspzssckbzrjjsbbw +5-11 w: wbbzkwnnbpggqprbmzg +5-10 d: dddxdddddtdgdsdd +9-13 p: pnkrpxcspctmwphsh +17-18 b: bbbbbbbhbbbbbbqbbqb +1-3 r: blfcfnrrqkfh +2-5 j: jvjsjj +8-15 x: fxvxkxxxxvxxlxzxb +4-10 k: kkkktkkkkpkkkk +4-5 j: sjjjj +4-6 b: mbbtbb +2-12 p: ppfspvgmvzzpcf +4-5 h: crzbh +13-17 d: qdddddddddddddkdd +6-7 n: pnfzhbg +9-11 x: xpxxxtfhbxxxxt +5-7 d: ddzdxdw +12-18 j: zjlsrtflbpjjljfjjh +2-4 l: qclk +7-8 w: wwwgwwrw +4-5 q: qqqwq +3-6 z: fczcjzpsdddqmbqkz +7-8 z: mkhzjzzl +2-3 k: kdkp +11-12 d: qdqddxdwdbdddddddktw +13-16 w: wwwwcwwwwwwmwwwwpw +6-7 s: sxsjstsss +15-16 c: cccccwccccccccvc +13-14 v: xvdtvghjvkvmvbvvx +5-6 g: gggggpg +6-7 l: lllllzljl +4-10 z: nkczdqzhfz +2-10 x: xlxxxxxfxx +1-7 t: jttglvttttm +7-8 k: hkkkrkkk +9-12 n: wrnnnnnnpnnnnn +3-4 l: llgk +6-7 h: vhzhhghh +8-9 h: hhmhhhhjhmhz +3-4 m: gmrsmm +12-14 s: ssstxhsssssssjnsssf +10-19 l: lllllllllllllllllll +14-16 m: mmcmmmmmmmmmmqmm +11-12 p: fppppptppppqpp +7-16 s: ssssdssssssssssh +2-6 c: zcxcpm +5-10 h: hhhrhjjhhhhnhhhwl +14-15 x: xxxxxxxxxxnxxtxtx +3-8 f: fpffpfkzff +3-7 x: xxxxkxkx +8-9 n: nnnnnnnnnn +6-9 c: pccccqcccc +7-13 s: sssspsrsssssfss +3-6 q: qqqqqq +5-6 d: ddddfz +4-5 p: gpqppdbpcptfpczlpcbm +2-4 b: xbtbjmmxrbfbwbxb +1-7 w: vwwwwwx +9-20 w: wwwwwwwwwwwwwwwwwwww +4-6 d: cdwtdddwtqs +8-15 r: rrlrrndprzrrrrklr +4-19 h: rhhhhcxhhctknztthhf +2-11 r: pvchfrzhgcqxsjx +8-12 m: mqfmqmmmpmmmpmkvzsm +2-5 b: fbmnkrxh +4-5 q: qqrlp +3-4 r: kprrr +2-3 q: qzql +8-16 t: ctktlttttcktxqtqht +10-14 z: zzzzzzzzzpzzzzzzzz +9-12 z: zrvjkzzgkzzrzzqzzfm +2-4 c: ccdcp +4-6 z: zpzrzh +7-10 n: wnnlhdpntvsmrnbmps +14-15 v: vbvsvvvnvvvfvvfvvvv +6-10 w: xwwwwvwwww +1-6 n: nnnnnnn +2-12 g: pgmdgpgggsngpwgvjkg +12-13 g: ggggmgmggggggg +4-7 q: vthqqchfn +2-4 q: qpmqq +10-11 j: pjhjjjjjjjjjvj +1-10 l: lgdgqqgvmnscl +12-13 l: rlmnkmnltzlmlq +4-9 l: lllllgllh +10-16 v: xjjvvvdvvvvvvvvvvvv +1-6 x: glxzxfcxglrcwrwcgl +2-4 t: tttntd +9-16 w: wwwhmwwwwwwmwwwxww +9-11 m: mnmsmmmmmmmm +8-16 h: pnrsxhrhhjlqchnh +9-15 c: cxwmcpnjtrccrcn +8-9 s: rsssnsshnsksd +2-6 s: cfklcdd +6-9 m: qmmmmmmvxmwm +3-6 c: cwctccshc +3-4 x: xpkxffbfkzvjrxb +4-5 r: rrrnrr +10-12 j: jjjjjjbjjkjj +3-17 d: sndddlgljdjckpbldb +5-6 x: wzrxxgxwvdfxnq +7-9 l: hhlflqhxknlnbllkl +8-11 m: wmhmmmmnmmmmm +13-14 k: kknkfkkkhzkkkkkxkkk +2-4 s: skss +2-4 m: mmgtm +2-8 r: qrrdpppvgrrcrrvs +12-16 d: dddddddddrdddddczd +19-20 x: xxxxxxxxcxxxxxxxxxxl +7-10 b: bcfpbmlqnrpcnx +1-14 d: fdpddhdrddqdddqdd +5-7 d: ddddxdvdd +11-18 j: fjxjjjjjjjkmjjjjjgjj +3-4 t: zjtp +2-4 r: rrrdr +9-11 b: bbbbbqbjqgbbbbbhbjq +6-7 f: ffbfffgf +4-5 x: xxxqf +1-7 c: jcnbqbcwcc +13-15 q: qqwqqqqqqqgqrqj +13-14 h: kxkjzplvmhrrhl +6-10 j: jjjjjtjjjmj +4-8 v: vvvnvmvrhb +1-12 k: kkkdrkqhkkdkkhdk +2-5 n: lnfjb +10-12 q: qqqqqqcfqlqqqq +1-16 s: ssssssssssssssscs +12-14 l: nlllsllltllcllll +4-5 p: ppppcxwngtcgkjmpb +16-17 h: hhhhhhlhhhhhhhhnhh +3-4 x: xxxx +3-4 f: ffhff +5-6 t: tntthtth +15-18 f: jffffffnffffffffff +14-18 z: zzzzzszzzzzgmszzzzzz +3-4 n: nfnnnn +1-8 q: bmfhqhqqqqmqqqdz +4-7 q: kqqhtqqjqkqqrxvjzqc +4-5 j: jsjjjjj +12-18 v: vvvvvvvvvvvsvvvvvnv +2-10 f: nfffffffmmhn +1-7 z: zzzxzczzc +1-8 l: jpflllcllqdllckwvrb +7-10 x: xxxxxxxxxz +3-6 t: stftpt +1-5 t: tttzt +2-4 g: gggsgggggggwg +4-7 l: xlllvvlmrlrqfzx +8-11 q: qqqqqqzrqqq +1-9 f: ffcltnxdrdnfnk +1-13 f: ffffffffffffhfffff +13-18 g: gsggggggggggtggggg +6-12 c: xrcrcccccxckgcch +2-9 f: pfcdmnfzjdqjnl +4-15 r: wxrlrfrrgrrbrdvrr +8-9 l: llllllllxlll +1-2 d: dpdddd +4-6 w: wwwpwdnww +1-3 s: vhkzssg +10-13 x: xxxxxxxxxxxxxx +1-7 n: nnnnnnjnn +3-8 x: xvxxnxzx +12-13 l: lllllllllllll +15-17 l: lllzllllllllllklll +10-14 m: hmmmmmmmmmmmmm +2-9 m: mmmvmsntmmmn +6-8 z: zzzzzqzz +1-4 h: gqlhh +2-5 q: wqksgtqxgqgdhgqwcq +17-19 q: qpqqqqqqqqqqqqqqhqq +1-4 z: jzzzz +2-5 z: gznrz +1-5 j: wjjjjj +4-5 h: hhmglhh +2-12 w: nhqwwwtwdbwwmwwwzhw +10-13 x: xxxxxxgxxlrxmtxxpm +7-15 w: ktwhswwhwwwhsqwfw +1-3 h: hnwthhcd +2-5 c: rdcvh +10-13 x: fwxqxxzxnxtbx +3-10 m: dmjmzmqmhbml +8-15 s: wcsswxxbrsdsrpss +4-5 c: cjccvc +9-10 z: zzzzzzzzzz +2-3 h: hhhz +6-7 w: wwgzsjwwvwlgww +3-8 g: gtxgggggcgfg +2-3 m: gmmrsgkmsvslw +10-11 x: xmxxxxxxxmxx +2-17 r: bcrtchxrgrqvrqgnm +7-18 r: rrrxrrrrzfrjrwrrrrmk +7-11 z: zzzwzzwzzzzrz +2-5 j: jmrjj +7-11 g: gkgggqgglmggnggqglqg +2-5 l: rlbkllxctprqflhll +4-13 p: mppprjpnxhrzpbp +14-16 p: pkppppzpppppjppg +13-15 n: jdndnxnnhntnnndsnn +1-2 m: pqmm +4-13 j: jjwjfmmjjjjjjpg +3-4 j: nfht +7-11 f: vfffffzffcff +10-12 p: pppppppppjpj +3-4 b: bbbb +5-9 p: ppqppppppppt +5-7 g: ggggggvg +11-14 z: zvzzfzzzqzkzzzzzzzf +2-5 c: hcgpjqjkpvgcxxrf +9-11 v: vvkvvcfqqvvffgvvvvs +8-9 d: rldntbdcz +15-19 p: ppppppppnpppppppgppp +7-8 w: wwwzwpwzmkxcwwtgw +4-8 z: zzrzzfdzk +8-9 g: gggggggqn +1-7 c: czcccngw +3-12 t: btdtgfclmpttqttctstt +2-3 n: jjglbnnzrjgd +7-10 h: hmhhpxhhhhh +4-6 v: vvvvnv +9-11 m: mmdbmmmqgmrh +2-3 r: rjrrrrrrrl +1-5 q: qjjqfzfq +4-5 z: zbzzc +9-12 c: ccccccccqccc +6-8 d: kdfkdtrv +4-12 r: rrrzrrrrrrrmrrrrr +1-5 h: hhhhxh +9-10 t: cztttttttttttt +15-17 j: jjjjjjrjcjvjfjjjcjdj +4-5 t: tftvt +2-4 d: qddvrp +7-13 p: pdrspdzpcxdcpzzxpwtg +12-13 l: llllllljllllll +13-14 s: sssssssssssssn +5-7 f: lnfsffrfg +2-8 r: krtrhgqnn +3-5 j: jxjjjnflwcjj +6-7 r: rrrrrrmrxrr +8-9 t: tsttqcctx +4-5 v: vvvvcv +10-17 j: jjjjcjjjjwjjjjjjkzj +15-16 t: nttttsttttzttttt +5-7 c: cccclccc +3-4 x: kxkx +4-9 l: zslllldlnql +13-18 f: fffmflfffffhdffffwf +8-10 m: mvmmmmhmmvmh +4-6 j: jsjjjmfs +11-13 h: hfnhhhhhhhthhh +5-13 g: gsqgcgqggfggl +7-8 p: ppjqppppp +11-12 b: tbbbbbbbbbbdb +1-4 q: qqqzq +8-9 s: xssssssns +6-9 p: pppppppppp +3-8 j: jvjjjjjjrjj +6-17 b: bbbbblbfbvbxbbbbbt +3-7 j: jjgjmhjjj +4-6 v: njvgsq +17-18 h: hhhhhhhhvhhhhhlhshhh +8-9 m: mmmmmmjdbm +2-11 x: xxxjdgxpxxwxtvkxxxlm +9-16 n: nnnnnnnnnnnnnnnsnn +17-19 w: wwbwwwwwwwwwtwwwwwww +7-8 n: qwbxqsbmpnj +5-6 j: jjjjqjjjjj +2-4 s: fssg +5-12 l: dgnzdllptvvlx +7-12 x: xwxxxxgxxtxbkx +6-12 x: xkmxzgxlnnxq +2-6 h: vnshjh +2-5 x: dxxqxpvsm +13-14 p: pppppppptpppjp +7-8 h: hthhhxhph +5-12 j: jtjrjcnjjjjxjjjj +1-5 j: jfjjwjj +5-6 q: qqqqqq +6-8 t: ttnttvttt +3-5 n: gksnnn +6-9 j: jjjjjljjj +3-4 d: dbdh +1-5 n: hjhfhrgbcnqn +10-13 l: llwllllllllll +2-3 s: dqss +1-3 l: lwqbqdml +10-11 r: rrvdcgrrwhrpsrzjtrl +1-2 d: bcdd +10-11 v: vvvvvvvvvcq +5-15 z: qcgsnhcrzzdfzpp +1-15 w: cfwzjwcgpwwwwwgwxw +11-12 t: gttfknrmtkbwt +2-4 h: blhhhcgfgmh +5-7 v: vjczvqsjzvpjvplhtdvl +1-2 d: tdjdb +5-6 m: mmzmzg +3-8 n: vwjfpdrn +2-9 c: ccccccccm +8-14 w: jxmpsswkhdpqrw +5-6 q: qqrfcj +7-13 g: hgwgqgrkgwggxggmqq +3-5 h: hnhhvhpjsh +1-12 k: hkkmkkkpkkjk +5-6 m: mmcmfm +12-13 w: wwwwwwwwwwwxw +8-10 q: qwbsdnqqlznvqjqqzqqv +5-7 j: jgjfjwmqmtsszf +4-5 c: cctcmc +18-19 v: vvvvvvvvvvvcvgvvvfq +1-8 j: qjbsjsjghj +14-18 b: bbbbbbbbbbbbbbbbbg +9-15 w: wwwwwvwwhwwnwwcwvw +6-9 d: ckvddldddp +3-12 k: qrnchpsjfcckrjx +6-10 c: ccccctccccc +5-6 z: hzzzzzsz +3-5 l: rvwlf +18-20 r: rrrrrrrrrrrrrrrrbhrf +3-4 c: cccvcc +11-17 s: jssssgszsbtsssslss +5-14 k: kkksxkkkxkxknkkkk +1-3 q: qxgsmqxdgx +12-13 q: qqnbqqqqqqhbqqqq +7-13 s: ksrskrslsjfss +3-8 n: nfnnnndsnnnnxs +4-8 g: lglggflgglgnf +6-14 b: bbdkbbmbgbbrlb +3-7 w: wqwrdpw +5-6 j: mdmjjj +13-16 k: kkkkkxkkkkkkqkdk +4-6 h: jmthbwhhfh +16-19 p: ppppppppppppppppppv +15-16 k: fkzkkkkkpkcrkhkklbkr +10-11 k: sjkkgkhkqfk +12-15 l: jjnlvmsppvlglllvljb +3-13 l: llcdlfllqllqjl +3-7 f: ggfgbvfqlrffxrflchx +13-14 d: ddddddddddcddqd +7-18 d: wdjdtdrdddfndkdddddd +8-10 v: rvvzvvvrvb +9-13 n: rlnnnnlnmbnqwlnmlnn +14-15 h: hwrhcmhwbjhcbhc +6-13 t: ttwtkrrtttdbtt +3-5 w: wkwww +1-6 h: fghcxhwldmnb +1-9 f: ffffffffffffff +10-11 k: kkkkkkkkkkvkkkk +2-3 s: sssw +3-6 v: vzvqmdgrnkvcvz +3-4 j: jztw +4-5 b: bbbbb +1-9 l: wllmxlbxfllllcr +14-15 q: pqgqqngpjzhmmqq +4-7 n: jnznczd +2-8 m: cmpmcmshpbmxb +6-9 r: rrrrrhrrr +15-18 t: ttttktmtttttttvtttt +1-5 s: sssxf +9-17 f: zfmkpffpwqfqffffffh +16-19 d: dddddvddddbdddkdddpd +8-10 w: dwwrpwwwxx +6-11 w: wmdmzzcwwpkkwwwqwnww +4-5 s: zssgf +2-8 v: vvpvvvvvqjv +17-18 s: sssssssssssssvsssj +1-3 d: tddd +1-3 s: tssdbfvnlmtspmwlxxl +6-11 k: kkkkkkkkkkkk +1-5 d: dddddgqddmdkdk +6-11 l: nzgwkmqlpnl +2-6 v: kvzlqgzr +1-2 f: xkqzbcrsdswpf +14-15 x: xxxxxxxxxxxxxwx +16-17 j: jjjvhgjzjwjzjmjnj +5-6 p: ppvppcjp +1-4 w: lwpwwh +15-16 s: ssscsssssssssssd +3-7 b: rpqkbbbb +3-6 d: dddddf +10-15 k: kkckzkbpdfkkckl +2-4 v: wvrvkgfpvvm +15-18 v: vvvmvvvvvvvvvvgvvl +1-2 l: hdfll +1-4 v: wtvd +5-6 v: vvvvzmv +6-8 l: llnllmlns +4-5 b: bbkblbsbnbbbbbbgbbbb +5-6 d: xnjmdwddtfdbzdb +4-10 q: qqlqqqqqhq +4-9 c: rcvctlmccccc +3-5 f: fffmnf +9-14 n: xnznnnnnrnrdlzfsn +6-7 w: wdwkrvwww +10-15 v: vvvvvvvvvnvvvvz +10-11 k: hnjzdwqkmskkx +4-8 c: ccqcqfrcnffbncfkc +5-12 c: cclsmccgcccccxnvcckc +5-6 z: cwhbkskzhnzztzzlhz +3-5 v: vkvjvv +3-4 j: jjjj +13-16 h: khxhhhrhkhhhhhhhwhhh +1-3 f: jxdxffjfprs +1-11 l: gllslllllxqlltlmh +8-11 g: kggggvnbkqgbfbgdsgwg +6-7 z: zzzxzfz +3-7 x: xqxjjxxlb +3-4 v: vtdv +7-10 w: wwwwwwwwnww +4-8 w: kgwwwwwwpx +3-5 g: ggggggs +4-8 w: gwwwgzxb +9-10 t: ttttttttmp +3-8 f: fpjdffffzflffmlxfq +11-13 g: gggtgggsggbbzggg +1-5 p: pptcp +13-14 c: cccccccccccccnc +3-13 n: gbjnnqxnjprnhn +5-6 x: qxxdknx +8-9 q: kmlfqxcvqqsqkvtm +3-6 n: xndnvn +6-7 s: scxccsjssstw +14-18 d: dddddddttddddfpddbd +18-20 d: sgljbkdxhvckddpbjdld +5-8 m: dpmnmfmmpm +6-9 w: rfdwwwplw +5-7 b: vbdrcbbgqbspbbv +18-19 b: bbbjbbbbbbbbbbbbbsb +11-12 x: xxxxxxxxxxzjx +6-8 d: dqhgrddhddxdn +6-16 p: dppbbzbpxxpphjppkpp +3-4 k: khkkt +1-2 x: xpwkvcxxqrn +1-4 n: lnnngnnnns +1-11 c: cczvdcgcpcrccpzw +15-17 h: hhhhhhzhhhxhhhshhhh +7-8 t: fttttttt +5-19 z: zczzczmczwzpzblzvxzz +4-8 l: zlpdjnsllkgkjglmnll +9-12 s: spwssjsssdstjssf +8-10 h: hhhhfhhchh +4-11 q: qqqqsqqqqqdqqqq +14-15 w: wwwqwwwwwwwwwmjww +1-2 b: blcbhdqfsbmnq +1-5 m: mlrdhdkfjnknxlw +8-9 r: rrrrrrlhc +9-13 d: ddddddddddddd +2-3 p: tpxpjgpcf +1-2 f: ffff +5-8 k: cdkkgbvfwkkskkw +2-3 r: rrrp +6-10 b: bbbbbdbbbbbbbbbbb +10-12 t: tttttttttgdxt +3-4 k: kjkrkmcmvr +8-10 b: zbbpcwgbsbwdz +2-10 v: zqvdtnxvvcvlrvq +3-4 b: bbbbb +13-16 t: ttttmttttttttttwttt +16-17 n: nbnnnnnnnnnnnnnsgx +8-10 f: fmfsffhjcfzffcxw +7-13 m: mmvmrlmtzmbtmmxcsmm +8-9 m: mmmmmmmmm +1-7 n: nnnnwnpnnn +6-7 z: xzzzhpz +3-4 n: bnnn +5-17 r: rrlrrbwzmkrrhrrrrhnr +9-13 t: ttntttttttttc +11-12 w: wwwwwwwwwcwsw +1-10 j: ljhjjjdgjmj +9-10 c: cccccccccx +3-5 h: hfhhh +18-19 q: qqqqqqqqqqqqqlqqqbqq +1-4 b: pnjntrscpklzfcdl +9-11 c: nrxscrjjcrzc +9-12 q: nqpqqqqqqqqqqc +5-15 k: phmcmnhbckwkvwkb +2-4 t: dtrtmtb +4-5 j: jjjjp +8-9 m: mmhjmmrsqmm +4-5 r: rrsrrrr +6-10 w: wwwwwgwwww +13-18 m: mgmmvmmmkmmmmmgpmfm +10-11 d: ddxdldwdddddzdvrd +3-15 k: mxxgjklzzdbtgddzwrx +9-11 q: qqqqfgqqqqwqqq +2-4 g: gdhthpp +1-11 r: srrrrrrrrrrr +13-14 x: xxxxxxxxxxxxxs +6-17 f: ffvffkffffffffffjf +3-12 m: kmmmvbjlmmmf +9-20 n: nnnplnnnnnnnnnlpjntn +8-14 f: cjflffftftnffd +2-7 b: kbzbbbbbbqb +10-12 n: nnnnnnnnnnnk +7-8 z: zxzdzzzclnjzj +3-11 l: llldlsmltklz +2-5 s: swwxrpscmmhzsgrvnl +1-13 p: kzwjlpfhpskzpsrp +13-15 f: gffffdffkhfffvffjffb +6-7 d: drddddd +4-6 p: pppphpj +12-18 k: jkkkkkkktkzkkxkkfgkn +8-9 j: jjjjjjjpc +5-7 d: ddlkxdmndmdkkhwd +10-11 l: vlllhllfhll +5-6 b: bbjbvbqrjb +17-18 d: dxdnddddddlddddddl +15-18 d: dddxddwwddddddnddd +1-12 x: sxxxxxxxxxxtxxxxx +3-9 k: rfkrnjxxkkm +9-12 n: xnnnnnnggnnln +5-8 w: nwpwqwwwlfwmj +3-11 p: sgprfdprpmqpwvps +5-6 x: sxxhxxkx +11-14 h: hhhhhchhhhhhhh +2-3 p: kxpllmpvfxq +4-14 k: qkpfkskhglhkzkck +3-6 q: jsqbdqq +8-9 n: nnnxnnnnpnnn +12-14 h: stshhhwxhcvhhg +5-8 j: jjjjjjjj +10-14 h: hqlqhxzmdnfzhhhwxnwj +1-8 r: qmlvfqvrbgfrrmppkzwv +3-9 v: hhvnpvvvdvktgbcrr +6-8 q: qqqqqqqp +9-12 l: lxklkwplllvlmljlfll +11-14 w: wwwwwwwwwwwwwpw +6-7 c: cccqrccc +3-6 d: wddgdzd +3-8 d: dddppddddddddfd +5-9 g: jlxgxgkggpg +6-14 b: jbljlvjtqkbbzlpvxmf +2-3 x: nnbx +6-7 q: qqqqqbfqqqq +2-3 n: xnmnnfb +13-14 p: pppppppppppphr +8-11 k: kkkkkkkkkkk +4-5 r: rrrsr +13-19 t: ttttttvtttmttttttbt +8-9 r: rrrlrrrwr +3-6 c: flfhnccccwvtmqz +8-12 s: xshssnnsskcsjsssgs +1-4 r: vzkpphvtwrxgr +11-13 c: ccccccccccqcc +3-5 v: fvvjvzgt +1-4 j: sjjnsjjj +3-6 s: sxsqnfbmssbfnjs +12-15 p: pnppppppppppkpp +9-13 l: wlldrllklllllkl +2-3 s: swsrljzrns +8-9 b: bbbbbbrwb +16-20 f: ffffffhffffffffsffff +5-9 w: wwwwswwwww +7-9 q: qbqqqtqqkd +6-8 z: zzzzzzzz +5-10 m: zlmmnmrgkmtm +1-5 n: mnnflnn +4-8 c: cpccbgccc +9-12 j: jjjjjjjjwjjjj +3-4 s: tdhzbsqsb +15-19 t: tthrqtttttttmtttttx +11-12 b: bbbbbbbbmbjcb +1-13 f: ffqfkfftfjrwfkfm +14-15 v: vvvvvvmvvvvvvdv +4-6 h: qvchkhhccnxwpvhhhb +2-8 k: kskkkxkkkkk +3-10 j: jjjbjjjjjpd +4-13 z: svkjzrfrtftftqhhc +18-19 p: pppppppppppmpppppmd +5-14 b: bbbbcbbntbbfbpbd +5-7 q: qqqqqqq +2-17 j: jbjjjjjjjjjjjjjjcj +1-5 z: zvztgv +4-5 k: kkkrkp +3-5 c: kgmccc +2-8 h: rhhhnhhxh +1-18 s: sbrblpcrxsvdsjrnwwws +6-10 q: qbqqzqqhbdq +1-3 d: sdwgdn +3-6 s: ssssssss +2-13 f: ffffrrfffflbvffff +5-7 w: pxwnfnwzj +17-18 z: zzzzzzzzzzzzzzzzbzzz +7-8 p: pplplpbfppp +1-8 x: xxkzdxzx +3-4 p: jppxp +4-6 j: jthbzjmqjzj +1-12 x: xxxxxxxxxxxxxx +8-19 g: ggggggqgwmgggwggmlg +5-9 b: bxbbbgwbbnxbhbbb +5-6 n: nnnnnd +5-9 b: bwjxbbwbb +4-14 d: ddlddkdddddddl +2-3 t: jqjt +2-3 h: shhp +12-14 p: ppppppxppjfmpdzppp +7-10 f: lnffvfcfzffffft +3-8 s: lqhrstvsr +15-16 v: vvvvvvmvvvvvvvvvv +2-4 h: hhhh +5-8 g: wmtxgdgg +3-6 r: rfrrrg +8-12 q: qqqqqqqqqqqq +4-9 z: zzzzzpzzw +14-19 g: gdggggggggbggtcggggg +5-11 n: nnnktnnlndgnnnnn +5-6 n: nznnnqn +3-4 q: qqlq +12-13 g: ggggggggggggg +16-18 w: wwwwwwwwwwwwmwwxwv +6-10 b: bbbbbmblbg +8-13 m: mwmmmcrmmmtsm +12-17 h: rhhhhnhhhhhlhstkhhh +9-10 q: qqqqqzqqgt +2-6 v: vvfvpgw +8-13 w: mwlxrpbwwwgcwwgn +1-10 m: mmmmmmmrmxm +6-8 f: fgvfgfftfffq +2-6 g: gcggrg +1-6 x: zxxxvxx +1-3 t: txtt +1-2 q: qdqn +6-7 j: jjjjtjjj +13-14 r: rrwrrwrrrrrrrfrr +3-4 j: jjjpj +12-13 v: vvvvvvvvvvvvv +4-5 t: tttcw +4-6 s: sssnxs +9-11 x: xxxxxxxxcvx +1-4 d: lpddds +1-9 t: hbtttttthtt +1-4 z: bsjzz +2-5 t: xrtptqt +1-3 l: lllll +7-8 m: mmmmmmmj +11-13 f: ftffqffffgfszfff +4-5 j: ljjbjbjjjj +3-11 n: nhnnnnnnjnnnnnbmnqnn +3-12 s: swgnlssszsqsvfjwxt +8-9 f: ffffffffn +3-4 t: gtmt +8-9 s: spsmnswlt +7-8 j: jjjnmjjjdjjjqj +9-10 j: jnjljjjjfgj +3-7 x: xrxlbhcxmswlpx +9-11 x: xxwrxxbxxxn +16-17 d: dbddddmtddddddddddd +5-17 n: cnnnhnnnjnnvnsnnwgnn +7-8 m: mmmmmmmm +11-12 l: lllklllltltmllllll +4-5 r: rrrrr +7-8 j: jjjjjjqqjj +10-12 g: gggtkggggggkggg +1-5 h: fxxphhz +1-3 q: jlnq +4-5 s: fssss +16-17 c: cccccccccccccccqc +12-19 q: qqqqqqqqqqpqqqqqqqpq +7-13 s: gmzvssjsfssjssssx +3-4 s: ssxs +15-19 d: ddddddddddtddddddqdd +5-7 l: lllxqlkl +10-11 x: xmxxxxxxxfk +9-14 q: qqqqqtqczqqqqq +4-8 w: zwmllrwmwmwqwww +1-4 l: llllz +14-15 j: jjjjjjjjjjcjjjrjj +10-13 x: xxxxxxxxhbxlzx +6-7 f: fffffdj +9-10 w: msdcwqzwhj +4-8 c: ccccxccccckcccccccc +5-11 r: xffrjsvrjzfrrcrpfbr +2-5 z: zzfwrn +10-13 r: rrrrrfrrrhrrh +5-10 d: dddddddddddd +4-5 z: zzzfs +9-12 t: ttttttttlttt +3-4 r: lpjrr +2-9 v: kkxvvxkvgjtsjtvv +1-8 v: lprgtpvvv +4-6 h: hhhnhfb +2-4 h: hhpxh +4-9 d: bhqdmddrd +2-5 w: wwgtwt +6-7 z: zzzzzszz +4-5 z: zzzzm +12-14 d: mddrddddddrdddddd +9-11 h: sdhzhvhhhkhhhb +2-3 b: zbbtbbqhm +4-11 b: bnbqqbjbbzp +9-10 n: nnnnnmnntj +11-17 w: wwvwwwwwwwrtwwwwdw +1-4 t: svbtbxvptfp +4-5 w: vsbjw +2-7 m: mmpmmmg +11-12 j: jjjjjjjfjjxjjm +6-8 r: rrzrcmrvrr +1-3 n: nqxnzhq +3-4 n: nnnkj +3-5 f: kfffhfthfhf +3-5 m: gwszmmm +1-7 c: tbscmrfbmccrqxzdb +13-14 l: lllllllllllllnll +4-10 k: pfbwsjvfxkxhfzktdj +2-6 f: ffffbf +4-7 w: wwgrwnpbswnz +5-6 z: zzszzzz +8-13 p: zpppppgbjpppcpp +6-7 q: gpqqvwtkxwqjtqdqq +14-15 n: nnnnnnnnnnnnnkn +3-6 q: rkqmjqg +5-6 t: ttttkq +4-6 r: srrsrrprr +1-8 v: kvvvvvvxvvvvvvvb +5-6 z: zzzzzz +3-4 c: cccccbpsp +3-12 c: stvxclcbrcjjcgcxlwtq +13-14 r: nrrrrxrfrrrrrzd +2-3 r: rmfwl +1-4 q: qqhq +11-13 z: zzzmvzzzzzkzzzzzzzz +4-8 h: hhhxhhhh +2-3 b: fpbhn +7-10 v: vgwvvvgvvvvvj +1-4 m: msmk +11-12 d: ddddddddfddddd +15-16 k: kkkkkkkkkkkkkkkk +8-14 m: mmmmmmmwmvmbmmv +10-12 m: mmmmmmmmmlmm +2-7 w: cgbmsww +6-8 t: ttktttgw +4-14 z: vsvmwzvhfzxkfzz +2-4 f: ccgmfhrls +10-11 k: kfxlsfdkbdkmjptqhh +6-16 x: nbxxdxwsxxsqmfxqrxmk +9-17 j: vjjjjvpjgfjxffjxjd +6-9 g: gvpxggggqgg +6-8 t: tttttztft +5-11 q: prklqxrfxjdvgsq +8-9 k: kkkkkjknk +2-4 c: chccl +2-3 x: fxpr +1-4 v: rzvvpvxp +3-5 j: cjfrjldr +3-8 t: zbptntzp +2-7 c: cccqkcfzgcffssgrcsc +5-6 q: qqqqdr +2-6 h: hxfhhghhhk +1-3 v: lvnhv +5-6 r: prrrrw +11-18 z: zfzzzzzzzzdgzzzmzzxz +5-10 x: kxrncghxldxffzbx +17-19 k: kkkkkkkkkkkkkkkkjkkk +7-9 h: hhmhhhdhh +15-16 x: xxxxxxxxxxxxxxxx +4-5 c: nzjchwccgbd +5-6 r: rrrrjrrrr +9-13 c: ccccccjclcccc +6-7 z: zjzfzzzszvzz +6-7 l: llllljll +6-8 m: mmmmmmms +3-5 p: pppppp +14-15 m: mmmmmmmmlmmmnwmm +6-11 b: bbbbbbbbbwb +8-10 g: ggjgbgpgggggggdcgb +9-16 b: bbbbbbcbkbbbbbnbbbbb +10-11 f: dfbffxfnfksfffrw +10-11 h: hhhhhhhhhhq +5-17 v: vvvvjvvwvvvvvvvvvvvv +2-14 x: xgxxxvfcxxxxtbgxkx +1-3 k: kkjbm +18-19 d: dddddddddddddddddxx +5-9 h: vhjzhkjbhl +1-4 k: kskk +7-12 l: lcljknlllclvlldrlpls +14-15 w: wwwwhwwwwrhwwvq +5-6 t: wtvdtmqfbnt +1-4 v: vhvvvv +8-10 n: nnqcnzrnndnjnnnkn +6-8 h: hshhqhhdhhfcj +10-15 j: jjtjjjjjjfzjjjj +3-5 m: mmdmm +10-11 n: nnnnnnnnnng +6-8 p: fzpgppzpthqcthhst +1-7 p: hzxthvpfnpnrzfpvmv +10-11 l: llllvswlllll +1-2 q: jffqfzd +1-3 x: xljxfw +5-6 z: fmzzgl +2-6 v: vbvvvzv +8-10 r: rrrrrrrnsr +1-3 c: crctc +8-10 m: mcmdgxhmhnmmwmzmmg +4-5 h: hdhhhh +1-2 z: vzzm +5-10 z: zzzvnzzzpz +2-5 f: gfffdff +1-4 g: lgfgg +2-4 w: swww +2-6 c: ccscdz +6-7 b: bbsbbbjb +11-16 s: bssrqsslssbcssjrxjk +5-8 c: ccjmcqcglj +13-18 l: lllllmvllllxlllllz +6-7 l: lllllll +5-6 v: vvvtvvvv +4-11 v: vvmvwhvvrkd +4-7 n: knlwnmnnnn +5-6 p: cqmfxppptplkpp +7-11 c: clccnptxmcncrccjcc +1-7 h: fhhfhhzd +1-11 l: llflllllllllll +3-4 g: gmgl +15-16 j: wjjjjjjjjjjjjlhjcjj +2-8 v: gtvvmgvvbtf +3-4 t: fpttgzttwt +4-8 k: klkkkgkkkk +2-8 p: wsdgtplp +9-11 q: qqqqqqqqzqv +1-2 n: nswlnnngxsj +4-5 p: dgpppkjhvgpgppp +10-17 j: jjjjjjjjjfjjjjjjk +2-3 l: lbll +6-7 n: nhwnnnc +3-4 s: ssws +3-9 v: szrvvcxzv +2-4 p: pgzph +4-6 g: rxnjtpggwggglp +10-16 v: vvvvvvvvvvvvvvvjvv +7-9 j: jljjjmjjj +6-11 w: wwwwwqwgmwfwwkw +12-15 w: wqwwwwtwwxwwwfwww +8-11 v: vvvvvvvvvvd +7-11 g: dcgpcggpgxggdphgm +3-5 w: wwrwg +9-16 b: bbbqbbbbbbbbbbbbb +7-8 n: tnnnnnnnnn +3-5 c: ccsctcm +10-17 f: rfsfffffvffjfnkfq +6-11 f: fffhffffffp +10-11 n: hbsnnnntnppdnnzj +3-4 x: ngxbxxx +6-11 t: ttbwkznllhtntbdtltt +5-6 s: sssssms +15-16 c: ccccccccccccccqc +3-5 h: jzslhlhh +7-12 m: mxmjmjmmmmhkm +7-9 r: mtbfxlrvrddrvgxrxxr +14-20 m: gmmlpvclmkvfkmjdslvm +11-17 v: rqvvtmktpvckpvvvv +15-16 b: bbbbbbbbbbbbjblbbc +3-5 z: vpsgzfzvxczbnzw +5-6 j: shlfjc +10-16 b: bbbbbbbbbbbbbbbsn +1-7 j: jjjrkrdq +14-16 x: xbxxxxxxxxxxxjxxx +2-6 b: vzpnbbpqfbbvcbmbchm +10-16 x: xxxrxxxvxxxxxqxxxxk +10-12 j: jjrkjjjjjjjjj +1-5 l: lxfslmj +10-16 s: ssssssssssssssszsss +12-15 r: rrgrrrrrrrrcrrr +10-11 c: ccctccccccj +13-14 f: fqgsffffqffffvfffff +14-15 f: ffffffjffffffqff +8-14 q: gtqqjqqwwxqvprdqpcqq +8-11 f: lqqfqpmffffgcs +6-8 f: frfshkfklf +10-11 w: wlwwwwwwwwrw +2-5 q: qqmmqmmqqq +8-9 g: cjgscgwtg +1-3 w: wljwwvjdcwnkmn +4-5 q: qcqqxq +11-18 g: gqgggvgggghgkggggggg +8-12 z: tbmbzbzhnppz +2-3 t: tzttt +2-5 s: zjlsssssmsss +8-16 w: mwwqwrwwskwcwwbww +3-7 t: ttwttttt +1-4 p: ppclpbpppp +7-9 c: cccccckcxccccc +9-13 g: dgggggcgrrggggggg +4-5 v: vvvvvvvvvvvvvv +15-16 l: lllllllllnlllsqkl +2-6 p: pppjptvpkxp +11-18 j: jjjjjjjjrjcjgjkjjhjj +2-6 x: znkxkc +14-15 b: bbbbbbbbtbbbbssbt +3-8 b: bszbbvbb +15-16 t: dtttttttxtpttttrttt +10-11 b: bwbkqbvdbvj +14-17 k: krjwkfgsqkzjklkkkvxg +13-16 d: ddddddddddddqddd +3-15 s: jmsnpmldstjngfmrp +1-6 s: stssssn +8-12 b: bbbbbthpwlbb +3-4 r: rdrf +10-11 l: glllllllllk +7-16 m: vxjgnbmmbzsxlhblj +4-7 b: bsthbwjrkbmptb +5-7 q: qqdmjqqqq +2-16 v: rvvvvvvvvvrvvvvvvvv +2-3 n: nnnbm +13-16 v: vvvvlvvvvvvxwvvv +4-6 c: nccccccs +10-14 q: qdgsqqqqqqqqqqqnq +4-5 g: gjghg +2-7 f: fffffqdf +15-18 f: fxffffdfhflffbfxff +7-9 w: gpwwcwwwlwbwfkdw +14-17 q: qqjqqqqqqqqnqhqqrhqq +1-4 d: djdqkdkddlvdqdt +4-9 w: qwsvpbwdcngsww +4-9 b: bbbbbbbbb +6-15 g: gmdhggngqdfgqsggsvg +9-16 b: bbbbbbbbdmtbbdbbc +8-9 k: kkxkkkdkkkzkdp +1-8 b: bbxbdbnbjcbbb +15-19 q: qqqqqqvqqqqqqsqqqqq +3-4 t: tttt +2-5 j: bjjjj + diff --git a/02/part1.js b/02/part1.js new file mode 100644 index 0000000..37aca02 --- /dev/null +++ b/02/part1.js @@ -0,0 +1,33 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +let re = /^(\d+)-(\d+) (\w+): (\w+)$/i +let valid = 0; + +readInterface.on('line', function(line) { + let result = re.exec(line); + if (result == null) { + return; + } + + let min = Number(result[1]); + let max = Number(result[2]); + let match = result[3]; + let pass = result[4]; + + let count = 0; + pass.split('').forEach(x => x == match ? count++ : null); + + if (count >= min && count <= max) { + valid++; + }; +}); + +readInterface.on('close', function(line) { + console.log(valid); +}); diff --git a/02/part2.js b/02/part2.js new file mode 100644 index 0000000..c93458f --- /dev/null +++ b/02/part2.js @@ -0,0 +1,30 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +let re = /^(\d+)-(\d+) (\w+): (\w+)$/i +let valid = 0; + +readInterface.on('line', function(line) { + let result = re.exec(line); + if (result == null) { + return; + } + + let pos1 = Number(result[1]) - 1; + let pos2 = Number(result[2]) - 1; + let match = result[3]; + let pass = result[4]; + + if ((pass[pos1] == match && pass[pos2] != match) || (pass[pos1] != match && pass[pos2] == match)) { + valid++; + }; +}); + +readInterface.on('close', function(line) { + console.log(valid); +}); From afcc6c26e339f8abce972d3a5ea1659ffe1f6c88 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Thu, 3 Dec 2020 18:30:42 +0000 Subject: [PATCH 03/14] Day 3 --- 03/input | 323 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 03/part1.js | 52 +++++++++ 03/part2.js | 57 ++++++++++ 3 files changed, 432 insertions(+) create mode 100644 03/input create mode 100644 03/part1.js create mode 100644 03/part2.js diff --git a/03/input b/03/input new file mode 100644 index 0000000..49c14b1 --- /dev/null +++ b/03/input @@ -0,0 +1,323 @@ +..#.#...#.#.#.##.....###.#....# +...........##.#...#.#.......... +....#.....#..#.............#... +.#....###..##...#...##...#.#..# +#.......#.........#..#.......#. +...#.##..##...#.#......#.##.#.. +#.#..##.....#.....#..##........ +...#.####...#.##...#........... +.#...#..#..#....#.#.#.#.##..... +##.#..#.##..#......#..##.#.#..# +.#.##.....#.#...............#.# +..##.#.....#.....##..##.#....#. +#..#..........#...##........#.. +#..##.#.#...............#..#... +..#....#...#.......#.......#... +.........#.#.##.#........#..... +#...##....#..#.........#.#...## +...#.#...#...........#..#...#.. +...#..#........#...#........... +.#....##.#...#.#....#....##.... +...#...#......#.#.......#...##. +####..........##....#.......... +#..#........................... +#....#...####..##.#......#.#... +..#..#.....##.....#...#....#..# +#.##......#..##........#....... +..........#.....#...#.#.#....## +....##...##..#........#...#..#. +#..#..#...##..............##... +###.##..##.###...#....##.#..#.. +.#......#.................#.#.. +#.#..#.##.#.#.#.....#.........# +..##......#.......##........#.. +#..............#.##.#.....#.... +............................##. +..#.##......#..........#....#.. +..##.....#..##.#....#.......##. +..#.#.##.#.........#........... +...........##.#.#...#......###. +#....#...#........#.#...#.#.### +..............#...#.....##....# +#...#...#..............#..#...# +.##..#.........#.##.#..#...##.. +.....#.........#..#..#.......#. +.#......#.#.#....##..#...#..##. +#....................#.#....#.. +......#.....##............#.... +.#.....#......####.....#....##. +##.####.#..#..........#......#. +##....................#..##.... +.....#...#.#.##.#.###.....#.... +.#..#...####.#.#...#.#.....#... +#.....##.........##.##.##.....# +....#....##.###.........#...### +.......#........#.##.....#####. +...#.##..#...#...####.....##... +..#....#....#......#......#.#.. +...#.#.#.........#.......#..#.. +.....#...........#.#........##. +..##...#.#.##.#.#.#...###.#.... +..##.............###....#.#.... +#.......#....#..#...#..##..#... +....##..#.......####....#..#.## +##....#...#.#.#...#...#........ +....#.#................#...#... +...#.....#.#.......##....#.#..# +#....##.#...#.#..#.#.........#. +#..##.........##.....#...#..... +....#.....#.#..#..##..##.##...# +#.....#...#.#.#.##....#.#.##... +.#.#........#..##.......#...#.# +..###.....#..#.##....#...#....# +...#..###...#...#.......#..#... +.#....##.......#.#..........##. +...#.#.............##.....##... +..#..#...#.....#...#........... +.#.#......#.##....#.....#...... +........#.#.....#.#...#..#.#..# +#.....#.#.....#.##..#.#....#.#. +..#..###.#.#........#.....##..# +#.#....#......#.#....###..#...# +...#.#....#..#.##.....#...#.... +....##....#.#...#.........#..## +.#......#...#.............#..#. +#........#........#.#.....##... +..##..#.##..#........#......... +.....#...#...#..#.....#.#.##.#. +..#..#..#.........#...#.......# +....#.....#.......#.##.#.##..## +......#.......##...#......#.... +....#....##.......###.#......#. +.....#..#.#........#....#.....# +#...#...#....#...###........#.. +#...........####.......#.#..#.# +..###....#..........#...#.###.. +....#.#.....#....#..#.....#.##. +...##.#..#..#.......#......#.#. +....#......###..#.....#.....#.. +.....#.#.#.....#.##.#....####.. +.##....#.....#.#....##..#...... +#..#.....#..#...#....#.#....... +.##.#..####..#.##.#......#..... +......#....#.......##.##....#.. +...#....#....#..##.......##.### +..##..........##.............#. +.#...#.#...##..##.....#..#..... +....#.#.##...................#. +.......#.#..#....#.....#....... +.#.#..#....####...#.#.##....#.. +.#.##...#..#..#...#.#.......#.. +##.#.....##.........#.......#.. +.##...#.....#.........##.#....# +.............#..#............## +...##.......#.....#.......#.##. +##..##......................... +.##.#........#........#........ +.....#................#.#...... +.............#....#....##....#. +#..##...##...#..#.#............ +.......#...####.#..#..#.....##. +..#.#..#......#.....#.#.#.....# +...#..##........#..#.#....#.#.. +.#.....#..###..#....#.##.#...#. +#.#..#.##.#..#......#.###...#.. +##..#.#..###....##.#...#...##.# +##..#.........#...##......#.... +#.#...#.#..#..........#.......# +.......#.#.......#.....##..#... +........#..##............##.#.. +........##.....#........#..#... +#..##.#..###......##........... +..#.....#.#.#....#...#.#..#..## +#...............#.......#.#.##. +#..#.....#....#............#.#. +...#....#...#....#..#..###..... +..#....#.#.....#..#......##.#.# +.#.#....#..#...#....#........#. +..##....##....#.....#.#........ +.#...#....##..##.....##.....##. +.#...........#....##...##.#.... +...#.....#......###.##.#....... +......#.#..##.#.#....#...#...## +....#...###.##....#.#.....#.... +.......#.....#......#.....##..# +.####.#...##..#....#........... +................###...#....#..# +...#...#.....###.#.##.......#.. +..#....#...##...#.###......#.#. +#...#......#............#.....# +#.........#...............#..#. +...#.##.....#............#..... +........#......##..#..#..#.#..# +....#....#.....#.#.....##..#... +.....#....#..##.....#.......... +.##....#..#...........##....... +#......##.....#...#.....#...... +...#.....#......#.#....#....... +...#................##...#..#.. +........#..........#....#...... +......#....#.#.#...........#.#. +.#............#....##.......##. +#.......#.....#...##.#..##..... +.#.....#.##..#..#....#.#..#.#.# +....#...............###........ +#####...........#..#.......#..# +...#.......#...#.#............# +#...#..#.#...#.#...#.##.....##. +.#..#..#..#.....#....#...#..... +.#...#......#.......#.........# +.#....#.....#...#...#..#....#.. +#....#....#.......#.....##..... +.#...#.#.##.#....#..##........# +..##...#............#.......... +..........#..#..#...#....#..... +..#.......#....#.....##..##.... +.#...#......#...#..###...#...#. +..##...#......#...#.#.#...#.... +.....#..#.#.#.#.#...#....##..#. +##..#..##....#.#........##.#... +.##..#.#...##..#....#..#....... +.....#...#...#..#.#..#......#.. +.#.....##.##..#....####..#....# +......##.................#....# +....##.......###...#.##...##.#. +...#...#.................##.#.. +.#.....##...#...#.....#.....##. +##.........####..#...#...#....# +...##.....#......#.###..#...... +.....###..##.#.......###..##... +#....#...#.#...#...#.#....#..#. +#...#.........##.#.........###. +#....#..###..........##........ +.###.....#.#.....#........##..# +....#.........##..#..#.#.#..#.. +..#......#...........#..##...#. +...#.#..#..#...#.##..#..#.....# +.#...#...#....................# +..#..##..#.............#.....#. +.....###.#.#.#...##..#.##....#. +..#...####..##.#....#...#...#.. +.....#..#........#.#.#..#.##... +#.#.........####..#...#.#...... +..............#..#........#.... +....#........#......#.........# +#..#.##......#.#.......#....#.. +....#..............#.#.#..#.... +#.#......#.....##.......#..##.. +.#.#..........#....#......#.... +.....#.......#.##.....#......## +...#...#.##.............####... +..#....##...#...##..#.#..##.#.. +..#.........##.......###.#..... +..#.........#####..##...#...... +..#.#...#.......#.####......##. +......#.#.#....#......####....# +.###...........#...#..#..#..##. +..#...#..##.##...#.#.##.....#.. +.....#..#....##.......#...#.... +......#.....#.........#..#..#.. +...#..#.........##.....##.#...# +....##...#......#..#.....#..... +....#..#....#....#........##... +##.....#.......#.....#.#.#..#.. +.....#..##.....##.##.#......... +.#.#..##.............#.#....... +......#.##.#.....#.#......#..#. +..........#.#..#....#.#.#.#..## +...##.....#..#...#...#...##.... +........#.#......#..###..#..... +..#.##......#.......#.......#.. +...#....##.##.........#.#...... +......#....#.#.........#......# +.....#...#....#...#......#..#.. +.##...#......#.........#...#.#. +..#.#.#......#....#............ +..#.....##.............#.##.##. +#......#......#...##.......#.#. +##........#.....#.............. +.#.###.................#.#....# +........##.#..##........#.#.... +.......###...#...##.#..#....#.. +.#..#....#..#......##......#... +.#...#....#..........##..##.#.. +.#..###.......#............#... +...#.....###.#..#........#.#.#. +...#....#..#.##..........#.#.#. +.#..##..#.....#...........#.... +#...#...##....#..#....##....... +#..#......#................#... +#..##....#.#..#......#.#.#..... +##.#..#...#.....#.#...#......## +#....#.#.#....#.....##.....##.. +....#...##.#...####.#.#.#.#..#. +.....#.#....#..#.....#..#...... +.........#.#................... +........#.....####......#..#..# +.#.#.##.#...#.#......#...##.##. +.#......#.#.#...#..#.......#... +..#......#.##.##.#.#....#...... +..........#.#...###............ +.##..#..#.#.#..#.....#..#.#.... +......#.......#.#..#.#....#...# +.#.......###......#...#.#.#.... +.............##..#..#...#....#. +....#......#.#...#.#...#...#... +..#....#.......#.#..#..#.#..#.# +.#..#.#...#.....#.#...#####...# +.##............#....#.......... +#.......####...#.#.#........... +...#.......##.#..........#....# +..#.#......#.......##.....#..## +#......#.###..#......#......#.# +##....#..#....#.##....#..#..... +...##...#.#....#.#.......#..... +#...####....#..#.#..#.##....### +.....#..#..........###..#...... +.#..#..#...#....#.##..#..#..... +#..#.....#....#..#.##...##..... +.....###.#..#.......#...###.##. +#..#........#.#..#.#.........#. +....##........................# +.#....#.#.#.#.#...#......#....# +#....#...#.##.......#.#.###.... +..........###..##....#..##.#... +...##..###...#.#.#.......##...# +##.#...#..#.....###....#....... +..#..##....###........##....### +.....##..#...#..#.....#..#....# +#................#....#...#..## +#....#.#....#..###.#.#...#..#.# +........##.#...#.#.#.#...#..... +..#..###....#......##.#...##... +..#..##....#.##..#.....#.....#. +.#.#...#.....#..#..#......##.#. +........#.#...#..##....#..#.... +...##...#...#...#...##...##..#. +.......#..#..#....#.#..#...##.. +.#.....#.##........#...#.#..... +##.#..#....#.#....#.#....#...#. +..#.#......#.......##...#....#. +#.#..####..#........#.......### +....#.......#.......##.#...#.#. +..#..#.#.............#..#...... +........###.....##....#.......# +...#.....#...#...#....#.###.... +#...##.#........#..#...##..#..# +...##..#....#....#.#.#...#.#... +#......#.....#....###......##.. +.....#.........####...##..#.... +.......#...##...#..#..#.#...... +.#.#....#.....#.......#........ +...##...#....##..#.....###..... +.#....#........##......#....#.# +.........#.#.#.#...........#.#. +....#.#..##......#.#.#..##..... +.........#.....##....#......... +....#.............#...........# +...#..##........#.....###...... +#....#....#......#..#..#..#.#.. +#......##.....#..#....#..#.#... +#..............#....#.#....###. +..##..#..#...#...##........##.. +..#.##....#..#......###..#..... diff --git a/03/part1.js b/03/part1.js new file mode 100644 index 0000000..5b05fb7 --- /dev/null +++ b/03/part1.js @@ -0,0 +1,52 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + + +// array of arrays of bool. Coordinates are [y][x]. True = tree. +let map = []; + +readInterface.on('line', function(line) { + let row = []; + + line.split('').forEach(function(char) { + if (char == '.') { + row.push(false); + } else if (char == '#') { + row.push(true); + }; // ignore any other character + }); + + console.log(line); + console.log(row); + + map.push(row); +}); + +readInterface.on('close', function(line) { + let treesHit = 0; + let x = 0; + let y = 0; + + while (y + 1 < map.length) { + x += 3; + y += 1; + + if (x + 1 > map[y].length) { + x -= map[y].length; + } + + if (map[y][x]) { + treesHit++; + } + + console.log(x, y, map[y][x]); + } + + console.log(treesHit); +}); + diff --git a/03/part2.js b/03/part2.js new file mode 100644 index 0000000..b9fc7e0 --- /dev/null +++ b/03/part2.js @@ -0,0 +1,57 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + + +// array of arrays of bool. Coordinates are [y][x]. True = tree. +let map = []; + +readInterface.on('line', function(line) { + let row = []; + + line.split('').forEach(function(char) { + if (char == '.') { + row.push(false); + } else if (char == '#') { + row.push(true); + }; // ignore any other character + }); + + map.push(row); +}); + + +readInterface.on('close', function(line) { + let totals = []; + + [[1,1], [3,1], [5,1], [7,1], [1,2]].forEach(function(step) { + + let treesHit = 0; + let x = 0; + let y = 0; + + while (y + 1 < map.length) { + x += step[0]; + y += step[1]; + + if (x + 1 > map[y].length) { + x -= map[y].length; + } + + if (map[y][x]) { + treesHit++; + } + +// console.log(x, y, map[y][x]); + } + + totals.push(treesHit); + }); + + console.log(totals.reduce((a,b) => a * b)); +}); + From 07e4d55f1d0fcda47ed321136b86d0c3b51595bd Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Fri, 4 Dec 2020 09:26:15 +0000 Subject: [PATCH 04/14] Day 4 --- 04/input | 1146 +++++++++++++++++++++++++++++++++++++++++++++++++++ 04/part1.js | 53 +++ 04/part2.js | 99 +++++ 3 files changed, 1298 insertions(+) create mode 100644 04/input create mode 100644 04/part1.js create mode 100644 04/part2.js diff --git a/04/input b/04/input new file mode 100644 index 0000000..8becd55 --- /dev/null +++ b/04/input @@ -0,0 +1,1146 @@ +byr:1983 iyr:2017 +pid:796082981 cid:129 eyr:2030 +ecl:oth hgt:182cm + +iyr:2019 +cid:314 +eyr:2039 hcl:#cfa07d hgt:171cm ecl:#0180ce byr:2006 pid:8204115568 + +byr:1991 eyr:2022 hcl:#341e13 iyr:2016 pid:729933757 hgt:167cm ecl:gry + +hcl:231d64 cid:124 ecl:gmt eyr:2039 +hgt:189in +pid:#9c3ea1 + +ecl:#1f58f9 +pid:#758e59 +iyr:2022 +hcl:z +byr:2016 hgt:68 eyr:1933 + +hcl:#fffffd ecl:gry eyr:2022 +hgt:172cm pid:781914826 byr:1930 iyr:2018 + +hcl:#08df7e ecl:grn byr:1942 +eyr:2028 iyr:2011 cid:141 pid:319110455 +hgt:186cm + +pid:991343040 hgt:179cm +hcl:#a97842 iyr:2020 +eyr:2024 +byr:1984 cid:181 + +pid:188cm byr:2005 +hgt:170cm cid:163 ecl:#a08502 hcl:2964fb eyr:1994 +iyr:2005 + +ecl:grn hcl:#fffffd iyr:2013 +pid:705547886 +byr:1928 hgt:168cm eyr:2030 + +cid:219 +pid:016251942 hcl:#602927 hgt:163cm +byr:1943 eyr:2029 ecl:oth iyr:2019 + +ecl:gry hgt:184cm eyr:2026 +iyr:2010 +pid:117647952 hcl:#efcc98 +byr:1942 + +cid:243 hcl:#888785 ecl:blu eyr:2027 pid:362697676 +iyr:2011 byr:1962 hgt:154cm + +hgt:154cm byr:1965 ecl:blu eyr:2030 +pid:779104554 iyr:2016 hcl:#435634 + +hcl:z eyr:1996 iyr:1993 +pid:#50f768 +ecl:zzz hgt:62cm byr:2017 + +ecl:grn byr:1988 iyr:2016 +hgt:167cm +hcl:#cfa07d +eyr:2030 pid:951967790 + +pid:320348494 iyr:2018 cid:281 +byr:2004 +hcl:#06a58b +eyr:2033 +ecl:zzz +hgt:76cm + +cid:83 ecl:brn eyr:2028 +byr:1941 iyr:2016 +hcl:#341e13 pid:806979833 +hgt:179cm + +ecl:brn +byr:1982 iyr:2010 eyr:2029 pid:535752324 hcl:#efcc98 + +ecl:oth +hgt:70in hcl:#866857 eyr:2025 pid:203320330 iyr:2018 byr:2000 + +hgt:70cm byr:2015 pid:#218eb5 hcl:#0ec4fe iyr:2014 cid:228 ecl:#c8533a +eyr:2035 + +hcl:#6b5442 +eyr:2020 ecl:hzl iyr:2017 hgt:173cm +cid:330 byr:1988 pid:173148327 + +iyr:2011 byr:1964 hgt:83 ecl:grn hcl:#c0946f pid:931162400 eyr:2028 + +cid:239 +byr:1960 ecl:hzl +hgt:164cm +hcl:#51040b iyr:2018 eyr:2025 + +cid:163 hgt:154cm +iyr:2015 eyr:2027 pid:838964596 +byr:1972 ecl:oth hcl:#efcc98 + +hgt:181cm +eyr:2028 ecl:blu +pid:853714682 hcl:#623a2f byr:1976 iyr:2020 + +cid:225 byr:1957 +hcl:#a97842 iyr:2013 eyr:2025 +pid:511588647 hgt:173cm ecl:blu + +hcl:#efcc98 +byr:1993 +ecl:oth +pid:871652492 eyr:2028 hgt:177cm iyr:2016 +cid:220 + +ecl:hzl +hgt:165cm +hcl:#733820 eyr:2028 cid:57 byr:1973 iyr:2018 pid:018982018 + +pid:491710153 iyr:2012 ecl:#c85046 hcl:#b6652a +eyr:2040 hgt:175cm byr:1981 + +pid:917105765 eyr:2021 hgt:181cm iyr:2019 cid:159 byr:1995 +ecl:gry + +hcl:#9d2ec4 iyr:2011 +eyr:2028 pid:149288934 hgt:63in ecl:blu byr:1960 + +byr:1923 pid:705818464 eyr:2024 cid:221 ecl:oth hcl:#7d3b0c hgt:193cm iyr:2014 + +pid:117111015 eyr:2030 +byr:1967 hcl:#ceb3a1 ecl:blu +hgt:157cm +iyr:2011 + +iyr:2019 ecl:oth +hcl:#fffffd hgt:172cm pid:215010680 +eyr:2025 + +pid:157cm cid:277 +iyr:1976 hgt:159in hcl:#341e13 ecl:#6c7644 eyr:2029 byr:1965 + +pid:787186482 ecl:brn +byr:1980 hcl:#f5dfb9 eyr:2020 +iyr:2018 hgt:188cm + +cid:168 +eyr:2023 hcl:#07c809 +iyr:2013 +hgt:169cm pid:250679100 byr:1945 ecl:gry + +hcl:#6b5442 pid:683134187 iyr:2013 eyr:2023 byr:1965 hgt:171cm ecl:hzl + +eyr:2028 hgt:180cm ecl:blu byr:1952 cid:314 iyr:2016 +pid:720794393 hcl:#602927 + +byr:1982 iyr:2016 +ecl:brn eyr:2027 +hgt:156cm pid:185583837 hcl:#ddbf30 + +hcl:#ceb3a1 pid:987624973 +eyr:2026 +iyr:2013 byr:1988 hgt:175cm ecl:grn + +eyr:2028 byr:1974 pid:350988773 hcl:#a97842 iyr:2015 +ecl:oth +hgt:160cm + +hcl:#b6652a +eyr:2028 +pid:717504683 byr:1970 +iyr:2013 +ecl:gry +hgt:156cm + +pid:453874703 iyr:2015 hcl:#a97842 ecl:hzl byr:1986 hgt:175cm cid:132 eyr:2025 + +hcl:#7d3b0c +eyr:2026 +ecl:brn hgt:154cm +byr:1959 pid:580659686 iyr:2015 + +ecl:amb hgt:191cm iyr:2018 +pid:681417707 byr:1994 eyr:2023 hcl:#c0946f + +eyr:2022 pid:302326561 iyr:2018 ecl:blu byr:1987 cid:89 hcl:#a97842 hgt:184cm + +eyr:2020 pid:457081226 +ecl:blu hcl:#866857 iyr:2011 +hgt:159cm byr:1959 + +eyr:2024 cid:322 byr:1991 pid:210415503 +hgt:69in ecl:grn +hcl:#623a2f + +ecl:blu iyr:2012 pid:524745721 hcl:#c0946f eyr:2026 hgt:176cm byr:1964 + +hgt:189cm iyr:2014 pid:679155617 hcl:#efcc98 eyr:2027 +cid:88 byr:1974 +ecl:blu + +byr:1935 eyr:2029 +iyr:2020 +hcl:#733820 ecl:blu hgt:190cm pid:509009432 + +hcl:#fffffd pid:446558583 byr:1931 ecl:brn iyr:2019 +hgt:159cm cid:146 +eyr:2024 + +eyr:2028 hcl:#efcc98 pid:330588516 hgt:65cm +byr:1972 iyr:2014 ecl:oth + +ecl:blu hgt:175cm cid:197 pid:068138358 eyr:2023 iyr:2017 hcl:#0441c6 byr:1999 + +byr:1992 hgt:193cm +ecl:brn iyr:2018 hcl:#866857 pid:905992465 +eyr:2022 + +hgt:95 byr:1965 +pid:810311252 eyr:2034 hcl:z iyr:1985 cid:254 + +hcl:#c0946f byr:1985 eyr:2030 hgt:161cm iyr:2010 ecl:gry pid:616639221 + +iyr:2011 eyr:2023 hgt:172cm cid:260 ecl:hzl +pid:594747312 +hcl:#a97842 byr:1937 + +eyr:2028 pid:134536806 cid:83 +ecl:brn byr:1928 +iyr:2015 +hcl:#fffffd hgt:157cm + +iyr:2016 +pid:035433923 hgt:180cm ecl:amb eyr:2027 byr:1934 +cid:195 hcl:#583d02 + +eyr:1936 cid:130 byr:1969 hgt:74cm hcl:50e1a7 ecl:gmt iyr:2010 pid:82008848 + +hcl:#733820 +eyr:2020 +hgt:174cm iyr:2018 ecl:hzl byr:1983 pid:087167304 + +byr:1972 hcl:#888785 eyr:2020 pid:593301831 iyr:2013 ecl:hzl hgt:188cm + +cid:282 hcl:#888785 hgt:170cm ecl:oth eyr:2029 +byr:1942 pid:014356555 iyr:2020 + +byr:1966 hcl:#623a2f ecl:oth hgt:165cm +eyr:2028 iyr:2012 pid:558908746 + +pid:#4f5b92 +hcl:#6b5442 hgt:188cm +byr:1994 iyr:2014 cid:127 eyr:2020 +ecl:oth + +hgt:153cm +ecl:brn iyr:2020 +eyr:2026 hcl:#18171d +pid:101990935 +byr:1932 + +iyr:2011 byr:1981 hgt:157cm hcl:#c0946f +eyr:2029 pid:545992967 +ecl:utc + +byr:1929 hcl:#602927 iyr:2018 ecl:grn +eyr:2027 +pid:256056759 +hgt:178cm + +iyr:2016 pid:813526512 eyr:2027 hcl:#20799c +ecl:blu +byr:1971 hgt:185cm + +iyr:2021 eyr:2040 +pid:5135078781 byr:2013 hcl:#7d3b0c hgt:62cm ecl:#dedf53 + +iyr:2013 +byr:1979 cid:269 hgt:179cm pid:871628606 eyr:2026 hcl:#53b66c +ecl:grn + +eyr:2020 +hcl:#ceb3a1 byr:1988 ecl:oth iyr:2012 +pid:558371571 + +pid:908462345 byr:1972 hgt:183cm ecl:gry cid:51 hcl:#af82df eyr:2023 iyr:2019 + +pid:106942710 ecl:hzl +hgt:157cm hcl:z eyr:2025 iyr:2016 +byr:1998 cid:271 + +iyr:2011 ecl:oth pid:191542220 +byr:1951 eyr:2027 hcl:#c0946f hgt:190cm + +eyr:2028 hgt:193cm pid:235913726 iyr:2012 hcl:#325350 +ecl:amb + +iyr:2018 hcl:#a97842 ecl:hzl byr:1988 pid:481250123 +cid:328 hgt:165cm eyr:2028 + +ecl:#a51d9c hcl:91236c pid:2538922220 byr:2017 eyr:2004 +iyr:2026 hgt:174 + +pid:959660262 eyr:2022 cid:339 hgt:170cm iyr:2012 +hcl:#cfa07d ecl:brn + +hcl:#866857 +ecl:dne hgt:70cm eyr:2013 iyr:1980 pid:780067045 +byr:1950 + +iyr:2011 +byr:1981 +pid:902964474 ecl:gry eyr:2021 +hgt:154cm +hcl:#602927 cid:156 + +iyr:2016 +hgt:156cm ecl:brn cid:315 eyr:2023 byr:1997 +hcl:#623a2f pid:339892714 + +ecl:brn hgt:73in cid:184 byr:1960 eyr:2024 iyr:2014 hcl:#888785 +pid:561655785 + +pid:579663338 +eyr:1977 +hcl:#ceb3a1 ecl:grt hgt:188cm +byr:2017 +iyr:2018 + +byr:1941 eyr:2029 pid:252436521 +hgt:170cm ecl:hzl + +hcl:#888785 +pid:378073052 +hgt:185cm +cid:343 byr:2001 +ecl:oth iyr:1988 eyr:2029 + +pid:286459107 byr:1973 eyr:2023 ecl:oth cid:273 +hgt:184cm + +pid:406853460 eyr:2028 hcl:#b6652a +hgt:179cm +iyr:2020 cid:346 +ecl:brn byr:1973 + +hcl:#ceb3a1 eyr:2026 pid:001798001 ecl:gry hgt:157cm +cid:235 +byr:1968 +iyr:2013 + +hcl:#b6652a hgt:151cm pid:504383643 iyr:2018 +ecl:brn byr:1990 +eyr:2021 + +hgt:164cm iyr:2015 hcl:#888785 byr:1998 pid:045813631 cid:237 +ecl:grn +eyr:2026 + +hcl:#733820 hgt:172cm +eyr:2030 iyr:2015 ecl:gry pid:507769390 byr:1979 cid:212 + +cid:138 hgt:176cm hcl:#efcc98 +eyr:2024 byr:1984 +ecl:brn iyr:2015 pid:968062470 + +hcl:#733820 iyr:2015 ecl:oth +eyr:2028 pid:431922630 hgt:160cm byr:1941 + +iyr:2017 +eyr:2023 ecl:grn cid:294 byr:1969 +hcl:#602927 pid:720065302 +hgt:67in + +ecl:gry byr:2002 eyr:2024 hcl:#7d3b0c +hgt:174cm +iyr:2012 pid:296913847 + +pid:42057861 hcl:bb7ace eyr:2023 byr:2013 hgt:188 ecl:#312118 iyr:2024 + +eyr:2021 +byr:1958 +hgt:170cm ecl:brn iyr:2012 +pid:064919306 cid:349 hcl:#602927 + +eyr:2022 +pid:248168906 +iyr:2013 byr:1996 hcl:#cfa07d +hgt:151cm ecl:hzl + +cid:301 ecl:brn hcl:#fffffd +hgt:183cm +pid:806659387 +eyr:2021 +byr:1970 iyr:2013 + +cid:192 +iyr:2013 +ecl:#5ad460 hgt:64cm +pid:001255475 byr:1984 eyr:2027 hcl:#cfa07d + +iyr:2012 pid:194936105 eyr:2028 byr:2000 ecl:oth hcl:#733820 hgt:158cm + +cid:323 +hcl:#a97842 eyr:2027 pid:625573908 +iyr:2019 byr:1987 ecl:grn +hgt:191cm + +pid:997956152 hgt:193cm ecl:hzl eyr:2024 byr:1983 +cid:113 hcl:#888785 +iyr:2013 + +iyr:2017 hgt:153cm hcl:#733820 byr:1984 eyr:2025 pid:138608494 ecl:blu + +ecl:brn +byr:1987 hgt:174cm +iyr:2013 pid:459148475 eyr:2023 hcl:#623a2f cid:266 + +byr:2000 iyr:2017 ecl:brn pid:469155516 hcl:#b6652a +eyr:2027 hgt:193cm + +byr:1967 eyr:2028 pid:064940030 +iyr:2016 +ecl:gry hcl:#18171d hgt:74in + +iyr:2020 hcl:#efcc98 +byr:1968 hgt:164cm ecl:hzl pid:834180009 eyr:2022 + +pid:021397352 +iyr:2018 hcl:#341e13 byr:1978 eyr:2022 ecl:oth hgt:67in + +hgt:160cm cid:213 ecl:#a46ef7 pid:157cm eyr:2020 iyr:2020 byr:1923 + +iyr:2016 +cid:235 pid:454188395 eyr:2022 hgt:73in ecl:hzl +hcl:#7d3b0c byr:1964 + +iyr:1930 eyr:2033 hgt:76cm pid:41117341 byr:2028 ecl:utc +hcl:#6b5442 + +pid:41316572 +hcl:#cfa07d byr:1965 eyr:2027 hgt:179cm iyr:2010 +ecl:grn + +hgt:152cm pid:886168412 iyr:2027 +eyr:1989 hcl:9993d6 byr:2005 ecl:zzz + +pid:661569613 hgt:166cm +hcl:#18171d iyr:2010 byr:1922 eyr:2030 ecl:brn + +byr:1958 +ecl:blu pid:978855125 +eyr:2020 iyr:2019 +hgt:190cm hcl:#18171d + +hgt:68in iyr:2012 hcl:#ceb3a1 eyr:2028 ecl:oth pid:067088299 +byr:1975 + +eyr:2020 +pid:507464869 hcl:#fffffd hgt:156cm iyr:2016 +byr:1957 ecl:blu + +cid:259 eyr:2025 byr:1954 +ecl:gry hgt:167cm pid:832017347 iyr:2020 hcl:#623a2f + +hgt:69in hcl:#a97842 +pid:426496916 byr:1947 eyr:2021 iyr:2015 ecl:oth + +eyr:2025 ecl:blu pid:543125976 cid:192 iyr:2017 +byr:1920 hgt:154cm hcl:#a7ecdc + +hgt:69in iyr:2017 +byr:1932 hcl:#6b5442 +ecl:hzl cid:349 pid:494399909 eyr:2029 + +eyr:2030 ecl:gry hcl:#6b5442 +iyr:2010 byr:1938 cid:100 pid:477259022 hgt:67in + +hgt:145 byr:2009 hcl:#b6652a iyr:2015 +pid:180cm ecl:dne cid:315 eyr:1920 + +byr:1930 hgt:65in +eyr:2022 ecl:blu +pid:671271699 +iyr:2010 +hcl:#b6652a + +byr:1989 eyr:2020 +ecl:hzl +hcl:#341e13 +pid:625435489 +hgt:189cm cid:72 +iyr:2013 + +hgt:184 +byr:2025 ecl:#a1368a eyr:2038 cid:111 +iyr:2025 hcl:z pid:7952164402 + +pid:165478949 +hcl:453b30 ecl:amb hgt:75cm eyr:1987 iyr:2015 +byr:1960 + +eyr:2022 ecl:blu +cid:100 +hcl:ead803 iyr:2025 byr:2018 + +eyr:2024 +ecl:gry hgt:167cm +hcl:#623a2f cid:259 +byr:1932 iyr:2014 pid:360279704 + +hgt:191cm +ecl:oth pid:070592110 cid:275 eyr:2027 +iyr:2011 hcl:#4a4252 byr:1937 + +ecl:blu cid:256 iyr:2017 eyr:2027 hcl:#341e13 hgt:150cm +pid:152140902 byr:1923 + +eyr:1972 iyr:2020 ecl:gry hcl:#888098 byr:1974 hgt:188cm +pid:586853292 + +iyr:2014 +ecl:brn hcl:#866857 eyr:2020 +hgt:184cm pid:422142863 byr:1999 + +iyr:2025 ecl:amb eyr:1928 hcl:#18171d byr:2008 hgt:62cm pid:42120034 + +byr:1923 cid:85 iyr:2017 +hcl:#602927 eyr:2026 pid:922322363 +hgt:68in ecl:amb + +cid:97 hcl:#602927 +pid:436567964 +eyr:2028 iyr:2016 +byr:1994 + +hcl:#9c166d +eyr:2025 pid:834335216 iyr:2011 ecl:blu byr:1946 hgt:174cm + +byr:2018 iyr:2027 hgt:187in +cid:118 eyr:2038 +ecl:lzr hcl:z + +ecl:blu +byr:1998 pid:186cm eyr:2026 hcl:z iyr:2027 hgt:70in + +hcl:#623a2f eyr:2020 ecl:amb iyr:2010 pid:743059641 cid:240 hgt:169cm byr:1957 + +ecl:oth pid:089778639 cid:305 eyr:2027 iyr:2012 byr:1935 +hcl:#efcc98 + +hgt:151cm hcl:#602927 cid:97 byr:1968 iyr:2014 pid:447599233 +ecl:oth +eyr:2030 + +pid:621084188 byr:1941 ecl:gry cid:188 iyr:2012 hgt:75in eyr:2028 hcl:#6b5442 + +hcl:#c0946f +ecl:amb +hgt:66cm +pid:185cm byr:2022 eyr:2039 iyr:2024 +cid:321 + +hgt:177cm byr:1954 ecl:amb pid:445374119 cid:137 hcl:#341e13 iyr:2010 +eyr:2020 + +hgt:160cm +byr:1923 +ecl:grn +eyr:2021 iyr:2012 +pid:286304911 +hcl:#18171d + +hgt:153cm byr:1933 +iyr:2015 +ecl:gry +pid:365430749 eyr:2029 + +cid:294 pid:817081355 byr:1969 +eyr:2030 ecl:oth iyr:2014 hgt:181cm hcl:#623a2f + +iyr:2011 +ecl:gry hgt:177cm eyr:2025 pid:446342686 hcl:#b6652a byr:1991 +cid:241 + +byr:1999 +iyr:2018 +cid:306 hcl:#18171d eyr:2021 +hgt:188cm ecl:gry pid:473752814 + +byr:2002 hcl:#733820 +pid:867697169 +ecl:gry hgt:165cm eyr:2020 +cid:316 + +eyr:2026 cid:59 hgt:175cm byr:1993 pid:531385722 +ecl:hzl hcl:#733820 + +eyr:2027 +cid:50 pid:433963708 +byr:1969 +iyr:2011 ecl:hzl hgt:164cm +hcl:#b6652a + +eyr:2020 ecl:gry hgt:186cm pid:917147781 hcl:#341e13 +iyr:2016 cid:68 + +pid:857547233 hgt:64in +cid:274 +eyr:2020 ecl:hzl iyr:2019 hcl:#866857 byr:1948 + +eyr:2022 hgt:183cm pid:557280094 +byr:1936 hcl:#602927 iyr:2019 ecl:oth + +byr:1933 eyr:2023 +iyr:2020 +ecl:blu hgt:72in + +pid:682285472 +ecl:blu hgt:166cm eyr:2021 +byr:1993 +hcl:#ceb3a1 iyr:2011 cid:266 + +iyr:2012 cid:172 ecl:#04ce29 eyr:2021 hgt:160cm byr:1926 pid:2235389773 + +eyr:2029 hcl:#cfa07d pid:387564370 cid:276 hgt:74in +ecl:amb +byr:1926 iyr:2019 + +eyr:2026 +hcl:#733820 +pid:230583200 byr:1997 +ecl:brn +iyr:2010 +hgt:179cm + +byr:1946 hcl:#866857 ecl:#87b6f4 hgt:150cm pid:298537901 +eyr:2024 iyr:2011 + +hcl:#cfa07d +byr:1961 +eyr:2022 +hgt:167cm +pid:230816154 ecl:oth iyr:2018 +cid:164 + +pid:167899852 hcl:#18171d eyr:2023 hgt:173cm ecl:amb byr:1960 iyr:2010 + +hcl:#866857 +hgt:165cm +ecl:hzl pid:325078465 byr:2002 +cid:61 eyr:2025 iyr:2020 + +cid:268 +hcl:#a97842 iyr:2011 byr:1966 pid:450468785 +eyr:2030 hgt:173cm +ecl:gry + +hgt:181cm +eyr:2026 cid:77 pid:229016136 ecl:grn byr:1929 + +ecl:#ad9ae9 hcl:z iyr:2012 +byr:2029 +cid:77 pid:#b1f685 eyr:2015 + +ecl:amb byr:1920 +eyr:2026 hcl:#92e796 iyr:2011 pid:503853254 hgt:186cm +cid:101 + +hcl:#7d3b0c eyr:2022 ecl:amb pid:536474715 hgt:64in +iyr:2026 byr:1924 + +hgt:72in ecl:hzl hcl:#888785 eyr:2030 pid:048654766 byr:1977 iyr:2016 + +hgt:171cm ecl:brn byr:1976 pid:844553043 +eyr:2024 +cid:241 + +cid:243 eyr:2023 pid:998276626 iyr:2011 hcl:#623a2f ecl:oth hgt:183cm byr:1920 + +eyr:2030 +ecl:amb pid:896953299 +hgt:157cm byr:1934 hcl:#9c12d8 iyr:2015 + +hcl:#cfa07d iyr:2011 byr:1974 pid:451819357 hgt:168cm ecl:grn eyr:2024 + +iyr:2018 +pid:908304519 hcl:#fffffd byr:1936 cid:203 +ecl:amb hgt:76in +eyr:2029 + +byr:1967 +hgt:186cm +eyr:2026 +hcl:#ceb3a1 ecl:grn +pid:594830518 iyr:2017 + +pid:20921789 iyr:2024 hcl:z byr:2026 ecl:zzz hgt:153cm eyr:2037 + +hcl:#888785 iyr:2016 cid:323 byr:1958 ecl:gry pid:118638859 eyr:2029 +hgt:163cm + +hgt:167cm ecl:brn eyr:2020 +pid:557999801 +byr:1988 +cid:273 iyr:2011 +hcl:#fffffd + +ecl:gry pid:206008517 eyr:2022 +hcl:#ceb3a1 +byr:1983 hgt:187cm + +eyr:2020 +byr:1931 cid:78 +hcl:#6b5442 ecl:oth hgt:170cm pid:039713280 iyr:2015 + +eyr:2024 ecl:amb +byr:2002 hgt:162cm hcl:#866857 +iyr:2012 pid:696390563 cid:184 + +hgt:189cm byr:1992 pid:712592503 iyr:2012 ecl:oth hcl:#602927 +eyr:2029 + +ecl:hzl +byr:1965 hgt:182cm eyr:2023 +iyr:2014 hcl:#a97842 + +byr:1927 ecl:gry +hcl:#d91aa0 pid:082227536 eyr:2021 +iyr:2011 + +eyr:2003 iyr:1953 byr:1954 +cid:327 hgt:62in ecl:utc +hcl:z pid:#97c11a + +cid:252 pid:98689392 +iyr:2020 hgt:103 +hcl:298df8 byr:1934 +ecl:oth eyr:2012 + +hcl:#fffffd eyr:2020 +byr:1993 ecl:brn +pid:338398225 iyr:2015 hgt:159cm + +iyr:2017 pid:624798709 hgt:151cm eyr:2029 +ecl:gry cid:111 +hcl:#866857 + +byr:2010 +ecl:hzl eyr:1975 hgt:150cm iyr:1930 hcl:159a9a + +iyr:2010 +hcl:#7d3b0c eyr:2024 cid:224 hgt:163cm byr:1971 pid:631469024 ecl:grn + +ecl:hzl iyr:2017 hgt:167cm +hcl:#623a2f pid:417970460 byr:1949 eyr:2020 + +eyr:2030 +hgt:84 byr:2007 ecl:xry cid:153 pid:9655548750 iyr:1957 + +ecl:oth hcl:#733820 cid:336 byr:1996 iyr:2014 pid:736143470 eyr:2025 hgt:182cm + +hgt:69in hcl:#623a2f +cid:126 iyr:2019 pid:638479310 eyr:2022 ecl:grn byr:1935 + +cid:240 +pid:804066884 byr:1987 hcl:#049f0e +eyr:2023 +hgt:174cm +ecl:brn +iyr:2020 + +ecl:amb iyr:2010 +pid:200411701 +cid:70 eyr:2023 +hcl:#341e13 byr:1974 hgt:61in + +eyr:2022 hgt:186cm hcl:#18171d ecl:hzl pid:613033358 +iyr:2014 + +hgt:189cm +iyr:2020 pid:874302209 byr:1928 ecl:blu +hcl:#1c52f4 +eyr:2029 + +byr:2026 +eyr:2007 pid:166cm iyr:2030 ecl:utc +hgt:137 hcl:8e8916 + +pid:781251989 +eyr:2029 hgt:178cm iyr:2010 byr:1942 hcl:#cfa07d + +pid:671017167 eyr:2030 ecl:amb byr:2002 hgt:166cm +iyr:2011 hcl:#7d3b0c + +pid:369327568 byr:1955 ecl:hzl iyr:2013 hcl:#341e13 eyr:2020 cid:90 hgt:154cm + +pid:169149205 iyr:1947 ecl:amb eyr:1977 +byr:2003 +hcl:z +hgt:75cm + +hcl:#cfa07d iyr:2016 +eyr:2022 pid:941218673 byr:1999 cid:186 +ecl:brn hgt:173cm + +hgt:159cm eyr:2021 byr:1962 hcl:#efcc98 +pid:792538993 iyr:2011 ecl:blu +cid:222 + +pid:#994231 byr:2024 iyr:1977 hcl:b98ff6 eyr:2010 hgt:71 +ecl:#875a67 + +byr:2007 +iyr:2023 hgt:141 +eyr:2021 ecl:grt pid:22002588 + +hgt:190cm +pid:524515058 +cid:217 +ecl:grn byr:1999 +eyr:2027 +iyr:2019 + +ecl:dne byr:2019 eyr:1942 hgt:62cm pid:5866040917 +iyr:2018 hcl:z + +pid:754032301 byr:1985 eyr:2029 hgt:185cm iyr:2016 +ecl:oth + +ecl:amb byr:1948 iyr:2010 hgt:157cm pid:153547581 eyr:2027 hcl:#cfa07d + +eyr:2026 byr:1942 pid:368975422 +hcl:#733820 +cid:322 hgt:188cm +iyr:2019 +ecl:blu + +ecl:brn +pid:535822939 byr:1994 +eyr:2027 iyr:2020 hcl:#18171d hgt:193cm + +pid:706755664 +hcl:#7d3b0c +ecl:grn cid:304 +hgt:152cm byr:1972 iyr:2013 eyr:2021 + +hgt:163cm +byr:1922 iyr:2014 eyr:2028 pid:852815945 cid:324 +ecl:brn hcl:53b08b + +hcl:#888785 +eyr:2023 +iyr:2020 byr:1962 ecl:blu +pid:407158186 +cid:269 + +ecl:blu +eyr:2027 pid:567155642 hcl:#a97842 hgt:74in byr:1995 +iyr:2016 + +iyr:2017 eyr:2020 +pid:782403650 +byr:1952 ecl:gry hgt:193cm cid:273 hcl:#efcc98 + +byr:1963 eyr:2021 +pid:639445576 hcl:#c0946f iyr:2013 +cid:306 ecl:blu hgt:154cm + +hgt:68in cid:191 +hcl:#7d3b0c +iyr:2017 byr:1935 ecl:gry + +ecl:brn iyr:2019 +eyr:2021 +hcl:#733820 +byr:2017 +pid:714110829 hgt:155cm cid:178 + +cid:203 pid:455383907 +ecl:grn byr:1965 +hcl:#866857 eyr:2024 hgt:172cm iyr:2012 + +iyr:2018 eyr:2033 +pid:462538213 byr:1974 hcl:#c0946f +ecl:amb hgt:160cm + +hcl:#623a2f +pid:116799148 cid:336 +ecl:grn eyr:2027 +iyr:2020 +byr:1976 + +pid:654088396 +ecl:utc eyr:2021 +byr:2016 +hcl:#866857 +iyr:2030 hgt:191cm + +byr:1939 +eyr:2023 +iyr:2011 hgt:168cm +cid:141 ecl:brn +hcl:#6b5442 + +eyr:2025 hgt:61in +byr:1977 +ecl:brn iyr:2016 cid:198 pid:401742648 + +ecl:brn +iyr:2012 eyr:2027 +byr:1990 hcl:#6b5442 +pid:476691172 +hgt:72in + +cid:176 ecl:oth iyr:2011 hcl:#c0946f +eyr:2028 +byr:1957 pid:959615191 + +byr:2027 +iyr:2021 hcl:#733820 hgt:165cm pid:6155507056 + +iyr:2012 ecl:blu +pid:397461435 eyr:2022 byr:1993 hgt:170cm +hcl:#b59662 cid:185 + +ecl:hzl byr:2015 +hcl:z hgt:185cm eyr:2036 iyr:2017 +pid:172cm + +ecl:oth +hgt:181cm iyr:2019 +cid:113 byr:2000 +hcl:#866857 pid:045077916 eyr:2029 + +iyr:2013 ecl:grn +pid:717028913 byr:1953 eyr:2025 +hgt:191cm hcl:#6b5442 + +pid:825834003 eyr:2027 byr:1941 +hgt:163cm iyr:2010 hcl:#6b5442 ecl:amb + +eyr:2026 hgt:59in +hcl:#e9ebf8 byr:1966 +iyr:2018 pid:677886127 ecl:grn + +hcl:#888785 pid:771218458 ecl:hzl eyr:2029 +cid:153 byr:1991 iyr:2011 +hgt:76in + +hgt:161cm hcl:#888785 +ecl:brn byr:1928 pid:913959218 eyr:2020 iyr:2013 + +hgt:188cm eyr:2026 +byr:1964 ecl:blu hcl:#733820 iyr:2017 pid:874400552 + +ecl:hzl iyr:2017 +cid:59 pid:130750853 byr:1964 eyr:2028 hgt:177cm hcl:#602927 + +pid:200888672 ecl:oth iyr:2016 eyr:2020 hcl:#efcc98 hgt:163cm + +eyr:2026 +ecl:gry +hgt:189cm +hcl:#c0946f iyr:2019 pid:741121671 byr:1971 + +ecl:amb eyr:2028 hcl:#888785 iyr:2017 pid:060053163 byr:1952 hgt:191cm + +hcl:#55c45a +eyr:2022 ecl:blu +iyr:2019 pid:326991534 +hgt:158cm +cid:149 + +hcl:#a97842 iyr:2013 ecl:hzl byr:1941 hgt:179cm + +hgt:68in hcl:#18171d +eyr:2021 byr:1938 ecl:oth iyr:2015 +pid:888616887 + +eyr:2026 iyr:2018 ecl:oth byr:1990 +hcl:#efcc98 +pid:472330538 +hgt:192cm + +byr:1933 ecl:grn hcl:#7d3b0c hgt:74in iyr:2011 +eyr:2028 cid:55 + +iyr:2014 hgt:165cm ecl:blu hcl:#18171d byr:1998 pid:601177268 cid:64 eyr:2027 + +iyr:2011 ecl:grn cid:188 pid:440822084 eyr:2028 +hcl:#c0946f byr:1987 hgt:154cm + +hcl:#f29c57 +cid:114 iyr:2010 +byr:1989 eyr:2023 hgt:61in +pid:166071094 + +hgt:71cm +iyr:2022 byr:1965 +ecl:#bb3dce pid:88829820 eyr:2040 hcl:z + +hgt:62in hcl:#7d3b0c pid:585528668 +eyr:2028 ecl:oth +byr:1941 + +ecl:oth eyr:2030 +byr:1952 +iyr:2018 pid:422437243 hgt:185cm + +pid:054717793 byr:1989 hcl:#18171d +iyr:2014 +ecl:grn +eyr:2025 hgt:151cm + +eyr:2027 +hcl:#cfa07d pid:071196833 +cid:297 byr:1932 hgt:173in +ecl:grn iyr:2016 + +hcl:#6b1c3d eyr:2026 pid:963034490 iyr:2011 +hgt:175cm byr:1961 ecl:oth + +hgt:69in +hcl:#b6652a ecl:oth +pid:771661551 iyr:2016 eyr:2023 byr:1960 + +cid:63 +pid:190cm byr:2021 ecl:#252d02 eyr:1931 +iyr:1966 hgt:101 hcl:dc9531 + +byr:1976 eyr:1925 +ecl:grt cid:203 +iyr:2019 +pid:170cm hgt:181in + +iyr:2014 ecl:amb +hgt:182cm cid:283 byr:1983 +pid:307867769 eyr:2024 hcl:#cfa07d + +hgt:157cm hcl:#ceb3a1 eyr:2026 pid:109243500 +byr:1926 +iyr:2015 ecl:oth cid:330 + +hcl:#602927 byr:1940 pid:389818848 +iyr:2016 ecl:brn +hgt:68in eyr:2023 + +ecl:brn pid:340990019 +eyr:2020 iyr:2011 +hcl:#fffffd hgt:175cm byr:2001 + +cid:264 +hgt:154cm pid:128094068 +hcl:#888785 iyr:2013 eyr:2027 +byr:1929 ecl:amb + +cid:270 hcl:#602927 hgt:156cm iyr:2018 +byr:1983 +eyr:2020 pid:621875145 +ecl:gry + +cid:345 pid:68093057 ecl:grt +iyr:2019 byr:1992 hgt:109 hcl:35d6e4 eyr:1976 + +pid:714839913 ecl:grn hcl:#733820 iyr:2020 hgt:153cm +byr:1996 eyr:2027 + +pid:820650878 eyr:2027 +hcl:#866857 byr:1957 +iyr:2015 ecl:grn hgt:167cm + +pid:600488426 +hcl:#ceb3a1 hgt:151cm +ecl:amb eyr:2021 byr:1936 iyr:2015 cid:326 + +cid:256 hgt:169cm +iyr:2014 +pid:261369952 eyr:2028 byr:1982 +ecl:brn +hcl:#733820 + +eyr:2021 iyr:2011 +pid:745066100 hcl:#3bbbd5 byr:1998 ecl:amb hgt:166cm +cid:257 + +ecl:#a38be3 cid:256 hgt:154 eyr:2033 +byr:2006 pid:5154675209 hcl:z + +hgt:160cm cid:103 ecl:gry byr:2000 hcl:#a97842 eyr:2026 pid:528503931 +iyr:2010 + +eyr:2025 cid:131 iyr:2011 +byr:2001 +pid:346722892 +hcl:#cc0362 +hgt:168cm +ecl:brn + +hcl:#ceb3a1 iyr:2012 +hgt:188cm pid:760916817 byr:1985 +eyr:2020 ecl:oth + +hgt:179cm +cid:317 +ecl:amb pid:411265118 iyr:2018 +byr:1982 hcl:#733820 eyr:2028 + +byr:1927 hcl:#7d3b0c iyr:2020 ecl:gry +hgt:155cm pid:937138356 eyr:2021 + +hcl:#efcc98 pid:793804751 eyr:2022 byr:1961 hgt:193cm iyr:2016 cid:222 + +pid:715207875 hcl:#18171d eyr:2030 byr:1974 hgt:157cm ecl:blu +iyr:2019 + +eyr:2022 pid:134624402 hgt:159cm cid:154 +byr:1938 hcl:#cfa07d +iyr:2018 ecl:gry + +ecl:oth eyr:2021 +cid:259 pid:0484880795 hcl:#cfa07d hgt:189cm iyr:2019 byr:1958 + +byr:1960 +pid:752967111 iyr:2010 hcl:#52a9af +hgt:151cm ecl:amb eyr:2025 + +eyr:2028 byr:1974 ecl:oth cid:348 +hcl:#b6652a hgt:164cm iyr:2018 + +eyr:2029 +byr:1942 cid:232 iyr:2016 hgt:193cm +hcl:#733820 pid:175cm ecl:oth + +byr:1990 hcl:#b6652a eyr:2028 iyr:2011 pid:054326137 hgt:153cm ecl:blu + +byr:1933 +pid:659875882 hgt:181cm +eyr:2023 iyr:2012 +ecl:grn hcl:#18171d + +ecl:grn iyr:2019 hcl:#866857 byr:1946 +eyr:2023 hgt:193cm pid:494553757 + +cid:331 +ecl:blu eyr:2021 hcl:#733820 hgt:174cm +iyr:2010 byr:1950 pid:405416908 diff --git a/04/part1.js b/04/part1.js new file mode 100644 index 0000000..ef9f607 --- /dev/null +++ b/04/part1.js @@ -0,0 +1,53 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + + +let passports = []; +let cPass = {}; + +readInterface.on('line', function(line) { + if (line.length == 0) { + passports.push(cPass); + cPass = {}; + return; + } + + line.split(' ').forEach(function(kv) { + parts = kv.split(':'); + cPass[parts[0]] = parts[1]; + }); + +// console.log(cPass); +}); + +let required = new Set(['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid' ]); +let optional = new Set([ 'cid' ]); + +readInterface.on('close', function(line) { + // Save the last passport if it has any fields + if (Object.keys(cPass).length > 0) { + passports.push(cPass); + } + + let count = 0; + passports.forEach(function(passport) { + let keys = new Set(Object.keys(passport)); + let missing = new Set([...required].filter(x => !keys.has(x))) + + console.log(passport); + console.log(missing); + console.log(""); + + if (missing.size == 0) { + count++; + } + }); + + console.log(count); +}); + diff --git a/04/part2.js b/04/part2.js new file mode 100644 index 0000000..ccfdc07 --- /dev/null +++ b/04/part2.js @@ -0,0 +1,99 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + + +let passports = []; +let cPass = {}; + +readInterface.on('line', function(line) { + if (line.length == 0) { + passports.push(cPass); + cPass = {}; + return; + } + + line.split(' ').forEach(function(kv) { + parts = kv.split(':'); + cPass[parts[0]] = parts[1]; + }); + +// console.log(cPass); +}); + +let required = new Set(['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid' ]); +let optional = new Set([ 'cid' ]); + +function validKeys(passport) { + let keys = new Set(Object.keys(passport)); + let missing = new Set([...required].filter(x => !keys.has(x))) + + return missing.size == 0; +} + +function validBYR(passport) { + let byr = Number(passport['byr']); + + return byr >= 1920 && byr <= 2002; +} + +function validIYR(passport) { + let iyr = Number(passport['iyr']); + + return iyr >= 2010 && iyr <= 2020; +} + +function validEYR(passport) { + let eyr = Number(passport['eyr']); + + return eyr >= 2020 && eyr <= 2030; +} + +function validHGT(passport) { + if (!passport.hasOwnProperty('hgt')) { + return false; + } + + let hgt = parseInt(passport['hgt']); + + if (passport['hgt'].endsWith('cm')) { + return hgt >= 150 && hgt <= 193; + } + + // inches + return hgt >= 59 && hgt <= 76; +} + +const validHCLs = /^#[a-f0-9]{6}$/; +function validHCL(passport) { + return validHCLs.test(passport['hcl']); +} + +const validECLs = new Set(['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth']); +function validECL(passport) { + return validECLs.has(passport['ecl']); +} + +const validPIDs = /^[0-9]{9}$/ +function validPID(passport) { + return validPIDs.test(passport['pid']); +} + +function valid(p) { + return (validKeys(p) && validBYR(p) && validIYR(p) && validEYR(p) && validHGT(p) && validHCL(p) && validECL(p) && validPID(p)); +} + +readInterface.on('close', function(line) { + // Save the last passport if it has any fields + if (Object.keys(cPass).length > 0) { + passports.push(cPass); + } + + let count = passports.filter(valid).length; + console.log(count); +}); + From 36d94a2846a0bb1cf99b04f337c1f3283a27f8a5 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 5 Dec 2020 11:25:51 +0000 Subject: [PATCH 05/14] Day 5 --- 05/input | 782 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 05/part1.js | 56 ++++ 05/part2.js | 64 +++++ 3 files changed, 902 insertions(+) create mode 100644 05/input create mode 100644 05/part1.js create mode 100644 05/part2.js diff --git a/05/input b/05/input new file mode 100644 index 0000000..0761d83 --- /dev/null +++ b/05/input @@ -0,0 +1,782 @@ +FBBBFBBLRR +BFFFBBFLRR +BFBFBBFLLR +BBFFFFBLLR +FBBFBBFRLL +BBFFFFBRLL +FBBFBFFLLR +BFFBBBFRRL +FFBFBFFRLR +FBFFFFBLLL +FBFFFFFLRL +FFFBFBBRLR +FFBFFFFLLL +BFBBBFFLLL +FFBBBFBRLR +BFFBFBFLLL +FBFBFFFLLL +BBFFBBBRRL +FBFFBFBLLL +BFFBFBFRRL +FBFBFFFRLR +BFBBBFBRLL +FFBBFBFLRL +FBBFFBFRRR +BFBBBBBLRL +FFBFBFBLRL +FFBFFFFLRL +BFBFBFBRRR +FBBBBBBRRR +BFBFFBBRLL +BBFFBFBLLL +BFBFBBFRLL +FBFBBBBRLR +BFFBBFBRRL +BFBBBFBRRR +FBBBFBBLRL +BBFFBBBLRL +FFBBFFFRRR +FBFFBFFLLL +FBFFBBFRLL +FBBBFBFRLL +BFFBBFFLRL +FFFBFBBRRR +BFBBBBFRLR +FBFBFBBRRL +BFFFFFFRRL +BFBBBBFRRL +FBFBBFFRRL +FBFFBFFRLR +FBBFFBBRRR +FBFBBFFRRR +FFFBBFFRLR +BBFFBFBRRL +FBBBBBFRRR +BFBBBBBRLL +BFFBFFBLRL +FBBBFFBRRR +BFFFBBFRLR +FFBFBBBRLL +BFBBBFFRLL +BFBBFBFRRR +FBFBFBBLLL +BBFBFBBRLL +FBBFFBBRLR +FFBBFBFLRR +FBFFFFFRLL +BFBFBBBRLR +FBFFFFBLRR +FBFFFFBRLL +BFFFFFFRLL +BBFBFFFRRL +BFBFBBBRRR +FFBFFFBLRL +BFFFBBBLLR +FBFFBFFRLL +FFFBFBBLRL +BFBFBBFRRL +FFBFFBBRLL +FBBFBFFLRR +FBFFFFFLLR +FFBFFBFRLL +FFBFFBFLRR +FBFBBBFRLR +FFBFBBFLLR +BBFFBFBLLR +FFBBBBBRRL +BFFBBBBRLL +FFBFBFFLLL +BBFFFBBRRL +FFBFFBFRRL +BBFFBFFRLR +FBFBBFFRLR +FBBFFBFRRL +FBBBFBBRRR +FFBBBBBRRR +BFFBBFBRLL +BFBFBBFLLL +FFBFBBBRRR +BBFFFBBRRR +BFFBFFBLRR +FFFBBFFLRL +BFFBBBFRLR +BFBBFBBRLL +BFBBFBBLLL +FFBFBFBRRL +BFFBBFFRRR +FBFBBBBLLL +FBFFFBFRRR +BFFBFFFLRL +FFFBFBBRRL +FBFBFBBRRR +FBBFBFBLLR +FBBBFFBRLR +FBFBFFBLLR +FBFFBBBRLL +FBFFFBBLRR +BFFFBFFLLL +BFBBBBBLLR +FFBBFFBRLR +BFBFBBFLRL +BBFFBBBRRR +FFBBFFFLRR +BFBFFFFRLR +BFBBBFBRRL +BFFBBBBRLR +BFFBFBBLLR +BFFBBFFLLR +FBFFBBBRLR +FBFFBBBLLR +BBFFBFFLLL +BFFBFBFRRR +BFBFFBFRLR +FBFFFBBLRL +FBBBFBFRRL +BBFFFFBLLL +FFBBBFFLRL +BFFBFFFRLR +FBBFBBFLLL +FBFFBFFRRL +FFBFFBBRLR +BBFFBFFLRR +FBFBBBBLLR +FFBBBFFLRR +BFBBFBFLLR +FBBFBBFLLR +FFBFFBBRRL +BBFFFFBRRL +FBBBBFBRRL +FBFBFFFLLR +BFBFBFBLLR +FFBFBFBRRR +BFFFBFFLLR +BBFFBFFRLL +FBBBFFBRLL +FBBFFFFRRL +FBBBFFFRRR +BBFFFBBRLL +BFFBBFFLRR +BFFBFBBRLR +BFFBFBBLLL +BBFBFFBLLR +FBBBBFFLLL +BFFBBFBLRL +FBBBBFBRRR +FBBFBBBRRL +BFFBBFFRLL +BFFFFFBLLR +BFFBBFBLRR +FFBBFBFRRR +BFBFFBFRRL +BFFFFBBLRR +FFFBBFBLRR +BFFFBBBLRR +FFBFBBFLRL +FBBBFFFLLL +FBFBFBFLRR +FFFBBFBLLL +FFBBFBBLLR +FBBFBBFLRL +FFBFFBBRRR +FBBBBFFRRL +FFFBBBFRLR +FBBFFFBLRL +BFFBFBBLRL +BFFBFBFLRR +BFFBFFBRRR +FFBFBBBRRL +BFFBFFFLLR +BFFBBFBRLR +FBBBFFFRRL +BBFBFFBLRL +BBFFFBBLLR +FBFBFFFRRR +BFFFBBBLRL +FBFFBFFLLR +BBFFFFFRLL +FFBFFFBLLL +BFBBFBBRLR +BFFFFFBLLL +BFBBFFFLLL +FFBBBBFRLR +BBFFFFFLLR +BFFFFBFLRL +FFBFFBBLLR +BBFFBFFLLR +BFBFFBFRRR +FBFFBFFRRR +BBFFFBFLLL +FFBFFFFRRL +FBBFBFFRRR +FFBBFBBRRL +FFBBBFFLLR +BFFFFBBLLR +FFBFBFBLLR +BFFBBBBLLR +FBBBBFBLLL +BFBFBBBRLL +FFBFBBFRRR +FFFBFBBLLR +FFFBBFBRRR +FFFBBBBLRR +FBBFFFFLRL +FFFBBFFLRR +FFBFBFFRLL +FBBFBBBRLR +FFBFBFBRLR +FBBBFFBLRL +BFFFFFFLRL +BFFBBBBLRR +FBBFFBBLRR +BBFFBBFRRL +FFBFBBBLLR +FFBFFFFRRR +FBFFFBBRRL +BFBFFFBLLR +FBBFBFBRRL +BBFBFFBRLR +FBBBBBFRLR +BFFBBBFLRR +BFFFFFBLRR +BBFFBBFRLL +FFFBBFFRRR +FBBBBFFRLL +FFBFFFFRLR +BFFFBFFRRL +FBBBBFFLRL +BBFBFFFRLL +BBFFFBBLRR +FBBBFFFLLR +BFFBFBFLRL +FFBBBBFLLL +BFFFBFFRLL +FBBFFBFLLR +BBFBFBBRRR +FFBFFFBRLL +FBFBBBFRLL +BFBBFBBLRR +FBBBBFFRLR +BFFBBBBLLL +FFFBBBBRLR +FBBFBBBRLL +FFBBBFBLRL +BBFBFFBLRR +FFBBFFFLLR +FFBBFBFRLR +BFBBBFBRLR +FBBFFFFLLL +BBFFFBFRRR +FFBFBBFLLL +FBBFBBBRRR +BFBBFFBRRR +FBBFFBFLLL +FFBFBBBLRL +FBFBBFBRRR +FBFBFFFRLL +BFFFFFFLLR +FBFBBBFLLR +BFBFFBFRLL +BFBFFBBRLR +BFFBBFBLLR +BFFBFBBLRR +BFBBBFFLRL +BFBBFBFLRR +BFBBBFFRLR +FFFBBFFRRL +BFFFBBFRRL +BFFBFBFLLR +BFBFFBBLRR +BFBBBBBRRR +FFBBFBBLRR +BFFBBFFRLR +FFBFBFBRLL +BFBBBBFLRL +FBBFBBFLRR +FBFBBBFLRL +FBFFFBBRRR +BBFBFFFRRR +FBFFBFBRLL +FBBBBBBRLL +FFBBBFFRRL +FFBBFFFRLL +FBFBBFBRLL +FFFBBBBLLL +BFBFBBBLLL +FFFBBBFLLR +FFBFBBFRLL +BBFFBBBLLR +FFFBBFBLRL +FFBBFBBLLL +FBFFFBFRLR +BFBBFBBLRL +FFFBFBFRLR +BFBFFFBRLR +FFBBBBBLLL +FBFBFFBRRR +BFFBBBBRRL +FBBBBFBLLR +BFBBFBFRRL +BBFBFBFLLR +BFFFBFBRRR +FFFBBFBRRL +BFBBBBFLLR +FBBBFBFLLR +FFBFFBFLRL +BFFFBFBLLL +BFBBBBBLRR +BFBFBBBLRR +BFFBFBBRLL +FFBFBFFLRL +FBBBFBBRRL +BFFBBFFLLL +FBFBFFBRLR +FBBFFFFLRR +FBBFBFBLRL +BBFFBBBLRR +BBFFBBFLLL +FBBBBBBRRL +BFFFFBFRRL +BFFFFBBLRL +BBFFFBFRLL +BFFBBFFRRL +FBBBFBFRLR +FBFFBFBLLR +FFBFFFFLRR +FBBBBBBLRL +FFBBFBBRLL +FFBBFBBLRL +FBFFFBBRLR +FFBBFFFLLL +BFFFFBFRRR +BFBFBFBLLL +FFFBBFFLLR +FBBBFBBRLL +BFFFFBBRLL +FBFBFFBRRL +BFBBBFBLLR +BFFBBBBRRR +BBFFFFFRLR +BFFFBBBRRL +BBFFFFFRRL +BFFBFBFRLL +BBFFFFFLRR +FBFBBBBLRR +FBFFBBBLRL +BFBFBFFRLL +FFFBBBBLLR +FBFBBBBRRR +FBBBBBFRRL +BFBFFFBRRL +BFBFFFBRRR +BBFBFBBLRR +FFBBBFBLLR +FFBBBFBRLL +BFBFFFFLLR +BFBFBFFLRL +FBFFFBBLLR +BFFFFFBRLL +BBFBFBBRRL +BFBBFFFRLL +BFFFFFFRLR +FBFFBFBRRR +BBFFBBFRRR +FFBBBFFRRR +FFBBBFFLLL +BFBBFFFLRR +FBBFFBFLRL +FBFFFFBLLR +BFBBBFBLRL +BFFBBBFRRR +BFBBBFFLLR +BFFFBBBRRR +BBFBFBFRRR +FFBFFBFRLR +FBBFFFFRLR +BFBFBBFRRR +BBFFBBFLRR +FBBBFFBLRR +BFBBFFBLRL +FBFBBBBRRL +FFFBBBFLRL +FBBFFFBRLR +FFFBBFFLLL +BFFBFBBRRL +BFFFBFBLRR +FBBFFFBRRR +FBBFFFBRRL +FBBBBBBRLR +FBFFFBFLRL +BBFFBFBLRL +FBBFFFBLLR +BFBFFBBRRR +FBFBBFFLRR +FBBFFBBLLR +FFBBBFFRLR +BFFBFFFLLL +FBBFFFFRLL +BFBFFBBLRL +BFBFFBFLLR +BFBBFFFRRR +BBFFFBFRLR +FBFBBBFRRL +FFBBFBBRLR +BFFFFFFRRR +BBFBBFFLLL +BBFBFFBRRR +FBBFFBBLLL +FFBFBFBLRR +BFBBFFFRRL +BBFBFFFLRR +FBBBBFBLRL +FBBFBFBRRR +FBFBFBBLRR +FBFFBBBLLL +FFBFBFFLRR +BFBFBFFRRR +BFBFBFFLRR +BFFFFFFLRR +FBFBFBBRLR +FFBFFFFRLL +FBBBFBFLRL +BFBFBBFLRR +FFBBFBBRRR +FBFBFFFLRR +BBFBFFBRRL +BFBFBFFLLL +FBFFBFBRLR +FBBBBBBLLR +FFBBBBFRLL +BFBFBBBLLR +FBFBBBBRLL +BFBBBBFLLL +FBFBFFBLRL +FFFBBBBRRR +BFFFFBFLLR +BBFFFFBLRR +BBFFFBFRRL +FBBFBFFLLL +BFFFBFBRLL +FBBBFFBRRL +FFFBFBBLRR +BBFFBBFLRL +BBFFBFFRRR +BFFFFBFRLR +FBFBBFBLRL +FBFFBBFLLL +FBFFFBBLLL +FFBBFFBLRL +FBBFBBFRLR +FBBFBBBLRL +FBFFFBBRLL +BFBFBBBRRL +BFBFBFBRLR +FBFFBFFLRR +BFFFBFFLRR +BFBBBFFLRR +FBBBBBFLLL +FFBFBFFRRR +BBFFBFFRRL +BFBBBFBLLL +FFBBFBFRLL +FBBBFBFRRR +FBFFBBBLRR +BBFFFFBRRR +FBFBFFFRRL +BFFFBBFLRL +FBBFFFBLLL +BFBBFFBLLR +BFBBFFBLLL +FBFFBBFRRR +BFFBBFBRRR +BFFFFFBRLR +FBBBBBBLLL +FFBFBBFLRR +FBFBFBBRLL +BBFBFFFLLR +BFFFFBBRRL +BFFBFFBLLR +BFFFBBFRLL +BBFFFFFLRL +FBFFFFFLLL +BBFFBBBRLL +BFBBFFBRRL +BFFFBBBRLL +FBFFBBFLRL +BBFBFFBLLL +FBFBBFBLRR +FFFBBBFLRR +BBFBFBFLRR +BFBBBBFRRR +BFFFBFFLRL +FBFFFFBRRL +BBFBFBFLLL +BFFFBBBRLR +FBFFBBFRRL +FBBFFBBRRL +FBFBFBFRLR +BFFBFFFRRL +FFFBFBBLLL +BFBBFBFRLL +BFFFBFBLLR +FBBFBBFRRL +FBBBBBFLRR +FBFFBFBLRR +FBBBFFBLLL +BFBBBFFRRR +BFBFFFFLRL +FFBBFFBRRL +BFFFFFFLLL +FFBFFBBLRL +FFFBBBFRLL +BFFFBBFLLL +FBBBFBBRLR +BBFBFFFRLR +BFFBFFBLLL +FFBBFBFLLR +FBFFBBBRRR +BFBFFBFLRR +FBFBFBBLRL +FFBFFFBRRR +FBBFFFFLLR +BFBBBFFRRL +FFBBBFFRLL +FFFBFBFRRR +FFBBBBFLRL +BFBFBFBRLL +FFFBBBFLLL +BFBFFFFLRR +BFFBFFBRRL +BFBFFBBLLL +FBBBBFBLRR +FFBFFBFRRR +FFBFFFBLLR +FFBBFFFRRL +BFBFFFFRLL +BBFFFBBRLR +FBFBBFBRRL +BFFFFFBLRL +FFBFFFFLLR +FBFFFBFLLR +FFFBBFBRLR +BBFBBFFLRL +FFBBBBBLLR +BFBBFBFLLL +BFBFFFFRRL +BFBBFFBRLR +FBBBFFFRLR +FBBFFBFRLR +BBFBFBBRLR +FBBBFFBLLR +FBBBFFFRLL +FBFBFBFRRR +BBFFBFBRRR +FFBBBBBRLL +FBFFBFBRRL +FBFFBBFLRR +FFFBBBFRRL +FFBBFFBRLL +BFBFFFBRLL +FBFFFBFLLL +FBBBBFFRRR +FBBFBFBRLL +BFFBFBFRLR +FFBFBFBLLL +FFBBFFBRRR +FBFFFFBLRL +FBBBFFFLRR +FFBBBBFRRL +FFBFBBBRLR +FBBBBFFLRR +BFBFBFBLRR +BBFBFFFLRL +FFFBBFBRLL +FBBBBBFLRL +FBBFBBBLLR +BFBBFFFLLR +FBFFFFFRLR +BBFFFFBRLR +FBFFFFFRRL +FFBBFFFLRL +FFBBBFBRRR +BBFFFBBLRL +FBBBBFBRLR +FBFBBFFLRL +FBFFBFFLRL +FFBFFFBRRL +FFBBBBFLLR +FBBFBFBLRR +FBFBBFBLLL +FFBBBFBLLL +BFFFFBBRRR +BBFFFBFLRL +FFFBBBBRLL +FFBFFBBLLL +FBFFFBFLRR +FBFBFFBLLL +BFFFBFFRRR +FFBBFFBLRR +BFBBFBFRLR +FFBFBFFRRL +BBFFFFBLRL +FFBBFFFRLR +BFBBFFBLRR +BBFBFBFRLL +FBFFFFBRLR +BBFFBBFLLR +FBBFFBBLRL +BFFFFFBRRL +BFBBFBFLRL +BBFFBFBRLR +BFFFFBFLRR +BFBFBFBLRL +FBFBFFFLRL +BFFFBBFLLR +BBFBFBBLRL +BFFFFBBLLL +BBFBFBBLLL +BFBBBBBRRL +FBFFBBFLLR +FFBFFBBLRR +FFBBFBFRRL +FBFBBBFLRR +FBFBBFFLLR +FFBBBBBRLR +FBFBBBFLLL +FBBFBBFRRR +FBBFBBBLLL +BFBFFBFLRL +FBFBFFBRLL +BFBFBFFLLR +FBBFFBFRLL +BFFBBBFLLR +BFFFFBBRLR +BFFBBFBLLL +BFFFFBFRLL +FFBFBBFRLR +BFFFBBBLLL +FBFBFBFLLL +BFBBBBBRLR +BFBBBFBLRR +FBBBFBFLLL +FBFFBBFRLR +BBFFBBBRLR +FFBFBBFRRL +BFBFBBFRLR +FBFFFFFLRR +BBFFFBFLRR +FBBFBFFRLR +BFBBFFFLRL +FBFBBFBLLR +BFFBBBFLRL +BFFBBBFLLL +BFBBFFFRLR +FBFFBBBRRL +BFFFBFBLRL +FBBBBBFRLL +BFFBBBBLRL +FBBFFFBRLL +FBBFBFFRLL +FBBFFBFLRR +FFBFBBBLLL +FFBFBBBLRR +BFBFFFBLLL +FFBFFFBLRR +FBFBBFBRLR +FBFBBBFRRR +FFFBFBFRLL +FBFFFBFRLL +BBFFBFBRLL +FFFBBBBRRL +FBFBFBBLLR +BBFFBBBLLL +FBBBBBFLLR +BFBFFFFRRR +FBBBBFFLLR +BFBBBBFLRR +BFBFFFBLRR +BFFFBBFRRR +FFFBBFBLLR +BFBBBBFRLL +BBFBFBFRRL +BBFBFFFLLL +FBFBFBFRLL +FBFBFFBLRR +BFBFBFBRRL +BFBBFFBRLL +BBFBFFBRLL +BFBBFBBRRR +FFBBBBFLRR +BBFFFBBLLL +FBBBFBBLLL +FFBBBFBLRR +BFBFBFFRLR +BBFBFBBLLR +BFBFFBFLLL +FBFBBFFRLL +FBFBFBFLRL +FBBFFFBLRR +BFBFFBBRRL +FFBFBFFLLR +FFBBFFBLLR +FFFBBBFRRR +BFFBFBBRRR +FFFBBBBLRL +FBBBBBBLRR +FBBBFBFLRR +FFBBBBFRRR +FFBFFBFLLL +BBFFBBFRLR +FBFFFFFRRR +FBBBFFFLRL +BFFBFFBRLR +FBFFFBFRRL +BBFFFFFLLL +FFBBFBFLLL +BFFBFFBRLL +FFBBFFBLLL +BBFFFBFLLR +FBBFBFBLLL +BFFFFFBRRR +BFBFBBBLRL +FBBFFBBRLL +BFFBFFFRLL +BFFBFFFLRR +BFFBBBFRLL +FBFBBFFLLL +FBFBFBFRRL +BFBBFBBLLR +FBFBBBBLRL +BFFFBFBRLR +FFFBFBFRRL +BBFBBFFLLR +FBBFBFFLRL +FFBBBBBLRR +FBBBBFBRLL +BBFBFBFRLR +BFBBBBBLLL +FBBBFBBLLR +FFFBBFFRLL +FFFBFBBRLL +FFBFFBFLLR +BBFFFFFRRR +BBFFBFFLRL +FBFFFFBRRR +BFBFFFBLRL +BBFFBFBLRR +FFBBBFBRRL +FBFFBFBLRL +FBBFBFBRLR +BFBFBFFRRL +BFFFBFBRRL +BFFFBFFRLR +BBFBFBFLRL +FBBFBFFRRL +BFBBFBBRRL +BFFFFBFLLL +FBBFBBBLRR +BFBFFFFLLL +FFBBBBBLRL +BFBFFBBLLR +FBFBFBFLLR +FFBFFFBRLR +FBBFFFFRRR diff --git a/05/part1.js b/05/part1.js new file mode 100644 index 0000000..dea01de --- /dev/null +++ b/05/part1.js @@ -0,0 +1,56 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +// [[x,y], [x,y], ...] +let seats = []; + +function makeArray(n) { + let ary = new Array(n); + for(i=0; i (seat[1] * 8) + seat[0]).sort((a,b) => a-b ); + console.log(seatIDs.reverse()[0]); +}); + diff --git a/05/part2.js b/05/part2.js new file mode 100644 index 0000000..f5fb8f6 --- /dev/null +++ b/05/part2.js @@ -0,0 +1,64 @@ +const fs = require('fs') +const readline = require('readline'); + +const readInterface = readline.createInterface({ + input: fs.createReadStream('input'), + console: false +}); + +// [[x,y], [x,y], ...] +let seats = []; + +function makeArray(n) { + let ary = new Array(n); + for(i=0; i seat[1]*8 + seat[0]).sort((a,b) => a-b ) ); + + for (x=0; x<8; x++) { + for(y=0; y<128; y++) { + let seatID = y*8+x; + if (!seatIDs.has(seatID) && seatIDs.has(seatID-1) && seatIDs.has(seatID+1)) { + console.log(seatID); + break; + } + } + } +}); From 835bc8509e170b4fe26eddc6237e0b30ecd1ea6d Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 5 Dec 2020 14:11:59 +0000 Subject: [PATCH 06/14] Return to using ranges for day 5 --- 05/part1.js | 45 +++++++++++---------------------------------- 05/part2.js | 45 +++++++++++---------------------------------- 2 files changed, 22 insertions(+), 68 deletions(-) diff --git a/05/part1.js b/05/part1.js index dea01de..06c7f3d 100644 --- a/05/part1.js +++ b/05/part1.js @@ -6,47 +6,24 @@ const readInterface = readline.createInterface({ console: false }); -// [[x,y], [x,y], ...] -let seats = []; - -function makeArray(n) { - let ary = new Array(n); - for(i=0; i Date: Sat, 5 Dec 2020 14:13:44 +0000 Subject: [PATCH 07/14] Remove unnecessary break --- 05/part2.js | 1 - 1 file changed, 1 deletion(-) diff --git a/05/part2.js b/05/part2.js index 57b686f..101f46d 100644 --- a/05/part2.js +++ b/05/part2.js @@ -34,7 +34,6 @@ readInterface.on('close', function(line) { let seatID = y*8+x; if (!seatIDs.has(seatID) && seatIDs.has(seatID-1) && seatIDs.has(seatID+1)) { console.log(seatID); - break; } } } From 8d2a169ec9fa8336fdac304de5d8bddeea2cc37a Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 5 Dec 2020 14:15:53 +0000 Subject: [PATCH 08/14] Squeeze down whitespace --- 05/part2.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/05/part2.js b/05/part2.js index 101f46d..7b7f838 100644 --- a/05/part2.js +++ b/05/part2.js @@ -1,10 +1,6 @@ -const fs = require('fs') +const fs = require('fs'); const readline = require('readline'); - -const readInterface = readline.createInterface({ - input: fs.createReadStream('input'), - console: false -}); +const readInterface = readline.createInterface({input: fs.createReadStream('input'), console: false}); let seats = []; // [[x,y], [x,y], ...] @@ -22,7 +18,7 @@ readInterface.on('line', function(line) { return sp; }, [0,0,7,127]); - + seats.push([result[0], result[1]]); }); From 5557eb57e28d1baa153fc47949b2ea15d015d7c9 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 5 Dec 2020 14:17:47 +0000 Subject: [PATCH 09/14] Remove unneeded sort --- 05/part2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05/part2.js b/05/part2.js index 7b7f838..6b6d9ee 100644 --- a/05/part2.js +++ b/05/part2.js @@ -23,7 +23,7 @@ readInterface.on('line', function(line) { }); readInterface.on('close', function(line) { - let seatIDs = new Set( seats.map((seat) => seat[1]*8 + seat[0]).sort((a,b) => a-b ) ); + let seatIDs = new Set( seats.map((seat) => seat[1]*8 + seat[0]) ); for (x=0; x<8; x++) { for(y=0; y<128; y++) { From d97cf9f03a9aaac29ea77cfa380c5eca17e3f6ac Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sun, 6 Dec 2020 12:00:47 +0000 Subject: [PATCH 10/14] Day 6 --- 06/input | 2176 +++++++++++++++++++++++++++++++++++++++++++++++++++ 06/part1.js | 6 + 06/part2.js | 18 + 3 files changed, 2200 insertions(+) create mode 100644 06/input create mode 100644 06/part1.js create mode 100644 06/part2.js diff --git a/06/input b/06/input new file mode 100644 index 0000000..f3397a9 --- /dev/null +++ b/06/input @@ -0,0 +1,2176 @@ +obegcmqadtrhui +qbgocuzeimrhdat +icuagdbztxrqehoy +cuietqhbfroagds +uqdgikwhrvcjeltbpao + +arke +qzr +plmgnr +uriq + +boqznasg +ozbncqasg +ofgpznjbaqst +bgszanoq + +srjykwuxvezbgdacmfltnhi +zuiedmknagswfcjxbltvyh +dcxsuhfrwzleatmnyjkbigv +zuesnjfkvclgmbwxdahyti +hvbndegywclpimuxotsajkzf + +zydkwetqav +wyqtmveadk + +o +noa +osub +oi +noda + +edtafusml +aorseuvlmtdf +deifpumkatls +eulstamfd +apftmsldkeu + +vxqgrpctomw +cwxtpvgqnr +qtcxvwgrp + +mukie +emkiu + +njvcbmxyquezgso +jsmcxnzdefq +dqcmeznjsfx +nejqzxmsc +hnqjscezxm + +uigvxyjnhwqrtbplmkdes +sykhpwtqmrglxbunivdej +simwetgbdqljynkvhrxup + +uonxe +xoue +unoex +mexoju + +v +v +v +v +v + +edw +ed + +cokqv +okqv +oqpxkv +vqako +odqhkv + +vdcuxbkiznw +uidxcbqwvknzs +cwukbdnixzv + +lzdhg +ivpkjao +ecwusfqbxyt + +owlzbmj +kmoabjwz + +obgwqplxrji +irqltbwxogjp +gbljwpoixqr +ljqwbogiprx +lobjgpxqwri + +gxvhbdwirntpocz +bzinahrwjmkdgtovp +viptgknqrhdycwboz +ogrhuislpevztwbnfd + +k +q + +kdq +dq +qd +dwq +dwq + +l +z +l + +pondj +jondp +npjdo +onjdp +ojdnp + +odjnevlh +jvhxebolmnd +vdjlheona +odhjvlne + +zxmq +qmzx +xzqm +qzxm + +lh +hpl +lh +lh + +sozm +ozsm + +uwjvbprdlfonyigszx +ygrnlzxufwobpskjvid +dforlwgxnijchpzsubyv +vnxszbijufyrowlkgdp + +h +h +h +a +ht + +exthuqmdfwaroniy +uwyjpqlnhkt + +rofyvgnpzejimck +znkvjefogcpm +ecvkzfgsotnpij +fjvhkepmnzogc +qwfglzakdxncoujpve + +oqwfbcdnipugkzret +turdpikfwonqezbcg +ktubceifdzownprqg +dryqbfungpwxckeavjiohtz +unbkqcweiprgztodf + +ezxnihou +mehixsouz +oikezuhxt +zdeofqacxihujwp +hoximuez + +akyuocenqgjplbr +eautkjrqpncylgoi +lecxopshdrykjfgqn +lzepogvkyrqnjc + +kwdtbgolvyiqmrc +kqhrcamedbgyw +ncimubgqdykrw + +canks +kc +kc +fbck + +dvrfgnocyewlqx +wqgyfsotvehinrac +oerycvwnqdfg +nowvdqfrygec +rcxnfowyveqg + +gh +phg +hg +uvheg + +lsmypivq +splymvqi +pvyimkzslq + +wmsbleh +wravbml +lmwbtvz + +znydtsk +tponsfdckyz +sxtdnkzy +tkdynzs +xktdnyzs + +muxeazdvhjwsyroqkc +xldjmwsnuoizyhtcvqrekab + +vnmakbhxeygiluqtzfjcr +acfexmuvjhknogzyirtbq + +mgqaijhcdsnvbueplyrx +ryslpdenvgujxhabqimc +aichqnmrypdseujvxgbl + +dbsvawikqzljmchgpfyern +fpmnbrajdszyliwqgevc +fwieycmbrajlsngpzdqv +edwifgybjmzqncsprval +oqygnpemwvfiazljcsbrd + +ldqn +lan + +lzyncpukrga +qfeuywam +azhycdu + +hgjrnubyc +gyhbrjcnu + +lrzjgwhkocadnxiftbqy +yqwbnatzkiocjgxlhfrd +jilqyxozcnbrgtwdhfka +ldatokrqhybifwgxzjnc + +kyrxqfuibhz +mkedonluwgvcjas + +tmlsrzhby +yzwmrlhtbs +trvsbzhylm +aylihjrzmsbt +zbthlmsryw + +fhmorgvqbzpyiscja +jpvrgmqiuyhlzckos +ohjmzgpbsvyircq +brvhmzqgypciosj +dsyfvcgjhzirqpmo + +bsazqjtfegurvwihdy +fclaxtjngbdvpsoukr + +e +e +e +v + +ep +pne + +akrplevwnz +zdrakolycfnw + +hmrgxjyneavlcwbu +newaymbhuvgljcrx +yurlxnbjamvwchsged +gbnrwexvculahjyipm +jahnbyrwlxdmvceug + +zoianfdevtg +rdpgukevtznia +dzyagteimvsn + +giuncjmwzvbayto +ykmszowb +wzeyxbqom +qpzmybdklfoxwr + +znvdpaotegisfbjm +vceupwrmbakfolxdtsqgiz +nbtgpfhsiomdezav +iosepvgfzbdmta +vtzpeosbyamigdf + +rsfwj +frswj +jfsrw +rsfjw +jwfrs + +zubhjkg +bwhuagvzyr +gyuzbhe +tbxmnhgpqoscufz + +ohjqacykpvmrilwdg +goyqrhavlpcimkwjd +myhdjlvrcaqwiopkg +hdrvjimkcqogwaylp + +yirmagdhuvtzkle +glvehtramyzuki +evrikhltmgzuya +muezrhikvcyglta +mezyuvlihrktag + +wluevqjznxocsd +zcuhvjoqlxe +zuoxecqvjl + +pjmichseugal +mgztiudxslqcoarhef +cngaesihlmu +ubmpcklgeisnyha + +qhbsti +istqbh +qbstih +bsithq + +xk +k +k + +efmwzdnrhqgtiyvk +nyzgwfqtmrehkivd +nwydvjgruqhtzkfmie +vthrqykgwemzdfni +fkreadmhwtvgyiznq + +o +j + +ze +e +e +nex +egfm + +j +j +j + +idxcmetunkwslrza +gamsozleikrwtd +tmderskzawil + +dyjxvobnkqahug +wftmu +ipu +cfmwlsu +zepums + +fpglquhvkm +bzfdnyipwe + +xoevwyscith +pqybhdxc +kfnalcxr +emjuchx + +ypcxsvkaw +avhpys +apvsy + +teqxvcubirsomkhlawjyf +vftxuiyeqcjolhmawkrb +ijarmqwfhvoyxcultkeb + +zymvxowikndtghlcjusfrp +dqinpvbheyajmousglrtxwzc + +upwjeicvf +vfcbjwuipe +ivpecuwfj +pifjuwvce +cijvuwfpe + +eb +be +eb +eb + +jhqns +njh +hnjc + +jy +oy + +ufa +auf +auf +afu +uaf + +clbjzprytinows +lwonizrpjstb +tprbojwsinlz +gtjszplobwrnim + +cfhprvykoqmwljbin +qrjcpikmnbohy +jsrcnmiqkyhabpo +opqcehixbdnkjrmy + +dcxfolrbvkwtmyaupszge +zeartxugkvpwflmbsdcoy +zpbeuldxktovfargsncmwy + +famkjlsheuqwbdxngozvi +yakiqfhmzegsxldovwjnbu +xgspwdmijaofqlnkhbzeuv +gekxfmdruzilohnabcqvsjw + +k +kz + +uajnk +hkojnxar +jnak +dusafjkn + +otxlzikapesydbcrfwhqun +pbkrsanixeltfhyqzoudwc +nlzhaxdrupfibestcwokyq +euzxhbysdqapwmolnfkictr + +pvqgarhxdjzbtsyimen +bdretgxpjvynhqsmai + +fgwrchmjnxiopv +nlucbvxghfow +zqcaxnyfovs + +hblteankugvyxpdsr +srkbuvynghatxdpel +rtphbausklndgevyx + +eiskhzwdjoyn +mpqutdva + +xpwfjnthiskv +inhfvwpxkstj +xwvhijstfnpk +wjskfpxhntiv + +sjprnbelik +bekpioryjl +ibekjprzl +qsjipdlrbek +lhkejmxiwrptb + +sqawfcrhyzpgjuxvti +atlqrijscpfkdyzmnwxvge + +vardxqmcwzijn +mvgrbiajnwcx +wnrxuacvjmpi +xrjmnbapvcwi +vmrgnxijcaw + +ielvwpqazu +wepzviualq +wieulsaqzpv + +j +j + +awgkl +awocgkv +fawgks +fkgauwj +akwgu + +gkcpnltfvohbderiu +tkbizdjxafocpvgeru + +opl +jxkcey + +d +d +d +de +d + +czxs +scxz +szcx +xcsz + +yuckwfreoznjhai +zkcnwiaefhojyu +uykofwhezcnija +ahkujcoziynbwef + +zdgcqnojsvibkep +kedjcinsqvzbpo +isdopjuknvezqbc + +ehi +ehiw +ehi +ezih + +thqcvwnliu +cmykgiazwfqhl + +kpor +qorhp +pvfr +ayrpdb + +tihnwgvblmozjcef +rvmhtgjsdlbwcfaoinp + +ihztv +hty + +bucjsefdxy +fxdcbyu +ycpxfuarbkzlhv +qfcuyxwbt +xdybjcfu + +lukmjhqgdrnsczyotape +jgkwsptrdhocenyamzu +ytjkrezmapoduncgsh +jbtromsyhkezgaudpcn +skyrcgmdnuohapzwjte + +vs +qvsyd +sv + +xkfliuzvwrncqejgt +xkfqzigrwunmhvlt +wjvqifzltgnucodkrx +trfwnzoikyqsuvgxl +dluwikxqztfrngcv + +plf +hflpzqyj +rlfap +fptl +lpsf + +atyj +yjzat +htsjgay +yjaft + +abwu +locvqdupj +uoiqgjcy + +kvtlociyjfdqmaue +qckovdufmaityjle +vtqdaljymicekfuo +mfveyktuaqlcdoji + +s +gocnwlyshkuv +jszmx +dsqzm +spa + +z +q +z +g + +seymr +smr +hsqmarcx + +w +t +e +r +er + +jcsf +ivtzmqy +j +fpc +xs + +dgrzptwnkucilas +lwkhcgatznprj + +hsrl +hroewls +zsglrh + +jbxqrlpcnfhoimzawvysteku +rpxytswcqfvuhlbimkazenoj +yowmvhiekgfubdrqanpltcxsjz + +iv +vgi +ivx +zvsj + +xcbvdosph +dqvohacbxgty +hoxwdrscvzb + +typnodefzigcrvu +hlwmcsaxbj + +whqtmfru +rhwyumtfq +bhuftmjwqr +twqrumhfx +fmwuqrhtp + +bzqfsv +zbvfsq +fbzrvqs +sqbvzf +fsqvbz + +rdaslwe +agwdxln + +bcrtsxuha +zgrjblachsm + +uzvpx +zrxvp + +xhlfkneturja +nhlgtjxeka + +pvxhqirmkoyadgbte +kamqxihdtprgeb + +enubxywvptfgqjc +gjydubxfeqpcntvw + +teyg +yge +ygem +gyet + +rdinjqykcaphu +gkldmqjyo + +su +su +us +us + +lyovuimrewjgs +arkzthbdqcwm + +pfvzikeadrgsjlbo +zflpdkbsvjgae + +rkuybigaldcf +diarkycfub +dbcyfirauk + +shrjclfmivtb +ehtjwirsu + +ifotmzhw +otiwzmh +iwmzot +zomyviwt + +seiko +heqt + +gvwzfrtbnldmqcask +vgnkcalzftdsqwm +claqkwtvsznmfdbg +malfkzwtvqnpdgesc +wsdfqlnvgtmcakz + +qgejmf +vflkm +mteqfwy +fgejwmh +xfm + +heicjvgfoltpk +evxdsbnikuaoh +iheyowvk + +egmlqr +emkglqr +ngmqjlre + +va +yv +v +ova + +a +g +g +g + +s +skjy +s +hs + +hzrkgjwdqicpfyaemxln +ykincwxbghdajpqle +uihgtdpnxwcyeljr +xhipnvedlsycwgoj + +hdgubnvtk +asjbxhnil + +xmw +wmx +wmx +xmw +wmx + +sixpuvcwqnjyo +ndrfhkvetplgab + +ed +leg + +zohupvtgxyqbacrjil +hvzyugqobjlxrpcta +zvolpibwtcyujqghxar +pcqxugzmayjotbhrvl +futbyprshnxqvcjdozgla + +uojswtaphezlnfgx +ptezjwgsuahyox + +k +k +k +l +k + +upwxhriavm +zgsljdctefbk +qdlktyfons + +gtfbjreyqkodxzmivws +wtsqvlgzenpdckxaj + +ydmqlajibecgtk +chygtmdjxbiqkl +lqgibcjkytdm +bmljyigckqtdx +lqbcgtdjmyik + +xhlscr +rxhgl +lrxy +nbzxrdilmkp +xraolye + +xtpo +oxtjp +opxt +fxpot +xotp + +hifbvjuylzkme +vehalfuikjybz +lkzhbfjviuey +buyekjhzlivf +fivlykebuhjza + +lthkmdayzbgjwfoiurpnx +mokjinerubtzqayfxpdwhslc +vjglrknuopahfmwydxztbi +okxhnijadmtfrbuywpzl + +qzw +zq +qz +zq +zq + +zexdklupcyhriwvf +fjngasdbxtpzqmoyuev + +dmrtznach +rxnmda + +zghy +hgzy + +a +a +a +a +ja + +cbqhk +kcuq +pkjcxiq +iqcprk +tkcq + +iryfbjmovadlg +oylrgckbtm +zyxgpbemqsnhol + +pmuxtrsoiglyqvbe +bquysmtlxeroivp +isqrtluvmbyoxpe +uxmylrtpsevzqiob +qbmrsluxoiyptvze + +gqxucskpmrtidyfboal +humofzyblsxgvjknawc +xbajkesolufycmg + +kvxmbu +xkubv +xfvhlkb + +imaqkytjpzou +potumqjzikay +koupazymtijq +ztapkuiymjqo + +yjdbhamkeixgvlrqnc +hikwzblxgrnjevmdcqa +leqkidjnxvcahbygmr + +e +e +es + +b +p + +moieqpsndljgrxu +ndielbuvms +dfcyilnetsmu +wibmudzlanes + +cbs +cs +sc + +msofaty +atfqyomks +syhtoafm +tymefsoa + +mecrv +zypemf +imedn +khmelc +oemhgs + +vsyltho +syvdt +cqyvis +vufys +ustmpyv + +estzgja +magdkbjs +wagstj + +yhutnefprqi +ruezyqtp +bqeyvmcwrtusapd +xtqrypeu +uytqrlep + +tngbaijord +tdgbioarjn +bnaijdrgto +ojtbdagnir + +kmwiqybrnaefzdgocxul +fzarxdicokquygnebw +peawsbtniuzfqodhxgcyrk + +bngkczupvelsat +fvaetplbszgk +plekstzvabg + +eircuhv +hurvice +grhufcvei +hirevuc + +dptbhacwq +dbqpwcath +acqpdhtwb +dsqcbawtph +ahdcpqwtb + +jsoudagiekbtmn +gtunoesbmd +osgdtnpbeum +sgoubedtmn + +vadpkqoh +ndqpzahkv + +ikcxjwvobmslqnzuht +uevzocqmfnw +ouwrczqmvn + +a +a +o + +hautdzqwyxefvcklns +wfxtyvesqzuhknldac +sxlzwcehadifkynqtuv + +u +u +wqe + +yhin +niyh +hiy +hxiyvg + +qokxgbfemphyzisrnu +rehfjypgwzqvaosmx +dqwsghfelzyprmcxo + +xeksbaphnclzfi +klenzhapfjsx +szjlhxgdaeknpf +fnzkpsejvxlha + +auvobisz +zvibuo +bonzuvi +uobivpz + +gtajlbxrkyw +mxjntlrz + +tqov +qvot +otvq +tqvo +oqvt + +eofmhxqarvkwizpld +rimwhzeauxlkdvopfq +ovifkxaqrmeyhwldpz +pwirlxvaedokmqhzf + +hvscaetpdzfm +zaehmtvfdpc +mzfevhptadc +emhfdaptzvc + +onmzyr +xms +emas +mbi + +gqnkauwvc +pwven + +lvpiancg +qkd + +coyblen +fvbjcupmigk +xrsbyadec + +kwrvxpze +rkzpvb + +lgwe +lesw + +hncvjkmsqygtiuxarzp +qyzjxarigokwsucntvph +juvkqxaricznphgyst +pxhvznrkitcuysagdbjq + +qwpjefm +lsbhr +xz + +gisjrzuwqvxmtnbhf +jtsvwgzqridxfmhuoab +tpgxmdzrswjylifbhqcuv + +oxe +q +q +m + +eorcvyjdq +muqpizcaxfwrgyb +tkyholrqcs + +yaethzk +zeiaty +tbyqnawlpme +eyatvo + +fpd +d +d +sd + +otbzugk +tbuio +otbui +uotbi + +bsapxrikhuqycwfomjdletzvg +fqehjmosxudvrbzpyglatw +wvloqymxtufrpagzbhdsej + +ayxdqzkbipcewmnvlf +xkdmzwtrpanfivcl +kpzlixfawvcmnd + +dj +ilam +b + +pgdujfea +dl +wd +d +dl + +miblonqsaczex +oeilmxqncsbzavk + +sdktqoerclumihwjpxgfz +nokympdfbjxrztuwcilveqsg +wzgxlijndmsueqfcorktp + +bpoy +opbdy +ywpbo +ozefrbpy + +abl +qalfk +hctial +faljyx + +t +rt +at +t +t + +iwgohvufqpnbk +gwzphnaxcbtfqsuo +hewnufqbogp +qhpuowbngf +uyfbohwqpkng + +evgnrzk +xingw + +jwiokvzdxeaugrq +ufrqbdkijewaolv +uyqjdiloeakrvw +iwjudraqevomkh +eavwqkrdilcujo + +qylurvpjizfnowtaxgck +gdfmwaviqjxploucznktry +gpwfuxqlnjtaozycrdv +tqauervyjncfbopzgwlx +xwlvyuzgarqtfpnkjco + +t +t +e +pz + +xcl +hax +xue +inlyxu + +gxz +xkmt + +fmaykdhqlptbn +gwyhpxstmnzbe +hltmynrjvpb + +ckmx +cxrk +ngqzcklfbx +krdxc +ckx + +valqsuznprwdtkjxc +qzacupslkwfxntrjdv + +lrgufywvkda +vafdulkwryg +uykgrfvwlda +uflwdgkvyar +fsnbugvkdwtyral + +bwnvsmkz +yhblegsr + +qpogvdsy +phzqimywsf +ysdqjzo +sencrxtbyk + +jtezkqlphbwyrmu +blwjhqopuymzrket +qzlhwmkpbruejyt + +mvyarwjzd +qzrajwy +xtryzbawgen +vrpazywd + +tun +nut +tun +unt +tun + +sjqyvcfrpewhkzdui +xdnmhjlot + +bhiktrspwlofcdexgzjm +tqdscwpnlugfrhkzeiox + +xylvi +lxyicuhv +ivylx +ilyxv +yilvx + +pqguyfrhjob +jfbgrnoptuhv +wjsbhodfpgzxur +fejrcuhoglpb +ujogphrfb + +evxfqkyl +qxevjkl +vsxqknl +lvoqzmdxckibwgp +ayuxqvkl + +rozu +our +ruvwj + +dncwgzom +cw +cwu +cw +kqwc + +kxz +xzkq +zkx + +saehqwxlfgnudypk +kfqipbuxwaonhsyl + +bhkcfume +vrmetubhjcif +bmhuefc +zemluchkbf + +uzyltpa +rbjvxskewd +pzhgtcon +f +niz + +u +c +cn +qhk +n + +ovgehisbcr +besrgvoc +rgeosvbc +rqcbesgov + +ktl +sm + +hvczbfyldajomw +aytbzdnocmufwv + +d +la +d +v +q + +jhwsglxoniqpz +newhojxflgysqip + +k +lkp +ki + +odnfkmubqgxr +tjauoqfkrycngxd +unkgsxwrfqdo + +crmkqntouf +kuconrtfqm +utcnrqmkof + +zy +wizybcg +zy + +optdsiwyj +nwtpsfqydli + +vumaih +uivgqh +lvudchrkie + +arxiblucpw +wilxubrpatc +rpuiabwclxo +cpbiwrxlua + +onpuwraq +nrqdowuap +wournapq +rownuaqp +arnowupq + +oxvid +dvox +dovx +vdxo +dxvo + +apnfeix +ipfxnae +ainepxsf +eafxnip + +hwgal +gdynu + +kyvxmesfncuilqagtb +nbiclxkztafev +ickfxltvnebha +edikvfcltanbx +evbflntpcakix + +xy +y +ycowzf +y +yl + +qeaklh +qlkhea +hlaeqk + +tbfqjudrpeixm +fbglujtprqmhvdzkxn +tbdrufmipxjq +rjdtfxpbueymq +bdjmfrxpqtu + +tvmbsk +caywezhboqgnx + +zi +fiz +vfiz +iz +yqiz + +nwot +tnw +tnw + +enaochix +dewsplq + +xyhtqafdgescijpulvzmbwo +fowagctbjmphezqvuxsyild +aewojmsyczlhqxbuvfgidtp +etiwxvqypomjrfhcgadzslub + +cntkbsilqyjgpzm +bgslijntmkcaqzy +bgstkzucnilmrqj +itfcnhkpdjasqmbzlg + +gjxirvazbkcwfouysmdn +vkwpbrsamxuicjtgyodlze +ibkwrmvxozysupadcgj +rtsowkzjacxmediuybhvg + +rxahlpwjfotidy +dawojfrltiu +weptardbjlfsoi + +m +m + +oh +qy + +qhj +hde +h +hmj + +cgtqxjroh +jcrgqxotd + +boj +jbo +bjo +job +sojb + +pouxz +xzukao +fen + +t +t +t +o + +q +aiqz +q +cqhl +keq + +ajqyp +tkoqazlcnbviuxy +aryqh +pqya +qgya + +vojnhfbi +ojcfyh +dktlxjohega + +djbxhscvlawi +xsdwavcibhljk +hwjsvidamxcbl +jdbwxsialchv + +kav +vka +vak +kfcva +kav + +zuohp +houp + +fg +s +ycnvbtw +ro +or + +c +c +dh + +w +a +bl + +yfzohi +fhiyoz +zeifyoh +nfiohzy + +wyqprkdoeainh +idypnoreqmwkh +qkroidhepwny + +uax +zqbfa +zatrl + +rkuoh +hr + +yezkracmbjfnxsvliguqowt +ujlszbyxqcgnrvotmkifwea + +pen +ne +en +mshgbcrwqtnke + +gomhicaner +kvqnfpldhomxyz +nmijoh + +atjucifnlzkdwgyph +ncfiptykjlzgdauhw +ztchugdlknpywfaji +tfgpiyhazldcunkwj + +fogcmrluvbjiqhwsxepd +qmeucloxiprfsjwhgdv +poefrdmizwgjqxsuc +fkeugpdsmynjxociwrq + +sx +c +c +z +mc + +nmcb +kpfyoba + +ngdarukiejsx +vkgjuinbrhdeosax +uaikyjrqestlpxngd +ejwniuscxgkrda +grenjaxudisk + +aevkuwzs +wuvsazkqge +vayezsuk +zkevgsawu + +zijmanpyewl +broqskhv +xtfkudcg + +fqsjpzc +fpzjcs +zpcfsj +jpzefsc + +khpwnod +tyvu + +y +y +yw + +hzxowsryablmgudi +knecgxtsjpq + +yaqjv +vjaqy +jqvay +vjyqa +qajyv + +dlbgapxwryonfkmuchtsj +ghxzwabfstclnkyjurop +wpjhatslgfryxcknbvu +ajilxprsycutqbnfhgwk +zbmlfxcusyajdrhkpgowtnv + +wfxqtlk +wxqftk +qxjkwt +jqtwxk +dqkhtawxn + +cu +cu +cuew + +jcxuhafrbvkzw +axfrjuwplh +wrhdtqgasufnj + +wgyrb +bgywr +bydrgw +yrgewb + +lxeditmnkyr +hriznamtekxly + +kj +mlw +x +wl + +cqzat +qca +acnq +cqan +qac + +lnhcwrumivsd +rdcmsvhlinwu +vmlwhruoncsid +rscwvnulhidme + +fkmtxby +xjmywkfbr +fbemxyki +bmflkycx + +s +rksam +amsr +jsbp + +raoqwznuk +obyrutqkzawvn +anjwrqhuykzo +owqlnmrkzgaudf + +ydpe +rhygldpuq +jfyodtaxpsmw +zpydbni + +xudow +vlcjkmyoaqzid +nxurdo +donfxu +dpfxseo + +mvzqxgenwfkc +qkzwgfnvme +gfwdqvnkzme + +ywjbxsfdmona +oxawjysnfdm +nsjdmafyxbw +yfjanmwxsrd + +haynzevrkoumtip +jkvchaitymgsoqxu + +urdiqvlsxcohagef +qpsauenjorkwxi +yhirsoadxbqeuc + +p +sn +p +p + +jahbpofqukrlgse +fhrjgceasdy +xzfjvestahngrdc +wihgfesjanr +gefshajmrz + +itgeawlsdfpcon +getwnlofszcpa + +oetkdwyrifnlq +azhgcvbuxjmps + +ycfwbvjmqpudrtlzi +azgtpyjubcfimndrq +ojcyirptufdmzqb + +edkhqcyfjtizs +ykfvtqwspmnjzighd + +gqr +r +d +ujf + +jezrntd +tjndzer +ntreudjz +nrdezjt +njtredz + +zvtqunpsrewmxcagbohlkfyijd +bzteyksicxphlunjgomrdqavfw + +ejqlkasdzboityhu +lejtdpuoskhzbqxi +kbtjzyihqseolud +kshzqojrnbedulvtmci + +vcqoinhefwspkmaxl +ehoxgmvbwlputrfncaq +vwamxhpzqfnelco +qhpwmlfvdoenxkca +qhxmvcoaflepwn + +kirjh +irakjh +rhjik +hkrji + +hlbcemokurvxft +eofxkhmcvlutr +xucfotkvmlyher +fumenovrhlkctxb + +rishbgovypejfxtkzna +pzihsucerqygvl + +euozbtvrhm +qzxcgjdk + +ji +j +wl +i +q + +xsnkuihpdbozjqgaetcy +tdsyxnboqukacepihjgz +tkwaxdouzgyjbeisncphq +jxnchpyiosqeaubkgtzd + +qjvthdciaflyweokzrg +dgeyjtfvchrlwa +tylvcedrwahfjg +etdhwrajlcgvfy + +hqwkavzcxng +ehaxbfntwroikm +dlnxhwkza + +owaj +jcko + +bms +bm + +npilzedmafwvrt +dpmwftzavlgxiqrne +vdeuralfnkjzmiwpt + +qo +oq + +lpe +lpe +apevl + +f +d + +wogseatpdvqy +zbmrtpxgknulh +ewtfgjp + +hkpbd +jkrhv +ktmhscxlyz +fkrhb +whqorkb + +urdw +tuwjm +urwz +yuw +suwfh + +gvlxdaib +vjabqxdlgk +gxybaldv +egaxmvbdl + +xjmyfunivklc +vnuchxlkmjfi + +jqlyw +ylwut + +svfpjokan +ocnfksjapv +ytozqeidvafpkgjsn +jkxfrscavnpoh +kvnfjpahos + +jzcwlfbogmsdkaevi +jgsacbliezqfvomwkd + +gbmr +gm +gom +zgmu +gm + +ubljomy +uybmjorl +yloujbimf + +ilvzgshjcko +shoilgjk +jhosklgi +jkhoisylg +klihjogs + +fkwn +wkf + +wxdhuf +xbnmjlrsytez + +eshlq +wnkjbsqoi +ldmcgqurs +avxsqz +txpfaqsmy + +csyfboinlwe +verzxw +pezmwh +ewj + +mfl +mn +mxpn +m +m + +isf +isf +sfmi +gsif +ncfaisb + +uokthaqjvisrnyme +pomhrysveatqnuikj +qtrsjkyonheviamu +hvoqraeisnmjtyku +esqhuvnoamiykrtj + +hwvuezyplrqxdmso +rqulvhsdxfewpjmyo +pwmbyvudsrxcqnoklgh +fqaprsvywhmulxod + +orcaqude +sdyu +udl +sdu + +sdi +kdzis +hebuns +ys +syitvzk + +niwkqodtcrpe +rzhpiwdovkc +zoikcwrdpf + +aqpn +nqa +nqa +wnaq + +lkvjdxmfgtryuzb +tubdkymzvlxgfjr +tyzxrgblumjdvfk +zxrtlmkujvfbygd +vyjkxfgrztmbpdul + +kp +pk +kpn +pk +kp + +vjbg +wunrzhvjlykcsg +vjeg +vgdj +tjbvig + +y +y +y +y +y + +cjxeu +eucxj +ecujx +xjcue +cjxue + +m +m +u +m +m + +sahrtgbnivdoe +koidnhfeugyvas + +jaqlcfu +oztg +vterkhp + +nbxwcst +bmqntwxse +jebtwxsqmn + +bzwjxoaq +quxbfzajw +atscqwxjz + +bvu +esdjkf +rm + +mnspreiwdjqkftohu +urmpehjnwxvsdktfoq +nrqemjwphkutodfs + +xwuknmizvoafcerqhj +nosjwyzahegfik + +dlyj +jdq +udpjr +jlzd +jd + +vtfphlmkniawcex +vzwkhacifnxptlme +lfikanhpxmvctwy +mctvlwfknprxahqi + +kielm +yswgfxpkb +lmtedokh +tzonvqjka + +touiracgwnqehmbvpyd +qlfdcgpryzskxhjt + +fpwryli +ilwpryf +frwlipy + +aojegiwzvyfbx +evoxzygafjwbi +bzeogywjcvxfai +izjogaxvwfceb +ezjwiubxfgnavqmo + +kscztyfrgi +drqfcs +jmhnevaxrlp + +vmblxpyuorfq +viprbouymfxlq +fpobylmxuvrq + +xweiukthcjzdvr +nmfbgylhwakrq + +tuqkgzp +qgtzjkp +zjkqptg + +mbldpuxkezahf +hkpfzlbumxdae +bemxaklduphfz +fbkzhpaelumxd + +vs +mvsq +szhv +xjvshc + +bodkn +ehkbdv + +mnzuqa +codilpaby +awukng + +n +n +n +n + +pxbhwckytlv +wvkclyxeithp +ktybhwvcpxl +bkptwvlychx +khvlxtcywp + +beczgduqh +gudhzqe +qzeuhdg +pdhgzueq + +hvcxlngijzkqr +gnkqvpilhzdx +khxzqvdngploi +hzivwsnqxgkle +livxgkzhnuq + +jwhufepin +vixycrtsua +eoqbmiu +fpqui + +wr +wr +rw +wr + +dxsbrce +ivfrdspyc +mcxzrdsea +cbrmds +crds + +owedcyqix +eocwiqxdy +hicodqxymwev +qcweidyxo +ejdwqoxciy + +qeijgvszpdft +txsjyzipqgvfne + +ukictp +umsfpnic +brvzlgxoheucap + +ybdu +m +pd +cgwr + +rmaojwdfkulzsictxvehbq +idfwahsmrecjolbxvqtukz +sxvicwbaudtzekhqljmrof + +kewjqgnaoyizu +ygqkxejzitnuaop +nukoeazgyqij +gzjqlnuieokya +qnyugcojkeiza + +dctjbhpsqxofawnl +tljhdapboxqsfnc + +jqelifprvntodmbyz +pbtornfqvglkdey + +gq +qlgn +dqg +qghdy +wqg + +sxzfwoahiljrbvukqytpm +tfrlsjcvyzwkbpqmahx +sxrmwqayhlbtpzfkvj +tjywxfmlazhkvbprsq +vfbxryhgwszptklmqja + +zvdylkifjb +gdvkhcfzybjn +fjdynkbzhv + +tupnrivwjghcqf +vfmqwuokdabgseh + +ufhjyxznedlpr +hzldxeynkjf + +pngacuzedrmkvy +vkgjensmycrua +caurengzmvykd + +gq +l +l +i +p + +kpdnmf +dpnfmwk +fenjxpdqm + +rgc +kyj +mhk + +ajskowgdhfzenyubtclr +zrdjebhlovcuwstnga +mguajdnbrohslwctezq +oiecblhjzgwyasnrutd + +ebmntqlhvriof +qphonetbrguzdvcflma +sbvnltehqmofr +qtrbehlfjonkvms + +jnveyrixtkhqgawpuz +pkvzxunifwhtqgymer +ziuqpthndxlkervgyw +wsiqcvtyrnzkheugxp + +sbucfoavmxgnjiq +hjavnsblowqu +vjnsbuaqok +oasbjuezvqn + +vubdcqhmia +hsxuqzibvanmjed +qciwdabhuvmp + +knqedza +uakyol +jgvfpxibmrsc + +m +m +m +m +m + +nz +h +n +o + +z +a +z + +diyfo +od +do +do + +mlvtparjzqknseu +suyrzpmxenakj +eamxzkpursnj + +ihvq +qihjdv +hqiv +sqhvi +hvqi + +eitp +evji + +gcq +gqc + +agziqmcso +ngaobpmiz +masigzo + +klmgirjonfvyaqwuhzxtpsbdec +vejwyfqcudmraizhxontsgbp +virufxmenyphjacbgwdstqoz +bhapvumjrqosyfgziexwcdnt + +h +qtad +c + +hxlnkmop + +cyshewoa +zdsech +sxvecth +sehc + +wtghsjpa +awsjhtgfp +agtpjwsxh + +zlqph +lhqpz +lqzhp +lcpzqh +qplzh + +jdcqwmyfuilr +rmwfjiuytlqcd +wcidluyrmvqjf +iwqfjmulyrcd + +tqepgvliz +elgvqpz +zqpegcvln +ezupgqlv +lvqpengzs + +jrlqxdzvyw +gtjdyqzcwx +jmkqwxeihodnu +djbwqtx +rqgjwvxzyd + +khmnqvptdeuxyif +zcgjowsdpxalvbrut + +lujwhxqakodmg +luhjokazftdxgvwq +khlegqdauoxj +ahxjkgqudlo +juxkanqcyhdorgl + +ahz +zha +haz + +yaodktrq +tzdpckoan + +gstclfpkmo +agctslekfp + +hi +w + +rfgnkboymhltsaujcix +rufaniyxtmglbchpoj +bhonfylimcrdjtuagx +gmhjfanubyxtilcorv + +bzmctlexkswj +mwlkasxfbze + +dqpnelfgymboxrctuwzji +njqywifxrplgedmoztu +olxqejuafvwgzinmpyrtd +ynoejwxpzifrlgaqmudt + +vxeqdit +xtmd + +erwmnqks +zsrpjnmxik +mrspkitny +gvohdnamrskb + +vgck +gkvc +cvkg +vgrckm diff --git a/06/part1.js b/06/part1.js new file mode 100644 index 0000000..e96e7c8 --- /dev/null +++ b/06/part1.js @@ -0,0 +1,6 @@ +const fs = require('fs'); +fs.readFile('input', (err, data) => { + if (err) throw err; + let groups = data.toString().split("\n\n").map( (group) => new Set( group.replace(/\r?\n|\r/g, "").split('') ) ); + console.log(groups.reduce((sum, group) => sum + group.size, 0)); +}); diff --git a/06/part2.js b/06/part2.js new file mode 100644 index 0000000..fa3154d --- /dev/null +++ b/06/part2.js @@ -0,0 +1,18 @@ +const fs = require('fs'); + +Set.prototype.intersect = function(other) { + let out = new Set(); + other.forEach((entry) => { this.has(entry) && out.add(entry) }); + return out; +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + + let groups = data.toString().split("\n\n").map((group) => { + let people = group.trim().split("\n").map((person) => new Set(person.trim().split(""))); + return people.reduce((sum,person) => sum.intersect(person)); + }); + + console.log( groups.reduce((sum, group) => sum + group.size, 0) ); +}); From 4d2dec6e56ef0646e0f14eb56c6d12699b1b0769 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Mon, 7 Dec 2020 22:39:25 +0000 Subject: [PATCH 11/14] Day 7 --- 07/input | 594 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 07/part1.js | 49 +++++ 07/part2.js | 42 ++++ 3 files changed, 685 insertions(+) create mode 100644 07/input create mode 100644 07/part1.js create mode 100644 07/part2.js diff --git a/07/input b/07/input new file mode 100644 index 0000000..8c566c7 --- /dev/null +++ b/07/input @@ -0,0 +1,594 @@ +shiny plum bags contain no other bags. +clear crimson bags contain 3 pale aqua bags, 4 plaid magenta bags, 3 dotted beige bags, 3 dotted black bags. +dim violet bags contain 5 bright brown bags. +mirrored tomato bags contain 3 faded maroon bags, 3 dark green bags. +muted salmon bags contain 1 posh yellow bag. +posh lime bags contain 1 dim lavender bag. +light fuchsia bags contain 5 faded coral bags. +plaid lime bags contain 1 dull brown bag, 4 clear black bags, 3 dotted coral bags. +dim crimson bags contain 2 striped blue bags. +drab salmon bags contain 3 plaid fuchsia bags, 1 mirrored teal bag, 4 posh aqua bags. +dark red bags contain 1 bright magenta bag, 1 posh lavender bag, 2 dark gray bags, 1 wavy lime bag. +striped indigo bags contain 2 drab brown bags. +vibrant beige bags contain 3 drab gray bags, 4 shiny gold bags, 4 dull white bags, 3 bright lavender bags. +pale maroon bags contain 1 pale crimson bag, 2 mirrored magenta bags. +dull cyan bags contain 4 mirrored green bags, 2 striped red bags, 1 clear blue bag, 5 muted gold bags. +clear brown bags contain 3 light orange bags, 2 striped red bags. +wavy white bags contain 3 bright purple bags, 2 posh lime bags, 1 faded crimson bag. +shiny green bags contain 4 dim red bags, 3 vibrant blue bags, 2 dotted plum bags. +dotted indigo bags contain 5 muted lime bags, 2 drab maroon bags, 2 bright tomato bags. +muted purple bags contain 3 pale chartreuse bags, 2 dim plum bags, 2 striped blue bags. +dotted magenta bags contain 1 mirrored maroon bag, 3 shiny red bags, 2 faded blue bags, 2 mirrored purple bags. +posh maroon bags contain 4 dull olive bags, 3 dark blue bags. +pale teal bags contain 4 posh lavender bags, 5 light lavender bags, 5 clear violet bags. +faded red bags contain 2 dotted lime bags. +bright lime bags contain 1 dim blue bag. +vibrant gold bags contain 4 dark violet bags, 1 faded crimson bag. +shiny cyan bags contain 5 clear beige bags, 1 wavy cyan bag. +shiny crimson bags contain 4 posh salmon bags, 5 dim fuchsia bags. +striped salmon bags contain 1 striped lime bag. +faded silver bags contain 5 dull blue bags. +dull crimson bags contain 1 dark bronze bag. +dull silver bags contain 5 light purple bags, 2 dim crimson bags, 2 plaid red bags. +vibrant plum bags contain 2 mirrored indigo bags, 4 pale chartreuse bags, 2 muted violet bags. +muted green bags contain 2 dull black bags, 1 mirrored green bag. +vibrant crimson bags contain 5 dark beige bags, 5 dull maroon bags, 5 drab lavender bags. +drab orange bags contain 2 posh silver bags, 2 dim olive bags, 1 plaid green bag. +striped silver bags contain 3 shiny indigo bags. +plaid bronze bags contain 2 dull silver bags. +striped yellow bags contain 4 dim tomato bags. +plaid beige bags contain 1 striped black bag, 2 wavy purple bags, 4 striped blue bags. +mirrored blue bags contain 1 dim green bag, 5 dark maroon bags, 5 plaid plum bags. +pale green bags contain 1 mirrored aqua bag, 2 mirrored indigo bags, 4 vibrant red bags. +plaid gold bags contain 4 wavy magenta bags. +vibrant olive bags contain 5 mirrored magenta bags, 1 plaid salmon bag, 3 bright white bags. +bright teal bags contain 5 bright fuchsia bags. +drab purple bags contain 3 muted lavender bags, 2 plaid gold bags, 5 muted green bags, 3 drab gold bags. +mirrored lime bags contain 3 light orange bags, 3 dim chartreuse bags, 5 shiny brown bags. +faded plum bags contain 3 light orange bags, 5 dotted orange bags, 2 striped bronze bags, 3 light aqua bags. +plaid indigo bags contain 5 bright cyan bags. +shiny blue bags contain 4 drab turquoise bags. +bright crimson bags contain 5 clear cyan bags, 2 pale maroon bags, 3 muted lavender bags. +dark purple bags contain 2 shiny brown bags, 1 posh aqua bag, 2 wavy gold bags, 4 mirrored teal bags. +striped crimson bags contain 3 shiny brown bags. +light crimson bags contain 5 dark white bags, 2 shiny lavender bags, 1 muted white bag. +dark violet bags contain 3 muted violet bags, 1 bright green bag, 2 dotted maroon bags. +striped white bags contain 1 light coral bag, 2 light brown bags. +dotted beige bags contain 5 light coral bags, 3 plaid black bags, 1 bright lavender bag, 5 posh green bags. +plaid plum bags contain no other bags. +striped red bags contain 3 plaid green bags. +light white bags contain 5 plaid teal bags, 5 faded tan bags. +clear purple bags contain 1 drab cyan bag, 2 shiny fuchsia bags, 4 dull beige bags. +clear beige bags contain 4 dim cyan bags, 4 clear gold bags. +clear indigo bags contain 2 faded beige bags, 5 shiny gold bags, 1 dark brown bag. +plaid coral bags contain 1 striped black bag. +wavy cyan bags contain 1 posh coral bag, 2 shiny black bags. +striped green bags contain 1 pale green bag, 1 striped red bag, 5 striped tomato bags, 4 clear tomato bags. +shiny salmon bags contain 1 bright silver bag, 1 faded gray bag, 1 muted lime bag, 5 vibrant chartreuse bags. +pale gray bags contain 1 drab gray bag. +vibrant tomato bags contain 5 dim turquoise bags, 1 pale blue bag, 2 striped brown bags, 3 plaid red bags. +dotted red bags contain 4 plaid black bags, 3 dotted blue bags. +faded aqua bags contain 1 striped turquoise bag, 1 dark tan bag. +wavy silver bags contain 5 pale cyan bags. +faded salmon bags contain 2 clear salmon bags, 1 plaid green bag, 2 shiny white bags, 1 pale chartreuse bag. +dull turquoise bags contain 1 clear violet bag. +plaid magenta bags contain 4 wavy cyan bags. +vibrant maroon bags contain 3 plaid plum bags. +striped turquoise bags contain 2 shiny lavender bags, 2 light aqua bags, 5 drab magenta bags. +wavy crimson bags contain 4 posh coral bags, 1 wavy lime bag, 1 plaid plum bag, 4 dull maroon bags. +wavy red bags contain 5 vibrant blue bags. +plaid silver bags contain 4 light salmon bags, 5 faded indigo bags, 3 clear magenta bags. +wavy salmon bags contain 5 dim olive bags, 3 posh magenta bags, 4 dark turquoise bags, 5 drab teal bags. +dark yellow bags contain 2 drab silver bags, 3 dim cyan bags, 3 clear olive bags, 3 dotted crimson bags. +striped brown bags contain 5 clear gray bags, 3 wavy salmon bags. +posh lavender bags contain 4 light teal bags, 4 wavy turquoise bags, 1 dim yellow bag. +muted beige bags contain 4 dull teal bags. +vibrant purple bags contain 5 dark silver bags, 2 striped gold bags. +bright yellow bags contain 2 dark blue bags, 2 bright brown bags. +dim tan bags contain 3 striped lime bags, 4 posh silver bags, 3 drab teal bags, 4 mirrored magenta bags. +drab chartreuse bags contain 3 shiny brown bags, 5 dark silver bags, 4 muted olive bags. +clear maroon bags contain 4 clear indigo bags. +posh orange bags contain 3 light silver bags, 3 clear black bags, 1 faded maroon bag, 5 wavy red bags. +plaid chartreuse bags contain 2 vibrant beige bags, 1 dull aqua bag, 3 clear blue bags, 2 wavy fuchsia bags. +dull beige bags contain 3 mirrored black bags, 4 drab gray bags. +clear fuchsia bags contain 1 posh olive bag, 4 wavy silver bags, 1 faded beige bag. +dim blue bags contain 4 muted lavender bags, 2 mirrored black bags, 5 dull white bags. +faded coral bags contain 5 drab teal bags, 2 plaid green bags. +shiny fuchsia bags contain 2 striped coral bags. +mirrored green bags contain 5 bright purple bags, 1 dim olive bag, 1 dark green bag. +muted gray bags contain 2 bright white bags, 4 mirrored turquoise bags, 4 plaid teal bags. +plaid blue bags contain 3 mirrored indigo bags. +bright maroon bags contain 5 vibrant aqua bags. +dark magenta bags contain 1 dull crimson bag, 3 clear orange bags, 2 plaid chartreuse bags. +dark coral bags contain 4 dull green bags. +wavy plum bags contain 3 plaid plum bags, 5 drab lavender bags. +faded indigo bags contain 4 shiny brown bags, 5 dotted salmon bags, 3 vibrant aqua bags. +dotted tomato bags contain 1 vibrant plum bag. +bright violet bags contain 4 dim yellow bags, 3 dark silver bags, 5 posh beige bags, 5 wavy lavender bags. +shiny chartreuse bags contain 3 bright brown bags, 2 dim cyan bags, 4 shiny brown bags, 1 clear black bag. +dim chartreuse bags contain no other bags. +bright turquoise bags contain 3 clear lime bags, 3 clear violet bags, 2 dotted maroon bags, 1 dark cyan bag. +plaid salmon bags contain 3 dark tomato bags, 5 light maroon bags. +drab tan bags contain 2 light tomato bags, 4 clear maroon bags, 1 dim olive bag, 5 dark teal bags. +dim green bags contain 3 muted aqua bags, 3 mirrored aqua bags. +drab yellow bags contain 1 clear chartreuse bag. +clear lavender bags contain 1 wavy salmon bag, 3 dull tan bags, 5 plaid magenta bags. +mirrored magenta bags contain 5 dark violet bags. +dotted white bags contain 2 muted blue bags, 1 light brown bag, 1 bright red bag, 3 posh aqua bags. +faded black bags contain 1 light violet bag, 5 muted aqua bags, 4 striped blue bags, 2 dull gray bags. +bright plum bags contain 3 dull white bags, 3 wavy maroon bags. +light gray bags contain 1 posh magenta bag. +dull orange bags contain 4 dotted chartreuse bags, 2 clear lavender bags, 4 pale silver bags, 5 shiny blue bags. +wavy purple bags contain 3 striped orange bags, 2 light aqua bags, 5 dull blue bags, 3 striped lime bags. +plaid green bags contain 1 dotted blue bag. +plaid purple bags contain 1 drab aqua bag, 4 dark bronze bags, 1 vibrant olive bag. +bright green bags contain 4 dim green bags, 2 dull aqua bags, 1 striped orange bag, 3 light teal bags. +posh cyan bags contain 5 pale orange bags, 5 faded chartreuse bags. +posh white bags contain 1 dark cyan bag, 1 dark magenta bag, 2 pale plum bags, 2 striped teal bags. +mirrored red bags contain 1 dotted violet bag, 4 dotted white bags, 4 faded tan bags, 4 wavy maroon bags. +dim turquoise bags contain 2 dark brown bags. +vibrant fuchsia bags contain 4 muted aqua bags, 1 light maroon bag. +light turquoise bags contain 5 bright cyan bags, 2 pale cyan bags. +striped coral bags contain 3 striped turquoise bags, 1 posh green bag, 1 dark brown bag. +dim black bags contain 2 posh coral bags. +mirrored orange bags contain 3 dull maroon bags, 5 bright purple bags, 2 striped turquoise bags. +clear cyan bags contain 5 wavy green bags, 4 faded coral bags, 4 muted purple bags. +muted aqua bags contain no other bags. +drab maroon bags contain 1 vibrant orange bag, 5 dotted white bags. +dim brown bags contain 1 dark plum bag, 5 light aqua bags, 5 striped orange bags, 3 vibrant aqua bags. +dim teal bags contain 3 pale gold bags, 4 dark teal bags. +pale white bags contain 2 shiny lavender bags, 2 clear gray bags, 3 pale purple bags, 5 striped yellow bags. +wavy black bags contain 5 wavy red bags, 2 vibrant bronze bags. +posh brown bags contain 4 shiny cyan bags. +bright bronze bags contain 2 plaid black bags, 3 mirrored gold bags, 4 drab silver bags, 4 striped orange bags. +shiny silver bags contain 5 muted gold bags, 4 light blue bags. +bright indigo bags contain 2 dotted gold bags, 5 vibrant red bags, 5 faded olive bags, 4 mirrored purple bags. +shiny violet bags contain 3 mirrored black bags, 2 bright maroon bags, 2 vibrant gold bags. +plaid crimson bags contain 1 plaid beige bag. +pale tomato bags contain 2 dark tomato bags. +striped bronze bags contain 5 bright magenta bags. +wavy violet bags contain 4 drab gray bags. +faded crimson bags contain 2 plaid plum bags, 5 vibrant aqua bags, 5 posh yellow bags, 4 bright lavender bags. +shiny aqua bags contain 4 faded silver bags, 2 dark maroon bags. +light lavender bags contain 3 dim chartreuse bags. +wavy orange bags contain 1 striped lime bag, 3 mirrored indigo bags, 2 vibrant plum bags, 4 dull tomato bags. +posh aqua bags contain 2 posh magenta bags. +pale black bags contain 2 drab green bags, 4 wavy olive bags, 4 plaid teal bags, 3 posh silver bags. +dotted crimson bags contain 1 pale gold bag, 5 dark brown bags, 4 dull aqua bags. +light orange bags contain 4 plaid green bags. +drab silver bags contain 5 wavy tan bags, 5 plaid tomato bags, 2 vibrant violet bags, 3 pale chartreuse bags. +vibrant red bags contain 4 light aqua bags, 4 striped orange bags, 5 dark blue bags, 3 faded green bags. +wavy olive bags contain 3 dull beige bags, 2 dim lavender bags, 1 striped gold bag. +dull tomato bags contain 3 vibrant violet bags, 1 shiny chartreuse bag, 4 plaid beige bags, 2 clear indigo bags. +dull coral bags contain 3 bright green bags, 4 dim purple bags. +faded magenta bags contain 3 drab olive bags, 2 faded maroon bags, 3 striped blue bags. +plaid yellow bags contain 1 faded brown bag, 1 faded gold bag, 5 drab fuchsia bags. +pale crimson bags contain 5 drab silver bags, 2 striped crimson bags. +plaid red bags contain 4 vibrant aqua bags. +vibrant bronze bags contain 4 shiny aqua bags. +muted crimson bags contain 3 vibrant chartreuse bags, 3 shiny fuchsia bags, 2 dull fuchsia bags, 4 striped brown bags. +bright lavender bags contain 4 muted aqua bags, 3 dim green bags. +dotted silver bags contain 1 striped white bag, 5 dark magenta bags, 2 clear green bags, 3 dim silver bags. +mirrored olive bags contain 5 drab turquoise bags, 2 dim orange bags, 5 dark aqua bags, 4 posh plum bags. +pale blue bags contain 2 posh green bags, 5 shiny lavender bags, 1 dim brown bag, 5 drab magenta bags. +striped purple bags contain 5 vibrant beige bags, 3 vibrant bronze bags. +wavy green bags contain 5 plaid plum bags, 2 muted blue bags, 5 drab gray bags, 2 posh magenta bags. +clear aqua bags contain 5 wavy green bags, 5 wavy maroon bags, 3 plaid salmon bags, 4 dark salmon bags. +striped aqua bags contain 4 mirrored purple bags. +pale lime bags contain 3 dull blue bags. +vibrant orange bags contain 5 light brown bags, 4 posh silver bags. +pale brown bags contain 4 striped yellow bags, 1 light salmon bag, 2 dark blue bags. +bright magenta bags contain 2 wavy cyan bags. +clear tan bags contain 5 dark gold bags. +pale beige bags contain 4 vibrant orange bags, 2 posh tomato bags. +mirrored gray bags contain 4 dull salmon bags. +faded lime bags contain 3 muted purple bags, 4 clear lime bags. +dark fuchsia bags contain 4 dull crimson bags, 1 vibrant cyan bag, 2 light lavender bags, 1 dark tomato bag. +shiny teal bags contain 3 mirrored tomato bags, 3 plaid coral bags, 2 shiny coral bags. +wavy magenta bags contain 1 vibrant cyan bag, 1 posh green bag, 4 vibrant aqua bags. +dotted bronze bags contain 1 clear orange bag, 2 dull lavender bags, 2 clear salmon bags. +plaid gray bags contain 1 shiny brown bag, 1 plaid turquoise bag, 3 faded silver bags, 2 mirrored white bags. +dark tan bags contain 1 light lavender bag. +bright orange bags contain 2 wavy gray bags. +light yellow bags contain 4 light blue bags, 3 muted blue bags, 1 plaid red bag, 3 mirrored aqua bags. +faded maroon bags contain 2 shiny brown bags, 4 drab magenta bags, 2 dotted maroon bags, 5 mirrored indigo bags. +dark aqua bags contain 2 bright gold bags, 3 plaid tomato bags. +striped gray bags contain 4 dark tomato bags. +bright olive bags contain 1 light gold bag, 4 faded coral bags, 5 dark brown bags, 4 faded maroon bags. +mirrored yellow bags contain 5 shiny silver bags, 5 dull violet bags, 5 drab silver bags, 5 pale lavender bags. +shiny gold bags contain 3 posh green bags, 2 dull white bags. +pale aqua bags contain 1 vibrant cyan bag, 2 posh gray bags, 3 faded beige bags, 2 dark gold bags. +light bronze bags contain 4 dotted black bags, 4 bright lavender bags, 2 plaid maroon bags. +plaid cyan bags contain 3 vibrant turquoise bags. +dull black bags contain 3 muted violet bags, 2 shiny brown bags, 4 dim chartreuse bags, 1 light lavender bag. +dotted brown bags contain 1 shiny white bag, 5 muted blue bags, 5 pale white bags, 3 bright gray bags. +clear turquoise bags contain 4 dark blue bags, 3 drab gold bags. +mirrored salmon bags contain 1 posh aqua bag, 2 dark gold bags, 4 dull black bags. +drab blue bags contain 2 plaid red bags, 3 wavy chartreuse bags, 3 posh salmon bags. +pale purple bags contain 1 wavy tan bag, 5 shiny lavender bags, 4 faded beige bags. +shiny lavender bags contain 2 dim olive bags, 3 vibrant aqua bags, 1 shiny plum bag, 1 dim cyan bag. +plaid brown bags contain 3 faded black bags, 5 wavy violet bags, 5 faded white bags. +faded tan bags contain 4 clear tan bags, 4 clear gold bags. +dim cyan bags contain 4 vibrant lime bags, 5 faded silver bags, 4 pale lime bags, 2 dim chartreuse bags. +vibrant green bags contain 5 plaid blue bags, 3 shiny maroon bags, 4 dotted violet bags. +drab turquoise bags contain 2 drab gray bags, 5 clear magenta bags. +bright coral bags contain 4 clear gold bags, 4 light coral bags. +shiny yellow bags contain 5 shiny chartreuse bags, 2 wavy green bags, 1 clear beige bag. +dim coral bags contain 2 shiny gray bags, 5 clear indigo bags, 2 vibrant plum bags. +pale orange bags contain 2 plaid tomato bags. +mirrored bronze bags contain 4 striped gray bags, 1 posh lavender bag, 2 wavy turquoise bags. +dim magenta bags contain 5 vibrant maroon bags, 5 mirrored fuchsia bags, 5 pale bronze bags, 2 dim brown bags. +plaid aqua bags contain 3 mirrored green bags. +mirrored indigo bags contain 2 vibrant lime bags, 2 clear salmon bags, 4 wavy magenta bags. +pale violet bags contain 1 clear salmon bag, 5 posh maroon bags, 4 posh plum bags. +bright white bags contain 1 muted blue bag, 2 wavy chartreuse bags, 2 pale turquoise bags, 5 plaid red bags. +faded lavender bags contain 2 light gold bags. +pale salmon bags contain 3 pale turquoise bags, 2 faded black bags, 5 wavy green bags. +vibrant teal bags contain 5 vibrant red bags, 1 dark silver bag, 2 pale white bags. +dark teal bags contain 4 dim plum bags, 4 mirrored white bags, 1 wavy gold bag. +dotted violet bags contain 1 clear beige bag. +vibrant black bags contain 5 dim violet bags. +bright gray bags contain 1 dull gray bag, 1 dark plum bag, 4 bright silver bags, 4 pale chartreuse bags. +light black bags contain 1 faded chartreuse bag. +muted coral bags contain 2 striped gray bags, 3 clear beige bags. +dark orange bags contain 3 mirrored teal bags, 5 dotted blue bags, 1 vibrant lime bag. +muted yellow bags contain 2 dim aqua bags, 4 vibrant indigo bags. +posh chartreuse bags contain 5 light blue bags, 4 faded chartreuse bags, 4 shiny black bags, 1 dim violet bag. +wavy maroon bags contain 5 muted gold bags, 4 posh yellow bags. +dim orange bags contain 1 faded gold bag. +dim aqua bags contain 4 wavy purple bags. +faded turquoise bags contain 5 bright violet bags, 3 pale purple bags, 4 faded maroon bags. +posh bronze bags contain 2 dim orange bags, 1 posh lavender bag. +vibrant white bags contain 5 muted aqua bags, 5 shiny turquoise bags. +clear blue bags contain 1 mirrored lavender bag, 2 dull violet bags. +striped teal bags contain 2 vibrant cyan bags. +striped tomato bags contain 1 dotted violet bag, 3 vibrant violet bags, 1 light beige bag. +muted maroon bags contain 2 clear red bags, 2 plaid chartreuse bags, 2 posh tomato bags. +dark bronze bags contain 5 dull white bags, 3 clear violet bags, 4 dark olive bags, 4 pale violet bags. +light blue bags contain 1 muted violet bag, 4 dark gold bags, 3 pale blue bags. +plaid white bags contain 3 striped orange bags, 3 light coral bags, 5 drab aqua bags. +vibrant cyan bags contain 4 dim fuchsia bags, 5 dull blue bags. +faded tomato bags contain 5 dim violet bags, 4 bright green bags, 3 bright teal bags. +wavy fuchsia bags contain 5 striped coral bags, 3 dark maroon bags, 5 muted aqua bags. +drab brown bags contain 5 wavy orange bags, 4 clear violet bags. +shiny olive bags contain 5 pale red bags, 1 bright purple bag, 2 dark plum bags. +mirrored fuchsia bags contain 4 dark violet bags, 2 faded crimson bags, 4 striped black bags. +clear olive bags contain 2 wavy magenta bags, 1 striped black bag, 5 pale fuchsia bags, 4 drab red bags. +dim yellow bags contain 2 faded blue bags, 2 shiny lavender bags, 5 shiny silver bags. +dark silver bags contain 4 light aqua bags. +plaid tomato bags contain 2 posh aqua bags, 2 striped turquoise bags, 3 plaid plum bags. +clear magenta bags contain 2 muted violet bags. +dotted orange bags contain 3 striped turquoise bags. +striped fuchsia bags contain 4 clear beige bags, 4 shiny crimson bags, 1 striped red bag, 4 shiny lavender bags. +clear gray bags contain 5 vibrant aqua bags, 1 light teal bag, 2 striped lime bags, 3 vibrant cyan bags. +dotted gold bags contain 4 drab gold bags, 2 faded tomato bags, 1 pale gray bag. +clear orange bags contain 3 mirrored plum bags, 1 dim aqua bag, 1 drab bronze bag. +vibrant blue bags contain 1 shiny brown bag, 5 shiny crimson bags. +pale plum bags contain 3 wavy olive bags, 5 pale lime bags, 3 plaid gold bags, 1 dim gold bag. +dim lavender bags contain 5 striped black bags, 2 vibrant lime bags, 4 bright red bags. +dull purple bags contain 1 dark tomato bag, 5 faded crimson bags. +vibrant tan bags contain 4 dim tomato bags, 4 vibrant violet bags, 5 pale olive bags, 2 posh aqua bags. +dull magenta bags contain 4 bright gray bags, 5 faded gold bags, 3 dotted yellow bags, 3 bright silver bags. +posh violet bags contain 5 vibrant indigo bags, 5 pale chartreuse bags, 2 dark green bags, 3 light blue bags. +dotted green bags contain 4 clear red bags, 5 drab aqua bags, 3 light black bags. +pale magenta bags contain 5 dark maroon bags, 3 mirrored aqua bags. +pale indigo bags contain 3 drab turquoise bags, 5 light violet bags, 5 clear magenta bags, 1 striped blue bag. +dotted lime bags contain 4 dull tomato bags, 5 dull yellow bags, 4 shiny gold bags. +posh fuchsia bags contain 2 pale orange bags, 4 posh coral bags, 1 drab brown bag. +light teal bags contain 3 faded green bags. +shiny lime bags contain 4 dotted blue bags, 5 light coral bags. +dull blue bags contain no other bags. +pale turquoise bags contain 2 pale blue bags, 5 dotted purple bags. +striped gold bags contain 2 wavy silver bags, 3 light purple bags, 3 dull gold bags, 1 dark coral bag. +vibrant chartreuse bags contain 5 mirrored tan bags, 4 vibrant blue bags, 1 clear teal bag, 2 dull indigo bags. +muted silver bags contain 1 dark beige bag. +shiny red bags contain 3 dim fuchsia bags, 3 wavy gold bags, 3 posh violet bags, 3 shiny silver bags. +mirrored chartreuse bags contain 1 wavy white bag. +light red bags contain 4 mirrored gold bags. +pale chartreuse bags contain 1 pale lime bag, 4 dim cyan bags. +bright aqua bags contain 5 bright yellow bags, 1 drab orange bag. +wavy lavender bags contain 5 dark white bags, 3 muted blue bags, 1 dotted salmon bag, 2 dull silver bags. +dotted purple bags contain 5 light aqua bags. +drab red bags contain 4 wavy green bags. +dull indigo bags contain 2 dark teal bags, 5 drab turquoise bags. +striped lime bags contain 3 dull blue bags, 2 shiny lavender bags, 2 muted aqua bags, 3 posh silver bags. +clear red bags contain 3 shiny fuchsia bags. +mirrored plum bags contain 1 muted fuchsia bag. +light chartreuse bags contain 3 mirrored salmon bags, 3 clear indigo bags, 1 striped coral bag, 1 plaid blue bag. +striped plum bags contain 3 pale violet bags. +light gold bags contain 2 dim fuchsia bags. +shiny white bags contain 5 dark indigo bags, 2 dim aqua bags, 5 vibrant aqua bags. +faded bronze bags contain 5 dim cyan bags. +pale red bags contain 2 mirrored magenta bags, 1 bright cyan bag, 2 vibrant lime bags. +muted chartreuse bags contain 2 bright chartreuse bags, 1 wavy gray bag, 1 pale lime bag, 5 light teal bags. +wavy chartreuse bags contain 4 bright fuchsia bags, 3 vibrant violet bags, 2 dull aqua bags. +dull lime bags contain 5 shiny lavender bags, 3 posh aqua bags. +vibrant magenta bags contain 5 striped yellow bags, 2 light tan bags, 5 shiny brown bags, 2 muted yellow bags. +muted blue bags contain 3 vibrant aqua bags, 2 dim fuchsia bags. +drab aqua bags contain 1 plaid plum bag, 1 posh yellow bag, 1 muted fuchsia bag, 4 muted indigo bags. +mirrored beige bags contain 5 wavy brown bags, 2 clear crimson bags, 2 dim gold bags. +light tan bags contain 5 light violet bags, 5 dim brown bags, 5 wavy turquoise bags. +faded fuchsia bags contain 5 drab brown bags, 2 light aqua bags. +dim salmon bags contain 4 shiny cyan bags, 4 faded olive bags, 3 dark maroon bags. +drab lavender bags contain 2 drab gray bags, 5 clear black bags, 1 shiny plum bag. +mirrored white bags contain 3 plaid plum bags, 5 muted coral bags, 1 clear gold bag. +dull aqua bags contain 3 shiny lavender bags, 1 muted aqua bag, 4 light purple bags, 4 shiny brown bags. +plaid maroon bags contain 4 clear lime bags, 1 muted violet bag, 4 vibrant teal bags. +clear salmon bags contain 2 striped blue bags, 1 dim chartreuse bag, 3 light purple bags, 2 posh silver bags. +dotted lavender bags contain 1 dark tomato bag, 2 striped turquoise bags, 3 dull gray bags. +light green bags contain 4 bright silver bags, 1 dim plum bag, 5 dark indigo bags, 5 dark blue bags. +plaid black bags contain 4 muted lavender bags, 5 muted violet bags, 3 dim olive bags, 5 bright maroon bags. +dull brown bags contain 3 dull green bags. +dull fuchsia bags contain 2 dotted blue bags, 4 vibrant bronze bags, 5 striped red bags. +light olive bags contain 3 clear beige bags, 3 bright maroon bags, 1 dim green bag. +faded beige bags contain 2 striped black bags, 5 light coral bags. +light coral bags contain 3 clear gold bags, 2 drab magenta bags, 2 pale lime bags. +shiny turquoise bags contain 4 dull olive bags, 1 pale purple bag, 5 striped bronze bags. +dark chartreuse bags contain 3 dotted beige bags, 1 dull silver bag, 3 posh lavender bags, 5 dotted blue bags. +shiny brown bags contain 5 plaid plum bags, 3 vibrant lime bags, 1 posh silver bag, 5 muted aqua bags. +dim gold bags contain 4 wavy magenta bags, 1 plaid turquoise bag, 3 drab maroon bags, 3 dark coral bags. +faded teal bags contain 2 dim turquoise bags, 4 faded beige bags. +dull lavender bags contain 3 shiny chartreuse bags, 4 posh salmon bags. +mirrored brown bags contain 4 vibrant cyan bags. +striped black bags contain 2 dull blue bags, 1 vibrant aqua bag, 1 dark maroon bag. +mirrored violet bags contain 3 vibrant crimson bags, 1 posh violet bag. +dark beige bags contain 3 mirrored gold bags. +clear white bags contain 2 striped gray bags. +dull tan bags contain 3 mirrored red bags, 2 plaid indigo bags, 3 bright gray bags. +dim tomato bags contain 1 faded beige bag, 2 dotted beige bags. +dark black bags contain 2 clear silver bags. +shiny magenta bags contain 5 plaid blue bags, 5 shiny aqua bags, 1 dull aqua bag. +light plum bags contain 1 dim black bag, 3 faded olive bags. +shiny beige bags contain 5 vibrant plum bags, 5 light blue bags, 2 light salmon bags, 3 wavy tan bags. +wavy gold bags contain 1 drab aqua bag. +vibrant lime bags contain no other bags. +vibrant turquoise bags contain 1 vibrant blue bag, 4 striped teal bags, 5 striped white bags. +dim maroon bags contain 4 striped lime bags, 2 light orange bags, 2 vibrant maroon bags. +posh olive bags contain 5 plaid tomato bags, 4 dark magenta bags, 4 faded chartreuse bags. +dim white bags contain 3 striped blue bags. +faded purple bags contain 1 dim brown bag, 3 dark orange bags, 2 posh silver bags, 5 muted lavender bags. +faded brown bags contain 5 faded coral bags, 1 striped turquoise bag. +posh beige bags contain 4 pale lime bags, 4 light violet bags. +shiny gray bags contain 2 shiny black bags, 5 striped white bags. +dotted salmon bags contain 3 pale lime bags, 3 muted lavender bags, 3 vibrant red bags. +vibrant brown bags contain 5 light gold bags, 3 light purple bags, 4 light blue bags. +faded white bags contain 1 dotted black bag. +wavy turquoise bags contain 4 dim crimson bags, 3 bright maroon bags, 3 pale cyan bags. +drab cyan bags contain 4 drab olive bags, 3 dim tomato bags, 2 muted indigo bags. +drab indigo bags contain 5 shiny bronze bags, 4 striped crimson bags, 5 light gold bags. +dim red bags contain 2 dull aqua bags, 3 mirrored aqua bags, 1 wavy red bag, 2 shiny crimson bags. +wavy coral bags contain 3 bright tan bags, 1 bright coral bag, 4 dull gold bags. +pale tan bags contain 2 clear blue bags, 3 dark bronze bags, 2 plaid coral bags, 3 vibrant magenta bags. +wavy lime bags contain 4 dull silver bags. +muted indigo bags contain 5 light purple bags. +clear bronze bags contain 4 clear silver bags, 3 shiny tan bags. +dull maroon bags contain 4 dark blue bags, 4 mirrored indigo bags. +clear yellow bags contain 3 plaid coral bags, 3 drab lime bags, 3 faded indigo bags. +drab green bags contain 5 faded purple bags. +plaid olive bags contain 5 faded silver bags, 4 dull purple bags, 4 dull yellow bags, 1 plaid salmon bag. +dark brown bags contain 1 clear gold bag, 5 light coral bags. +wavy tomato bags contain 4 striped teal bags. +dotted maroon bags contain 1 posh silver bag, 1 dark turquoise bag. +posh plum bags contain 2 bright red bags, 3 shiny maroon bags. +faded violet bags contain 1 faded green bag. +bright tan bags contain 3 shiny blue bags, 1 mirrored lime bag, 2 vibrant plum bags. +dim beige bags contain 1 light tan bag, 1 pale silver bag, 5 plaid silver bags. +clear plum bags contain 1 dark silver bag, 4 dull green bags, 3 shiny gray bags. +muted lavender bags contain 5 dim olive bags, 1 pale lime bag. +faded gold bags contain 1 striped coral bag, 3 light aqua bags. +faded orange bags contain 4 faded beige bags. +dim fuchsia bags contain no other bags. +dull green bags contain 5 dull purple bags, 3 bright maroon bags, 1 dark plum bag. +muted turquoise bags contain 5 shiny chartreuse bags, 1 mirrored lime bag. +striped cyan bags contain 3 striped gray bags, 4 dark brown bags. +faded cyan bags contain 4 striped purple bags. +shiny maroon bags contain 5 faded silver bags, 5 dark purple bags, 5 pale gold bags. +wavy tan bags contain 3 dim brown bags. +clear silver bags contain 5 clear blue bags, 1 dim chartreuse bag, 2 clear orange bags. +dull gold bags contain 3 drab aqua bags, 1 dim green bag. +wavy gray bags contain 2 striped bronze bags. +shiny purple bags contain 3 wavy lavender bags, 2 striped yellow bags. +posh salmon bags contain 1 dull black bag, 3 muted aqua bags, 4 muted fuchsia bags, 5 bright coral bags. +faded gray bags contain 2 faded orange bags, 1 striped brown bag. +shiny indigo bags contain 5 posh beige bags. +vibrant gray bags contain 3 pale brown bags, 2 shiny tomato bags, 5 mirrored silver bags, 3 striped tomato bags. +posh gray bags contain 4 striped black bags, 3 muted aqua bags, 4 mirrored gold bags. +mirrored cyan bags contain 1 muted lavender bag, 4 striped lime bags, 3 mirrored blue bags. +dull yellow bags contain 5 shiny brown bags, 5 clear maroon bags, 4 dim cyan bags. +mirrored black bags contain 2 mirrored aqua bags. +dim purple bags contain 4 vibrant teal bags, 5 shiny silver bags, 3 shiny brown bags. +drab beige bags contain 1 dim yellow bag, 1 vibrant lime bag, 2 muted plum bags, 5 posh violet bags. +striped chartreuse bags contain 2 posh gold bags, 1 striped lime bag. +dull chartreuse bags contain 1 plaid plum bag. +bright red bags contain 2 light lavender bags, 1 drab magenta bag. +drab crimson bags contain 2 pale chartreuse bags, 1 muted black bag, 4 striped yellow bags, 4 striped black bags. +wavy aqua bags contain 4 light tan bags, 3 dim maroon bags, 1 bright fuchsia bag. +clear gold bags contain no other bags. +dim lime bags contain 1 dull crimson bag, 1 mirrored orange bag, 1 light yellow bag, 1 muted fuchsia bag. +pale cyan bags contain 5 dull blue bags, 5 dark blue bags. +dim silver bags contain 3 bright aqua bags. +dark maroon bags contain 4 striped turquoise bags, 4 faded green bags, 3 dim fuchsia bags. +striped tan bags contain 2 dark violet bags, 2 muted indigo bags. +posh tomato bags contain 3 dark purple bags, 3 dim olive bags, 2 dotted white bags, 3 mirrored cyan bags. +light silver bags contain 1 plaid orange bag, 3 wavy salmon bags. +muted brown bags contain 1 plaid orange bag. +dim indigo bags contain 2 dark teal bags, 5 faded beige bags, 1 drab gray bag, 4 muted gold bags. +wavy brown bags contain 3 dotted salmon bags. +posh purple bags contain 2 wavy salmon bags, 1 faded tomato bag, 5 dark tan bags. +muted fuchsia bags contain 3 muted violet bags, 5 light purple bags, 4 dim green bags. +muted lime bags contain 2 vibrant beige bags. +muted black bags contain 5 pale blue bags, 1 vibrant beige bag, 4 pale lime bags, 2 vibrant cyan bags. +drab white bags contain 2 dim magenta bags, 5 vibrant bronze bags, 3 bright magenta bags. +bright chartreuse bags contain 5 dark white bags, 3 dotted olive bags. +wavy yellow bags contain 2 dotted salmon bags. +posh green bags contain 5 posh magenta bags, 2 light aqua bags, 3 wavy purple bags. +clear violet bags contain 3 mirrored salmon bags. +dull plum bags contain 4 bright coral bags. +posh yellow bags contain 4 dim aqua bags, 1 shiny brown bag, 3 striped orange bags. +dark salmon bags contain 4 light gold bags, 3 dotted white bags, 5 drab gray bags, 4 vibrant cyan bags. +posh blue bags contain 4 vibrant salmon bags, 2 clear tan bags, 5 light tomato bags, 1 wavy maroon bag. +drab bronze bags contain 5 plaid green bags, 4 striped turquoise bags, 2 shiny aqua bags, 3 bright plum bags. +dotted aqua bags contain 3 wavy olive bags. +dark lavender bags contain 2 dotted plum bags. +shiny tan bags contain 4 dotted turquoise bags, 4 pale violet bags, 3 plaid salmon bags, 1 striped gold bag. +shiny orange bags contain 3 dull purple bags, 1 clear green bag. +muted olive bags contain 2 dark orange bags. +dark tomato bags contain 5 vibrant lime bags. +vibrant silver bags contain 4 striped blue bags, 2 plaid gold bags. +dull bronze bags contain 3 faded coral bags, 1 clear chartreuse bag, 2 muted aqua bags, 3 wavy teal bags. +light tomato bags contain 3 dark blue bags, 5 mirrored salmon bags. +dotted cyan bags contain 2 dark gold bags, 4 clear gray bags, 2 dull aqua bags. +bright purple bags contain 4 striped coral bags. +dark white bags contain 3 dim brown bags, 1 mirrored gold bag, 1 striped white bag, 4 plaid black bags. +light magenta bags contain 4 vibrant olive bags, 5 clear lavender bags, 5 faded yellow bags. +drab violet bags contain 3 dotted blue bags, 2 dark plum bags, 3 dim silver bags, 5 vibrant olive bags. +posh turquoise bags contain 2 muted indigo bags, 2 striped white bags, 3 drab bronze bags, 4 dotted black bags. +plaid tan bags contain 3 vibrant bronze bags, 5 dull purple bags, 2 posh turquoise bags. +dull violet bags contain 4 vibrant cyan bags. +drab gray bags contain 3 pale lime bags, 3 bright green bags, 3 light lavender bags, 5 dull gray bags. +faded blue bags contain 5 muted lavender bags, 2 dim fuchsia bags, 3 clear salmon bags, 4 striped blue bags. +mirrored turquoise bags contain 5 faded purple bags. +wavy bronze bags contain 3 dim green bags, 2 muted indigo bags, 5 dotted tan bags. +light brown bags contain 3 bright purple bags, 4 vibrant lime bags. +bright brown bags contain 4 light coral bags, 3 clear gold bags, 2 striped turquoise bags, 4 dim fuchsia bags. +dotted turquoise bags contain 1 striped white bag, 4 dark magenta bags. +wavy teal bags contain 5 shiny lime bags, 2 dull cyan bags. +dark gold bags contain 5 dim green bags, 2 plaid red bags, 2 pale chartreuse bags. +dotted black bags contain 3 drab olive bags, 3 light teal bags. +wavy blue bags contain 4 clear red bags. +posh red bags contain 3 muted tan bags. +shiny black bags contain 5 light maroon bags, 4 vibrant cyan bags, 2 mirrored indigo bags. +plaid fuchsia bags contain 3 wavy magenta bags, 4 posh aqua bags, 3 posh salmon bags. +dotted olive bags contain 5 bright brown bags, 1 dotted salmon bag, 4 striped turquoise bags. +dull teal bags contain 2 pale purple bags. +posh indigo bags contain 1 shiny salmon bag. +clear coral bags contain 2 muted violet bags. +pale silver bags contain 2 drab olive bags, 5 wavy red bags. +light beige bags contain 2 muted lime bags. +striped orange bags contain no other bags. +dark gray bags contain 4 pale white bags, 3 pale blue bags, 5 dotted beige bags. +striped lavender bags contain 2 dull brown bags, 4 vibrant lavender bags, 1 vibrant aqua bag, 5 dull gold bags. +dark blue bags contain 5 clear gold bags, 5 faded silver bags. +plaid orange bags contain 1 shiny tomato bag, 1 light tomato bag. +muted bronze bags contain 2 clear gray bags, 5 shiny black bags, 5 shiny red bags, 2 muted blue bags. +light cyan bags contain 4 wavy crimson bags, 4 muted bronze bags, 4 clear lime bags, 3 dull yellow bags. +light salmon bags contain 4 muted aqua bags, 5 vibrant lime bags, 4 light aqua bags, 4 dim fuchsia bags. +dotted fuchsia bags contain 1 mirrored aqua bag. +drab tomato bags contain 2 vibrant blue bags, 1 pale chartreuse bag, 4 shiny black bags, 5 drab silver bags. +drab black bags contain 3 mirrored teal bags, 5 dull maroon bags. +posh black bags contain 4 pale violet bags, 5 plaid violet bags, 2 posh magenta bags. +vibrant aqua bags contain 1 faded silver bag. +mirrored tan bags contain 3 dotted white bags. +mirrored teal bags contain 3 shiny plum bags, 3 shiny brown bags, 3 striped turquoise bags, 2 bright red bags. +muted white bags contain 5 drab gray bags, 5 faded white bags, 3 vibrant beige bags. +bright beige bags contain 3 vibrant red bags, 4 posh silver bags. +dark indigo bags contain 2 dark violet bags, 2 dim plum bags, 1 mirrored indigo bag. +striped maroon bags contain 5 faded blue bags. +clear chartreuse bags contain 5 plaid plum bags, 1 plaid maroon bag, 1 dark crimson bag, 4 drab bronze bags. +dark olive bags contain 2 wavy purple bags, 4 shiny lime bags. +dim olive bags contain 5 faded silver bags, 5 shiny plum bags. +light indigo bags contain 5 dotted tomato bags, 1 dim orange bag, 3 mirrored orange bags, 3 pale cyan bags. +faded yellow bags contain 4 light red bags, 5 clear black bags, 2 dotted gold bags. +clear teal bags contain 2 light maroon bags. +drab lime bags contain 4 dim blue bags, 3 muted gold bags, 3 faded crimson bags. +dotted chartreuse bags contain 1 vibrant chartreuse bag, 3 posh red bags, 5 muted bronze bags, 4 dark brown bags. +drab olive bags contain 1 striped orange bag, 3 drab brown bags. +posh gold bags contain 3 plaid beige bags, 4 dim crimson bags, 2 dull black bags. +wavy indigo bags contain 3 bright brown bags, 3 pale cyan bags, 4 mirrored orange bags, 1 clear cyan bag. +bright black bags contain 1 muted crimson bag. +pale fuchsia bags contain 5 dull yellow bags, 4 bright chartreuse bags. +shiny coral bags contain 1 muted lavender bag, 5 muted purple bags, 1 striped orange bag. +faded chartreuse bags contain 4 striped turquoise bags, 1 wavy beige bag. +bright blue bags contain 3 vibrant olive bags. +faded olive bags contain 3 vibrant maroon bags, 4 wavy red bags, 2 shiny cyan bags, 4 wavy salmon bags. +clear green bags contain 5 dark turquoise bags, 4 posh cyan bags, 5 pale orange bags. +dim bronze bags contain 4 wavy orange bags, 2 bright magenta bags, 3 striped brown bags. +pale gold bags contain 3 dark purple bags. +wavy beige bags contain 2 wavy plum bags, 1 muted purple bag, 4 striped turquoise bags, 4 dull green bags. +plaid lavender bags contain 3 striped plum bags, 3 plaid orange bags. +bright silver bags contain 2 muted aqua bags. +muted magenta bags contain 5 faded olive bags. +drab magenta bags contain 4 dim chartreuse bags. +pale yellow bags contain 2 wavy tan bags, 4 striped cyan bags, 1 wavy salmon bag. +clear tomato bags contain 1 clear blue bag, 5 vibrant orange bags, 3 drab silver bags, 2 dim green bags. +dull gray bags contain 2 bright red bags, 3 striped lime bags. +dim gray bags contain 4 dark purple bags, 2 dim tomato bags. +mirrored crimson bags contain 4 pale gray bags, 1 muted chartreuse bag, 2 dotted orange bags. +drab gold bags contain 4 drab lavender bags, 3 light coral bags. +posh tan bags contain 5 vibrant gold bags, 1 dotted purple bag. +drab teal bags contain 3 shiny gold bags, 2 muted blue bags, 2 posh coral bags, 3 bright lavender bags. +pale olive bags contain 2 dull violet bags, 5 shiny maroon bags, 4 light red bags, 2 wavy cyan bags. +dotted coral bags contain 1 light blue bag, 2 plaid black bags. +light aqua bags contain 1 vibrant lime bag, 3 clear gold bags, 1 plaid plum bag, 5 shiny plum bags. +posh magenta bags contain 4 plaid plum bags, 2 vibrant lime bags, 5 light aqua bags, 2 dull blue bags. +posh coral bags contain 3 dotted salmon bags, 2 dim lavender bags, 4 wavy purple bags. +dark plum bags contain 2 vibrant aqua bags, 2 dim fuchsia bags, 4 dull blue bags. +posh teal bags contain 4 mirrored indigo bags, 3 striped purple bags, 5 dim cyan bags, 4 plaid silver bags. +vibrant salmon bags contain 3 faded lime bags. +vibrant violet bags contain 5 bright red bags, 3 shiny brown bags, 3 vibrant cyan bags. +plaid violet bags contain 2 vibrant violet bags, 4 pale brown bags. +dull red bags contain 1 dim aqua bag, 5 dotted magenta bags, 1 dotted gold bag, 2 shiny chartreuse bags. +vibrant coral bags contain 2 bright green bags. +muted cyan bags contain 4 dull white bags, 3 muted gray bags, 1 mirrored brown bag, 5 light maroon bags. +dotted tan bags contain 4 shiny indigo bags, 3 clear gold bags. +muted tomato bags contain 1 faded orange bag. +clear black bags contain 2 light aqua bags, 5 dull white bags. +bright fuchsia bags contain 5 dim brown bags. +striped olive bags contain 4 dim tomato bags. +dotted yellow bags contain 4 mirrored aqua bags, 4 faded indigo bags, 2 faded green bags. +pale bronze bags contain 3 plaid teal bags, 2 posh aqua bags, 2 dotted lime bags. +striped blue bags contain 4 dark tomato bags, 2 dim aqua bags, 1 dull olive bag. +dull salmon bags contain 1 light yellow bag. +muted tan bags contain 2 dim purple bags, 2 shiny coral bags, 2 drab bronze bags. +bright gold bags contain 5 shiny lavender bags, 4 dark maroon bags. +vibrant lavender bags contain 3 vibrant lime bags, 1 dark tomato bag, 2 dim fuchsia bags, 4 clear black bags. +bright tomato bags contain 4 clear blue bags, 2 wavy beige bags, 5 faded lime bags. +drab plum bags contain 4 bright olive bags, 1 posh lavender bag, 3 pale white bags, 2 dim green bags. +muted gold bags contain 3 posh magenta bags. +mirrored coral bags contain 3 dotted beige bags, 1 light magenta bag, 4 wavy turquoise bags. +mirrored purple bags contain 1 mirrored plum bag, 4 faded black bags, 3 bright violet bags, 1 vibrant yellow bag. +mirrored lavender bags contain 4 shiny violet bags, 4 dark violet bags, 3 drab gray bags, 3 plaid salmon bags. +muted teal bags contain 1 plaid turquoise bag, 5 light tomato bags. +plaid turquoise bags contain 2 posh aqua bags, 3 wavy plum bags, 3 dotted salmon bags. +pale coral bags contain 4 wavy lavender bags, 5 striped gray bags, 2 dotted turquoise bags, 4 striped violet bags. +pale lavender bags contain 4 vibrant lime bags, 1 dim plum bag, 1 posh salmon bag. +dark lime bags contain 4 dotted beige bags, 4 faded gold bags. +dotted teal bags contain 3 posh cyan bags. +striped magenta bags contain 4 light maroon bags. +light lime bags contain 2 light tomato bags, 2 bright cyan bags, 1 dotted white bag, 5 dark turquoise bags. +plaid teal bags contain 4 dim cyan bags, 2 muted black bags, 1 dark silver bag, 4 drab lavender bags. +vibrant yellow bags contain 4 mirrored teal bags, 2 shiny lime bags, 1 striped purple bag, 2 dotted beige bags. +dotted plum bags contain 1 drab lavender bag. +dotted blue bags contain 4 dull white bags, 5 dull olive bags. +posh crimson bags contain 1 wavy plum bag, 4 dim bronze bags. +muted orange bags contain 5 faded tomato bags, 1 dull magenta bag. +mirrored gold bags contain 4 dim fuchsia bags, 3 dull black bags, 5 shiny lavender bags, 5 dull gray bags. +bright cyan bags contain 4 pale blue bags. +dark cyan bags contain 2 dim olive bags, 2 faded crimson bags, 2 pale chartreuse bags. +striped beige bags contain 5 drab lavender bags. +dull olive bags contain 4 dark brown bags, 5 muted lavender bags, 4 plaid red bags, 1 dim green bag. +faded green bags contain 5 light aqua bags, 1 vibrant cyan bag, 5 striped orange bags. +shiny bronze bags contain 1 shiny purple bag, 5 striped indigo bags, 5 bright indigo bags, 5 striped yellow bags. +mirrored silver bags contain 2 pale tan bags. +dark green bags contain 4 striped white bags, 2 vibrant beige bags, 4 shiny aqua bags, 2 drab gray bags. +dotted gray bags contain 3 dotted violet bags, 5 muted beige bags, 4 posh yellow bags. +clear lime bags contain 5 faded crimson bags, 5 dark brown bags, 1 dim chartreuse bag, 5 bright fuchsia bags. +light maroon bags contain 5 light aqua bags. +striped violet bags contain 2 clear violet bags, 1 striped yellow bag, 5 dark lime bags. +mirrored maroon bags contain 2 dull purple bags, 3 clear black bags. +light purple bags contain 1 vibrant aqua bag, 4 striped turquoise bags, 4 dark blue bags, 3 dark maroon bags. +dark crimson bags contain 5 dark blue bags, 1 dim coral bag. +muted violet bags contain 3 striped turquoise bags, 3 vibrant lime bags. +shiny tomato bags contain 4 shiny plum bags. +drab fuchsia bags contain 2 faded beige bags, 3 light lavender bags. +dull white bags contain 5 wavy purple bags, 4 shiny lavender bags. +dim plum bags contain 4 dark brown bags, 3 shiny brown bags, 4 dim brown bags, 5 light maroon bags. +muted red bags contain 3 bright chartreuse bags, 2 shiny lime bags, 1 dotted olive bag, 3 shiny plum bags. +posh silver bags contain no other bags. +drab coral bags contain 4 faded white bags, 5 mirrored plum bags, 5 striped blue bags. +mirrored aqua bags contain 1 dark tomato bag, 2 dark brown bags. +vibrant indigo bags contain 5 dark silver bags, 3 clear lime bags, 1 dim gray bag. +bright salmon bags contain 4 bright crimson bags. +muted plum bags contain 4 mirrored lavender bags. +dark turquoise bags contain 5 striped turquoise bags, 4 dark blue bags, 5 posh yellow bags, 4 wavy purple bags. +light violet bags contain 3 clear black bags, 3 mirrored indigo bags, 5 striped coral bags, 2 dim crimson bags. diff --git a/07/part1.js b/07/part1.js new file mode 100644 index 0000000..5029023 --- /dev/null +++ b/07/part1.js @@ -0,0 +1,49 @@ +const fs = require('fs'); +const OWN_BAG = 'shiny gold'; + +function parseLine(line) { + let [ self, others ] = line.trim().split(" bags contain "); + if (self === undefined || others === undefined) return []; + if (others == "no other bags.") return []; // [{a: self, b: null, count: 0}]; + others = others.replace(".", "").replace(/bags?/g, "").split(","); + + return others.map((other) => { + let [ num, ...rest ] = other.trim().split(' '); + return { a: self, b: rest.join(' '), count: Number(num) }; + }); +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let rules = data.toString().split("\n").map( parseLine ).flat(); + + let bags = {}; + rules.forEach((rule) => { + let parent = bags[rule.a] || {spec: rule.a}; + let child = bags[rule.b] || {spec: rule.b}; + + if (!child.hasOwnProperty('parent')) child.parent = parent; + if (!parent.hasOwnProperty('children')) parent.children = []; + parent.children.push(child); + + bags[rule.a] = parent; + bags[rule.b] = child; + }); + + let tops = Object.values(bags).filter((bag) => !bag.hasOwnProperty('parent') && bag.spec != OWN_BAG); + + matchBags = function(bag, parentColours) { + if (bag.spec == OWN_BAG) { + return parentColours; + } + if (!bag.children) return []; + + let colours = [...parentColours]; // clone + colours.push(bag.spec); + return bag.children.map((child) => matchBags(child, colours)).flat(); + } + + let colours = tops.map((top) => matchBags(top, []) ).flat(); + console.log( new Set(colours).size ); +}); + diff --git a/07/part2.js b/07/part2.js new file mode 100644 index 0000000..f7f9add --- /dev/null +++ b/07/part2.js @@ -0,0 +1,42 @@ +const fs = require('fs'); +const OWN_BAG = 'shiny gold'; + +function parseLine(line) { + let [ self, others ] = line.trim().split(" bags contain "); + if (self === undefined || others === undefined) return []; + if (others == "no other bags.") return []; // [{a: self, b: null, count: 0}]; + others = others.replace(".", "").replace(/bags?/g, "").split(","); + + return others.map((other) => { + let [ num, ...rest ] = other.trim().split(' '); + return { a: self, b: rest.join(' '), count: Number(num) }; + }); +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let rules = data.toString().split("\n").map( parseLine ).flat(); + + let bags = {}; + rules.forEach((rule) => { + let parent = bags[rule.a] || {spec: rule.a}; + let child = bags[rule.b] || {spec: rule.b}; + + if (!child.hasOwnProperty('parent')) child.parent = parent; + if (!parent.hasOwnProperty('children')) parent.children = []; + parent.children.push({ count: rule.count, bag: child }); + + bags[rule.a] = parent; + bags[rule.b] = child; + }); + + let bagCount = function(bag, self_count) { + if (!bag.children) return self_count; + return self_count + (bag.children.map((node) => bagCount(node.bag, node.count)).reduce((a,b) => a+b) * self_count); + }; + + let result = bags[OWN_BAG].children.map((node) => bagCount(node.bag, node.count)).reduce((a,b) => (a+b)); + + console.log(result); +}); + From 7f2b425726266f9b8145a91da4cf632b36657963 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Tue, 8 Dec 2020 16:19:49 +0000 Subject: [PATCH 12/14] Day 8 --- 08/input | 646 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 08/part1.js | 38 ++++ 08/part2.js | 61 +++++ 3 files changed, 745 insertions(+) create mode 100644 08/input create mode 100644 08/part1.js create mode 100644 08/part2.js diff --git a/08/input b/08/input new file mode 100644 index 0000000..40bb20e --- /dev/null +++ b/08/input @@ -0,0 +1,646 @@ +acc +8 +nop +139 +nop +383 +jmp +628 +acc -6 +acc +29 +acc +9 +jmp +457 +acc +29 +acc +38 +nop +451 +jmp +44 +acc +24 +nop +260 +acc +20 +jmp +24 +acc +36 +acc +41 +acc +31 +acc +42 +jmp +35 +acc +21 +nop +216 +acc +7 +jmp +42 +nop +408 +acc +18 +acc -4 +jmp +532 +acc -8 +acc +13 +jmp +529 +acc +36 +jmp +257 +acc +26 +acc +24 +acc -11 +nop +508 +jmp +249 +acc +44 +acc +25 +jmp +464 +acc +47 +jmp +318 +acc -6 +acc -1 +jmp +175 +acc +19 +acc +25 +acc +24 +jmp +523 +acc -7 +acc +45 +jmp +353 +jmp +67 +acc -1 +jmp -17 +acc -9 +jmp +180 +acc +19 +acc -15 +acc +5 +jmp +52 +nop +312 +acc +38 +jmp -6 +acc +6 +acc -11 +acc -6 +jmp +357 +jmp +455 +acc +27 +acc +29 +acc +9 +nop +414 +jmp +380 +jmp +1 +acc +33 +jmp +47 +acc +12 +acc +34 +acc -9 +acc +17 +jmp +214 +jmp +125 +acc +38 +acc +38 +acc +16 +jmp +310 +acc +9 +acc +10 +acc -2 +nop -84 +jmp +329 +nop +120 +nop -70 +jmp -88 +jmp +1 +jmp +1 +acc +23 +jmp -34 +nop +372 +acc +18 +acc +3 +acc +24 +jmp -50 +acc -11 +acc +27 +nop +441 +jmp +443 +acc +44 +acc -3 +acc +7 +jmp +389 +acc -5 +acc +36 +acc -17 +acc +15 +jmp +13 +acc +39 +jmp +407 +acc +8 +acc +21 +jmp +360 +jmp +425 +acc +7 +acc +29 +acc +6 +jmp +10 +jmp +1 +jmp +426 +acc +23 +jmp +3 +nop +2 +jmp +1 +jmp +240 +acc +16 +jmp -2 +jmp +47 +jmp +488 +jmp +1 +acc +45 +jmp +1 +acc +20 +jmp +344 +jmp +407 +acc +2 +acc +3 +jmp +117 +acc +50 +jmp -134 +acc +1 +jmp +238 +acc +27 +acc -11 +acc +16 +nop +134 +jmp +116 +acc -16 +nop +393 +jmp +2 +jmp +24 +nop +98 +acc +36 +acc +0 +nop +268 +jmp +131 +nop +294 +acc +23 +acc +26 +acc +43 +jmp +358 +nop +316 +jmp +300 +acc +22 +acc +47 +acc +19 +acc +2 +jmp +228 +jmp +176 +acc -4 +acc +20 +nop +83 +acc -19 +jmp -99 +acc +39 +nop +374 +acc +3 +jmp +57 +jmp +1 +acc +42 +jmp +404 +acc +4 +acc -4 +acc -10 +nop +293 +jmp +349 +acc -9 +acc +33 +jmp +284 +nop +1 +acc +18 +acc -1 +acc -5 +jmp +411 +acc +4 +acc -6 +acc +16 +jmp +313 +acc +0 +acc +39 +jmp +3 +acc -13 +jmp +148 +nop +51 +nop -207 +nop +357 +acc -19 +jmp +409 +acc +32 +jmp +103 +acc +5 +jmp +116 +nop +399 +acc +19 +acc +39 +nop +78 +jmp +298 +acc -16 +acc +31 +jmp +1 +acc +45 +jmp -207 +acc +6 +acc +36 +acc +34 +acc +47 +jmp -112 +acc +23 +acc +4 +jmp +289 +acc -17 +nop +307 +nop -92 +jmp -146 +jmp +293 +nop +44 +acc +5 +acc +2 +acc -19 +jmp +172 +acc +10 +acc +49 +acc -2 +jmp +6 +acc +3 +jmp +1 +acc -19 +acc +35 +jmp +328 +acc +38 +acc -5 +nop -83 +jmp -138 +jmp -55 +acc +35 +jmp +1 +jmp -216 +nop +220 +jmp +116 +jmp -78 +nop +331 +jmp +118 +jmp +287 +jmp -258 +jmp -181 +nop +85 +acc +31 +acc +10 +acc -13 +jmp +175 +jmp +66 +acc +34 +acc +6 +nop -126 +acc +38 +jmp +4 +acc +18 +jmp -13 +jmp -8 +jmp +1 +acc -9 +acc +31 +nop +92 +jmp +118 +nop +21 +jmp +110 +acc +20 +acc +20 +jmp +280 +jmp -142 +jmp +8 +nop -286 +jmp +170 +acc +22 +acc +29 +nop -127 +jmp +36 +jmp +328 +acc +27 +jmp -110 +acc +28 +acc +44 +acc +34 +acc +43 +jmp -42 +acc -19 +jmp +185 +acc -8 +nop -3 +acc +31 +acc -11 +jmp +142 +acc +49 +acc -2 +acc +28 +acc +17 +jmp +167 +acc +16 +jmp +165 +jmp -190 +jmp -117 +acc +0 +acc +16 +jmp +1 +acc -10 +jmp -39 +jmp +69 +jmp -187 +nop -101 +jmp +1 +acc +12 +jmp +218 +acc -6 +jmp -300 +acc +10 +jmp +104 +jmp +1 +acc +36 +jmp -243 +nop +138 +acc -15 +acc +13 +nop +278 +jmp -192 +acc +13 +jmp +275 +acc +0 +nop +92 +nop +214 +jmp -90 +acc +44 +nop +225 +acc +9 +jmp -348 +acc +16 +jmp -334 +nop -335 +acc -16 +acc -9 +jmp -89 +acc +35 +acc +2 +acc +26 +jmp +68 +acc -19 +acc +14 +acc -19 +acc -19 +jmp +262 +acc -16 +nop -246 +nop -251 +acc +26 +jmp +143 +nop +48 +acc +48 +jmp +249 +acc -8 +jmp +9 +acc +42 +acc +12 +acc +19 +acc -4 +jmp +213 +acc +1 +acc +29 +jmp -259 +acc +3 +acc +17 +acc -13 +jmp -131 +acc +16 +acc -9 +acc +28 +jmp +222 +acc +42 +acc +20 +acc -3 +acc +50 +jmp -339 +jmp +1 +acc +1 +nop -315 +acc +44 +acc +50 +jmp -143 +nop -87 +nop +155 +jmp +1 +nop +44 +jmp +158 +nop -10 +acc +9 +jmp +90 +jmp +89 +acc +27 +acc -5 +acc -8 +acc +40 +jmp +3 +nop -360 +jmp +117 +acc -14 +acc -16 +nop -184 +acc +20 +jmp +185 +acc -2 +acc +36 +nop +24 +jmp +195 +acc -8 +acc -3 +acc +7 +jmp -84 +acc +0 +acc -12 +acc +43 +jmp -270 +nop -434 +acc -15 +jmp +163 +acc +14 +jmp +29 +acc +32 +acc +26 +acc +13 +jmp -91 +acc +30 +jmp -163 +nop +175 +jmp -175 +jmp +20 +acc +0 +nop -426 +acc +22 +acc -6 +jmp -83 +acc +12 +acc +43 +acc +31 +jmp -46 +acc +27 +acc +26 +acc +24 +acc -12 +jmp +118 +nop -88 +nop -251 +acc -15 +acc +3 +jmp -450 +acc +11 +acc +19 +jmp -406 +acc +39 +jmp -45 +acc +40 +acc -7 +acc +22 +nop -329 +jmp -160 +jmp +80 +acc +0 +acc -4 +jmp +31 +acc +11 +acc -2 +acc +3 +acc +48 +jmp -366 +acc -16 +jmp -345 +jmp -259 +acc -8 +acc +29 +acc +4 +acc +2 +jmp -208 +acc -6 +acc +48 +acc -3 +jmp +82 +acc +1 +acc +47 +acc +40 +acc +31 +jmp -214 +acc +10 +jmp -328 +acc -18 +acc +39 +jmp +2 +jmp -403 +jmp +48 +jmp +19 +jmp -468 +jmp -397 +acc +40 +acc +39 +acc +22 +jmp +1 +jmp -305 +acc +22 +acc -5 +acc +23 +jmp -399 +acc +21 +jmp +17 +nop -239 +acc +0 +acc +29 +acc +2 +jmp -56 +acc -14 +acc +23 +jmp -375 +jmp -450 +nop +1 +jmp -29 +jmp -208 +nop +50 +jmp -468 +acc +3 +jmp +5 +jmp -347 +acc +21 +acc +35 +jmp -527 +acc -4 +acc -14 +acc -5 +nop +24 +jmp -418 +jmp +66 +acc +8 +acc -16 +jmp -447 +nop -324 +acc +27 +acc +4 +jmp -393 +jmp -276 +jmp +1 +acc +37 +acc +15 +nop -304 +jmp -534 +acc -16 +nop -514 +acc +11 +jmp -331 +nop -69 +acc +14 +acc +44 +jmp -125 +acc +3 +acc +5 +acc +0 +nop -381 +jmp -440 +acc +48 +nop -561 +jmp -543 +acc -10 +acc +44 +acc -16 +acc +45 +jmp -177 +acc +36 +jmp -576 +acc +36 +acc +14 +nop -323 +jmp -163 +jmp -118 +acc -1 +acc -14 +acc +7 +acc +7 +jmp +11 +acc +31 +nop -309 +jmp -109 +acc +41 +acc +11 +acc +4 +jmp -52 +acc +9 +acc +16 +jmp -481 +jmp -161 +acc -8 +acc +13 +acc +16 +jmp -488 +acc +30 +jmp -390 +nop -313 +jmp -333 +jmp -44 +acc +38 +acc +33 +acc +38 +jmp -619 +jmp -186 +acc +49 +acc -5 +acc -16 +jmp -214 +acc +16 +acc +35 +nop -584 +acc -12 +jmp +1 diff --git a/08/part1.js b/08/part1.js new file mode 100644 index 0000000..4725ba9 --- /dev/null +++ b/08/part1.js @@ -0,0 +1,38 @@ +const fs = require('fs'); + +function parseLine(line) { + let [ op, offset ] = line.split(' '); + + return { op: op, offset: Number(offset), visited: false }; +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let program = data.toString().split("\n").map( parseLine ).flat(); + + let acc = 0; + let pc = 0; + + while (true) { + let insn = program[pc]; + if (insn.visited) { + console.log(acc); + break; + } + + insn.visited = true; + + switch (insn.op) { + case 'nop': + pc++; + break; + case 'jmp': + pc = pc + insn.offset; + break; + case 'acc': + acc = acc + insn.offset; + pc++; + break; + } + } +}); diff --git a/08/part2.js b/08/part2.js new file mode 100644 index 0000000..0ae7ee1 --- /dev/null +++ b/08/part2.js @@ -0,0 +1,61 @@ +const fs = require('fs'); + +function parseLine(line) { + let [ op, offset ] = line.split(' '); + + return { op: op, offset: Number(offset), visited: false }; +} + +function run(program) { + let acc = 0; + let pc = 0; + + while(true) { + if (pc == program.length) { + return acc; + }; + + let insn = program[pc]; + if (insn.visited) { + return undefined; + }; + + insn.visited = true; + + switch (insn.op) { + case 'nop': + pc++; + break; + case 'jmp': + pc = pc + insn.offset; + break; + case 'acc': + acc = acc + insn.offset; + pc++; + break; + } + } +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let program = data.toString().trim().split("\n").map( parseLine ).flat(); + + for(i=0; i Date: Wed, 9 Dec 2020 14:41:45 +0000 Subject: [PATCH 13/14] Day 9 --- 09/input | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++ 09/part1.js | 23 ++ 09/part2.js | 35 ++ 3 files changed, 1058 insertions(+) create mode 100644 09/input create mode 100644 09/part1.js create mode 100644 09/part2.js diff --git a/09/input b/09/input new file mode 100644 index 0000000..ca08b38 --- /dev/null +++ b/09/input @@ -0,0 +1,1000 @@ +3 +48 +30 +21 +18 +50 +9 +37 +5 +31 +17 +39 +14 +45 +27 +23 +2 +4 +19 +35 +10 +32 +33 +28 +7 +34 +11 +6 +8 +12 +54 +13 +9 +15 +16 +60 +64 +17 +14 +18 +20 +23 +24 +25 +19 +21 +26 +22 +27 +46 +28 +29 +30 +31 +32 +38 +33 +37 +45 +63 +34 +35 +39 +51 +40 +41 +43 +60 +44 +47 +52 +58 +62 +55 +57 +59 +61 +64 +100 +65 +95 +73 +71 +69 +103 +74 +82 +83 +108 +147 +160 +87 +117 +91 +112 +107 +176 +114 +116 +148 +120 +125 +133 +190 +134 +152 +205 +183 +156 +216 +199 +202 +174 +211 +219 +194 +178 +198 +203 +223 +221 +354 +418 +236 +258 +323 +259 +267 +286 +469 +308 +489 +330 +439 +372 +368 +392 +527 +401 +611 +414 +521 +419 +424 +444 +457 +793 +494 +495 +594 +609 +702 +553 +722 +700 +638 +698 +773 +740 +895 +1130 +815 +951 +833 +838 +843 +868 +1535 +1239 +1282 +952 +1578 +1398 +1794 +2496 +1725 +1360 +1293 +1336 +1378 +1671 +1438 +1513 +1635 +2895 +1648 +1653 +1681 +2203 +2491 +1711 +2671 +2191 +2617 +2234 +2245 +2776 +2629 +2653 +4306 +2731 +2774 +2714 +2816 +5288 +2951 +3073 +3148 +4139 +3301 +5492 +4282 +5847 +8038 +3902 +3945 +5264 +8578 +8412 +4479 +4874 +5592 +5505 +5367 +5445 +5488 +5530 +5665 +5767 +6449 +8789 +7203 +7093 +9967 +7246 +14243 +13050 +8424 +12691 +9433 +9450 +9353 +10144 +15649 +12734 +10241 +10812 +10855 +13954 +14234 +11432 +14191 +17097 +12216 +14873 +14296 +15517 +26882 +15670 +23596 +17777 +24440 +17857 +18786 +39113 +18803 +19497 +23028 +21053 +21096 +21667 +22287 +23071 +41164 +35634 +23648 +26407 +26512 +27089 +40885 +29813 +48756 +45298 +36766 +36563 +36580 +40470 +41784 +40550 +38300 +44124 +40593 +70698 +84717 +43383 +43954 +67195 +64198 +50055 +85689 +60228 +63173 +53601 +83933 +87082 +77236 +73143 +73329 +73346 +78347 +77130 +78850 +110283 +78893 +82254 +83976 +114652 +110578 +93438 +87337 +117250 +103656 +113228 +113829 +116774 +123401 +126744 +126930 +150273 +146472 +183721 +151490 +146675 +150476 +180786 +189176 +263449 +201166 +210212 +187632 +297560 +197094 +190993 +180775 +339652 +230002 +216884 +277017 +230603 +273877 +376808 +273216 +273402 +293147 +296948 +367360 +297151 +327450 +474568 +361561 +368407 +371768 +377869 +378625 +490761 +388087 +411378 +397659 +503819 +446886 +447487 +490100 +504005 +720703 +571028 +671772 +546618 +566549 +590095 +594099 +624601 +658712 +689011 +729968 +733329 +740175 +1030480 +756494 +766712 +785746 +799465 +809037 +1135897 +894373 +936986 +1218700 +1246594 +1050623 +1140717 +1471237 +1113167 +1171219 +1156644 +1313612 +2055631 +1763809 +1347723 +1418979 +1463297 +1523206 +2187124 +1661085 +1542240 +1552458 +1722732 +1703410 +2186520 +2007540 +2679850 +2698884 +2163790 +2893951 +2191340 +2253884 +2269811 +2284386 +2327863 +2470256 +2766702 +3070455 +2811020 +2870929 +4890224 +2986503 +3203325 +3094698 +3213543 +3275190 +5837157 +3426142 +3710950 +5364207 +4335403 +5753205 +5569813 +4355130 +5704971 +8664511 +5198792 +8564225 +4612249 +9131113 +5236958 +5577722 +8450501 +12090653 +5857432 +17695338 +17454860 +6416868 +9003864 +8690533 +6701332 +7137092 +7761545 +8947652 +8967379 +9534195 +9553922 +9592088 +26385871 +13618977 +13687459 +12994524 +14141947 +9849207 +10814680 +18299708 +15449520 +18042589 +12274300 +12558764 +17353633 +18559467 +13118200 +26681983 +27136471 +13838424 +14898637 +16709197 +22548446 +40823930 +19383402 +19146010 +19441295 +34282039 +24747844 +32158717 +22843731 +20663887 +55722567 +23088980 +24833064 +26112724 +29912397 +36794928 +25676964 +30471833 +36386870 +26956624 +51285507 +39552928 +28737061 +53723334 +38529412 +58935316 +41989741 +38587305 +39809897 +43752867 +45411731 +43507618 +45496951 +45932711 +47620511 +47922044 +48765944 +50510028 +54414025 +52633588 +55693685 +70709491 +57428457 +67324366 +84462123 +82094923 +83317515 +123343079 +89610252 +85306848 +78397202 +80577046 +85742608 +83562764 +88919349 +128907230 +89440329 +91429662 +94698655 +98130539 +100555632 +143854354 +165454905 +178707585 +108327273 +113122142 +186724475 +299846617 +145721568 +158974248 +160492125 +237151230 +174917100 +326591559 +164139810 +170017375 +166319654 +169305372 +221449415 +178359678 +233294683 +180869991 +329594715 +192829194 +241984893 +208882905 +479136123 +254048841 +387242583 +258843710 +687089200 +339844239 +373022715 +356969004 +319466373 +324631935 +375202559 +330459464 +333445182 +350175363 +335625026 +362134566 +809595587 +373699185 +359229669 +500336364 +510464706 +434814087 +450867798 +462931746 +467726615 +615812714 +584508305 +1006555573 +692594030 +693165558 +644098308 +658077117 +649925837 +829931079 +694854695 +978191321 +663904646 +1066293215 +709405032 +697759592 +869694375 +732928854 +1117652452 +943737974 +1132573679 +961332504 +885681885 +913799544 +930658361 +1488008196 +1200321019 +1293913337 +1294024145 +1302175425 +1341857900 +1308002954 +1313830483 +1344780532 +1625237150 +1358759341 +1407164624 +1361664238 +1827057484 +1430688446 +1567453967 +1212510616 +2269335458 +1799481429 +2086002904 +1816340246 +1844457905 +2126310160 +2114120563 +3120970821 +2412831635 +2559080360 +2506423953 +2506534761 +2837853070 +2675494721 +2520513570 +2526341099 +2557291148 +2571269957 +2619675240 +2574174854 +3615821675 +3247028692 +3298513520 +3326631179 +5201835820 +3643939334 +6203019694 +3930460809 +3660798151 +5900806033 +4240430723 +5088326356 +4919255588 +4919366396 +5065615121 +5012958714 +5027048331 +6218114188 +5094688424 +6142162774 +5083632247 +5818298649 +5190945197 +5918188760 +9534010435 +6545542212 +8849827205 +6625144699 +9244819939 +8862633971 +7304737485 +7591258960 +12399425909 +7901228874 +9159686311 +9159797119 +9838621984 +9932214302 +9932325110 +10040007045 +10096590961 +10110680578 +15352309084 +17483058156 +13446900259 +14216403659 +11009243846 +21348129133 +12463730972 +19199804164 +13170686911 +16557359001 +13929882184 +14895996445 +19768468457 +15492487834 +24148617961 +17060915185 +18319483430 +20028916071 +37519287594 +31186751117 +19972332155 +21049250891 +20136598006 +41185848897 +21119924424 +33984872116 +23472974818 +28939388093 +25905240291 +24179930757 +25634417883 +36260719349 +51449169778 +43501890889 +39797384528 +28825878629 +62810750745 +38965462652 +39641105795 +84687739786 +37197513191 +38291815585 +40001248226 +49814348640 +75226182001 +40108930161 +41256522430 +43609572824 +44592899242 +45299855181 +62165959640 +60440650106 +50085171048 +64599880535 +53005809386 +54460296512 +65086597978 +79906314689 +81901388409 +66023391820 +67117694214 +75489328776 +76162975843 +76838618986 +109192779777 +142607022990 +112251130688 +93114739547 +119060177047 +81365452591 +111323247001 +95385026229 +88202472066 +89892754423 +185355755620 +136361684921 +103090980434 +104545467560 +120483688332 +129168785229 +119546894490 +169953358533 +133141086034 +141512720596 +142862010806 +165041091052 +151652304619 +153001594829 +158204071577 +271199199109 +391682887441 +169567924657 +171258207014 +339521283190 +176750478820 +270681505825 +543335192060 +178095226489 +192983734857 +207636447994 +232259765663 +222637874924 +224092362050 +240030582822 +248715679719 +252687980524 +346318403477 +274653806630 +309856376196 +311205666406 +321220229276 +426306111249 +324259801843 +584510182826 +340826131671 +547157731184 +543858104200 +766495979124 +546897676767 +354845705309 +523369486349 +504189401263 +402187588539 +433014317679 +472808041769 +859163989456 +446730236974 +712043964735 +527341787154 +620972210107 +562544356720 +598913608473 +585859473036 +825409630539 +666051371715 +930495512512 +979911994446 +679105507152 +827653747078 +743013720210 +757033293848 +990588341174 +787860022988 +801575942283 +1507253781600 +835201906218 +1364120299003 +848917825513 +1206831683143 +919538278743 +1514307413370 +974072024128 +1089886143874 +1148313997261 +1161457965193 +1148403829756 +1918491259041 +1264964980188 +1656639712889 +1345156878867 +1422119227362 +2180903707271 +1436138801000 +2355677079743 +1500047014058 +1544893316836 +2818097678082 +2368289648336 +1650493767796 +1754740184961 +2493470876128 +2063958168002 +1768456104256 +2576177991632 +2080996243936 +2950446214370 +2526024944874 +2238289973630 +2296717827017 +2413368809944 +2648450843814 +3268503118314 +2845203892925 +4248211061089 +2781295679867 +2858258028362 +4018783416132 +2936185815058 +4704641919314 +3313349421092 +3195387084632 +3405233952757 +3418949872052 +3523196289217 +5081805525348 +4494365053880 +3832414272258 +5258572702869 +5232903642075 +8952852980403 +6508736505724 +7555290529886 +7807714474972 +5584636658872 +8780023743504 +5794443843420 +6171607449454 +6200245551919 +10666442184220 +5639553708229 +8638137594832 +9366994534086 +6355135687110 +6600621037389 +10341150777982 +8834940792861 +7913314925932 +7355610561475 +8326779326138 +9417050931130 +13979321924426 +13199408806344 +10491476344944 +10817540300947 +16541396329901 +11224190367101 +12800866589308 +11379080502292 +11433997551649 +11811161157683 +11839799260148 +11994689395339 +13552868634161 +18166296844793 +12240174745618 +12955756724499 +18579800928576 +21112723732276 +16748255718793 +16772661492605 +15682389887613 +15268925487407 +17743830257268 +28588054978941 +20641241298231 +26780188513734 +22331275605092 +40497572449885 +23674172297267 +23428686946988 +27522189147761 +23245158709332 +22813078053941 +23273796811797 +28583822650288 +29704012443292 +27922564633231 +40823997395906 +43454319352172 +25195931470117 +30699586981767 +30951315375020 +60655327818312 +32455051380218 +43204579035374 +33012755744675 +55728848192015 +49229296277172 +42972516903323 +59792944258409 +45144353659033 +52012509597276 +50950876094749 +46058236763273 +57226201591053 +46086874865738 +48441090179449 +48009009524058 +84028576431280 +53118496103348 +80464060904276 +105659992374393 +56147246845137 +57650982850335 +94985026500599 +61650902356787 +63406366755238 +78541926245956 +79099630610413 +98959885618807 +75985272647998 +130050506705162 +88116870562356 +89030753666596 +91202590422306 +93585443838482 diff --git a/09/part1.js b/09/part1.js new file mode 100644 index 0000000..0b9dc1c --- /dev/null +++ b/09/part1.js @@ -0,0 +1,23 @@ +const fs = require('fs'); +const PREAMBLE_SIZE = 25; + +fs.readFile('input', (err, data) => { + if (err) throw err; + let input = data.toString().trim().split("\n").map((line) => Number(line) ); + + let buf = input.slice(0, PREAMBLE_SIZE); + for(pos=PREAMBLE_SIZE;pos buf.forEach((b) => { if (a != b) sums.add(a+b); })); + + if (!sums.has(next)) { + console.log(next); + break; + } + + buf = buf.slice(1, 25); + buf.push(next); + } +}); diff --git a/09/part2.js b/09/part2.js new file mode 100644 index 0000000..0af49da --- /dev/null +++ b/09/part2.js @@ -0,0 +1,35 @@ +const fs = require('fs'); +const PREAMBLE_SIZE = 25; + +function breakIt(input, target) { + for (i=0;i a+b)) { + console.log(Math.min(...subset) + Math.max(...subset)) + return; + } + } + } +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let input = data.toString().trim().split("\n").map((line) => Number(line) ); + + let buf = input.slice(0, PREAMBLE_SIZE); + for(pos=PREAMBLE_SIZE;pos buf.forEach((b) => { if (a != b) sums.add(a+b); })); + + if (!sums.has(next)) { + breakIt(input, next); + return; + } + + buf = buf.slice(1, 25); + buf.push(next); + } +}); From aaabfa90c9033044d0a9d5fe6776b718711ef46c Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Thu, 10 Dec 2020 20:03:11 +0000 Subject: [PATCH 14/14] Day 10 part 1 --- 10/input | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 10/part1.js | 32 +++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 10/input create mode 100644 10/part1.js diff --git a/10/input b/10/input new file mode 100644 index 0000000..5b21a23 --- /dev/null +++ b/10/input @@ -0,0 +1,114 @@ +74 +153 +60 +163 +112 +151 +22 +67 +43 +160 +193 +6 +2 +16 +122 +126 +32 +181 +180 +139 +20 +111 +66 +81 +12 +56 +63 +95 +90 +161 +33 +134 +31 +119 +53 +148 +104 +91 +140 +36 +144 +23 +130 +178 +146 +38 +133 +192 +131 +3 +73 +11 +62 +50 +89 +98 +103 +110 +164 +48 +80 +179 +92 +194 +86 +40 +13 +123 +68 +115 +19 +46 +77 +152 +138 +69 +49 +59 +30 +132 +9 +185 +1 +188 +171 +72 +116 +101 +61 +141 +107 +21 +47 +147 +182 +170 +39 +37 +127 +26 +102 +137 +191 +162 +172 +29 +10 +154 +157 +83 +82 +175 +145 +167 diff --git a/10/part1.js b/10/part1.js new file mode 100644 index 0000000..3e9ff34 --- /dev/null +++ b/10/part1.js @@ -0,0 +1,32 @@ +const fs = require('fs'); + +fs.readFile('input', (err, data) => { + if (err) throw err; + let input = data.toString().trim().split("\n").map((line) => Number(line) ); + + let builtIn = Math.max(...input) + 3; + let adapters = new Set ( input ); + let jolts = 0; + let diff1s = 0; + let diff3s = 1; // The built-ion adapter + + for (i=0; i < input.length; i++) { + // All entries are unique, so no need to worry about jolts+0 + if (adapters.has(jolts+1)) { + diff1s++; + adapters.delete(jolts+1); + jolts++; + } else if (adapters.has(jolts+2)) { + adapters.delete(jolts+2); + jolts+=2; + } else if (adapters.has(jolts+3)) { + diff3s++; + adapters.delete(jolts+3); + jolts+=3; + } else { + throw ("oh no"); + } + }; + + console.log(diff1s * diff3s); +});