commit 55a9a21afd0acffff2838c38aeb2dbaae734d87c Author: Rokas Puzonas Date: Thu Dec 10 15:09:10 2020 +0200 Initial comit diff --git a/1/input.txt b/1/input.txt new file mode 100644 index 0000000..31f932b --- /dev/null +++ b/1/input.txt @@ -0,0 +1,200 @@ +1844 +1123 +1490 +1478 +1108 +1120 +1594 +1101 +1831 +1146 +1084 +1535 +1016 +1722 +1388 +1188 +1351 +1477 +1215 +1678 +1159 +1558 +1581 +1400 +1550 +1306 +1852 +1745 +1224 +1896 +1596 +1005 +1499 +1797 +976 +1777 +1129 +1601 +1058 +1510 +1704 +1818 +1795 +1364 +1276 +1362 +1801 +1985 +1421 +1311 +1855 +1977 +1613 +1951 +2001 +1327 +1872 +1517 +1040 +1692 +1595 +1769 +1956 +1763 +1470 +1898 +1366 +1443 +312 +1685 +1014 +1409 +1717 +1105 +1290 +1703 +1732 +1939 +1790 +1164 +1225 +1474 +1713 +1413 +1906 +1488 +1931 +1702 +1848 +1668 +1737 +1614 +1719 +1647 +1171 +1508 +1035 +1133 +1179 +1180 +1472 +1414 +1659 +1820 +1544 +1697 +1175 +1033 +1805 +1576 +1196 +1597 +1739 +1291 +1103 +1457 +1514 +1462 +1619 +1683 +1338 +1604 +1372 +1653 +16 +1725 +1181 +1952 +1201 +1531 +1505 +1912 +1527 +1853 +1905 +1833 +1913 +1131 +1069 +1537 +1754 +1551 +1435 +1914 +1093 +1273 +1726 +1094 +1439 +1689 +1607 +1646 +1588 +1698 +1539 +1493 +1352 +1163 +1482 +1044 +1523 +1142 +1253 +1250 +1986 +1049 +1330 +1219 +1162 +1088 +1100 +1532 +1727 +1761 +1107 +1916 +1220 +1319 +1098 +1431 +1260 +1642 +1269 +1102 +1432 +1267 +1824 +1658 +1149 +1024 +1963 +1498 +1904 +1812 +1600 +1773 +1283 +1463 +1776 +1406 \ No newline at end of file diff --git a/1/part1.py b/1/part1.py new file mode 100644 index 0000000..6704105 --- /dev/null +++ b/1/part1.py @@ -0,0 +1,10 @@ +from itertools import combinations + +expenseReports = [] +with open("input.txt", "r") as f: + expenseReports = [int(line[:-1]) for line in f.readlines()] + +for expensePair in combinations(expenseReports, 2): + if sum(expensePair) == 2020: + print(expensePair[0] * expensePair[1]) + break diff --git a/1/part2.py b/1/part2.py new file mode 100644 index 0000000..c42fd6d --- /dev/null +++ b/1/part2.py @@ -0,0 +1,10 @@ +from itertools import combinations + +expenseReports = [] +with open("input.txt", "r") as f: + expenseReports = [int(line[:-1]) for line in f.readlines()] + +for expensePair in combinations(expenseReports, 3): + if sum(expensePair) == 2020: + print(expensePair[0] * expensePair[1] * expensePair[2]) + break diff --git a/10/input.txt b/10/input.txt new file mode 100644 index 0000000..fc054fe --- /dev/null +++ b/10/input.txt @@ -0,0 +1,100 @@ +30 +73 +84 +136 +132 +117 +65 +161 +49 +68 +139 +46 +21 +127 +109 +153 +163 +160 +18 +22 +131 +146 +62 +113 +172 +150 +171 +98 +93 +130 +170 +59 +1 +110 +2 +55 +37 +44 +148 +102 +40 +28 +35 +43 +56 +169 +33 +5 +141 +83 +15 +105 +142 +36 +116 +11 +45 +82 +10 +17 +159 +140 +12 +108 +29 +72 +121 +52 +91 +166 +88 +97 +118 +99 +124 +149 +16 +9 +143 +104 +57 +79 +123 +58 +96 +24 +162 +23 +92 +69 +147 +156 +25 +133 +34 +8 +85 +76 +103 +122 \ No newline at end of file diff --git a/10/part1.py b/10/part1.py new file mode 100644 index 0000000..d34ab7e --- /dev/null +++ b/10/part1.py @@ -0,0 +1,18 @@ + +adapters = [] +with open("input.txt") as f: + adapters = list(int(num) for num in f.read().split("\n")) + +adapters.append(0) +adapters.sort() +adapters.append(adapters[-1]+3) +numOf3Diff = 0 +numOf1Diff = 0 +print(adapters) +for i in range(0, len(adapters)-1): + diff = adapters[i+1] - adapters[i] + if diff == 1: + numOf1Diff += 1 + elif diff == 3: + numOf3Diff += 1 +print(numOf1Diff * numOf3Diff) \ No newline at end of file diff --git a/10/part2.py b/10/part2.py new file mode 100644 index 0000000..7285438 --- /dev/null +++ b/10/part2.py @@ -0,0 +1,26 @@ + +adapters = [] +with open("input.txt") as f: + adapters = list(int(num) for num in f.read().split("\n")) + +adapters.append(0) +adapters.sort() +adapters.append(adapters[-1]+3) + +memo = {} +memo[adapters[-1]] = 1 +def getNumOfCombinations(adapterList): + if memo.get(adapterList[0]): + return memo[adapterList[0]] + combinations = 1 + for i in range(1, len(adapterList)): + diff = adapterList[i] - adapterList[0] + if 0 < diff <= 3: + combinations += getNumOfCombinations(adapterList[i:]) + else: + break + combinations = combinations - 1 + memo[adapterList[0]] = combinations + return combinations + +print(getNumOfCombinations(adapters)) \ No newline at end of file diff --git a/2/input.txt b/2/input.txt new file mode 100644 index 0000000..8598dd2 --- /dev/null +++ b/2/input.txt @@ -0,0 +1,1000 @@ +1-2 x: xpxc +1-5 b: bwlbbbbcq +3-5 v: qvjjdhvl +9-12 t: ttfjvvtgxtctrntnhtt +3-4 r: rqjw +3-7 p: ppfpppppp +5-6 q: qqqqgq +7-10 v: gpvgmqkvxgbvs +4-12 b: kkdnrhwzbbbb +3-7 r: rrkwrshls +3-4 l: ldltwzclnrllhkb +4-6 m: mfcmmdvmmmm +6-16 c: ccccczcccccccccgcc +5-7 k: kkppkrr +2-5 p: bpppmpcjrgwp +8-14 c: dcwklzcckccwdw +4-7 j: qhjjjhsj +2-5 c: jcdclznbzb +7-8 x: xxxxxxxsxxxxlxxxxxx +6-7 s: rhsstssmvssss +8-16 j: rhsxwjrtpjjjjxhcjhx +13-14 q: lqmqqqzsvqqjqq +5-7 g: gggsfggj +15-16 s: ssssssssssssssxd +3-5 d: dmwsm +4-5 v: vbvvvg +5-6 f: jfzbgfp +1-4 k: qkkkk +11-15 l: lllllllllllllln +12-16 n: nfpnnnnnnhncnjnnls +6-8 l: llllllllll +13-15 p: pppppppppppphppp +4-9 k: bkvqvwkgk +1-3 j: jsrg +10-14 r: rrvfrvrrrrtrrmsr +2-4 r: tcfnd +5-6 t: ttwtjk +7-18 h: wjjfhphhbqlvqkhjwhk +6-9 p: phkkzvppppjpcpnfpsxt +5-6 f: ffffmfffffff +9-16 p: gbwsmxplndwmrpps +1-6 s: sczssw +5-14 t: ctxlqhrlvvdttwlnt +2-5 n: nndkqnnft +7-8 c: zclccrwc +4-11 q: pqrqdkpqbjshn +5-6 m: nmcmrbmfcgmfw +16-17 h: hhhhhhhxhhrhhhhhlh +5-6 v: vvvvvv +2-11 m: wpsmlpznxdkhs +3-4 s: sswf +2-3 s: hsbczzspqkwjr +4-7 s: zsjrrsvssss +11-16 j: hpjdcwpjjnjfgkjlxt +5-7 b: rcbbbbg +13-15 w: wwwwwwwwwwwwwwww +1-6 c: cccmgc +2-4 v: vvgv +4-5 m: mfmmhms +1-3 t: mntqgkdfjsxzptk +2-7 v: nvnqmvv +19-20 c: ccccccccccccccpcccfc +11-12 t: wttmnqtbkttc +3-5 p: ptpvp +1-11 l: lglwgtlqlnxl +4-8 m: mprmmmmwmmfmm +9-10 d: ddddddddxdd +16-20 r: rrrrrrrrrrrrrrrlrrrt +1-4 g: gggg +2-12 b: bczgbbbfbwbprbbbtb +2-7 n: nnnmnxkntwwxnr +14-18 z: tzzzqzzzlnpqzpzzkz +5-7 p: ppppmkp +9-14 c: vvcgvrxlccxvlpfml +2-3 l: jlzpf +3-5 p: pbpbp +9-13 j: jjjjjjjjjjjjj +5-7 k: fmckjkkklkxpf +5-6 d: ddddrd +9-10 s: sssnsgssbs +9-10 p: ppwvppbpptpp +1-8 z: kmfszzrx +9-10 v: vvjjvsklvdkrkvs +2-17 k: kkctmcfzhtvskxlkq +10-12 n: vjnndvnlgnhmfc +5-6 n: hnnnnntn +1-6 f: fptffkhhkktfbtst +4-6 k: kqnkjhhwqhpzb +6-12 r: rrrrrrrrrrrv +8-13 l: llllllllwlllllll +4-6 p: qxprzs +2-10 w: wswpdwwwrcth +4-6 n: gnnfnnnnnnn +10-14 s: ssssssprbfssssw +3-4 f: ftfk +6-16 x: cqxxqwrdxxxxsxbxxxxt +4-8 f: ffsqvfpm +8-11 t: ttztttttttnttt +13-15 q: qqnqqqqqqqqqqqq +2-3 w: wwww +2-8 n: ntnnnnnrnn +2-3 k: jkzkk +3-4 s: sscscp +14-19 g: gzggggggggggfgfgggqg +5-6 n: nnnnwlnn +11-12 b: bbmbbbbbbbxbbn +5-6 t: zntzfk +4-5 j: ljphjl +3-12 d: zndtlvdvvdzzn +7-8 h: hhhhhhhwhh +12-13 s: sssssshssxssss +4-5 h: nhsxxmh +7-9 f: fzfkffffsfxn +1-8 c: cccfcpccmhcch +1-2 d: kfdwwm +13-14 l: llllllllllllcll +2-5 p: jpxdpkg +2-4 h: hvhbmhhhhhnh +5-9 g: ngqgtqtggdgg +15-17 b: brhlrjflddssrrjxb +10-15 v: vkfvvqtcxvvvtvcbvv +1-3 g: pvkqsgzggg +7-8 j: jjjjjjbjj +3-4 w: jwrw +4-7 c: mhcmkcjrpncxmcrccbc +9-12 q: qqqqqqqqqqqs +13-16 n: nwngndnnnnnnnnnnnn +3-4 b: fjbbb +8-9 d: jdfdsqnmdwfdnddkd +1-4 f: ggfwgbfhvs +4-5 g: gggvg +8-12 x: gxhxxxxkxzmfxxx +1-5 q: dqqhq +3-9 m: mmdmmmzmmp +1-2 l: llll +6-8 q: qjwhqqhpkbzppc +3-10 m: mmcjgrtzmmdmmm +2-4 q: cxvq +11-13 v: fvvvvvvvvvvvv +7-13 b: bbbgbnbkbkbrldbbtc +14-16 m: wmmmmmzxrmmjmwmh +6-10 b: bwvwbbvshbgtbsrlwbzt +6-8 q: qdwhcgpqxw +16-17 l: llllbjlrllllcbdhllpl +3-4 m: mmmrv +7-8 m: mhjnnchg +12-13 p: ppppppppppppt +1-4 s: sssx +1-2 d: xmpdq +10-11 x: xxxxxxxxxbbx +2-4 s: lxds +1-4 b: jbsxbbmbbj +6-8 q: qqqqqqblqq +15-16 q: qqqqqwzqqqqqnqqqqfq +5-7 s: fzvsssr +6-7 l: lncbgqr +7-8 s: ssssssvs +3-5 r: rbrjt +3-8 j: ksjjtvnjbjppjjjl +6-10 s: sszlkrsssss +1-4 z: znzfpz +7-11 m: dfkcbxmxmnmmtvmtdn +6-9 h: hlhhkhhhq +8-9 p: ppppppppvp +6-9 c: cccgccccmcch +5-8 g: bgkggjgtvggn +3-4 x: xxhk +10-12 h: hhhhhhhhhlhhhhdnh +5-6 j: zjjsjn +9-14 s: ksclwttsmpjtds +6-7 l: gtdcblql +1-4 d: dkndjkcd +1-6 k: kkkkkckmc +10-12 x: xxxxxxxxxrxl +2-5 v: fxdjtv +3-5 q: pjmkqdmqnzqppr +5-8 t: xtgtgtcht +6-11 j: nftjzjmfljqjrc +6-9 g: rskgggmgmwjggggvgb +11-12 v: vkvdmvdvvvdv +15-16 z: zzzzzzzzzzzzzzgxz +13-17 v: vvvvvvvvvvvvvvvvnv +9-14 j: clrfkrwhjtvzvqqj +1-12 l: lljljznslllffhblz +4-7 c: cccgcxclc +6-11 z: tbxqrzzbwbr +18-19 m: jmbmmqmshmczlphfgmf +1-5 s: ssvsq +4-5 k: kkkkw +4-7 f: fcqffxff +3-8 f: fffzthzf +9-12 v: vvvvvvvvvvvmvv +14-17 f: ftflcfffjtjrvfkffmvf +4-7 n: pnmnxnqqjp +6-7 r: rrrkrmr +4-13 k: drckdzxrsmzrkqckn +5-14 t: dttttttttttttt +13-14 v: vvvvfvvvvvvvvvv +7-12 j: jrljwnctjqjjxj +6-7 v: wchfzvm +1-8 d: dddddddzd +10-12 g: gvvzrglgrgggggggggg +3-4 n: ngtnnn +2-4 b: fzbb +1-15 x: cxxfxxxckxxhxlxxxxxx +7-19 f: ffkzcglddffcfvfhffv +9-12 s: sssssssmssss +13-20 t: ttttmttttttthtttddtt +2-15 v: vvqvcwvvvvsvvqvwm +5-10 w: wxcstswwwwnc +3-4 v: tjvvnvvtzfdcjjwb +1-2 l: lbclr +2-13 d: dkdlddcddddddd +2-7 n: npnngnnn +4-12 g: kmvvmfngwmlg +1-2 w: wwwww +5-11 t: ttttjtttttttttttt +4-5 r: srlrrr +5-8 q: qhqfpjqsnqqkq +8-15 s: hvtnslpsfbsssrw +11-16 n: gnwnfndrnnhnnknsnnc +2-7 r: tdrrshrrhsxrr +16-18 m: mmbmmmjmmmmmmmmmmbm +6-7 n: nnnnnxt +4-6 k: dpxzklksk +1-9 g: ggkxhgggggggggggqg +1-8 l: lllglllh +1-4 c: cwtc +5-6 h: vhhhvshh +10-11 x: xxxxxxxxxxc +2-3 q: qhqqgqmt +3-6 k: hkqqshgjnxmlkrjdzg +9-11 l: llprlllllllll +5-7 l: lknflmrv +8-9 h: hhhhhhhhh +7-8 z: zzzzzgvzzzzz +18-20 v: vvvvvvvhbvqvgvlvjbrv +13-15 k: xkfcvkrnfkkkvcpt +3-5 l: llnnglmgtz +15-19 t: tmtsfttxtctdtgtmpttt +6-8 f: gmffwvffff +10-13 d: dndsddddddpdjndddd +7-10 r: rjzqrpgrrrcmrrg +1-4 m: hlmm +9-15 d: pdddlrwdzddddddd +6-13 q: qqqhnvqqqqqqfbqq +1-11 z: wzsqmnrzwzzhzxczzzzd +6-11 t: tptnjttkttttvtttr +3-5 n: nnznnn +5-6 t: trtttslv +5-6 g: gggggt +15-19 s: sssssssssssxsswsssss +1-13 q: wzqjljdqqqqnqq +6-7 k: kkkkkgkkk +4-5 k: zkxvk +7-14 t: thsstltbvmsctqkfhdzc +2-5 n: hnnnn +2-16 t: gsvkhmhktcxkfqbtd +8-9 q: qqtzznrqg +17-18 v: vvzvvvvvvvvvvvvvlk +3-4 v: vvvl +3-4 b: bbvb +10-12 w: wwwcwwwwwwkzwhw +1-3 d: ntps +8-9 j: mqcjcjjfjjhjbjj +1-7 j: mjjjjjjj +13-14 f: bzffglvfcfsfjb +2-3 k: kqkq +7-15 c: fccpccshcccccccc +12-13 k: kkkkkkpkktksqk +12-13 w: rwwwwwkwwwwswwwhw +5-12 k: nlkthkkklkkktchmhb +15-16 f: fffffffdffffffbf +3-4 k: kqkprkkp +4-5 p: dcpdppzpppjqm +4-7 b: qbbkgbgz +10-11 n: nnnnnnnnnnw +9-12 h: hhhchbhhvhrhhh +3-5 h: hrhnbcl +6-10 v: nvlvhvrpvvvvvvv +3-6 d: dddddjd +4-5 r: rrcvr +7-12 l: llllllllllllltll +3-6 b: zbbbbt +6-10 z: zznzzzzzbzbhzz +2-5 h: rfwbmkhmhhhmjhmh +11-13 q: wkkzzqxvqqsqx +2-15 p: hbpjpppppptppppzb +9-10 b: bbmbbbbbsb +3-10 t: cqmtttjtttttf +8-11 v: tvgcvvvvvkv +6-9 g: tggnggtggkg +3-6 w: dfwnht +8-14 c: pncwqccsfgctpccxc +6-9 p: bpppjtzprggp +15-18 j: sjjjjjjdjmjbjjpvjj +1-6 m: mhmkrhxn +10-11 d: xcjtpdwdcfvhqdksfhd +16-17 t: txtlrttctwtztttnx +13-14 j: jjtjjmjjnjjjjjjj +10-12 m: ldqmmmgmmxrmfwrbv +4-6 p: psmpnpkfq +13-14 t: tltttsttmtttjttt +7-9 g: ggggggbgv +8-9 q: qqqqqqqqd +4-5 d: ddddl +14-16 g: gggggggwggpgfpgm +4-5 v: vvvvl +5-8 v: gtjpvvdv +5-11 s: dsslsvqpwsss +4-6 h: hhhghh +16-17 k: hkkkkkkkkkkkkkkqj +5-10 d: dddtddddjd +6-7 v: vclfvvzvj +6-8 m: dtkbcblppzx +1-4 g: hggggg +9-11 q: qdqvdqkdfqvqzqkq +2-6 s: ssgsbswhs +3-8 j: jjpjjjjv +3-8 d: dddddddqdddd +6-8 v: vvvvhcvn +6-12 z: gzzzzzzzzzzkzzzzz +5-12 k: nrkzklbxcwbc +10-14 p: clxjpnhsvttnjp +6-17 w: vztxwwwgwlwcwwwtw +8-11 c: cctzcccqcjc +1-3 b: zdqx +3-5 x: dvxxxx +6-13 b: gvbbbbbbbbvpkbb +7-12 k: hkbkkqkvkmpkrhk +3-6 c: ccrbcdccc +4-6 m: znhphh +4-11 x: xmmgbxxgdxxtbwg +15-16 m: nmmbmmbjmrbvmmbm +11-12 j: jdcjjtsjjdjj +1-4 c: cccfcc +6-15 n: ssvnnnnnnwnggzmp +4-6 l: qwfllpx +6-9 b: bbbbbsbbmb +3-6 j: ljjgfh +5-9 t: tttttphtwtvtf +8-12 x: xtdxxxdjghxxpxhkbxx +5-9 r: rrprrmrrrjvszrrtp +15-16 r: lrrrrrrrrrrrkrrrr +2-5 q: ltfgqcqmt +7-13 k: zkkkkkkkkkkkhkkkkk +5-6 z: zzzzzszz +2-7 g: tnjqnsgkdtc +3-4 j: njjjgkxcgckj +4-7 j: rxmjlxzhjjjsgjcj +7-10 f: rmfbffhffcf +11-12 h: hdhhhhhhhhhsh +7-8 v: nwrvvvvdv +8-9 l: llllllllf +4-5 r: rmxrrrrx +2-3 c: ccgdcc +13-15 r: rrwrrrnrrrrrdrslr +4-16 x: cnlxmtpxdzxblfxxjd +4-5 m: mmmmtm +9-13 x: gxxxxxxlxxqxxxxx +1-3 d: ddhd +11-14 f: tffffffffqlfff +2-4 r: xrrf +1-11 m: mtdmsmmmmdmmmmmsmtmr +1-8 g: pggtggggdgmgggn +7-8 f: ffvfffpff +2-7 k: khqgfzk +11-12 s: ssssssssssbsss +7-14 h: hthpwhhxhglzqtmhh +2-4 z: zzpmz +16-18 x: xxxqxxmlgbxxxxxxxx +9-11 v: dblhzhvvvnfvptvmf +4-11 n: nxsddnsnnngsdnghngk +8-11 x: xxxxxxxwxxxxxxxxx +1-4 s: swst +13-14 m: mgmmghmmmmmmrmmfmmmg +4-5 c: dcccc +4-5 r: jzrrc +13-19 b: bbbbbbbbbbbcbcbbbbb +11-14 c: ccccncfclccccfcccm +3-4 t: tstl +1-20 v: vzrzgsvsfgxjqkxgdpwv +14-15 h: hhvkbhhhhhhhhmhhsh +9-13 b: bbbbbbbbtbbbbbb +2-3 b: zbbb +17-18 s: smsssssrsssssssssfss +5-10 v: vfvvvfvdvjvlltv +9-10 n: nnnqnnnnxtn +6-7 w: pwtwwwfkwvk +11-14 z: wzzzzzjzzzlzzkz +5-6 l: lxlllv +5-8 v: vvvvvvthhv +1-9 r: rrrrjkzrdqmr +6-8 s: sssssssg +2-4 f: frfff +1-16 r: pzbdrgnpndnrrwkczmr +8-9 b: sbbbbbbblkwb +2-5 z: zzjzz +3-6 q: qqwqqr +2-13 v: vbvvbvvjvvnvcdnvc +12-15 p: pppppppppppppppp +2-7 m: mmmmmmd +6-11 f: ffffffffffz +5-6 r: drrthrzrrrp +2-7 q: fntqnbqqzb +5-14 w: wlfwstdfzvwvqw +4-7 s: mgsssslfjzsssv +7-8 g: tgtgjrggggsggtg +11-19 z: fkzzzvzzvzdzzzzzfzz +3-7 w: kwcwwww +6-14 s: sssssssssssswjss +7-8 v: vvmbxvxv +2-6 n: nnnnnp +7-8 b: bbbbbbbb +3-6 z: zzzzhz +11-17 t: bltttdttttttttttzt +1-9 l: llllllvll +10-11 n: tznsxfhdpnn +6-8 t: tttttnttt +4-10 p: pppppppbppppppnc +4-11 j: rhvjjjjjjwjnrcp +3-4 j: cjjj +7-12 v: kmctjvksqzvv +16-17 w: wwwwwwwwcwwwwwwwwww +12-16 f: fffffjbfffwffwffff +9-10 p: ppntppppjppkpdp +3-4 l: lllcf +5-6 b: dbbbbsbtb +2-3 p: pvpz +5-6 f: pqffdf +1-3 l: lnlpxl +8-10 n: nnnjttnxmmns +1-10 j: xjjwtjtjjjjjjj +2-8 m: smwmcmzrfqbmmwdmm +1-6 k: jxpsfkkkgm +5-9 f: zjfffjjwknqh +1-6 c: rcccczcccccc +13-17 g: zsgpfppggwshgbtggxzh +12-14 n: qmknbfcgnnnhwn +1-6 k: vdklkkzkkkkfkm +1-3 h: hhlhhhl +16-18 p: qggnxmswcppklptgsp +1-4 m: vmmqmmmmmmm +8-10 l: lllllxlllvllg +4-12 g: gjgghggwctzvgggggg +8-11 x: jxhxxxxxxxx +4-16 n: xnrnbkrkdvntnjkc +2-4 m: mdmmj +6-7 n: nnnnnngnnnntn +1-13 j: jjjgjjjfgjjmj +8-10 z: zzzzzzpjtz +1-18 f: ffkwvfgcrnffgnffmf +4-5 j: jjtjvb +6-11 s: ssscsnslsssssssshsss +11-12 n: nnnnnnnnnnmd +2-10 n: cpnhnrnbknnkwnbnlb +2-4 d: dddnh +9-12 f: fffffffffffldfff +1-9 d: ddddddvdlddddd +1-8 w: wnwwwdwww +3-4 h: bhgv +1-4 x: vxxj +3-4 g: gmgbg +7-8 j: nzwgbtnj +3-6 z: zzpzzhzw +8-10 h: hmhhhhszgz +1-5 m: dnqgnxjm +11-12 z: zkzpbjxszzzhwgdz +10-11 r: rlrrrrrrrrr +1-2 v: vvvvtsvvvvvvvvqvvvn +13-14 n: nrfzqlxxxsxqhnkhrmws +1-4 z: znftzjjwzc +6-15 v: fvvvlvvhvvvvvzhvv +5-10 x: mtxprgbqxxkfnssvq +8-9 f: lffffffwf +1-4 g: grxgvlhflrbghj +3-5 c: fcxcl +6-7 s: ssssdds +10-13 l: llllllllllllxl +12-15 j: jjvjjbjcjjjjsjjj +1-2 c: ctggc +2-4 w: wbwwwwr +8-20 v: phvvvvvrbvvfvvvvvvhv +5-8 v: cvvnvjbl +4-19 x: xhvxflxpkxxcfvwxxhl +1-2 m: mgqj +5-6 q: wpxdbq +19-20 d: ddddddbxddddddddddpd +5-11 d: dhhwddjddkdd +6-7 g: ggggggn +1-7 h: zhphhhhhgn +7-11 s: ssssssssssksssss +2-3 n: hnwn +8-9 h: hhsshhhhh +1-2 c: ccwcc +2-5 s: cdsmmfqfcrsh +3-5 m: mwmjt +1-4 n: ndntnnnnnnnnnn +4-6 s: ssslsssshsssmq +5-16 r: rrrrcrrrjrrrrrrrrr +1-6 v: bvvvvvvv +9-10 t: tsttttztxtttttb +8-12 d: tvrbvwxdddxmhfsd +3-9 w: wbwwwwwwww +3-5 g: bgglcqg +8-12 f: fqffvdzslhksrv +1-4 h: hsqh +6-12 b: hbwhxbfppkbb +12-15 l: llllllllllllllplv +16-17 m: mmmmmzmvmmmmmmkmhmmm +2-8 p: mpnnnpwpv +9-10 x: xxpxxxxlcxj +10-14 c: mccclvcccfcckwcbczc +2-3 v: vvsrg +13-15 h: hhhhrlhfhhhhvhhhshh +3-8 z: vsbkqlzzzzzsmzw +9-11 h: qhhhhhhhddnh +4-5 h: hhhkxhh +7-12 t: dtcvttttbhnntft +1-5 z: kksnxzzxz +1-3 j: cjjjjjjjfjj +12-15 s: sslssstssssssszss +2-4 c: mntc +5-8 v: mvbsvfvvvlsrv +5-6 z: zmhfjq +10-15 r: rrrrrrrjrbrmrjr +9-11 j: jjjjjjjjjjxjjj +1-2 d: jwhdd +4-5 m: mmmkm +1-7 j: rprmjbxjj +13-14 g: ggggggpqggggqgg +1-5 l: llxzlkpptdzg +1-2 z: zzzzzzzzzzzzjzzz +3-4 h: qhhwtz +2-5 t: tptttt +1-14 c: cccccccccccccxcccc +8-9 t: tgtpttwtqttvt +1-16 m: mhmtpmmpmmtmzmmcqj +3-4 q: qqvq +10-11 h: hxhhhhhhhbhh +5-6 n: xlchhnljrlnfrlwzs +1-9 x: mxxxxxxxtxxxfxx +2-7 n: bbnnrqmnnnnnl +2-7 p: rgpqnqp +3-4 f: fndf +10-11 c: cccccccccqc +3-10 l: lpzxlhpslfh +3-5 k: kkkkkkk +14-17 b: bbbbbbbtbbbbbfbbbb +1-2 f: gfff +10-14 j: jjjjjjhjjjdjrjc +1-9 s: wszsswssspsss +4-6 k: dckkkkkk +3-13 h: hhvkvhhhhhhdhh +15-16 g: ggggggggggggggngg +2-11 m: nzdsmbqtmmmmxskcmmv +3-11 m: mmmkmhxmwmcmqdlpmf +1-8 n: snnnbnwn +1-13 j: pjjjjjgjjjjjxjj +3-18 m: mmvvmqmlmmmmzcmkwqlw +1-4 d: dbdx +12-15 r: rrrrrrmrrrrrrrr +4-18 s: sssvsssssszsssssscss +2-5 q: nqbmmbqds +3-12 d: hrdvzzcrbjwdkgddbrpq +2-3 r: rsrghkrmdsfm +5-9 k: twfwkkkswqkkkkwv +4-6 p: tppxpstmxcw +12-13 k: kkkktkkkkrkksk +1-2 m: lmmm +3-5 s: shsss +6-7 c: ccccclc +10-17 s: ssssshsssssssssshs +6-15 n: nnnxnrtfnnnnnnnnn +3-18 s: jsfcdsscssmnsgssnj +7-8 x: xxcxxxxr +3-5 l: lvlllll +11-12 h: hmhhhhhhhcxjhhfdh +3-4 d: wdfdd +3-4 r: qrvr +10-18 j: mvwlxblnhjddlzkhqjfj +6-20 b: bhbbbbbbbbbtbbkbbbbc +8-9 c: cclccmnrr +3-6 w: wwwwwww +5-9 k: dlgkjnqxk +12-18 f: fqfffbfffffcfffhfkf +1-3 w: fwwgjsclwpw +6-7 z: zwzzzzl +14-16 r: jrrrrrrrrrrrrfrrrr +11-14 b: bbbbbbbbbbbbbw +9-11 h: hhhzhhhfxhhhh +3-4 p: pplnp +2-3 f: ffff +5-8 p: lppppppsppppppp +17-18 w: wwwwwwwwwwwwwwwwzcww +11-13 n: nnnnnnnqnnnnfn +7-12 f: fxmfpdfjrffjgtffzlfg +4-16 w: bctwmwtxvwqzrwwwwhw +2-7 m: gmmmmmjmmmm +1-15 q: tqqqqqqqqqqqqqqq +3-4 q: gqwq +3-12 s: ssssssssssrhpsg +6-8 m: mrmlmhcrsm +4-9 q: gdbffcqbqt +1-17 k: kkkkkkkkkkkkkkkkkmk +15-16 h: hghhhhhhhhhhhhrhh +4-5 p: pkpzmb +2-18 h: khvkdpbxdptllfdxvhh +18-20 z: zzczzzzzzzzzzzzzzpzs +1-11 p: ppppppcpzppppppppp +4-9 z: ztpfrjzwnv +6-11 x: snxxtstcqhv +3-5 c: nrlcccbcpsvcc +2-7 z: dztxzzqmfzrpz +5-14 w: pbcjnqpwwlccfscz +1-5 f: rfndsxdmhbgf +8-14 t: ttttpdfwtxfttd +2-11 l: lndmmrnxdmdpdmlzll +3-4 h: chzl +10-17 d: ngkkdbvflmcssmgmdk +4-7 d: bhksdtd +2-6 k: ktkdkzwsgkhkk +1-4 r: hrrs +15-19 j: ndnvjfjljnwklsmdbjj +5-12 v: vhvvvrvgvvqgwvvbfv +2-3 r: rfkkhrrhqhks +13-17 q: qqmlqqqqqmqqvqqqcqq +4-15 z: zvbkvbzczkrttcz +4-8 s: ssssssss +13-14 x: xmxxrxxxgxxxmb +7-10 s: sfjzslwsqsss +4-13 c: clccncccccccpc +2-4 l: lddlpplrqqs +12-13 j: jjjvjjhjjjjmjjjjj +6-9 n: lnnznnpnclnnn +6-10 g: gggggggwgjgg +4-6 l: tjhqmr +2-4 d: hddxjdvj +5-13 t: tzftwttwttjttt +1-9 j: jnjjjkjftjjfmjhjkj +8-9 q: qqqsqqqjj +15-19 l: lllllbtdlsllllllxlfl +5-6 g: gkgkrsgg +2-4 t: tttb +12-15 p: jpppppspgpppppkxb +10-13 n: nznprnnhnmgxhxnknnnn +12-13 d: dddsdddddddsd +5-15 q: qqqqkqqqmqfzqqqw +5-9 s: nmgslvgdz +1-4 d: gddkddd +12-16 v: zvdsdsgjrtjvzsjtx +11-14 q: pqdgjqqqqgqqjwlqqqmq +2-7 p: pkpqsppqgz +6-10 b: bzdbbbbbbvbbbx +14-15 v: vvvvqvvvcvvvvvvv +4-5 w: wjwwwhjwg +5-10 x: wgthfxtdpxx +6-7 c: ccqcfcbcccbml +6-7 w: rwwwwxb +4-5 n: jnnnngvljjmnr +3-11 m: lbmmmmmmmmtxgxmmzm +1-2 b: bbbvjcbbb +6-9 b: tbwbbcbbbb +11-13 d: sdkwqrjdddbdd +9-15 t: ttttpqttjttttsjt +5-7 j: jjjjjjzj +12-13 v: vvjvmvvqvfzvcvvvvvv +6-7 d: ddlddrd +5-6 j: jjjjwj +5-6 f: fffffp +6-7 w: zwmwdwww +1-4 d: jddddppdktdgh +4-14 n: nnnnncnnnnnnnnrn +14-17 c: ccccccsdccccccccn +3-4 z: zzzgqz +5-17 m: mmrsmmnzqlnbmmlljwpm +3-5 j: cgvjh +12-13 w: wtgblrdchjjkfhg +4-7 t: rgclgtt +1-3 k: wckhkkkjkk +6-11 n: nnnnnnnnnnvn +17-18 k: kktkkkknczkkkkhkkk +1-6 x: rwxqgxrxxxmsmkrx +17-18 g: ggggggggggggggqgjp +14-17 w: wwwwwwwwwwwwwnwww +11-12 w: vcbmkbwnwbwww +15-16 g: gggggggggghjgwgggjvg +5-9 n: nnnnwnnnfnnnnnnsnnnn +3-4 k: kkkjhk +5-8 k: kkkkmkkkk +9-13 k: kkrskkkkkkkqfkknmz +2-3 j: jtjcj +7-8 c: ccvcrcsxc +5-9 k: kkkkgkkkkk +4-5 h: hhzsxv +1-7 d: lgdbdhdddd +5-6 j: dsjjkj +7-20 x: xnxwmwkbbbkjbpfwkpgx +11-12 q: wmbqtffthfcqgq +7-16 h: hhfkhhdhhhhhhhhhhhh +9-13 b: bhbfbmbbsgbbfbj +8-10 w: xwwmwwwgfwwzpwnw +7-11 m: bmrmbwmmmmmmmm +8-9 d: lshdfglpdq +11-13 w: vxwwwwxckwwkww +8-13 x: xxzxgtpxxlxxx +8-13 z: jrsfgvzzzwrdxz +10-11 q: qqqqqlqqqqq +2-7 m: knxnmxm +2-4 n: znnhnnnnnnn +4-6 k: kmxgkkk +10-18 z: qhhzhzbldchlmwdzfrsz +3-4 n: nnnt +11-15 v: vvvvvvvvvvwvwvf +4-9 x: dxjxnmghvrxbnzgxljc +1-2 m: mmgm +18-19 z: zzzzczzzzczzzzzzzjsz +6-20 p: pkhzdzpppfbphphpxppp +3-9 h: zxhqqkkqknkfvq +5-8 l: lllltlll +8-10 z: zdzzzzmszz +10-17 l: txhgwzsrjlvlvglxl +1-12 s: bvgswssssmssvssssssb +3-6 j: xjjbjt +3-5 x: xxlxq +5-15 r: htprxzjstgzpddrtjrr +1-10 x: xzftsqxxpgzdlcth +6-9 w: wbdwwpbwwwwcrx +4-11 n: nnknnhnnnnk +8-11 f: ffffffpsfffff +6-9 h: hhhnhhqhhhnhvv +6-9 x: gqxzhlpnxlcrwnxxp +5-7 k: kkkkjkkk +5-7 x: xxdxxsqcx +6-7 j: jfjljjfp +7-8 l: clsldvlc +5-10 h: qhqmchbzhlfhc +5-9 m: mpdnhsmmb +2-4 k: jvmkjrkhkctwlrq +2-3 s: ssgstssds +8-9 t: tvttttttht +5-6 n: nnnpnpn +8-9 x: xxxxqxxxsp +6-7 z: zzzzzzl +4-5 f: fffpkffq +1-12 b: bsfbclbxbkbbmbmb +14-15 b: rcnwnhbdfbhtblvb +7-9 j: jjjjjjjjx +2-3 x: xxxx +13-14 z: zqzzzzzdztzzzmzz +2-6 r: rmlbjrrbrc +2-3 m: mwmm +9-10 d: ddddddjddz +15-18 p: pppppppzppppppzppj +3-6 g: glfgdgfgbgdkg +1-3 s: sdsblxzscp +5-6 v: vvvvsv +1-3 d: vdxdkd +6-8 w: wkzwcwvwwwqwd +9-10 h: hhhhhhhhwh +9-12 b: bdbbbbbwbbmbbbb +2-8 b: bbbbbbbcb +2-9 v: nvtgsfvpv +11-13 v: hvvgvvvvvvbvphlhnv +6-7 r: rrrrprr +10-16 w: wlxptrzwmwxhspcww +5-7 f: ffpfshf +3-6 t: rnttvx +8-16 b: pvlbtnfbvspdhtkk +1-4 v: vlvd +4-17 l: qflfllkllplllllkl +1-3 s: psswjplkhvxssftnpl +6-11 t: tthmbtwkfct +11-17 w: wwwwjwdtwcnwwwxkx +9-11 s: sssssssslsss +8-10 n: nnnnnpnwnnnvw +12-13 m: mmmmmmmmmmmnpmm +14-17 w: xbswvmsflkmqlpkxwm +1-3 w: mzww +5-6 g: ggggdw +1-15 r: rslcrjzhrjdpwqm +7-12 g: ggdgfggdzlxfkg +2-11 x: cpsxxkxxqhsxdxxjkgbt +7-8 w: wdvhwwwp +1-4 z: zmfzllxnrnlw +9-10 b: rkbbbbksbpdsbcm +1-8 h: sqdmcjpw +2-6 x: pxxvrx +5-6 x: xjshxxqt +1-13 b: fbbbbbbbbbbbbbb +11-13 t: bwhtttdvtbtkw +2-6 j: rjrggj +5-6 v: fvvvwvtv +10-15 s: ssdsstswssssssc +2-6 h: hnqzhlclp +8-12 t: pjztttrjtvttt +5-6 g: gwxrggtmg +1-8 z: kzzzzzzvz +10-15 p: pppppppppvpppppp +3-4 g: ngxdgg +2-5 x: xcxxnbwh +3-10 s: sgkghshxdssws +1-2 s: pssldmf +2-5 m: jmxmm +5-6 n: pnsjqnnn +13-17 t: ttxslvttlnttrdwtt +1-6 n: nnpnsn +3-20 m: mmmmmwjmmmmmtmmvmmmm +15-17 s: ssszsslsssszssssss +5-8 s: hsgzspsk +7-8 c: ccccccchc +14-17 l: llllllllllllllllk +7-14 p: xjbxdpkbgcpbfpptfx +5-6 s: sghmss +4-6 s: ssssss +1-2 c: kcwpwc +5-6 m: mmmqtmt +1-9 l: glllllllslllll +3-4 r: rrcr +6-9 r: rpcbrrrrdvrrwf +3-7 l: wglsfjtwlldg +6-9 g: gggbgggxw +9-10 j: jjjjjjjjrjjjjjjjjjj +4-14 p: vbppfpncsmhctp +10-13 k: kkkkkkkkkkkkkkkkk +3-5 p: dnlpp +11-15 f: fsffzftkfqflnflf +9-11 q: bqdqcqqqqgffqfqmrqlq +1-10 l: lszxlhdkgtprglxxl +16-18 l: sllllllmlllllllllwl +4-7 b: brblbbbtbj +3-6 n: rhnntq +7-9 k: kjnkjpbkkkkvkjm +11-12 g: kvjpqmhcgbrl +3-12 h: khhhvhhmchhgfh +3-4 r: xmpr +3-7 m: mmlmmmmhm +7-16 m: mmmlmmlmmmmmmmmmmm +3-4 b: sdbbbr +14-19 k: hkkkkkjclkgmzvgkkkk +12-14 w: ssqgwwcxcqwwww +2-3 k: lkkr +1-7 t: wtttttlt +4-8 d: wdjnqgdf +8-9 j: jjsjwjjlj +4-7 h: hnhphxhhhq +2-5 d: qdjgqdb +3-5 w: wpwzwdm +3-12 n: pnnngxnjqjhpcntfrvz +10-15 h: hhhhhvhhhhhhhhg +4-6 s: dwrsksjhtsrjdvmbsbwr +8-11 v: vvvvvvvcvvvvvv +4-5 m: lnmlmmwsmfsm +7-16 c: kvzcrcbcvkcpptdccq +2-3 b: bnbbpjp +3-5 m: hpjkrmmlwq +3-7 v: vvvnlhn +3-4 b: bnbbb +3-6 d: tkdktrctmjw +3-5 f: pffffj +6-10 t: ltrgjvjthtpttphrttk +3-8 s: ssrkstfgssxxxc +1-2 d: sdhkcfdcdg +6-12 h: shhhhhzzzhfh +4-7 j: jjkzgrj +13-15 l: llltlwlllllqzlbldl +5-9 d: dzxjdrftsprbldvddk +4-14 q: wqsqqxtbfnckzqcqqqq +1-2 v: lvdxdwpphqv +5-6 z: zpzhzjzqtzh +3-4 q: qqqlq +9-10 v: svvvhvvvtv +3-12 g: kjgmbzgklwfb +10-15 v: vvddvvvrhvvmvwvvv +1-20 j: kjjjjjjjjkjjpjjjjjjj +6-8 t: tttttdtt +11-12 v: vvvvvqvvqvxvvv +12-13 h: hnhshhhhshhhh +7-8 z: vzzzzzrzzzfpz +7-8 x: xkxhxxhn +4-7 b: hbbzptb +5-9 d: fddqjsdbj +3-10 l: llllllglxslll +1-9 b: dbsbbbbgbb +5-8 n: dtnnsnnnn +7-16 m: mmmmmmmmmmmmmmmsm +3-4 f: nhwk +15-17 w: wwfwwxwmwwwwwdswwwww +1-11 l: llllllllllll +4-9 c: cccccccchcc +2-3 k: kkkkbskk +3-6 s: nssqtf +4-5 m: mmrhm +9-11 f: nfnsrfdfnfff +15-16 k: kkkkkkkkkkkkkkzhk +6-9 q: tzqqxqhnq +3-11 k: kkkkkkkkkkck +2-5 p: wmpgpmjmrqg +15-19 r: rrrrrsrrrrrrhfrrjrr +4-10 l: lllsldllll +4-7 s: sjhzqns +1-3 n: nnknnp +13-14 j: hjjgxjzjvjpxjj +4-5 r: rrrgrrrrr +10-11 p: ppptphpxkpppp +2-7 j: fjsnxwpjgqnzjjj +6-8 k: kdkkwnvkkkk +2-5 q: qdqqjqqwq +5-7 x: xdxddbcxvnxxxxhxxxq +2-6 n: cnqlmrlwqhdbbvbnhskh +7-8 z: zzzzzzzwz +6-8 r: llrrtzrpr +1-7 d: ddlddvmkddjpd +8-9 v: vvvvvvvrkv +18-19 t: vtststttfmtqtmttdnz +3-9 b: nbwbzntrb +3-4 r: pzrrqqrj +5-9 x: bvxxllwcf +4-6 f: fxmlxf +11-15 n: nnqnwnnnwnknnnnnfnn +9-11 n: nnnnqnnnnnj +7-12 k: kkkkkvjkkksskrkkk +2-3 b: cbbvbv +3-6 x: xxfldxxxc +6-11 k: fkvvkkwkvkpjkjk +10-16 f: ffffffmffffffffffff +7-8 p: fppplpnc +11-20 r: srrrfrrrrrrrrhrrbrrr +13-17 s: smssssssssssssssb +5-8 q: fcqlqqqq +6-10 g: rmpsgrlxcvgtggwgvk +13-15 h: hhhhhhhhhcmfhhldhzh +5-10 q: qqqqjqqqqqcq +5-9 m: lmvcmmsznmmgmmmcs +5-6 h: hhhbzr +3-4 d: dzdg +11-14 h: rfvjnjbzvrhthdxhv +14-19 g: ggggggggggggggggggcg +6-7 m: mmmmmphg +13-14 p: ftzfrppkzrrpgp +12-16 n: lxnnnnnngnnbnncnn +8-9 c: dqgzbncfccrjtdkc +6-9 r: jdrrfrtkmkfltkm +4-6 g: dnggrr +3-4 s: ssssvs +18-19 f: wffffffffsffffffffvf +6-10 l: klllbxltll +6-7 r: rbdgrrr +17-18 l: vjplzpcftlkrllsbqlqg +3-9 n: bqnnnnrbxkdsdwnvtwwh +1-2 w: qwwt +5-18 z: zzzzzzzzzzzzzzzzzlz +2-7 n: nbnnnnnnn +14-15 g: mcdcmxpxmgkqdhm +18-19 s: gsssssssssswssssssss +5-6 s: tptssvs +8-12 c: cccnbcccmcctclccccx +6-15 t: tttttttttmttstf +5-6 l: lllklq +7-9 d: dqdcdcddxcddmdkrd +4-5 r: rrvrxqnzrm +9-11 p: pjpppppppppppppp +4-6 v: vpvvvvv +6-9 h: wwchhhgfh +10-11 f: flfcjvtljftfffhff +6-7 v: vvvvvvvv +12-15 k: kjkkkktkkkkkzvn +6-9 v: rsrvvgnwktwvvnvclvvc +2-12 c: ccvqsctcwkmkqzc +16-18 w: wwwwwwwwwwwwwwwwwwww +17-18 g: ggzgggggggglggggsgg +13-18 v: vvvvvnvvvgrvvkvtqv +5-11 k: kkkkkkkkkkkkkkk +11-12 f: ffffffffffvf +1-7 h: rstpvhh +11-14 l: lrnllwvlnflllfdfllt +5-7 g: gcgjgrkgj +7-18 z: zzzzzzgzztzzzzzzzxzz +17-18 v: vvvvvvvvvvvvmvvvvvvv +16-18 m: mmmmhmmmmmtmmmmvmx +1-3 z: vzzzwz +5-6 n: nnnhnq +8-15 r: jsrprrrrmrrkgrkrr +2-12 g: txwxcgwfqkfg +9-15 l: ldlllllllllllll +3-5 f: gfbsf +15-16 v: vvhrnzxfvvvvcwjv +4-15 c: cccmccccccccccccccc +7-13 l: bwlzlxzllctjcf +1-3 q: rsgtq +4-9 n: npznnnvvnzg +3-7 z: sqtczzfzzrzfz +2-3 k: ckkrjnkglnz +9-10 q: qqqqqqwqjqqfq +4-11 v: vvvbvvvvvvnvvd +5-7 n: lbwxnnnncnnwnv +8-9 k: kgkkkkkjf +7-9 l: llllllllll +15-19 p: pppbpcppxcptppvmpppb +3-4 m: fqmwcncsmp \ No newline at end of file diff --git a/2/part1.py b/2/part1.py new file mode 100644 index 0000000..37c4841 --- /dev/null +++ b/2/part1.py @@ -0,0 +1,13 @@ +import re + +passwords = "" +with open("input.txt", "r") as f: + passwords = "".join(f.readlines()) + +correctPasswords = 0 +for letterMin, letterMax, letter, password in re.findall(r"(\d+)\-(\d+) (\w): (\w+)", passwords): + letterCount = password.count(letter) + if int(letterMin) <= letterCount <= int(letterMax): + correctPasswords += 1 + +print(correctPasswords) \ No newline at end of file diff --git a/2/part2.py b/2/part2.py new file mode 100644 index 0000000..4286507 --- /dev/null +++ b/2/part2.py @@ -0,0 +1,14 @@ +import re + +passwords = "" +with open("input.txt", "r") as f: + passwords = "".join(f.readlines()) + +correctPasswords = 0 +for pos1, pos2, targetLetter, password in re.findall(r"(\d+)\-(\d+) (\w): (\w+)", passwords): + letter1 = password[int(pos1) - 1] + letter2 = password[int(pos2) - 1] + if (letter1 == targetLetter and letter2 != targetLetter) or (letter1 != targetLetter and letter2 == targetLetter): + correctPasswords += 1 + +print(correctPasswords) \ No newline at end of file diff --git a/3/input.txt b/3/input.txt new file mode 100644 index 0000000..5f140df --- /dev/null +++ b/3/input.txt @@ -0,0 +1,323 @@ +...............#.#............. +##..#....................#...## +......#..#.#.....#..#.#.##..... +.........#...#..............#.# +............#.......##......... +...#.....#.....#...#.....#..#.. +..............#..##.#..#......# +.##.....#.....#......##.#...... +.#..........###....#...##....#. +.....#....#.#.......#......##.. +.#....#......#.......#........# +..#.#.......#..##.....##....... +...#.#....#.......#.......#...# +##.##...##..#......#.#.....#..# +.#.#.......#..#.#......#...#.#. +#.......##.......#...#......... +.....#......#.#.#.....#....##.. +.#.#........#....#..#..#....... +...#....#..###.........#.....#. +........#........#........#.... +..##..............#.....#.#..#. +.#...##.............#.#........ +....#..#...........#.......#... +..#....#.....................#. +#.#..................##......## +.#.##....#......#........#..... +.........##.....#....#...##..#. +#..........#..#.#.............# +.........#...#.#.#.#..##..##... +#...#.....#..#..#....#...#..... +..##.....#..................#.. +#..###.....#....#.......#..#... +...##.##..#............#......# +........###.........###......#. +#..##....#.........#.........#. +....#.....................#.... +#..#..##..#..####.##..#.....##. +..#...#.#....#....##.....#..... +...#.#.........#.....#.#....... +....#................#..#...##. +....#..#..........#...#.#.##... +........#..##............#....# +...#......##..........#.##...#. +.......##...................... +.......##..........#....#.#...# +......###.##..##..#....#...#..# +#.#...........##.....#........# +..#...........#..###....#.#.#.. +........#...........#......##.. +.........#...##.###...###..#... +.....#.....#..##.........##.... +...##..............#.....#...## +.##....#.......###.....#....... +.#...........##.............##. +......#..#..##.##......#......# +........###........#......#.#.. +#.#....#.....#........#......#. +.##..#.........##...##....#.... +.....#.........#...##.....#.... +.............#........###....#. +......#.......#.#........#.#... +..#....#.#...#....#...#.#...##. +#...#......##..##......#.##.### +...##.#....#...#....#.........# +...#..####.....##.#..#.#...##.. +##.#..#....##......#......##... +###.........#.#..#.#.....#..... +...#........#..##...#.#.#..#.#. +...###..#.###.#...#............ +....................###........ +...........#...........#....... +#..............#.#.........###. +....................##.....#..# +#.#.....#.......#...#.......... +.#...#......#....##...#...#.... +.....#.##..................###. +.........#.#..#.#......#....... +.......#.....##..#.##.#........ +..#..........#.###.....#....#.. +......#.............#.#........ +........##....#........#....... +...#.............#....#.#...... +#........#..####.....#.....#.#. +.##......##...#........#..#.#.. +....##....#...#...#..##...#.#.. +#.##...###..#....##.#.......... +....#.#...#.#...#..##.###...#.. +#.....##..#..#....#.#.....##... +.#..#..........##.#.....##..... +.#..#........#.#.#.#........... +.#..#.....#...........#...#.... +...#......##..........##..#.... +...#..#....#.##...#..#.....###. +#.#....#.....##................ +#..#......#.#.#.......#........ +......#....#.#....#..##....#..# +.#.....#.#....###.##.........#. +.###..#.....#........#.#....... +.#...#......#..#.#......#.....# +#...............####...#.....#. +.......#..........##.#........# +#........##....##.....###..##.. +#..#.....#..##.....#....#..#... +#.....#.......##......#.#.....# +#.##..#......##..#............. +##...#.....#........##......... +....#..##....#...#.......#.#... +....#...#...##..#....#..#...#.. +..............#.#...#....###... +...#....#..##...##..#....##.... +#.##.#..#..#......#.#.#.#...#.. +.......#..#..##........#......# +##.#....#....##.#......##.#.... +.#...#..............#........#. +.#.#....#.........#............ +.#..#..###.............#....#.. +#......#...#.#..##..#...#....#. +.......................#...#.#. +.............#..#...##......... +..#.#..#....#....#........#.... +#......#.##..#...#.#........... +.....#....#...........##.#..#.. +..#.#.....#..............#.#... +#.......#.....#................ +#..............#...#....#...#.. +...#...##..#..#............#... +......###.....................# +.........#.......##..#....#.... +........#...#.##..#.##......#.. +....###..#.#...#...#..#.#...### +##...#...##.#...#.#...#.#....#. +.........#...#.....###......... +...#........##..#.......##..... +.#.......##.........#.....##..# +.#..................#...#...... +.##..#..#.#.....#.###.......... +...#.....##..#.........#...#... +.#......#.#.......#.#.......... +.........#.#...#..........#.#.. +#..........#.##..#.##....#..... +.#.#....#.....#..##.....#...#.. +..#........##...##..#..#....#.. +#...........##....#..###....#.. +...........##.........####...#. +..#........###...#.#.........#. +.#...............#.##.#.#...#.. +.#.##..#.....#.#.....##..#..... +...#...#..#.##.##...#.......##. +..#...#...#......##.##.##...#.. +##....#...#...#...............# +...##...........#......#..#.#.. +#.........#......#.#.##.....#.. +........#..#.........##........ +..#.#....###.....##..#...#..... +.........#...#.......#.....##.. +##.....................#...##.. +.#.#..#......#................. +.....###..#......#..###..#..... +...#.....##.........#......#..# +......##.....#...#........#.#.. +..#.#...#......#...#.##.##..... +...#..........#...#.......#..## +.###........#........##........ +..#.#.#..........#.#...##...... +.........#........#......###..# +....##..#.........#...........# +..####..#............##.......# +.....##.#..##.........#...#.#.. +...#.........#.....#.....#..... +.......#...#..#...##.........#. +...#...#..#...#....#..#........ +#............##.##...#......... +.#.#.....#.......####.....#.... +..............#......#.#....... +..............#...........#...# +#...#........###....#.#....#.#. +##.#..#..#......#......#.#.#... +.#..#.....#..#.#..#.#.......##. +......##.#...#...#......#...#.. +#...........##....#.#.......... +....#.......###.#...#.......... +.......................#.....#. +........#...#..#...#.#.#.#.#... +.#.#...........#......##...#... +.........................#..... +.................#.##.#...##... +...#...##.....#.....##....#.#.. +...#...#...................#... +...#..#..#...#...#....#........ +#....#...#.....#............... +.......#...........#...#....... +....#....#.....##.......#...... +.......#..........##........... +.#.#........#..##....#......#.. +.....#.......#.#.........#...#. +.#..####.#.#...............#..# +.....###..#..#..........#.#..## +..#.......#...#.....##..#..#.#. +#....#......#.................. +........#.##.#....#...........# +....#.#....##..#.#.....##...... +...#..#.......#....#.....#.#.#. +#...#......#.....#.#..........# +....#....#...............#..... +..###......................###. +.##....#..#.......###.....#..#. +..###............#........#.##. +.#........#......#.....#..#.... +....#..##...#...#.###.......#.# +.......#.##...........#.#..#... +.....#...##.................... +....#....#...##......#......... +..#............##....###.#...#. +.#........#...............#.... +#..#.#.##.........#..##....##.. +#.#....#..#.##....##...#.#..... +.....#.....##....#.#........#.. +#..#...#...#....#....#......... +...#........#..#.#.....##...... +..#...#...#................##.. +#........#.#.##.......#.#...#.. +#......#..####.##.....#.#..#.#. +............#..#.#....#......## +..#.....##....#...#.#.......... +...#...#.........#...#.#....... +.###..#.......##.##.....#.#.#.. +...#....#...............##.#... +....##..#..#..#.#......##.....# +#.#..............##...##...#### +.....#.##...#.#...............# +.##.....#.........#.......#.#.# +#.#..#.....#.......#.......#..# +...#.#.....#.....#......#...... +.......#....#..#.#..........#.. +......#......#.##...#.......... +.....#.......###...#...#.#..... +#..#.#.........#.....#.##....#. +..#.#.........#..#..#..#.....#. +.#..##..#..#....#......#.##..#. +...##......###.....#.##.##..... +.#.....#...#..#...#............ +##..##..#.##....#..#........... +...#..##..#..#.............#.## +...............##............#. +..#.....##........##.#...#....# +.#.#...#.#.#..#.#.....#....#... +.#....#...............#..#..... +....#.##..#....#......#...###.. +#................###...#.#..... +...#...#......##..#.#....#..... +.#....#....#.#...##............ +....#...##..#..#........#.##... +..##.....#..#..##.............. +..#..##..#.#..##....#....#....# +...##.............#............ +#....#....#.#........#.....##.# +.....#..#.#.....####...###..... +................#......#....... +.....#.#.#.#.#....#..#........# +.##.#...#.#.......##....#....#. +.....#........#................ +..#.....#..#...#..#...........# +.#.....#...##.....##..#.#....## +......#.......#..#......##.#... +#.#..........#.##.#........#... +...#..#.............#.......... +#..#..#..........#..##.#....... +.#..#...............####..#.... +.......#.....#......#.....#.#.. +.#...............#...#......... +.#..#..........#..#.#..##..#..# +......##..#.....#..#......###.. +..........#...#..#.......#..... +.#.#.#..#.....#.##.#...#..#.... +........#.......#.....#.#...... +......#.....##.....#....##.#... +...............#......#.......# +..#.#...#.....#.#...##......#.. +#.#.........#.#...#........#### +#..........##..#..#........##.. +.............#..#.......##.#..# +..#........#.#....#........#.#. +.#......####..#..#............. +............###.......#.#..#... +#.##......##...#...#.........#. +....##.#.#.#......#....#..#...# +.#..#.#....#...#.........#..... +#...#.....##............#...#.. +#.#...#..#.................#... +............#.#..#.....#.#.#..# +...................#....#.##... +.....#...#.#....#....#.#......# +.......##.#.#......##.......... +.#..#...##.#...#..#......#..... +......#.#..#..###..##..##...... +.#.#.#.#.....#...###.....#..#.. +.#....#.....#.......#.......#.. +..........##.........####...... +.#.#.............#..#.#...#.... +........#........##...#.#....#. +........#...................... +..#.#....#...............#...## +.......#.#...#..#.....##......# +.#...#....#..........##........ +.#.........#.#............##... +.....#......##...#.......#..#.. +#.#..#.............#...#...#... +......#.......#............#... +...........##....#......##..... +.#.#..#.....................#.. +##..##.....###..##.#........... +...##......##....#...##.....#.. +#...#.##.............#......... +......#..#.........###.#......# +#.#.....#.....................# +....#####.....##........#.#..#. +...........##..##.###.......... +..........##.....#........#...# +.......#..#......#.....##..##.# +.....##.#........#.........#... +......##......................# +.#.......#.#.#............#..#. +.....##.#.......#.#........#... \ No newline at end of file diff --git a/3/part1.py b/3/part1.py new file mode 100644 index 0000000..7d14634 --- /dev/null +++ b/3/part1.py @@ -0,0 +1,16 @@ + +trees = [] +with open("input.txt", "r") as f: + trees = [line[:-1] for line in f.readlines()] + +encounteredTrees = 0 +maxRows = len(trees) +maxCols = len(trees[0]) + +x = 0 +for y in range(1, maxRows): + x = (x + 3) % maxCols + if (trees[y][x] == "#"): + encounteredTrees += 1 + +print(encounteredTrees) \ No newline at end of file diff --git a/3/part2.py b/3/part2.py new file mode 100644 index 0000000..db2bbb9 --- /dev/null +++ b/3/part2.py @@ -0,0 +1,26 @@ + +trees = [] +with open("input.txt", "r") as f: + trees = [line[:-1] for line in f.readlines()] + +encounteredTrees = 0 +maxRows = len(trees) +maxCols = len(trees[0]) + +def getEncuonteredTrees(right, down): + encounteredTrees = 0 + x = 0 + for y in range(down, maxRows, down): + x = (x + right) % maxCols + if (trees[y][x] == "#"): + encounteredTrees += 1 + return encounteredTrees + + +print( + getEncuonteredTrees(1, 1) * + getEncuonteredTrees(3, 1) * + getEncuonteredTrees(5, 1) * + getEncuonteredTrees(7, 1) * + getEncuonteredTrees(1, 2) +) \ No newline at end of file diff --git a/4/aggregate.txt b/4/aggregate.txt new file mode 100644 index 0000000..294f915 --- /dev/null +++ b/4/aggregate.txt @@ -0,0 +1 @@ +{'byr': ['1952', '1969', '1920', '1967', '1959', '1996', '1967', '1959', '1943', '1998', '1975', '1962', '1966', '1949', '1986', '1920', '1993', '1996', '1956', '1995', '1941', '1965', '1928', '1956', '1967', '1946', '1962', '1966', '1940', '1978', '1953', '1947', '1939', '1958', '1966', '1950', '1976', '1999', '1983', '1962', '1921', '1988', '1948', '1947', '1989', '1993', '1944', '1986', '1969', '1993', '1954', '1997', '1939', '1925', '1957', '1973', '1942', '1960', '1920', '1931', '1980', '1935', '1987', '1986', '1993', '1974', '1951', '1990', '1923', '1943', '1974', '1962', '1950', '1971', '1925', '1936', '1963', '1941', '1964', '1959', '1971', '1951', '1920', '1932', '1988', '1993', '1990', '1920', '1920', '1922', '1928', '1942', '1962', '1937', '1982', '1932', '1997', '1926', '1974', '1963', '1988', '1929', '2000', '1998', '1994', '1953', '1957', '1997', '1924', '1936', '1990', '1977', '1969', '1980', '1942', '1998', '1921', '1995', '1966', '1941', '1982', '1994', '1933', '1936', '1956', '1985', '1948', '1968', '1949', '1986', '1969', '1947', '1971', '1938', '1983', '1955', '1989', '1923', '1956', '1958', '1996', '1927', '1963', '1939', '1942', '1944', '1970', '1928', '1935', '1960', '1989', '2000', '1958', '1998', '1938', '1961', '1995', '1942', '1963', '1939', '1920', '1957', '1993', '1974', '1935', '1985', '1987', '1951', '1995', '1938', '1991', '1990', '1976', '1938', '1967', '1931', '1966', '1999', '1924', '1941', '1961', '1966', '1921', '1961', '1933', '1925', '1953', '1930', '1992', '1929', '2000', '1972', '1997', '1941', '1988', '1963', '1924', '1983', '1974', '1995', '1945', '1950', '1997', '1954', '1993', '1941', '1973', '1999', '1925', '1993', '1989', '1956'], 'iyr': ['2017', '2019', '2017', '2012', '2016', '2014', '2017', '2010', '2017', '2015', '2018', '2017', '2027', '2020', '2013', '2020', '2018', '2020', '2014', '2013', '2019', '2020', '2019', '2014', '2013', '2015', '2015', '2011', '2010', '2016', '2011', '2017', '2019', '2013', '2017', '2013', '2010', '2026', '2015', '2019', '2027', '2018', '2028', '2015', '2018', '2014', '2020', '2014', '2013', '2020', '2019', '2024', '2019', '2016', '2010', '2010', '2010', '2013', '2011', '2017', '2022', '2016', '2018', '2013', '2011', '2013', '2012', '2018', '2013', '2010', '2015', '2014', '2013', '2014', '2019', '2016', '2019', '2013', '2019', '2017', '2017', '2015', '2014', '2015', '2016', '2019', '2018', '2019', '2018', '2014', '2019', '2011', '2018', '2018', '2011', '2025', '2016', '2013', '2018', '2016', '2018', '2013', '2013', '2014', '2011', '2019', '2018', '2010', '2013', '2010', '2015', '2020', '2014', '2017', '2017', '2013', '2013', '2016', '2011', '2018', '2018', '2017', '2013', '2010', '2010', '2012', '2012', '2010', '2014', '2014', '2019', '2015', '2012', '2013', '2019', '2012', '2020', '2015', '2019', '2018', '2016', '2011', '2011', '2016', '2010', '2019', '2013', '2010', '2016', '2015', '2012', '2020', '2021', '2013', '2011', '2011', '2016', '2010', '2011', '2011', '2011', '2019', '2010', '2017', '2025', '2012', '2023', '2018', '2016', '2013', '2018', '2020', '2014', '2015', '2018', '2014', '2016', '2020', '2014', '2013', '2015', '2012', '2013', '2011', '2016', '2018', '2013', '2012', '2016', '2012', '2016'], 'eyr': ['2026', '2023', '2023', '2021', '2023', '2028', '2028', '2026', '2027', '2024', '2029', '2025', '2023', '2021', '2025', '2021', '2029', '2026', '2020', '2024', '2028', '2023', '2029', '2020', '2025', '2021', '2030', '2029', '2029', '2026', '2024', '2024', '2025', '2021', '2027', '2020', '2024', '2023', '2024', '2028', '2035', '2030', '2021', '2024', '2030', '2028', '2029', '2029', '2029', '2021', '2026', '2029', '2025', '2037', '2031', '2027', '2021', '2020', '2029', '2025', '2026', '2027', '2024', '2022', '2023', '2021', '2020', '2027', '2029', '2025', '2024', '2020', '2023', '2025', '2023', '2023', '2022', '2029', '2023', '2029', '2023', '2021', '2020', '2027', '2025', '2022', '2022', '2024', '2028', '2021', '2030', '2020', '2021', '2027', '2020', '2024', '2020', '2025', '2021', '2021', '2025', '2024', '2022', '2028', '2027', '2025', '2023', '2028', '2022', '2030', '2029', '2038', '2020', '2027', '2027', '2028', '2023', '2027', '2030', '2031', '2030', '2030', '2024', '2024', '2028', '2021', '2021', '2023', '2024', '2023', '2021', '2029', '2022', '2030', '2022', '2027', '2029', '2023', '2026', '2029', '2027', '2022', '2027', '2026', '2025', '2023', '2030', '2024', '2029', '2028', '2030', '2028', '2024', '2027', '2025', '2036', '2029', '2026', '2020', '2024', '2022', '2020', '2025', '2025', '2030', '2024', '2029', '2029', '2020', '2023', '2029', '2021', '2027', '2022', '2020', '2026', '2028', '2027', '2022', '2034'], 'hgt': ['155cm', '163cm', '171cm', '157cm', '186cm', '185cm', '178cm', '151cm', '188cm', '152cm', '152cm', '164cm', '164cm', '155cm', '163cm', '153cm', '181cm', '182cm', '158cm', '191cm', '157cm', '173cm', '69in', '184cm', '179cm', '177cm', '60in', '178cm', '182cm', '178cm', '192cm', '174cm', '174cm', '152cm', '166cm', '182cm', '171cm', '177cm', '180cm', '179cm', '188cm', '182cm', '181cm', '190cm', '180cm', '60in', '170cm', '163cm', '168cm', '184cm', '175cm', '171cm', '157cm', '189cm', '170cm', '189cm', '150cm', '180cm', '164cm', '154cm', '174cm', '74in', '172cm', '154cm', '59in', '154cm', '164cm', '68in', '150cm', '164cm', '162cm', '179cm', '183cm', '162cm', '189cm', '169cm', '63in', '177cm', '161cm', '67in', '68in', '173cm', '154cm', '160cm', '161cm', '151cm', '176cm', '150cm', '151cm', '165cm', '167cm', '190cm', '172cm', '191cm', '150cm', '152cm', '184cm', '166cm', '187cm', '71in', '192cm', '167cm', '70in', '177cm', '177cm', '172cm', '161cm', '177cm', '158cm', '164cm', '162cm', '166cm', '181cm', '181cm', '152cm', '191cm', '188cm', '169cm', '177cm', '162cm', '159cm', '185cm', '70in', '191cm', '161cm', '173cm', '175cm', '64in', '173cm', '193cm', '165cm', '163cm', '170cm', '162cm', '171cm', '171cm', '155cm', '68in', '186cm', '170cm', '150cm', '184cm', '155cm', '164cm', '186cm', '185cm', '176cm', '170cm', '185cm', '68in', '152cm', '182cm', '182cm', '164cm', '179cm', '189cm', '168cm', '173cm', '157cm'], 'hcl': ['#866857', '#623a2f', '#b6652a', '#c0946f', '#733820', '#172f67', '#888785', '#5d69b9', '#341e13', '#fffffd', '#18171d', '#623a2f', '#efcc98', '#a97842', '#18171d', '#bd0f54', '#cfa07d', '#efcc98', '#602927', '#c0946f', '#a97842', '#18171d', '#fffffd', '#c0946f', '#a97842', '#ceb3a1', '#efcc98', '#2aea45', '#733820', '#b6652a', '#733820', '#888785', '#18171d', '#efcc98', '#602927', '#18171d', '#733820', '#866857', '#602927', '#6b5442', '#004c11', '#8f97b1', '#6b5442', '#ceb3a1', '#efcc98', '#a97842', '#18171d', '#fffffd', '#341e13', '#623a2f', '#733820', '#a97842', '#602927', '#cfa07d', '#6b5442', '#6b5442', '#cfa07d', '#7d3b0c', '#cfa07d', '#220540', '#fffffd', '#efcc98', '#866857', '#ceb3a1', '#733820', '#623a2f', '#866857', '#fffffd', '#888785', '#7d3b0c', '#602927', '#b6652a', '#2c9ee8', '#efcc98', '#efcc98', '#ceb3a1', '#c0946f', '#64a8b8', '#b6652a', '#18171d', '#fffffd', '#623a2f', '#18171d', '#b6652a', '#efcc98', '#a97842', '#888785', '#733820', '#888785', '#ceb3a1', '#efcc98', '#733820', '#602927', '#cfa07d', '#6b5442', '#6b5442', '#7d3b0c', '#888785', '#d683bf', '#ceb3a1', '#fffffd', '#602927', '#b216fb', '#fffffd', '#18171d', '#fffffd', '#cfa07d', '#fffffd', '#623a2f', '#341e13', '#a97842', '#18171d', '#866857', '#c0946f', '#c0946f', '#733820', '#a97842', '#8a9477', '#6b5442', '#da6977', '#733820', '#efcc98', '#6b5442', '#426e1a', '#c0946f', '#18171d', '#fffffd', '#fffffd', '#6b5442', '#7d3b0c', '#ff4019', '#fffffd', '#56c370', '#18171d', '#733820', '#866857', '#6b5442', '#c0946f', '#623a2f', '#18171d', '#623a2f', '#623a2f', '#b6652a', '#cfa07d', '#650d28', '#cfa07d', '#cfa07d'], 'ecl': ['grn', 'brn', 'hzl', 'gry', 'blu', 'brn', 'brn', 'blu', 'hzl', 'gry', 'oth', 'hzl', 'gry', 'gry', 'hzl', 'gry', 'blu', 'oth', 'hzl', 'oth', 'brn', 'hzl', 'brn', 'hzl', 'grn', 'amb', 'gry', 'blu', 'brn', 'hzl', 'oth', 'grn', 'oth', 'gry', 'hzl', 'blu', 'gry', 'brn', 'grn', 'hzl', 'brn', 'brn', 'gry', 'hzl', 'hzl', 'gry', 'grn', 'gry', 'brn', 'oth', 'brn', 'hzl', 'grn', 'grn', 'hzl', 'blu', 'brn', 'brn', 'gry', 'hzl', 'brn', 'grn', 'oth', 'oth', 'hzl', 'oth', 'brn', 'hzl', 'amb', 'oth', 'oth', 'grn', 'gry', 'oth', 'blu', 'blu', 'hzl', 'gry', 'gry', 'gry', 'blu', 'oth', 'oth', 'blu', 'hzl', 'gry', 'gry', 'grn', 'gry', 'oth', 'hzl', 'gry', 'gry', 'hzl', 'gry', 'brn', 'blu', 'grn', 'grn', 'gry', 'amb', 'brn', 'oth', 'blu', 'grn', 'oth', 'grn', 'amb', 'blu', 'amb', 'gry', 'hzl', 'grn', 'grn', 'hzl', 'amb', 'amb', 'hzl', 'grn', 'oth', 'amb', 'amb', 'hzl', 'blu', 'oth', 'amb', 'gry', 'brn', 'gry', 'gry', 'hzl', 'amb', 'gry', 'gry', 'blu', 'gry', 'gry'], 'pid': ['337605855', '790332032', '890112986', '987409259', '316587303', '648491325', '289515215', '853993893', '932020343', '120354938', '904738945', '892810672', '667716485', '479214778', '048565668', '437721309', '733248003', '529595074', '579525362', '976483712', '588299934', '378066668', '543943316', '328883228', '262286178', '266274644', '064161451', '204206116', '393444692', '832320186', '192524664', '688526729', '700452129', '889959941', '222418968', '481721303', '753268957', '947828194', '150105713', '651786830', '920006222', '756972774', '937686753', '560419063', '936881112', '032458640', '140859202', '066023454', '756767000', '836554235', '364475403', '234591437', '390979357', '829734763', '521908229', '310883188', '104734523', '635972018', '717760687', '506581828', '983890186', '036522894', '881102827', '113579849', '229395752', '636743032', '515635081', '302753381', '678119271', '236833613', '541887993', '496474711', '586789406', '914665208', '711544430', '544612871', '953894279', '870733357', '632246684', '595125675', '873720366', '258434299', '039325804', '143320690', '640032134', '687240168', '309851270', '900269082', '941939350', '075499609', '069876432', '546346187', '251940892', '046668488', '649719423', '414233531', '015894427', '666662343', '201750712', '419407059', '769071985', '391608810', '918997697', '802831612', '961361236', '265815316', '121609314', '609548717', '939720354', '353343882', '479669573', '541667478', '954905104', '384287209', '056368047', '654258425', '348578306', '964094037', '595618708', '045583320', '083295950', '912213595', '368643584', '604669618', '441649857', '720595987', '555786686', '322944081']} diff --git a/4/input.txt b/4/input.txt new file mode 100644 index 0000000..70d209c --- /dev/null +++ b/4/input.txt @@ -0,0 +1,1104 @@ +eyr:2033 +hgt:177cm pid:173cm +ecl:utc byr:2029 hcl:#efcc98 iyr:2023 + +pid:337605855 cid:249 byr:1952 hgt:155cm +ecl:grn iyr:2017 eyr:2026 hcl:#866857 + +cid:242 iyr:2011 pid:953198122 eyr:2029 ecl:blu hcl:#888785 + +hgt:173cm hcl:#341e13 +cid:341 +pid:112086592 +iyr:2012 byr:2011 ecl:amb +eyr:2030 + +pid:790332032 +iyr:2019 +eyr:2023 byr:1969 ecl:brn +hgt:163cm +hcl:#623a2f + +byr:1920 eyr:2023 cid:146 pid:890112986 hgt:171cm hcl:#b6652a iyr:2017 ecl:hzl + +hcl:#c0946f byr:1967 cid:199 ecl:gry +iyr:2012 pid:987409259 hgt:157cm eyr:2021 + +pid:316587303 iyr:2016 eyr:2023 ecl:blu byr:1959 hgt:186cm hcl:#733820 + +hcl:#fffffd hgt:152cm byr:1996 ecl:gry eyr:2024 + +ecl:brn hgt:185cm +pid:648491325 byr:1967 +hcl:#172f67 iyr:2014 +eyr:2028 + +pid:328737320 iyr:2017 hcl:#fffffd hgt:178 +ecl:#35fad5 +byr:1959 + +iyr:2010 byr:1943 eyr:2028 +hgt:178cm hcl:#888785 pid:572750267 + +cid:175 ecl:brn eyr:2026 iyr:2017 +hcl:#5d69b9 byr:1998 pid:289515215 +hgt:151cm + +hgt:182cm +ecl:blu eyr:2028 iyr:2011 hcl:#a97842 pid:758494126 + +iyr:2023 +hgt:174cm hcl:cafc2f +ecl:utc +cid:299 eyr:2026 pid:57963956 + +pid:853993893 ecl:blu hgt:188cm cid:294 hcl:#341e13 byr:1975 +eyr:2027 iyr:2015 + +ecl:amb hgt:70 iyr:2018 pid:241872490 +byr:1962 +eyr:2024 hcl:c5f0c3 + +pid:994754974 eyr:2029 iyr:2017 +cid:137 byr:1966 hcl:#733820 ecl:blu + +ecl:utc +pid:937481632 hgt:190 +eyr:2025 iyr:2027 byr:1949 cid:84 hcl:d3f4f5 + +cid:129 ecl:brn hgt:91 eyr:1932 +iyr:2020 pid:298540404 hcl:#888785 byr:1986 + +pid:416051368 eyr:2020 iyr:2011 +hgt:93 byr:2023 hcl:#efcc98 +ecl:amb + +byr:2010 hgt:181cm +iyr:2020 +eyr:2040 pid:785862801 ecl:#f84ccd + +hgt:152cm iyr:2013 pid:932020343 eyr:2023 ecl:hzl byr:1920 +hcl:#fffffd + +hgt:152cm +iyr:2020 byr:1993 hcl:#18171d pid:120354938 +eyr:2021 ecl:gry + +eyr:2025 byr:1996 +hcl:#623a2f +iyr:2018 ecl:oth cid:177 pid:904738945 hgt:164cm + +pid:45042993 +hgt:193 iyr:2018 byr:2026 eyr:2026 +hcl:#623a2f cid:175 ecl:brn + +byr:1956 ecl:hzl iyr:2020 pid:892810672 hgt:164cm eyr:2021 cid:186 hcl:#efcc98 + +cid:314 hgt:180cm +ecl:amb hcl:#602927 byr:2027 +iyr:1958 +eyr:2020 pid:#b2b732 + +cid:50 +hcl:#a97842 +hgt:155cm pid:667716485 ecl:gry iyr:2014 byr:1995 eyr:2029 + +eyr:2030 +pid:783631610 +hgt:74 +byr:2014 hcl:z iyr:2003 ecl:grt + +ecl:#d4d852 iyr:2029 hcl:z hgt:185in +eyr:2034 pid:#526166 + +iyr:1946 eyr:1957 byr:1941 pid:632690435 ecl:oth hcl:18a37c hgt:59cm + +iyr:2013 +eyr:2026 pid:002380966 cid:95 +hcl:#623a2f byr:1965 ecl:oth + +ecl:gry pid:479214778 hcl:#18171d +byr:1928 cid:98 eyr:2020 iyr:2019 hgt:163cm + +hcl:#bd0f54 cid:225 eyr:2024 hgt:153cm iyr:2020 +byr:1956 pid:048565668 ecl:hzl + +ecl:#5d8b3b hgt:156cm eyr:2029 pid:#3df0cc byr:1967 cid:118 hcl:e23f0f + +pid:437721309 +hcl:#cfa07d hgt:181cm iyr:2019 cid:224 eyr:2028 byr:1946 +ecl:gry + +byr:1962 +eyr:2023 +hgt:182cm +pid:733248003 ecl:blu +iyr:2014 hcl:#efcc98 + +byr:1966 hgt:158cm +eyr:2029 hcl:#602927 iyr:2013 +pid:963663665 + +pid:529595074 byr:1940 eyr:2020 hcl:#c0946f cid:113 iyr:2015 ecl:oth +hgt:191cm + +ecl:hzl +hcl:#a97842 +hgt:157cm eyr:2025 iyr:2015 byr:1978 pid:579525362 + +ecl:oth hcl:#18171d cid:76 iyr:2011 eyr:2021 +byr:1953 hgt:173cm pid:976483712 + +ecl:brn hcl:#fffffd cid:242 pid:588299934 +hgt:69in byr:1947 +iyr:2010 eyr:2030 + +hcl:#fffffd ecl:gry cid:93 +pid:731904973 byr:1939 eyr:2029 iyr:2016 + +pid:96716037 iyr:1938 eyr:2032 +hgt:192 ecl:gmt byr:2029 hcl:02edc5 + +byr:1958 +iyr:2011 eyr:2029 ecl:gry +pid:526931024 +hcl:z +hgt:59cm + +byr:1966 ecl:hzl +pid:378066668 hcl:#c0946f +iyr:2017 eyr:2026 cid:142 hgt:184cm + +pid:1134356373 +iyr:2019 +ecl:grn +hcl:#ceb3a1 byr:1950 +hgt:154in + +hgt:157cm ecl:zzz byr:1976 +pid:5047305958 +iyr:2013 hcl:#341e13 + +eyr:2024 +hcl:#a97842 hgt:179cm pid:543943316 cid:214 ecl:brn +byr:1999 +iyr:2017 + +byr:1983 eyr:2024 hgt:177cm +ecl:hzl +iyr:2013 pid:328883228 hcl:#ceb3a1 + +cid:226 pid:262286178 iyr:2010 ecl:grn byr:1962 eyr:2025 hcl:#efcc98 +hgt:60in + +iyr:2029 ecl:#559ffe hcl:z +cid:156 +byr:2003 +hgt:178 +pid:93994500 + +iyr:2026 hcl:#eda7f3 ecl:amb +byr:1921 eyr:2021 pid:153cm + +byr:1988 +ecl:amb hgt:178cm hcl:#2aea45 +pid:70722502 eyr:2027 iyr:2015 + +pid:555636800 eyr:2020 hgt:182cm iyr:2019 byr:1948 cid:325 +hcl:#733820 + +eyr:1973 +iyr:2024 hcl:z byr:2028 ecl:dne cid:169 +pid:43596015 hgt:170in + +hcl:#b6652a ecl:gry +cid:264 +hgt:178cm iyr:2027 pid:23042405 byr:1947 eyr:2024 + +byr:1989 +pid:266274644 ecl:blu eyr:2023 hcl:#733820 +hgt:192cm iyr:2018 cid:272 + +iyr:2013 hcl:z hgt:73cm byr:2014 pid:192cm ecl:#1627a7 + +pid:816749378 hgt:178cm +hcl:#733820 eyr:2029 +byr:1993 + +hcl:0cacc5 byr:1944 iyr:2028 eyr:2024 hgt:163in pid:74169361 +ecl:dne + +hcl:#ceb3a1 +ecl:grn +eyr:2027 pid:481186415 hgt:176cm cid:325 +byr:1986 + +eyr:2028 hgt:174cm ecl:brn +hcl:#888785 iyr:2015 pid:064161451 byr:1969 + +ecl:brn cid:323 hgt:167 +byr:1993 iyr:1953 +hcl:z eyr:2023 pid:161542750 + +ecl:#895336 eyr:2033 hgt:67cm cid:254 iyr:1967 hcl:z byr:1954 + +ecl:#9dbea3 iyr:2018 eyr:2035 +hgt:183 +pid:747501524 hcl:#fd8515 cid:110 +byr:1997 + +ecl:utc +iyr:2014 hgt:183in byr:2007 eyr:2026 hcl:#cfa07d +cid:334 + +ecl:gry hcl:#b6652a pid:250420128 +eyr:2024 byr:1939 hgt:170cm + +hcl:#18171d eyr:2030 byr:1925 pid:204206116 +iyr:2014 hgt:174cm ecl:hzl + +iyr:2020 hcl:#efcc98 +pid:393444692 +ecl:oth hgt:152cm byr:1957 eyr:2021 + +byr:1973 eyr:2024 iyr:2014 hcl:#602927 +pid:832320186 hgt:166cm ecl:grn + +pid:192524664 hgt:182cm +hcl:#18171d +ecl:oth eyr:2030 byr:1942 iyr:2013 + +hgt:129 byr:2016 hcl:6734a1 ecl:#915282 iyr:1949 cid:130 pid:677408864 eyr:2030 + +eyr:2028 ecl:gry hgt:171cm byr:1960 iyr:2020 pid:688526729 cid:262 hcl:#733820 + +ecl:grn iyr:2019 pid:775867641 hcl:#bf1e29 +byr:1920 hgt:163cm + +eyr:2029 hcl:#866857 +iyr:2024 +pid:170cm byr:1931 +hgt:177cm ecl:hzl cid:312 + +iyr:2019 ecl:#19fef5 pid:2080468234 +eyr:2008 hgt:72 +hcl:e14dfe +byr:1980 cid:272 + +byr:2025 +cid:163 +iyr:2020 pid:758946748 hgt:161cm +ecl:amb eyr:2023 hcl:026d4d + +iyr:2021 cid:109 +eyr:2032 byr:2010 +hcl:#fffffd pid:874586711 ecl:hzl hgt:142 + +eyr:2023 +hcl:z iyr:2019 byr:2013 ecl:#b42611 pid:164cm hgt:60cm + +byr:1935 cid:226 hcl:#602927 ecl:blu pid:700452129 eyr:2029 +iyr:2016 hgt:180cm + +hgt:179cm +pid:181cm +ecl:gry cid:309 +eyr:2029 +hcl:#6b5442 +byr:1987 +iyr:2010 + +ecl:gry byr:1986 hcl:#cce4b8 +pid:101583943 iyr:2010 hgt:65cm eyr:2021 + +cid:168 +pid:#8556c9 hcl:413944 eyr:2036 byr:2013 iyr:2012 +ecl:#66dc1c hgt:59cm + +eyr:1984 byr:2017 pid:#cbc84e hcl:z +cid:189 iyr:2021 ecl:blu +hgt:152cm + +byr:1993 hcl:#004c11 eyr:2026 +iyr:2010 +ecl:brn hgt:188cm +pid:889959941 + +hgt:172 byr:2008 eyr:2030 iyr:1959 +ecl:oth hcl:#a8ebbb + +iyr:2013 hcl:#8f97b1 hgt:182cm ecl:grn cid:89 +eyr:2029 +byr:1974 + +eyr:2025 hcl:#6b5442 pid:222418968 byr:1951 cid:105 ecl:hzl iyr:2011 hgt:181cm + +iyr:2017 +ecl:brn pid:481721303 hgt:190cm +eyr:2037 byr:1990 hcl:#ceb3a1 + +hcl:z +pid:85905429 +byr:1923 cid:260 +eyr:2031 ecl:gry +iyr:2022 hgt:180cm + +hcl:#fffffd hgt:76cm +ecl:grn +pid:39254112 byr:2010 iyr:1961 eyr:2028 + +ecl:brn iyr:2016 +eyr:2027 hcl:#efcc98 pid:753268957 hgt:60in byr:1943 + +ecl:oth +pid:087762106 hgt:190cm +byr:1974 cid:171 hcl:#c63f21 +eyr:2020 + +ecl:#8c1b6c +byr:1962 iyr:2007 pid:106672731 +hgt:172in cid:239 eyr:2026 hcl:#b6652a + +hgt:170cm eyr:2021 +cid:219 hcl:#a97842 pid:040224991 byr:1950 iyr:2018 + +byr:2029 +eyr:2036 cid:309 +iyr:2016 hgt:167cm hcl:#fffffd +ecl:#1ab23b + +iyr:2013 ecl:gry eyr:2020 pid:947828194 +hcl:#18171d hgt:163cm byr:1971 + +hcl:#fffffd iyr:2011 +pid:150105713 eyr:2029 +hgt:168cm byr:1925 ecl:hzl + +cid:253 +hcl:#341e13 +eyr:2025 hgt:184cm +pid:651786830 byr:1936 iyr:2013 +ecl:hzl + +pid:7328393469 +hgt:175cm ecl:gry iyr:2012 byr:1963 hcl:#623a2f eyr:2026 + +eyr:2029 pid:669044398 hgt:161cm hcl:#cfa07d ecl:gry iyr:2018 + +pid:920006222 byr:1941 ecl:grn eyr:2027 cid:87 hcl:#733820 +iyr:2018 hgt:171cm + +byr:1964 hgt:157cm hcl:#a97842 +pid:756972774 eyr:2024 iyr:2013 ecl:gry + +iyr:2010 cid:279 +hgt:189cm byr:1959 +ecl:brn eyr:2022 pid:937686753 hcl:#602927 + +iyr:2013 +eyr:2027 cid:223 pid:145547438 +hcl:#6e6f47 hgt:165cm ecl:amb + +byr:2009 +ecl:oth hcl:#623a2f +hgt:166cm eyr:2034 pid:120339592 +iyr:2012 + +eyr:2026 hcl:z byr:2018 pid:7809314464 iyr:2012 hgt:158cm ecl:hzl + +cid:291 hgt:168 +ecl:#7734de iyr:2021 hcl:5b4ef1 pid:3381158334 eyr:1956 byr:2003 + +iyr:2015 hcl:#cfa07d +byr:1971 eyr:2023 +ecl:oth pid:560419063 cid:155 hgt:170cm + +eyr:2021 hgt:189cm iyr:2014 hcl:#6b5442 ecl:brn cid:287 +byr:1951 pid:936881112 + +iyr:2013 +eyr:2020 ecl:hzl hgt:150cm cid:210 +pid:032458640 byr:1920 hcl:#6b5442 + +hgt:180cm hcl:#cfa07d ecl:grn eyr:2027 +pid:140859202 iyr:2014 cid:232 +byr:1932 + +pid:68300657 byr:1988 hgt:181cm +ecl:hzl iyr:1951 hcl:e18469 +eyr:2013 + +pid:157572693 hgt:185cm +hcl:#065fe8 ecl:gry eyr:2027 +iyr:2014 + +eyr:2029 hgt:164cm hcl:z ecl:grn cid:270 iyr:2019 byr:1993 pid:338068138 + +iyr:2016 cid:131 byr:1990 hcl:#7d3b0c ecl:grn pid:066023454 hgt:154cm +eyr:2025 + +iyr:2019 eyr:2024 hgt:174cm +pid:855792798 byr:1920 hcl:#cfa07d + +eyr:2020 +hgt:74in iyr:2013 ecl:amb +byr:1920 hcl:3f6214 +pid:957164804 + +pid:756767000 hcl:#220540 byr:1922 hgt:172cm +eyr:2023 cid:305 ecl:hzl iyr:2019 + +hgt:193in eyr:2025 pid:117240526 iyr:2017 hcl:#888785 byr:1928 ecl:blu + +byr:1942 +ecl:blu +cid:347 +hcl:#fffffd eyr:2023 iyr:2017 +hgt:154cm pid:836554235 + +eyr:2023 hcl:#efcc98 +pid:364475403 byr:1962 iyr:2015 +ecl:brn hgt:59in cid:289 + +byr:2021 hcl:ca4bcf hgt:88 iyr:2017 ecl:gmt pid:181cm eyr:2032 + +byr:1937 iyr:2014 hgt:154cm ecl:brn +hcl:#866857 +eyr:2022 pid:234591437 + +iyr:2002 cid:139 byr:1982 +hcl:#c0946f +pid:#62721b hgt:159in eyr:1966 ecl:brn + +eyr:2036 ecl:oth byr:2026 hgt:96 +pid:137651094 +hcl:z + +pid:373485985 +iyr:2030 ecl:gry byr:2011 hgt:65cm +hcl:#733820 + +pid:390979357 +ecl:gry hgt:164cm +hcl:#ceb3a1 eyr:2029 byr:1932 iyr:2015 + +ecl:hzl hgt:68in eyr:2023 pid:829734763 iyr:2016 hcl:#733820 byr:1997 + +hgt:150cm byr:1926 iyr:2019 pid:521908229 eyr:2029 ecl:brn hcl:#623a2f + +eyr:2023 byr:1974 +iyr:2018 cid:58 +ecl:grn +pid:310883188 hcl:#866857 +hgt:164cm + +byr:1963 iyr:2019 +hgt:162cm +eyr:2021 +hcl:#fffffd ecl:oth pid:104734523 + +hcl:#888785 cid:150 +eyr:2020 byr:1988 +iyr:2018 +ecl:oth +hgt:179cm pid:635972018 + +iyr:2014 hcl:#7d3b0c ecl:hzl pid:717760687 +byr:1929 eyr:2027 hgt:183cm + +iyr:2019 byr:2000 +eyr:2025 pid:506581828 hcl:#602927 ecl:oth +hgt:162cm + +pid:#fd3377 ecl:#618bce hcl:#ceb3a1 +iyr:1944 hgt:182cm cid:57 +byr:2022 eyr:1995 + +pid:4790730010 +hgt:192cm +cid:222 byr:2022 +hcl:4798e7 ecl:#5126d5 iyr:1954 eyr:2040 + +hcl:#b6652a +ecl:brn cid:181 pid:983890186 hgt:189cm byr:1998 +eyr:2022 iyr:2011 + +iyr:2018 eyr:2022 +cid:58 byr:1994 hgt:169cm ecl:hzl pid:036522894 +hcl:#2c9ee8 + +iyr:1979 +hcl:e09b9c byr:2016 +hgt:121 eyr:1962 pid:#fb14be cid:265 ecl:lzr + +eyr:2024 hgt:63in hcl:#efcc98 iyr:2018 +byr:1953 pid:881102827 ecl:amb + +ecl:oth hgt:177cm eyr:2028 iyr:2011 +hcl:#efcc98 pid:113579849 byr:1957 + +ecl:#fe1b74 iyr:1926 hgt:70cm +pid:70807766 hcl:556dca byr:2030 +eyr:2032 + +byr:1997 ecl:blu hgt:105 +pid:178655906 iyr:2025 +hcl:#6b5442 +eyr:2021 + +eyr:2030 ecl:grt hgt:161cm hcl:#ceb3a1 iyr:2016 +pid:318930966 cid:59 byr:1924 + +cid:200 hgt:67in +pid:229395752 byr:1936 ecl:oth iyr:2013 eyr:2020 hcl:#c0946f + +byr:1990 iyr:2018 +cid:99 hcl:#6b5442 hgt:155 pid:350832537 ecl:blu eyr:2021 + +eyr:2039 byr:2025 pid:247367429 hcl:z iyr:2013 ecl:amb +cid:118 + +eyr:2027 hcl:z ecl:utc +cid:274 hgt:175in iyr:2016 byr:1977 pid:478855994 + +eyr:2020 pid:636743032 +hcl:#64a8b8 iyr:2018 ecl:grn hgt:68in byr:1969 + +pid:515635081 iyr:2013 byr:1980 eyr:2024 hgt:173cm ecl:gry +hcl:#b6652a + +ecl:utc byr:2026 iyr:1999 eyr:1937 +hgt:66cm +hcl:z +pid:2247643960 + +iyr:2013 byr:1942 hgt:154cm eyr:2020 hcl:#18171d cid:323 pid:302753381 ecl:oth + +ecl:xry pid:346719476 +iyr:1999 +eyr:2020 hgt:154cm hcl:z +byr:2027 + +hgt:160cm eyr:2025 hcl:#fffffd byr:1998 +pid:678119271 ecl:blu iyr:2014 + +hgt:161cm iyr:2011 +ecl:blu +byr:1921 pid:236833613 eyr:2021 +hcl:#623a2f + +ecl:hzl hcl:#18171d hgt:151cm pid:541887993 +byr:1995 iyr:2019 eyr:2021 + +pid:496474711 byr:1966 ecl:gry eyr:2025 hgt:176cm +hcl:#b6652a iyr:2018 + +iyr:2010 hcl:#efcc98 pid:351846405 +eyr:2024 hgt:150cm +byr:1941 + +hgt:151cm ecl:gry hcl:#a97842 pid:586789406 +eyr:2022 iyr:2013 byr:1982 + +byr:1994 eyr:2028 ecl:gry +hcl:#888785 iyr:2010 +hgt:165cm cid:183 + +iyr:2015 +byr:1933 hcl:#733820 hgt:167cm +ecl:blu pid:914665208 eyr:2027 + +eyr:2031 hcl:6804ef +ecl:amb +byr:2024 +hgt:157cm iyr:1938 +pid:#0418fb + +byr:1936 +ecl:oth hgt:190cm cid:91 +pid:711544430 iyr:2020 +eyr:2025 hcl:#888785 + +pid:381452527 +eyr:2027 hcl:#efcc98 ecl:brn +byr:1956 hgt:63in + +ecl:oth +iyr:2014 hcl:#ceb3a1 +cid:254 +pid:544612871 byr:1985 eyr:2023 hgt:172cm + +hcl:#efcc98 +hgt:191cm byr:1948 +ecl:blu eyr:2028 +pid:953894279 iyr:2017 + +byr:1968 pid:875469219 +hcl:#efcc98 hgt:176cm cid:141 iyr:2017 + +eyr:2022 hcl:#733820 ecl:hzl +pid:870733357 iyr:2013 +byr:1949 hgt:150cm cid:252 + +ecl:gry +hcl:#602927 pid:632246684 byr:1986 +eyr:2030 hgt:152cm iyr:2013 + +eyr:2029 +iyr:2016 +byr:1969 pid:595125675 ecl:gry hcl:#cfa07d hgt:184cm + +byr:1947 hcl:z +cid:188 eyr:2038 pid:177cm iyr:2011 hgt:166cm ecl:#c1376b + +ecl:hzl hgt:170cm cid:307 eyr:2022 +byr:1971 +hcl:#b6652a pid:047040501 + +hgt:126 ecl:zzz +byr:2019 +pid:170207910 eyr:2035 hcl:23df48 +iyr:1932 + +hgt:152cm cid:270 eyr:2036 ecl:#408f6e iyr:1952 pid:5808880830 byr:2022 +hcl:0b1ba6 + +eyr:2021 hgt:179cm +byr:1938 pid:140937061 iyr:2030 hcl:#a97842 ecl:oth + +hgt:67cm eyr:2028 pid:816355657 +iyr:2019 byr:2008 hcl:z ecl:#5b4f31 + +cid:192 +iyr:2018 eyr:2020 byr:1983 pid:873720366 +ecl:grn hgt:187cm hcl:#6b5442 + +byr:1955 hgt:71in iyr:2018 pid:320019385 hcl:#6b5442 +cid:324 eyr:2027 + +pid:957860464 +hcl:#602927 +iyr:2011 +byr:2026 cid:261 eyr:2006 + +byr:1989 ecl:gry cid:143 pid:258434299 eyr:2027 hgt:192cm iyr:2017 hcl:#7d3b0c + +pid:#1742ae +ecl:#a61090 +iyr:2028 hcl:717dd0 hgt:139 cid:183 +eyr:2035 + +eyr:2028 pid:039325804 hgt:167cm hcl:#888785 ecl:oth cid:155 iyr:2013 byr:1923 + +byr:1956 iyr:2010 +hcl:#d683bf +eyr:2023 +hgt:70in +cid:197 pid:143320690 +ecl:hzl + +ecl:#4004e3 cid:278 +iyr:1950 pid:745107377 +byr:2007 eyr:2036 +hcl:8447eb hgt:74cm + +hcl:#ceb3a1 hgt:177cm iyr:2010 pid:640032134 +ecl:gry +eyr:2027 byr:1958 + +hgt:187cm +iyr:1921 ecl:#1c7d96 +eyr:1987 +byr:2028 pid:#28e5a1 cid:144 hcl:9fc25d + +iyr:2012 byr:1996 cid:289 hgt:177cm hcl:#fffffd pid:687240168 eyr:2030 ecl:gry + +pid:860410143 ecl:dne eyr:2031 cid:206 hgt:187in byr:1927 +hcl:8c2149 iyr:2012 + +iyr:2010 +byr:1963 cid:139 pid:160019759 +eyr:2030 hgt:172cm hcl:#602927 + +pid:309851270 +iyr:2014 +ecl:hzl byr:1939 +cid:71 +eyr:2030 +hcl:#b216fb +hgt:161cm + +ecl:gry +cid:138 +iyr:2014 +hgt:177cm byr:1942 +pid:900269082 eyr:2024 hcl:#fffffd + +iyr:2019 hgt:158cm +hcl:#18171d pid:941939350 eyr:2024 ecl:brn byr:1944 + +byr:2023 ecl:brn +cid:101 eyr:2016 pid:190078757 hgt:188in + +cid:188 +ecl:blu pid:075499609 +byr:1970 +hcl:#fffffd hgt:164cm eyr:2028 iyr:2015 + +byr:2011 hcl:z +ecl:gry +pid:408316491 hgt:64cm iyr:2017 eyr:1968 + +ecl:oth hcl:#6b5442 +pid:623099801 +hgt:163cm +byr:1928 + +pid:165230004 +ecl:grn byr:1935 hcl:#c0946f iyr:2012 +hgt:185cm + +hgt:162cm pid:069876432 byr:1960 cid:326 iyr:2013 +hcl:#cfa07d eyr:2021 +ecl:grn + +ecl:#f3d8ba hgt:182cm eyr:2020 byr:2007 +hcl:z iyr:2014 pid:6141297559 + +pid:867747198 +hcl:#efcc98 +eyr:2030 byr:1989 +hgt:181cm + +byr:2000 eyr:2021 hgt:166cm +hcl:#fffffd iyr:2019 pid:546346187 cid:111 ecl:grn + +eyr:2034 hcl:#623a2f +byr:1958 +pid:60553207 ecl:#76b538 hgt:59 cid:75 + +hcl:#623a2f +eyr:2023 pid:251940892 byr:1998 +iyr:2012 +hgt:181cm ecl:gry + +iyr:2020 cid:83 +byr:1938 eyr:2024 ecl:amb pid:046668488 hgt:181cm hcl:#341e13 + +ecl:grn +eyr:2036 iyr:1951 byr:2029 hcl:z hgt:177in +pid:135470038 + +iyr:2015 eyr:2023 +byr:1961 +cid:81 hcl:#a97842 pid:710065884 +hgt:152cm +ecl:#1f9801 + +byr:2014 +pid:25253929 hcl:z +ecl:#f3fb41 eyr:2025 cid:255 iyr:1998 +hgt:155cm + +ecl:gry pid:919070381 hcl:#efcc98 iyr:2019 eyr:2021 byr:1995 + +byr:1942 +eyr:2029 +hgt:191cm hcl:#18171d +pid:649719423 iyr:2018 ecl:brn + +ecl:gry +byr:1963 iyr:2016 hgt:188cm pid:024539026 eyr:2022 + +hgt:176cm +ecl:hzl eyr:1923 pid:176188310 hcl:#b6652a +byr:1939 +iyr:2011 + +iyr:2011 hcl:#888785 eyr:2030 ecl:gry byr:1920 + +pid:#0468a7 hcl:851fe0 eyr:2036 hgt:60cm +byr:2030 +iyr:1995 +ecl:utc + +hcl:#866857 iyr:2016 ecl:oth +pid:414233531 eyr:2022 byr:1957 +hgt:169cm cid:229 + +cid:185 ecl:#5f6f53 +pid:#20f317 byr:2024 eyr:1988 hcl:z iyr:2023 hgt:158in + +pid:015894427 eyr:2027 hgt:177cm ecl:blu +cid:222 +hcl:#c0946f iyr:2010 byr:1993 + +cid:101 hgt:162cm hcl:#c0946f pid:666662343 ecl:grn +byr:1974 +iyr:2019 +eyr:2029 + +pid:782547454 hcl:z ecl:#b0805f +iyr:2013 eyr:2023 +hgt:159cm +byr:1935 +cid:230 + +pid:298008321 hcl:231e1b hgt:166cm ecl:oth +iyr:2026 eyr:2020 + +pid:230201309 iyr:2010 eyr:2025 hcl:#6b5442 +cid:238 +ecl:grn +hgt:174cm + +cid:287 eyr:2026 hcl:#733820 +pid:201750712 iyr:2010 +ecl:oth byr:1985 +hgt:185cm + +hcl:#a97842 hgt:70in eyr:2029 +pid:419407059 ecl:grn byr:1987 +iyr:2016 + +hgt:191cm byr:1951 +eyr:2027 hcl:#8a9477 iyr:2015 ecl:amb pid:769071985 + +hcl:#6b5442 +iyr:2012 ecl:blu +cid:336 pid:391608810 byr:1995 +eyr:2022 +hgt:161cm + +iyr:2020 +byr:1938 +pid:927067439 eyr:2027 hgt:173cm +hcl:306963 ecl:xry + +byr:1991 +iyr:2021 hgt:175cm hcl:68b4f3 ecl:utc +pid:037777327 eyr:2026 + +hgt:64in +eyr:2025 hcl:#da6977 cid:137 byr:1990 iyr:2013 pid:918997697 ecl:amb + +iyr:2011 ecl:gry hgt:173cm eyr:2023 pid:802831612 +hcl:#733820 byr:1976 + +byr:1938 eyr:2021 pid:575395401 cid:234 +hcl:#866857 ecl:hzl hgt:176cm + +hcl:#ceb3a1 ecl:hzl +eyr:2035 +iyr:2014 +byr:2019 + +ecl:hzl pid:961361236 +hgt:193cm hcl:#efcc98 +iyr:2011 eyr:2030 byr:1967 + +eyr:1936 ecl:blu +hgt:153cm hcl:98d3f0 pid:7296832671 +byr:1931 iyr:1962 + +iyr:2016 eyr:2024 hcl:#6b5442 ecl:grn +pid:265815316 byr:1966 +hgt:165cm + +pid:203025149 +eyr:2029 +iyr:2010 cid:124 byr:1999 ecl:blu + +iyr:2011 eyr:2028 pid:#7e0612 byr:1924 hcl:#7d3b0c ecl:oth +hgt:82 + +ecl:hzl +byr:1941 +hcl:#b6652a eyr:2020 pid:409573276 +iyr:1976 hgt:166cm + +ecl:grn eyr:2030 +hgt:163cm iyr:2011 pid:121609314 byr:1961 hcl:#426e1a + +pid:#49ea2c +eyr:2029 hcl:#6b5442 iyr:1931 +hgt:62cm ecl:brn +byr:2012 + +eyr:2038 hcl:8d1f49 ecl:#6d4ea1 pid:0853660207 byr:2020 hgt:71cm + +ecl:hzl hgt:170cm +iyr:2011 +byr:1966 eyr:2028 +pid:609548717 hcl:#c0946f + +byr:1921 hcl:#c0946f ecl:blu iyr:2019 eyr:2024 pid:643387204 + +cid:324 hgt:162cm ecl:amb +hcl:#18171d byr:1961 +eyr:2027 iyr:2010 pid:939720354 + +byr:1933 hcl:#fffffd +pid:353343882 +eyr:2025 hgt:171cm ecl:amb cid:329 +iyr:2017 + +byr:2004 iyr:2022 +pid:157cm eyr:2035 +ecl:#eafe47 hgt:129 +hcl:z + +cid:55 iyr:2025 hgt:177in pid:493884348 +hcl:#888785 byr:1925 ecl:#b11d27 eyr:2036 + +ecl:hzl +hgt:171cm +iyr:2012 pid:479669573 cid:335 hcl:#fffffd byr:1953 +eyr:2029 + +byr:1930 hcl:5bdf31 +pid:#b21f8a hgt:164cm +cid:134 +iyr:2023 ecl:lzr + +iyr:2018 eyr:2026 ecl:grn +pid:541667478 hcl:#6b5442 byr:1992 hgt:155cm + +hcl:2a1c4f iyr:2011 +hgt:192cm eyr:2028 byr:2029 cid:270 ecl:dne pid:7995627426 + +byr:1929 ecl:oth +pid:954905104 iyr:2016 +hgt:68in hcl:#7d3b0c eyr:2020 + +cid:167 byr:2000 hgt:186cm iyr:2013 hcl:#ff4019 pid:384287209 +eyr:2024 ecl:amb + +eyr:2022 +iyr:2018 byr:1972 cid:290 +hgt:170cm ecl:grn pid:127269636 + +byr:1997 +ecl:amb hgt:150cm +pid:056368047 hcl:#fffffd eyr:2020 iyr:2020 + +ecl:gry hgt:167in byr:2020 cid:131 pid:651833067 hcl:#623a2f iyr:2027 eyr:2038 + +hcl:#56c370 +iyr:2014 +byr:1941 +pid:654258425 hgt:184cm +eyr:2025 ecl:hzl + +pid:571765355 +byr:2021 +hcl:z +eyr:1921 cid:106 iyr:1978 +ecl:#1162c5 +hgt:184in + +iyr:2015 hcl:#18171d cid:237 pid:348578306 ecl:blu +byr:1988 eyr:2025 hgt:155cm + +byr:1963 hcl:#733820 cid:145 eyr:2030 ecl:oth pid:964094037 hgt:164cm iyr:2018 + +pid:595618708 ecl:amb +hcl:#866857 +hgt:186cm eyr:2024 byr:1924 iyr:2014 + +ecl:hzl pid:484466493 +hgt:176cm iyr:2016 byr:1983 hcl:#ceb3a1 + +ecl:gry hcl:#6b5442 +hgt:185cm +eyr:2029 +pid:045583320 byr:1974 iyr:2020 + +ecl:brn hcl:352cf1 cid:149 +hgt:184cm byr:2011 +eyr:2031 +pid:21942403 iyr:2028 + +ecl:brn eyr:2029 pid:083295950 byr:1995 hgt:176cm hcl:#c0946f +cid:68 iyr:2014 + +hgt:170cm +byr:1945 hcl:#623a2f +iyr:2013 pid:912213595 ecl:gry eyr:2020 + +ecl:gry +hcl:#18171d iyr:2015 hgt:185cm eyr:2023 +byr:1950 + +byr:1997 hgt:68in pid:368643584 hcl:#623a2f ecl:hzl eyr:2029 iyr:2012 +cid:239 + +iyr:2003 eyr:2020 cid:99 byr:2027 hcl:2c10a6 hgt:74cm +ecl:brn + +pid:151cm hcl:46a5fd eyr:2031 +iyr:2014 +byr:2005 ecl:xry hgt:176cm + +byr:2011 ecl:oth pid:821123244 +iyr:2022 +hcl:839b47 eyr:2039 hgt:150in + +pid:604669618 hgt:152cm iyr:2013 +byr:1954 +eyr:2021 ecl:amb hcl:#623a2f + +hgt:182cm +byr:1993 +cid:177 hcl:#b6652a ecl:gry iyr:2011 pid:441649857 eyr:2027 + +cid:296 hgt:98 +ecl:grt iyr:2028 hcl:#a97842 byr:2022 +pid:69736889 eyr:1935 + +iyr:2016 hcl:#cfa07d +byr:1941 +hgt:182cm +pid:720595987 ecl:gry +eyr:2022 + +iyr:2018 hgt:164cm hcl:#650d28 byr:1973 cid:108 pid:#b0df80 ecl:blu eyr:2020 + +hcl:z +pid:315901778 +iyr:2013 +byr:1999 ecl:#49f691 eyr:2026 hgt:179cm + +byr:1925 +pid:555786686 hgt:189cm hcl:#cfa07d iyr:2012 ecl:gry eyr:2028 + +iyr:2016 +hgt:168cm +eyr:2027 cid:60 ecl:gry hcl:#cfa07d +pid:322944081 byr:1993 + +pid:163cm +hgt:189cm iyr:1997 hcl:03db25 eyr:1970 +byr:2016 ecl:#6c59eb + +pid:766719295 iyr:2017 +hgt:168cm +hcl:z ecl:grt +eyr:2022 byr:2010 + +hgt:173cm pid:247156751 cid:109 eyr:2022 iyr:2012 ecl:gry byr:1989 + +cid:288 +hcl:77241f +hgt:157cm byr:1956 pid:587115461 iyr:2016 ecl:lzr +eyr:2034 + +hcl:5307c9 ecl:#cc4aff +pid:#d80d30 +cid:224 hgt:72cm byr:2025 eyr:2039 iyr:2025 + +eyr:2027 byr:2015 +hgt:184 hcl:98fb9d pid:58151347 +iyr:2029 + +hgt:183cm cid:187 byr:2019 ecl:xry iyr:2013 pid:164cm hcl:#18171d eyr:2021 \ No newline at end of file diff --git a/4/part1.py b/4/part1.py new file mode 100644 index 0000000..c98646f --- /dev/null +++ b/4/part1.py @@ -0,0 +1,20 @@ +import re + +documents = [] +with open("input.txt", "r") as f: + documents = f.read() + +requiredFields = ["byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"] + +numOfValidDocuments = 0 +for document in documents.split("\n\n"): + fields = re.findall(r"(\w+):[^\s]+", document) + hasAllRequiredFields = True + for requiredField in requiredFields: + if requiredField not in fields: + hasAllRequiredFields = False + break + if hasAllRequiredFields: + numOfValidDocuments += 1 + +print(numOfValidDocuments) diff --git a/4/part2.py b/4/part2.py new file mode 100644 index 0000000..482d520 --- /dev/null +++ b/4/part2.py @@ -0,0 +1,33 @@ +import re + +documents = [] +with open("input.txt", "r") as f: + documents = f.read() + +requiredFields = { + "byr": re.compile(r"^(19[2-9][0-9]|200[0-2])$"), + "iyr": re.compile(r"^(20[1-2][0-9])$"), + "eyr": re.compile(r"^(202[0-9]|2030)$"), + "hgt": re.compile(r"^(1([5-8][0-9]|9[0-3])cm)|((59|6[0-9]|7[0-6])in)$"), + "hcl": re.compile(r"^#[0-9a-f]{6}$"), + "ecl": re.compile(r"^(amb|blu|brn|gry|grn|hzl|oth)$"), + "pid": re.compile(r"^[0-9]{9}$") +} + +numOfValidDocuments = 0 +for document in documents.split("\n\n"): + fields = re.findall(r"(\w+):([^\s]+)", document) + fieldsTable = {} + for field in fields: + fieldsTable[field[0]] = field[1] + hasAllRequiredFields = True + for fieldName, fieldRegex in requiredFields.items(): + value = fieldsTable.get(fieldName) + if value == None or not fieldRegex.match(value): + hasAllRequiredFields = False + break + + if hasAllRequiredFields: + numOfValidDocuments += 1 + +print(numOfValidDocuments) \ No newline at end of file diff --git a/5/input.txt b/5/input.txt new file mode 100644 index 0000000..ecb0192 --- /dev/null +++ b/5/input.txt @@ -0,0 +1,789 @@ +BFFFBBFRLR +FBFFFBBLRL +BFFFFFBRRR +FBBBFFFLRR +FFBFBFBRLL +FBBFFBBLRR +FBBFFFFRLL +BFFFBBFRLL +BBFBFBFRLL +BFFFFFBRLL +FFBFFFBRRR +BBFFBFFRLR +BBFFBBFLLL +FBFBFBFLLL +BBFFFFFLLR +FFBBBFFRLL +FFBFFBFRRR +BFFFBBFLRL +BFBBBBFLRR +BFBFFBFLLL +FFBFFBBLRL +FFBFBFFRLR +FFBFBBBLLR +FFFBBFBLLR +FFFBBBFLRL +FBFBBBFLLL +FBBFFFBLLR +BFFFBBBRLL +FFBBFBBRRL +FBFFBBBLLR +FBFBBFFRRL +FBBBBFFLLL +FFBFBFFLLR +BFFFFBFLLR +FBBBFBFLRR +FBFFFFFRRR +FFBFBBFRRL +BFFFBBBLLR +FBBFFBFRLL +BFFFFBBRLL +FBBBFFFRRL +BBFBFFFLLR +FBBFBBFRLR +FFFBFFBRRR +BFBBFBBLRL +FBBBFFBLRR +BBFFBBFLRR +FFBBFBBLLL +BFFBBBBRRL +FBBFBFBRLL +BFFFFFFRRL +BBFBFBFLLL +FBFFBFFLLR +FBFBFBFRLR +BFBFBBBRLR +BBFFBBFLLR +BFFBFBFRRR +BFBBFBFLLL +FBFBBFBRLR +FBBFBFBLRL +FBFFBFFLRR +BFFFFFFRRR +BFFFFBFRLL +FBFBFFFLLR +BFFFFBFLRL +BBFFFFFRLL +FBFBFFFLRR +BFFBFBBLRL +BFBFBBFLLR +BFBFBBBLRL +BFFBFFFRRL +BFFFFFFLLL +FFBBBBBLLR +FBBBFFFLLL +BFFFBBFRRL +FFFBFBBRLL +FFFBFFBRRL +BFBFBFBRRR +BBFFFBFLLR +BFFFBFFLLL +FBFBBFBLRR +FFBBBBFLRR +BFFBBBFLRR +BBFFBBBLLR +FFFBFBBRRL +BBFFFBBLRR +FFBFFFBRRL +FFBFFFBRLR +BFBFBFFRLL +FBFFFBFLRL +BBFFFFFRLR +BFBBFFBRLR +FBFBFBBRRR +BFBFFFFLLR +FFBFBFBLRR +FFFBBBBRRL +FBFFBBFRRR +BFFBBBBLRR +BFFBFFFLLR +BFBFFBFLLR +FBBBBBBRLR +BFBFFFFLRL +BBFFBFFLLL +FBBBBBBLLR +FFBBBBBRRL +BFBFFFFLLL +FBFBBBFRLL +BFFBBBFLRL +FBBFBBBLLL +FBFBBFBRRR +FFBBFFFRLL +BBFFBBBLRL +FBBFFFBRLL +BBFBFFBRLR +FBBBFFBLLR +BFBFFFBRRL +FBFFBBBRLL +FBFBBBBRLL +BFFFBFFRLR +FFBBFBFRLR +BFBFBFFLRR +FFFBBFFLRR +BFBFBBBLLL +BFBFBFBRLR +BFFFFBFLRR +FFBBBFBRRR +BFFFFBBLLR +BBFFBFBLRR +BFBFFFBRRR +BFFFFBBRLR +FBBBBBFRRR +FBBFBBFLLR +FFBBFBBRLL +BFBBFFBLRR +FBBBFFFLLR +BFFFBFFLRL +FBBBBFBLLR +BFBBFBFLRR +BFBBBFFLLL +BFFBFBFRLL +BFBBFBFRRL +BFFBFFBLRR +FFBFFFBLLL +FFFBFBFLRL +FBBBFBBLRR +BFFFBBBLRR +FBFFFFFRLR +BBFFBBBLRR +BFBFFBBLRR +FBFFBBBRRR +FBFFBFFLLL +BFBBBBFRLL +FBBBBBBRRL +BFFBBBBLRL +FFBFBBFLRR +FFBBBFBLLL +FBBFFFFRLR +BBFBFBFRRR +FBFBFFBLRL +FFBBFBBLRL +FBFBBFFLLL +BFFFBFBLRR +FBFBFFBLLR +FBBBBBFLRL +FFBFBFFRLL +BBFFBBFRRR +FFFBBFFLLR +BFBBBFBLRR +FFBBFFBLRL +BFFBBBFRRL +BFBBBBFRRL +BBFFBFFRRL +FFBFFBBRRR +BFFBFBFLRR +FBFBFFBRRR +FBBFBBFLRL +FBFFFFBLRL +FBFFFBBLLL +FFBFFBFRLR +FBFFFBBRRL +BFBBBFBLLL +BFBFBFFLRL +BFBFFBFRRR +BBFFBBBRLL +BBFFFBFLRL +BBFFBFFRLL +FBBFFBFLLL +FBBBBFFLLR +FFBFFFFLLR +FFBBBBFLLR +BFBBBBBRRR +FFBBFBFRRR +FFBFFBFLRL +FBFBBFFRRR +BFBBBFFRRR +FBBFBBFRLL +FBBFBBBRLR +BFFFFFBRLR +BFFBFBBRLL +FBFFFBBLRR +FFBFFFFRLL +FBBBBFBRRL +FBBBBFBRLR +BFBBBBFLLL +FBBBBBFRLL +FBFBFBFLRL +FFBFBBFLLL +FBBBBFFRRL +BFFBFBFLLL +FFFBBBFLLL +FBFBBBBLLL +BFBBBBFRLR +BBFBFFFRRR +FBBBBBBLRL +BFFFBFBLRL +FFBBFBFLLR +BFBBBFBLRL +FBBBBBBRLL +FFBBFFFRRR +BFFFFBBRRR +FBFFBBBLLL +BBFBFFFLRL +FFBFFFBLRR +FFBBBFBLLR +BFFBBFFRRR +FBBFBFFLRL +FFBBBBBLRR +FBBBFBBLLL +BBFBFBFRLR +FBFBFBBLRR +FBBBFBBRLR +FBFBFBBLLR +FFFBBFBRRR +FBBBFFBRLL +FFBBBBFLRL +BBFFBFFRRR +FBFBFBFLLR +FBBBFBFRLR +BFFBBBFRRR +FFFBFBBLLR +BBFBFBBLRR +FBFFBBFRLR +FFBBBFFLLR +FFBBFBFLRL +BFFBFFFLLL +BFBFFBFRRL +FBFBBBBRRL +BFBBBBFLLR +FBBFFBBRLL +BFFBBFBRLR +BFBFFFBLRR +FFBBFFBLRR +FBBFFFFRRL +BFBBFBBLLR +FBFFFBFRLR +BFBBBBFLRL +BFBBBBBRLL +FFBBBBFRLR +BBFBFFBLLR +FBBFFFBLRR +FBFFFFFLLL +FBBFFBFRLR +FBFFBBBRRL +FFBFBFBRRL +FFBBBBFLLL +FFBFBBBRLR +FBBFBFBRLR +BBFFFBBLLR +FBBFFBBLLL +FFBBFFFLLL +FBBBBBFLRR +FFBBFFFLRR +BFFBFFBLLR +FBFFBFBRRR +FFFBFFBRLR +FBFFFFFLRR +BFFFBFBRLL +FBFBBFBRRL +FFBFBBBLRL +BFFFBBFLLR +FBBFFBBRRR +BFBBFBFRLL +FBFFFFBRLL +BBFFFFBLRR +BFFBFBFLLR +FFBFBBBRRL +FBBFFFBRLR +FFBBBBFRRR +BFBBFFBLLR +BFBFFFBLLL +BFFFBBBRRR +FBFBBBFRRR +BFBFFBBRRL +FBFBBFBLLR +BFFFBBBRLR +BFFFFBFLLL +BFFBFFBRLR +FBBFBFBRRR +FFBBFBBRRR +FBFFFBBLLR +BFBBFBBRLR +FFBBBBBRLR +FBFFBBFRRL +BFFBBBFLLR +FBBBFFBLLL +BFBFBFFRRR +BFBFBBFRRR +FBBFFBBLLR +BFFFFFFLLR +FBBBBFFRLR +FBBBBBBLLL +BFBBBBFRRR +BFBBBFFRLR +FFBFFBBRLL +FFBBFBFLLL +BFBFFFBLRL +FFFBBBFLRR +FBBFBFFRRL +FFFBFBFLLL +BFFBBFBLLL +BBFFFFBLLL +BFBBBBBRRL +FBBFBFBLRR +FBFFBFBRLL +BBFBFBBLLL +FFBBBFBLRR +FBBBFFFRRR +BFFBBBBLLL +FBFBFBFRRR +BFFFFFBLLL +BFBFBFBLLR +BBFFFFBRRL +FBBBFBFLLL +FFBFFFFLLL +FBFBFFBLLL +FBBBBBBRRR +BFBFFBFLRR +FFBFBFBLLL +FFBFFBFRRL +BFBFBBFRRL +FFBBFBBLLR +FBBBBBFLLR +BFFBFFFRLL +BBFFFBBLLL +FBFFFFFLLR +FFBBBFFRRR +FBFFFBFRRR +FFFBBBBLRL +FBFBFBBRRL +FBBFBFBLLL +BFBFFFFLRR +BBFFBFBLRL +FFFBFBFRLR +BFFBBFFLRL +FFFBBFFRRL +BFBFBFBRRL +FFBBBFFLLL +BBFFFBFLRR +FFFBBBBLLR +FFBBBFFRLR +FFBFBBFLRL +FFBBBFBLRL +BFBFFFFRRL +FBFBBFFLRR +FBBBBBBLRR +FBFBBBBRRR +FFBFBFFLRR +FBBFBFFRLR +BFFBBBBRRR +BFFFBFBLLL +BFFBBFFLLL +BFFFFBBLRL +FFBBBBBLLL +FBBBBFFRRR +FFBBFFBRRL +BBFBBFFLLL +FFFBBFBRRL +BFBFFFFRLR +FBFFBFBLLL +FFFBBFFLRL +BBFFBFFLLR +FBBFBFFLRR +FBFFBBBRLR +FBFFFFFRRL +FFFBBFBRLL +BFFBFFFLRL +BFFBBFBLRR +FFBFBFBLRL +FBBFBFBLLR +BBFFFFBLLR +BFBFBFBLRL +FFBBBFBRRL +BBFFBFBLLR +BBFFFFBRRR +FFBFBFBRLR +BBFBFFFRLR +FBBBFBFRLL +FFBBFBFRRL +BBFBFBBLLR +FFBBFFFLRL +FFBFFBBLLL +FBFBBFFLLR +FFBFFFFLRR +BFBBFFBRLL +BFBBFBBLLL +BBFBFFFRRL +FBBBFBBRRL +BBFBFBBRLR +BBFBFFBRRL +FBFBBBFLRL +BFBFBFFRRL +FFBBBBFRRL +BFFFBBFRRR +FFFBBBBRLL +FBBBFFBRLR +FBBFBBBRLL +BFBFFBBLRL +FFFBBBFLLR +BFBBFBBRRR +FFFBFBBLLL +FFFBBBBRLR +FBFFBFBLLR +FBFBFBBRLR +FFBBFFBRLR +BBFFFFFLLL +FFFBFFBRLL +FFBBBBBRLL +FBBFBFFLLR +BBFFFBBLRL +FBBBFBBLLR +BFFFFFFLRL +FFFBFBFRRR +BFFFFFBLRL +BFBBFBFLRL +BFBBFFBRRL +FBFBBFFRLL +FFBFBFFRRL +BFFFBBFLLL +BBFFBFBRLR +BFFBFBBLLR +FBFBBBBLRL +FBFFBFFRRR +FBFFFBBRRR +FBBFFBBLRL +FBFBBBBRLR +BFBBFFFRRR +BFFBBFBRRL +FBBFBFFRLL +FFBBFFFRLR +FFFBFBFLRR +FFBBBBFRLL +FBBFBBBLRL +BBFFBBFRLR +BBFFFBFLLL +BFFFFBFRRL +BFFBBFBLLR +FFBFFFBLLR +FFFBFBBLRR +BFBFFBFLRL +BFFBBFBRLL +FBFFBBFRLL +FFBBFBFLRR +BBFFBFBRLL +FBBBFFBRRL +FBFBBBFLLR +FFBBFFFLLR +FBFFBBFLRR +BFBFBFBLLL +BBFBFFBLLL +BFFFBBFLRR +BFBBBFBRLL +BFBFBBFRLL +BBFBFFFLLL +FBFFFFBLRR +BFFFBFBLLR +FFBBFFBLLL +FBBBFFFLRL +BFFBFFBRRL +FBBFBFBRRL +FBBBBBFRLR +FBBBBFFLRL +FBBBFBFRRL +BFFFBBBRRL +FBBFBFFRRR +BFFFFBFRLR +BBFBFFBLRR +BFBBBBBRLR +FBFFFBBRLR +FBFFBBFLRL +FBFFFFBLLR +BFFBFBFRRL +FFBFBBBLLL +FBBFFBFLRR +BFBFBFBLRR +FFFBFBFRRL +FFBBBBBLRL +BFFBFFFRRR +FFBFBFBLLR +FFBFFBBRRL +BFFBFFBRLL +BBFFBFBLLL +BFBBFBBRRL +FFBFFBBRLR +BFFFBFFRRR +BFBBFFBLLL +FBFFFBFLLR +BFBFFFBLLR +FFBBBFFLRL +FFBFBBFRRR +BFBBFFFRLR +BFFFBFFLLR +FBBFBBFRRL +FBBFFBFLRL +BFBBFBFLLR +FFBBBFBRLR +FBFBBFFLRL +FBFBFBFRRL +FBBBFBFLRL +FBFBBFFRLR +FFBFFBFLRR +BFFBFBBRRL +BFFBBBBRLL +BFBFBBBRRL +BFFFFBBRRL +BFFFFBBLLL +FBFFFBFLRR +BFFFBBBLRL +BBFFBBFLRL +FFBBFBFRLL +FBBBFFFRLR +FBFFBFBRRL +BFBBBBBLLL +BBFFBFBRRR +FBBBFFBLRL +BFBBFFFLLL +BBFFFFFRRR +FFFBFFBLRR +FBBBFBFLLR +BBFFFBBRRR +FBFFFBFLLL +BBFFFBFRLR +BFFBFBFRLR +BFBBBFFRRL +BFBFBBBRLL +BFFBBFBLRL +FFBFBBFLLR +FBBFFFBLLL +BBFBFBFLRL +FFFBFBBRRR +BBFFFFBRLL +BFFBFFBLLL +BFFFBBBLLL +FFFBBFBLRR +FBBFBBBLRR +FBFFFBBRLL +FFBFFFBLRL +BBFFFBFRLL +BFBFBFFRLR +FBFBFBBRLL +FBBBFFBRRR +FBFBFFFRLR +BFBBBFBLLR +FBFFFBFRRL +BFBBFFFLRL +BFFBBFBRRR +BBFBFFFRLL +BFBBBFFLLR +FBFFBBBLRR +BFFBBBFRLL +BFBBFFFRRL +FFFBBBBLRR +BBFFBBBRLR +FBFBBBBLLR +BFFFBFBRRR +FBFBFFFLLL +FFFBBBFRRR +FFBFFBFLLL +BBFFBBBRRR +FFBFBBBRLL +FBBBBFFLRR +FBBFFFBRRL +FBBBFBBRRR +FBFBBFBLRL +BBFFFBBRLL +FBFBFFBLRR +FFBFFFFRRL +FBBBBFBLLL +FFFBBFFRRR +BFBFBBFLRL +BFBFBBBRRR +FBFFBBFLLR +FBFBFBBLLL +BFBFBBFRLR +FFBBBFBRLL +BBFBFBFLLR +BFFFBFFRRL +FFFBBBFRLL +FBFFBFFLRL +BFFFFFBLLR +FFFBBFBRLR +BBFBFFBLRL +BFFBBFFRLL +BFBBFFFLRR +BFBBBBBLLR +BFFBBFFLLR +FFBFBFBRRR +FFBBFFBLLR +FBBBFBBRLL +BFBBFFBLRL +FBBFBBBRRL +FBBBBFBLRL +BFBBBFFLRL +BFFFFFBLRR +FBFBFFFRLL +FBFBFFBRRL +FBFFBFFRLL +BFBFBFBRLL +BFFBFBFLRL +BFBBFFBRRR +BBFFFFFLRL +FBBBFBBLRL +BFBFFBBRLL +BBFFFBBRLR +BFBFFBFRLL +FFBFFFBRLL +BFFBBBBLLR +FBFFFFFLRL +BFBBBFFRLL +BFFBFBBLLL +BBFFBBBLLL +BFFBBFFLRR +BFFBFFFRLR +FBFBFFFRRL +FBBFFBFRRL +FBBFBBBRRR +BFFFFFBRRL +BFBBFBFRRR +BBFFBFFLRL +FBFBBFBRLL +FBFBFBFLRR +BBFFBBFRLL +FFBBBFFRRL +BFFBBFFRRL +BFFBFBBRRR +BBFFFFFRRL +FFBBFBBRLR +BBFBFBBRRR +BFBFFFFRLL +BFFBBFFRLR +FFFBBFBLRL +BBFFFFFLRR +BFBFBBFLLL +BFBBBBBLRR +FFFBFBFLLR +FBFFFFBLLL +BFFBBBFLLL +BFFBBBBRLR +BFFFFFFLRR +FFFBFBBLRL +BFFFFBFRRR +FBFFBBFLLL +FBFFFBFRLL +BBFBFFBRLL +BBFFFFBLRL +BBFFBFFLRR +FBBBBFBRRR +FBBFFFFLLL +FFBBBBBRRR +BFBFFBBLLR +FBFFFFFRLL +FFBFBFFRRR +FFBFFBFLLR +BFBFBBFLRR +FBFBBBBLRR +FBBFFFFLRR +FFBFBBBLRR +FBFFFFBRLR +FBFBBBFLRR +BFBFFFFRRR +FBBFFFFLLR +BBFBFBBLRL +FFBBFFBRRR +FFBFFBBLLR +BFBFBFFLLR +FBBFBBFLRR +FBBFFFBLRL +BFFBFBBLRR +FFBBFFFRRL +FBFFBFBRLR +FBFFBFBLRL +FFBFBBFRLR +FFBFFFFLRL +BBFFFFBRLR +FBFFBFBLRR +BFFBFFBLRL +BFBFFBBRRR +FBFFFFBRRL +FBFBFBBLRL +FFFBBBBRRR +BBFFBBFRRL +FBBFFBBRLR +BFFFFFFRLR +FBBFBBFRRR +FBFBBBFRLR +BFBFFFBRLR +FBBFFBFRRR +FFBBFBBLRR +FFFBBFFRLR +FFFBFBBRLR +FBBFFFFLRL +FBFBFFBRLL +BFBBFFFLLR +FBBFBBBLLR +BFFFFFFRLL +BBFFBBBRRL +FBFBBFBLLL +BBFBFBFLRR +FFBFBFFLRL +FFBFBBFRLL +FBBBFFFRLL +BBFFBFBRRL +FBBBFBFRRR +FFBFBFFLLL +FBFFFFBRRR +BFBFFBBLLL +FFFBFBFRLL +FBBFBBFLLL +BBFFFBFRRL +FFFBBFBLLL +BBFBFBBRLL +BFBBBFBRRR +BFFFFBBLRR +BFBFFFBRLL +BFFFBFFLRR +BFFBBBFRLR +FBBFFFFRRR +FBFFBBBLRL +FFBBBFFLRR +FFBFBBBRRR +BFBBFFFRLL +BFBFBBBLLR +FFFBBFFRLL +FBFBFBFRLL +FBBBBFFRLL +FFFBBBFRLR +BFBFBBBLRR +FBFFBFFRRL +FFBFFBFRLL +FBBFFFBRRR +FBBFFBBRRL +BBFFFBFRRR +FFFBBBFRRL +FFFBBFFLLL +BFBBFBFRLR +FBBBBBFLLL +BFBFBFFLLL +FBFBFFFRRR +FBFFBFFRLR +BFBBFBBLRR +FFBBFFBRLL +BFBBFBBRLL +FBBBBBFRRL +BFFFBFBRLR +BFBBBBBLRL +BFFBFFBRRR +BBFBFBFRRL +BFBFFBFRLR +BFFBFFFLRR +FBBBBFBRLL +BBFBFFBRRR +BFFFBFBRRL +BFFBFBBRLR +FBBBBFBLRR +BFBFFBBRLR +BFBBBFBRLR +BBFFFBBRRL +FBBFBFFLLL +FFBFFFFRLR +FBFBFFBRLR +BFFFBFFRLL +FBFBBBFRRL +FBFBFFFLRL +BBFBFFFLRR +FFBFFFFRRR +BFBBBFBRRL +FFFBBBBLLL +BBFBFBBRRL +FFBFFBBLRR +FBBFFBFLLR \ No newline at end of file diff --git a/5/part1.py b/5/part1.py new file mode 100644 index 0000000..7c4c26d --- /dev/null +++ b/5/part1.py @@ -0,0 +1,22 @@ + +boardingPasses = [] +with open("input.txt", "r") as f: + boardingPasses = f.read().split("\n") + +def decodePass(encoded): + row = 0 + row += 64*(encoded[0] == "B") + row += 32*(encoded[1] == "B") + row += 16*(encoded[2] == "B") + row += 8 *(encoded[3] == "B") + row += 4 *(encoded[4] == "B") + row += 2 *(encoded[5] == "B") + row += 1 *(encoded[6] == "B") + column = 0 + column += 4*(encoded[7] == "R") + column += 2*(encoded[8] == "R") + column += 1*(encoded[9] == "R") + return row * 8 + column + +maxBoardingPass = max(decodePass(boardingPass) for boardingPass in boardingPasses) +print(maxBoardingPass) \ No newline at end of file diff --git a/5/part2.py b/5/part2.py new file mode 100644 index 0000000..8a2c339 --- /dev/null +++ b/5/part2.py @@ -0,0 +1,26 @@ + +boardingPasses = [] +with open("input.txt", "r") as f: + boardingPasses = f.read().split("\n") + +def decodePass(encoded): + row = 0 + row += 64*(encoded[0] == "B") + row += 32*(encoded[1] == "B") + row += 16*(encoded[2] == "B") + row += 8 *(encoded[3] == "B") + row += 4 *(encoded[4] == "B") + row += 2 *(encoded[5] == "B") + row += 1 *(encoded[6] == "B") + column = 0 + column += 4*(encoded[7] == "R") + column += 2*(encoded[8] == "R") + column += 1*(encoded[9] == "R") + return row * 8 + column + +allIDs = list(decodePass(boardingPass) for boardingPass in boardingPasses) + +for i in range(0, 1024): + if ((i-1) in allIDs) and ((i+1) in allIDs) and (i not in allIDs): + print(i) + break diff --git a/6/input.txt b/6/input.txt new file mode 100644 index 0000000..05f8af8 --- /dev/null +++ b/6/input.txt @@ -0,0 +1,2131 @@ +vkplsqwiftuazyje +mokluxwbsfhgc + +tlfxgqinzmdju +zjmvfstnplqd +xztfjnlqemd +cmatrlfnbjqodz + +xrumszojqa +mqsorcixzuja + +bwdvujyzsneiom +njqzvyhceriodl + +nhbxcfgwpraqje +abcqfnrpwehgxj +pqrfxancbjglewh +exhfbanpwrcgjq + +skmy +koq +zqtk +vkgfjun + +zkmhpcq +jnubrdys +fvdswier + +nj +njehcry +yhnr +tudngxkovfa + +pcnv +nscvp +nvpc + +fjmpugzckbwho +quxmhkzad +uzmohyjkr + +wdscxfnlgaibejomtvp +slqgmrkuyotwz + +eao +woa +ao +oa + +d +d +d +d + +eobljmc +fdtepbjc +xnecrhbuzjg +qbceasjy +bawkdecij + +tmuoedrpzabncijwx +itudehyxowpcl +gtelwqxoiudpkc + +gadtfkeom +ekgtfrm +jtoeckgfm +kugtfmer +misnkqebfvtg + +vn +m +ygup +nqm + +fjvluqzongtmd +dyxcpbrzho + +sr +rs +rs +sr +rs + +tlxvdqpuear +kmdltoxuz + +cgabvoz +iprelmqfju +bwzgknch + +ktendlaj +rqibyxfuwma +jahdtce + +kjv +kvj +jkvbi +jkv +jkv + +ehtypgizds +egwispytdhz +eyhzpidstg +tiyhpesdgz +ztlydgpseih + +yht +doalj + +fghm +fhmg +hifmgb + +stgck +ajpluiyrqvhw +tsf + +hwqmofuy +pnkjlbdtai +ygzx +ysfm + +cfdxwnhopyvme +wvuedfhn +wahnkfgdiev +wheuvfdnj + +ikylabn +lbiyank +kqilymbna + +eahgurwvbt +qfskieyuz +eduvgr + +oqhpjibznk +kobjqwpinh +kznpjbqohi + +sujoglfhzrnmabxpi +phgubrxmsoajfznl +snjpmogrlhufaxbz +fphagxbjlrnomzsu + +baotd +boaudt +botdj +gwdxtfobhq +tnjbdo + +uhdiramngvtfjewq +gnmhudaqewrtfjvi +qrvaigdmhuwftjen + +nmal +mal +aml +almb +nlma + +x +x +x +q + +kidfopmvtr +xdpifwrkotvs +eztjfqpvorhkncdau + +hyu +hyu +huy +oyuh +huy + +xwdupilevjcazn +bzdarpgnlivexusjc +avxujgfdwecilpnz +lcpytozuendiajxv + +hwck +ckwh +kwhc +bckhw + +ktbhifgn +hbvigntuk +nbihtgkf +kbgihnt +bnifkgth + +a +i +i +i +k + +kzvohlrcnjwuifam +lkujhzfwrcnoimav +uzlcvfhjrnmwskaio +zcojhmnvurklfiaw + +htvnf +fvnth +vhtnf + +ncrolpwdx +pcohxrnvdl + +jxphyearvgc +rfcodbuijg + +bhugktqa +bkgqs +epkqfg + +ecwhuzgkmrodyj +dokqewxajuzspyc + +lfqnj +njklqxfw +enfqjl +nlqfj +lqnfj + +rd +ibagcyr +envtomrh + +vfrdbizxwocnaks +zdavirkcsfwnob +ivcsakqunrdwbzfo +nvsxwoczidkfmrab + +uehqdjmbi +jqhuefis +dejhovuqi +einktyzuqahj +ohiuwejq + +fzgymun +mzyugnf +guzyfmn + +fetogjqxcuvzsw +vthxugpedowq +eutmoikqvwragx + +fwgujzeykqvlmidn +kvuwymijfenqgldz +gynldkjuiwzcmqefv + +nyrxopqgifedsc +zdwycqjgfnhoxtiersp +nrfacpqdxyesoig +fimvyorqpekndglcsx + +ajeyb +bjga +jbka +jgba + +vg +v +tncd +v +v + +dwpxzhi +ihbpwxtzjlr +xiewyzhdpv +xwpzhai +nhxzwiyp + +dbecuzx +xbduecz +ecudxbz + +e +w +e +e +e + +ovrzqdjaiwb +rodebilkcwmntj +sdjvozwibrhp + +h +p +gtxvfb + +tnpvcfjsalyiorxzdb +irapztvynfjscoxdbl +czlnxjydbratipvfos +anoctriszvjxydblpf +lvoazndfjycbitsxpr + +rubmekjfdagt +amkrxylefcbo + +iyrqglom +qlitrmy +rtyilqom +yqalmire +lqriomy + +whpei +eghpi +paetki + +baepocmyzsd +cbezopy + +lbotn +xnqzo + +nqjos +wthmj +fkytdsjng +ipxzvlba + +wq +q +exns +w +kw + +cthavwpbkf +dsmnegrixql +zfcutvojpy + +niboxrwyqscjht +ihbjsxcyronwqt +sqhyotwxbjcirn +iotrbwqjcnxsyh +qwxnshrajioctyb + +vctoxkjdieyzwb +eijydzwobhxktc +iaytkjwbuxzpodscen +xtjwgydkzoecbhi +yoixtwczdqekhgbj + +aprmbkdcexjw +zotyshdnbevqcj + +lio +ol + +rdtpzonajsymgkcubhx +ryhtsxnmjcagdzkoub +zhnyjaltgokmudrbcsx +xhrydtgjnsamcbozku +nxartdusgchzbykjom + +impokzcuwnvjq +znepvyiqkmcw + +mr +im + +rhaijlqeu +szmhnux +nwufhb + +pcihyolxetbg +enyrxhuq +xfvrejdhky + +zoxgea +oxeza +xazdvoe +ozxauge +jntzwoexa + +xaivusctq +tisqxva + +ts +t + +infzulyjrwmv +nvzubryomlifjw +wvygflurnjipzdm +ruyvjwlidfznm +iluwnryfjmvz + +vw +vw +wiv +vw +vw + +x +x + +bzjhrsx +zxahrs +xhyrez +rabhxjz + +fwsuiqblg +fnqkdgsj +jsaqfyvgnk +gqfs +yoesrtqfag + +uqxatgzhbvf +bvhzltgqfxua +rztabhfgvuxq +taxbfhvqlurgz +zhgsqvtbuxaf + +e +xzyr +h +d + +u +u +u + +rtdyhnfliowua +sdlhfygqera +kzrmvpbxacj + +kyhja +ugneb +fpbzc + +u +wu + +amsovxceljdygphbw +vbdhsowzagmylxecpj + +uevdiqzwokgxhj +worxiusdzejgqhk +qxkthjuwiaozedg + +qbtevg +wyngqzsvb +gvbtqe + +lfbgch +hgbflc + +vlpg +mlg +ldeg + +rwsuctmyxoaipzbjlqknf +jamwspfchqkoxyrlzu +pazsmhyqolcjkwufrx +uqdrpyozhsxcjkaflwm +vyokzaupcfxjlrmqsw + +exzsaqlijpdmkvgywftb +sovjewdtphybzmaqfuk +kdtyazwpbjvfsnqem + +paowmuxkgysedl +wyxsokudpmaleg +gywoxakesupdlm +pyusakwegmoxld +eopslywkuaxgdm + +lsxjny +yxsljn +ylnbxjs +lbjynsx +jsxylrnv + +jwegoyxpa +jmcapxvbdg +swjxap +hqapzinuxrtjf +velaxypjk + +m +ge + +quypbjdikvletowrnasm +ywnaplqbmusdorekivzjt +jqntersduopvyblwakmi +wnkibesaypdjuxqvlomrt + +pylnd +ylcp + +advbre +nrjbfdvex +xberv +osekrcv + +nzpwvidyetcbmorj +ibjdnroagcemwpz +qzsekmdbnxwuirolcfp + +huqydt +rsbwpdmcnt + +hcjbr +bhcrj +cjbhr +cbrhj +cjhrb + +fpxi +ipf +ipukjbgfo +tpaif +ipwxf + +hobckpqzajgsmdrwl +odrpwlsjachqgzmbk +oqragbsjkdlhzcmpw +jrgbksowmzapcdhlq +zwpmclbjhqgskraod + +diezqf +zf +znhsymf +ozjf +zkrejf + +esmgwuvlzixaycnfqkt +sipueyhxfqkbog + +mrpscwnklxhtobauveyi +tgaivjupxhkbcszleorwmd +tbrlosnvhpecaxiukmw + +flpk +rf +xquatcvji +wysr + +dcfnywpotmge +ymfupe +qhmekjysf + +kdgq +qcgdk + +ocxbdl +wlcauqy +uwarlc + +thbeswnyqm +nsqymwhbet + +itmbc +tofmvcb + +sw +sw +swm +wsh + +orixhcu +uixhcor +hrxcuo +xhkucbo + +xsowberlfigtkz +ltivwneusg +tnegisalw +gvqstmldyicwpe + +yhznbodgfcqeptivx +dioaexhnczqtgv +okdgteivxszwhqmn + +dokztemwprxcula +irmxpdouta +rhtuxopdbmaj +dtmaphxqroyu +mtdohsparfugx + +hzcarpvyjkqduflwbxg +ctbhalfxivudonyp + +gkdypu +pkgyud +kdypug +ygdkpu +gudkpy + +ulw +fwul + +gpwotsyxzjc +nlmuevq + +zxtpjvqmsr +bmprdvquig +mpvryhq + +j +j +j +kewlj + +hgxscfpjol +spgfchxjlo + +hwjedr +edwhr +dewrh +pewhdr +usdehwtr + +jegvbfpcm +khnuldx +zyoasn + +tlrpbifxsjngoduvamyhkewcqz +fjolbtkicvmhrexungdqyzsapw + +is +zr + +qptgfwdcbmxueoiyjs +qbfcwsugexdopjtmiry +jpwdecfyosiqmutgxb +oejyvdwfgsmptbqxicu + +snqytmeualwrzogh +styeunlqzmwhgao +yhnwlesoqguatzm +unmazqlesytohgw + +dftkic +xurjq + +drixnqjogckuzmtl +syhkwbvdjxfr + +xelvzfjd +jfelzvx +zjdfewxl +jxfle +rfejmsblxg + +cz +cz +zpc +msaczrxy + +rvlmfknpzxauqedwhybj +bqyksfardvxwunehlzmj +ncsmirluwabjkyzdfveqxh + +gmpbcwjrs +bglcjpriwum +jbfwrvcmpg + +ktfqsluvjhg +jkfbxhgvayq + +uvle +lkx + +ng +ng +ng + +ozjnipsqxlh +oljhczqidsnpx + +hqmnsiadov +ohdsnmcvai + +lerquyikvxdtpn +edquylhi +ibuljedqy +elquybid + +g +g +g +g + +uqbemtxp +gzubdexq +qpxveb +vqszbxter +eifwxbnqkyaco + +isvbajpehtdow +khdjiepawnvsg +hqacjefdwxivsrp + +cnpltgfhwjiaydxqouz +acnqgjfrwiexhopdz + +sjmwleyxtriqdchbk +icatnbgservmuqpfw + +cela +elqbca +acle +alvce + +upkctos +izbqxh +njdqevafy + +t +jua +egoy +v +j + +m +dwm + +kipetzja +jhyeizpqvk +zjkpie +ipkjzne + +tsibo +sbo +rjzqbosamn +vosb + +u +j +u + +mtjivuygewcolkzrpfbs +jlgcyuzpafkibwshdmovte +bskavogweclutifypmjz + +ov +ov +ov + +eyro +yeor +rofye +yreoz + +thlknydiesxupoarcgf +gidylcsoekhnxafrt +glwyqiectnshkdbxraof +grtvasnichfyelkxod + +whzu +wimcpu +gfwet +dimw +pcbwli + +z +z +z + +chz +hzc + +nvfswzqculbtdrxey +jyludxzbwgvnhrpsfceitq +znlxeocqywmrsvfudtb + +wnbz +ezugmpx +tz +idszb +znlrdw + +xhipb +bphix +ipcbhx + +gudlfzh +dghzuo +guhdwnz +guhdlfz +hzgdu + +dczfkubhjwn +kjhcubwfzdn +zknfuwcdjhb +kzbwcdhujnf +khnzwcdfbju + +wkpimxyu +uyimpkwx +wkmupxyd +ulxafnpcwshymk +wumxpkdy + +jlr +l +l +gal +lg + +t +t +q + +cktanxyfepglowhibsjv +tbpfihyovgeacsnlwj + +rzd +wyrzd +dzr +zrd +rdz + +ligjhor +grlhno +yqrpsolhmwg +xelsrhogub + +njrwbhvfta +jfenrhvbwt +tvwbrnlhjf +cjfzntbhvugqwr + +xytgmcdaeolfqwzskr +qdfmegraxzhokcyswt + +ndcywqxkfta +ckxwndyqfa +cwnkqadyxf +wkyncdqxfa +wcqdkayfxn + +vbir +vrbi +bvri +vbir +rvbi + +mstylwqkrnizdhjbcgeo +yvqkrbedpmwcutsfo +atpermwqfcobdysvk + +sdylhzipk +zyispkd +kydizsp +zepsiydk +kdzypsi + +lvpiahe +hvapeli + +fwpmhryouqcktzb +bhzyucgqkmrvdo +jobackhzsreqiumyn +vchkoqdzmybru +xblhkcyoqdruzm + +jkilegfoxzacr +acxkzorfpjg +ctkzrgafxoj +oacxzfjgkr +jrozkcfxga + +apmksyco +acsomkpy +sopcaykm +mkcyoasp +scqkmpyoa + +fpaigjltezhxwnyrvu +vftqenyjwbsuaiplhdr +ajeutynhiwrdflcspv +naeilpfjuvdkwtyhbrq +htproevliajwfynu + +cwaug +augcw +cwuga +augwcy +gwcua + +afqcnwebdv +aenfqbwcv +bvfeqwcjnsa + +vtecwrzfa +tczvwrma +vrpwczat +xewzcavtr +vwcatpzr + +rdkvyle +eglrbyadp +tmxrhszneuldyw +dleykgcqr + +qsohepyxawngjd +ecaywgnhmf +wfeagtnrhuiyl +nthwgyeav +ynwgberazh + +loupbihzqwady +npbtkumjdoihwy +ysguhceopbw + +fy +n + +ulafhmibcnqvxt +ik +i +i +psdiry + +wcahpmgkjdi +lkazewjdpgbins + +sy +ectfa +q +sz + +idglafuxovqb +vurdigqpfoal +fgovalbuidxq + +qigjvulpdaxwsbnzyc +iudbjscqwohnxlv +sjlxcdiqnuvbmwp +rsklueqxijdnwtcbfv + +urxqtyshgzemca +xawgozkbejncprilyqf + +irl +eurpiolqczj +lrswi +vnilwrf + +viwsjgdt +yxhc + +ynwkqtpageurxosvjlbc +letqbswnxcrkajvugyp +zsnjawtqgevcpkrxybulf +ynglakqevcjptxwhsrub + +gabxsumno +mknawxt +anjxhfm + +dimjglkvcstaqzebu +cjeqzybdkaurv +bdkoacevqzju +bdycqjkaveuz +bkcevaqzduj + +z +z + +rydinou +zfycpiwl +mbydiv + +fzhrbc +bfszrhc + +g +g +g +ag + +l +l +l +lq +l + +cnf +ncf + +x +fzw + +nhgkcomtsdxlazu +wcrexdamztyohklguin +dmxlzgnckaehtuo +doqcuhfxtlbanmgkz + +omfbckilpvjgxqwthse +vpwhosebmtxgicjkfql + +nmdlkxb +ihbvjk +blkx +kxbycs +bk + +uxkzsavo +xosalzfbv +opvisknrxauz +xouhgzsav + +wcjodbqux +patbuwvd + +mb +mca +mc +cm +m + +usp +aftgzcp +ztr +eyjkbmnd + +zwfyeraxjdimplusbq +sjqamxiyfbduplzre + +uehlcmvqagxd +ghbeylfazdcxu +clhedaxjgiptvu + +vntkpmzia +pimtvyakz +tzipvakm + +fgoputbi +bpiftxg +wpgtibf +fgbpit + +kirsmujcn +mnkucrij +jnumckir + +fubspvchiwtnjkrxomae +kvcrsdtfuwhapxemnoji +wcaknfurotjlsevmhpix + +mojgstlqrebpifcvy +gpfijetbvqrloycs +lptohfsivgrjqcybe + +etnjorpmshwxlcbfdugykvaiq +necvjsgwokupfdlthymqxibar +whftpldmarigjeuckxvqybson +brsovpaqykicjhutewmnfglxd + +ofmkudxjpeti +okpmifxuejt + +feudgmpbhzak +emjnkbzludr + +wc +cw +dcw + +tolg +berksqjhmgt +fwgxt +atlg +zgptn + +hng +jiav + +fit +htif +fit +fit + +bkxgyoasj +xdinqvksb +esdtkylbo +szhfkmrpcb +uxseqbko + +vgclrk +yvgalcrk + +imgnj +bgm +mgb +gmcr + +rc +cr +rc + +bshkdmce +uyfzjwclhovae +thqdgkinsec + +ckmsoxuqif +fukqxmvsic +mosqchufikx + +ulmfponhvjbzs +jopbvzlgfhmusne +ovjzewfnumshlp +vhmfojlunsakxczrp + +tibdoksuvaxhwyzcpjgr +ypatgvjkrcinxumqhd +lykfvurhdxiqpeajntmcg + +yrvqacpmexifgkbtdwzjso +psgtcyqvnwibfuozrmxekjd +dqbcjfgrmvwpzioytesxk + +rubmfhv +hbfrjdmv +rihmbvpnf +hfrdmixbv + +raviz +imz +iz +mezis + +xcykuferdiqzjtalhmspnvogw +elmorfsvchkjpxiqbgnztwduay + +aci +aycn +caq +arc +caji + +vb +vb +bv +vb +jbv + +jxgarbnkwutzc +npjatuzwhkxbrg +bkdrljnasxwzgtqu + +xparfjw +rfaxwjpm + +jf +j +jr +ji + +xrgdnqzk +zndgqrikf +znqrkxdga +rkzgqand + +egizwncdbualtf +flguwazicedtbn +ulfztngaibwdce +bilncfatwzuged +nabgeclfudtiwz + +d +wfdj +d +d +d + +gn +n +n +n +n + +dou +yunwtdohpcb +ouvd + +xvayuwoe +ayuewb +yawseu + +tfbso +sotf +ftos + +otjcundbazgmlirkyhqpvfe +bqcduiyaentvzhklmgporjf +fyhtvnzadglcumopriqbjke +itmvuqbnrcofakelhydpgjz +konfjihzumcavgytpesqldbr + +hmpqckelajgzxnyso +lmkqecuxzpysnjhgoa +zgsovhqjypnekmaxcl +pohsxaglqmfenzkyjc +pchlzengfyjoxmksaq + +ohjuandzmpvwkbfclirysexg +mhresaycwovbzkdlnxpujtigf +qckxespgnlvdafiyubomhzrjw +lnjkcwahrsvipeugmzqyfxbod +mbwzfnolrxecyapsuigkhvdj + +cailbjyxztvdnphkrg +nvilxeprzhajkbygcdt +jazdblghrsicxpytkv + +p +fp +f +vgz + +elajdxgu +jiduarlexg +xlejdaug + +auh +ahu +hasu +hau + +rckmqapdtse +molzwi +hgiom + +asqyzrgotdlbviu +lgoztqsdbrivy +lrtybsgqvaizdo +lbdsgorzvhyqxit +alijgryqzbodvts + +fpnlakbxjosd +dlpyfnjaxoks +lokfabpnsxdzj +dvmxugpoajnkclfhs +flxbknrasjodp + +mprcewkzquit +ezkrcuiwqmtp +wiprkqetzmcu + +alkyb +kbl +klb + +iezaknbl +zo +z +oruz + +ibhrojtaulvewmgczpxdqk +rcbpgidtkqouyazhevwxmlj +idzhegvwtacublomrkxqpj +vcbigrtzlowxpjhuedkmaq +ajxuctrhwepmvoilzdqgkbf + +knal +nlv +qlnzb +ulknv +ln + +dkfrbh +hbrdfk +hdirkfb +dfrkhbn +akedmhrfb + +axeuqykc +cijxqeg +ybuzctis +zwcliq +hfodnrvcpm + +k +k +k +k +k + +f +yg +u +y +y + +xbrgmpydio +rdxgibmpy +dryipgxmb +ihjdxygmbpr +ixgyrbmdp + +xutjv +uhxtvj + +dpezviroyshwaxqgjlck +ogivhpaskqrlcdjwyezx +zspkihxldaoqrjcgevwy +ckigvrljoexyhpzsadqw +hguvczomqlpnabifswjydrek + +fsaonvedtjczu +setdouyfvnbjk +oftnledaqsvuj +nagujstvefdo + +hbwvkftgdzsm +msvfzgwbkdht + +nbxliqesfzawyk +aswzruelkfbhniqo + +yobmx +jxybeo +ypsbnuxaf +ybx + +yqaxjhlvrfceu +fzvpcuqaxrheyj +racjhfyqeubxv +xqjeudfvygahcsmr + +xejldkfstrvubcpaig +gqxhcpbsrojditeank + +favwixezjmso +ogpbvwnamz +atwvobzm +trhowanpvqmdz + +qfdcv +cd +cd +cdwk +drzc + +y +y +y +yl + +nclrvbgzmudf +vdnlfgusir + +gbnxzysckmp +zsnkmcbpyxg + +zqweaofxvpjucmkts +setcuqkpfazmxwo + +kxmfqdithl +hktfmdqsi +wghkmfydtiq +fiqkhmgtd +mfijqkhdt + +mebnqwaxzvys +msvaotqilh + +tymwfkrcsvilqodphbuzexjna +takfijusvpozeqnwxhyrdbclm +edhrynkzbispqwflvcmxotaujg + +uvc +vcu +vuc +ucmv + +kfzadnxwsq +lawdxkznfqs +tflqdkxasnwz +knqsrcgfozxedaw +xaqwdnsfkz + +gaho +vzdecfourwpnyx +iqhaoms + +kiebj +izekbj +jikeb +lbjirukqe +ijbkxez + +ldwsav +srlx +cntqmikugl +ylz + +yqh +h +h +h +h + +jpqewnhzbyltxu +samgukw +umw +wuck +cfmwgu + +hblxgkmjyc +xmesjhqaidgp + +wseufabtgklimdoxnypqc +thwukpnivmxbcalesy + +sfzpaeqdbhwmnlxt +btlsqpdmnwzaeh +ahwtklseqnmdpbz +mwahslezbnptqd + +alhkbjrtm +mjkratblh +tbmrdkhlja +bklrmtjha + +fkjwmabqy +bwayqfmpsuh +ycbaqfnkwx +trwozgyibadqlv +wxnaqpybe + +dbz +bdr + +evsxkiwhj +ijkwxsve +vekjiwxs +eswivxkugj +eowtsliravjkzx + +i +i +i +i +l + +ek +ke +ek + +bk +rskpanj + +jlqapcexir +rix +uxyri +hzirux +ixryzu + +mbecuxkqodis +myfk + +osk +kvw + +k +k +h +k + +slwqeticyjpdzf +gxechvlqnmsfp +qulcpsfem +quehspflrvcn +kgcqlaepfs + +bhiye +bstyvrapi +uldxybmi +bioknyfwj +cenghbzyiu + +ztsxu +xtszu +usbzixtc +uxtzs +uztsx + +jadbkcovfyrnsx +gnqxdfycvbksr +nfsvxdbmry +ysuvnrdbhlxpfi + +xchlgiaotmsuzvq +gmayopixqslcfekhz +wmsojhcbraznq + +cxfky +kfcyx +fwkcyx +fxyck + +xqo +q +q + +sgojw +cvfm + +zdfyhrqtn +tnqyrfzd +mrfjztydpnq +dqfyrtnz +dyznfrtqh + +qemxlh +fbvnekpcmh +mehz +whmrdegy +emhg + +mqvr +cnasrl +qdys +gmez +jptbh + +epufwojvtkzld +kouedvymlgntp +okldsviptaeqxhbfu +ouibvesrcjktpld + +xnhkjmvwy +mjhkvwy +hkjwvmy +wkjhmvyq +yjmkwvh + +ckedjx +excjkd + +znfesox +xeoh +ocenxz +eolypx + +mxivwjbheynk +vtobgpxmyhkqnjiw + +tsxvd +xdqcvn + +ynhtcpbeourwqik +ciaoeqnvztmgybdhkws +ewckryhoqnbtfi +ihbqotncwyek +jfcwkthboeqniy + +zaefxrolby +vdfztseoqhgly + +woiyfq +iqfyw +wiqfy +wqyif +wqfiy + +czojbsdtxhnwvuygfmkeaq +lwjqbtyngfzuxkecoadsvh + +celw +tywbeuascvz +ekgcinwrox + +cy +yc +yc +cy +cy + +jxpwoydmhblcrai +qmfykpsrxlvda + +o +vx + +uptwyrij +jiyturwp +wqbtpyujir +rjuytpiw + +meqghcrlnfjkyw +avjcixbspgfqz + +dyz +l +p +pul +i + +l +l +l +l + +dhua +aguid +aud + +rqnfj +nfbqdj +fqjnu +fjnq +nqjf + +scfvjmnxeag +cudpbwfnxalzsotqk + +abzfcdpnyxg +dcmrbnpxfzya + +aexvdqroyncwl +qrowycxvnaled + +scznoldgrut +orcduszlgt + +zofhkcrsjm +mfsozrhxayk + +nehxkswcz +cvwnekxy +aewxkscqjn + +stpwkqyzgm +wkjpzygtsm +yqmspwgztk +pztsymgkw + +wcipmryqalvzbkghtsofxj +pbjixyckrgzmfvslhtaw +ivrzglbuxtsjhwcpamfkye +nckmdqfbgtasijyropxvwzhl + +qtfyr +yrtfq + +xkijmzgyeplvubr +kzsdpxjbhne +zxhbtkpjse + +tvm +zvm + +naqbrui +rbgiuqans +bnrqaiu + +dulxmsoavhciyqpfzketnbr +obnxqmidafpresytlzckhvu +otxrdwpumcivyshfaqkgeblzn +hyrmlzkstpvifucxedbaqon +qrpndcmtoevkzlysaxuhbfi + +kbisedtufjvmroq +dfubrkimtjseq +bqdsuktemirjfw +ukpdqtshgerfimbyj + +br +rkb +rcb +br +rbm + +lm +lfh +ml +lo + +uigbrefdqzoaklhwcjxntm +cublkmtxeqwgrhonifyd +bsleinxukwdmftrcqhog + +zicwhktunjxgfpodsbye +nfteiwpudgcxovjbsyak +ywegkintxqbpdujosfc + +f +e +t +e +d + +btxnpqyrshjcz +qstfkgioavjlwe +sbdqjpturcm + +mpi +ipm + +bxqlyckzwrgu +ywulzqkgbrcx + +lmpys +mypsl +smlyp +pdlmsy +ysmpl + +gxbsvalu +gxlabvsu +xgbvauls + +jd +jd + +v +vb +v + +helzqfkyadcjtrpom +yjcqdrzeftlkmhao +eolhdvkmjqfxctzyar +lzcrhsfdjoeyamtqk +lcreftdozqmskjahy + +tavjmbdeznxquyws +bejtfcgrpwisu + +rinkdgteosbupalcwfm +opcbulmgsrnidewafkt +cpdbrmnuaeftlwgosik +wiedgctfrkunomlasbp + +qenyztwigf +finwzbeqy +bfzpeiysqnw +wyienfzqb + +fximacpqjvrozwu +aproqwzficuvx +aozqprxftwvicyu + +wxedbjgki +wxgjzikde +iyekzgwxdj + +ghsde +hsd +sthd + +cafgyinvxmqsukot +utnsfycxkmoagviq +vkqystxmaniofgcu +nmtyavikgsfcqxou +fcxoyniumkvqsgta + +sq +q +q + +szvxhg +sgvzxh + +orwyznm +tynzw + +ivzcoaenfbrm +imecrfnovabtz +dnwgzobcvfmyirea +ebfnairctzmvo + +yjtznqpvsldf +ilxahurg +ykjcsbel + +lhiubo +uboihlma +hlgufnkprcvoib +ilbhtou +bisoulhj + +vhiapgbtjlcwuxs +ibauwcjsptglxv +gcsopxwuajvilbt + +oqbadzwepv +kbxdetcliprquvsn +dqhvwymbpe + +ce +wcpo +c +octrn + +swpd +clb + +mxjwhr +marhxewj +wigrcjpmx +bjrwqxm + +l +ulyt +bl +gl + +gofskm +mgk + +dscxkpviur +lpicsbuk +jkibcupsr +eucsifnkp + +vs +c +c +c + +i +i +b + +cuv +cv +ceb +cv +cnhtm + +ox +tx + +rheungozl +eznoglrhuj +gnhozrlue +nhlrzuoge +urhognlez + +lnkcuajziqwxtev +fzauikcjtxvqlnem + +fmjbugerkdyaiqcxnw +kxhanqgjcfbyeurdmi + +qjrleua +rujleaq +aejquzrl +rejxuqla + +okagijrelbc +rbikajtglc + +e +e +pa +y + +c +hc +liasmwofn +ytkev +pczj + +tkpnzsvmrdijfwobghqcaxeu +whfpjgeavdkbzmnurotiqscx +fqvuropcmkzinbdwashjxetg +hqkuzafetjpbwyirdxngvsmco + +szxa +axzs +xzas +xasz +szxa + +nscjgi +jgcns +gjcsi +scjg +szjgc + +zuadipsnxhqgfjv +zjpdugisfv +dgfskzvjuip +fvugpidszj + +qpcbui +qntkmsxlia + +at +yta +ft + +letsxrmgabi +gnpqaecbmxfwi +mciujqgehbax +ekgmixohyanb + +epnlovurz +oqferplx +lrnedoqp +lroupe +awelogcikprm + +nwyuzvrlmbhtjfqaedxocgi +cufibmwaxdljyzovqrtnegh + +eoxvphlgnjcmb +omvghcpejnlx + +mournjwlvsckdt +jumlnvrweozpkc +vbgawlrnmkijcox +nryelovjqchdkwm + +iqbyaxh +gxbqnhi +xyibhqm + +rqxbago +xvq +iyfqujdpwcn +xqamhg + +gbxszymv +vhlnfdmg +mvgkdnj + +almux +axulm +xmaul +ualmx + +fdseyvrjkolcinw +idxynrvjakolmcfu +ycfbknvtijlurado + +rewtmvgcnhqaolkjbiuds +atougievfqhwsdcbxjknp +ogakhvbcsijenutqwd +ckungoviwqjbthmeads +veyuawsiothnjdqbcgk + +gvuqtmnxhoepfw +efqwtmnovupg +oevuqtfpmwng + +trdyigx +nbtmzrygpxi +rxtyzbg +ygtwxrefu + +akflh +lakf +afkl +ablqfk +zkalgf + +gsuo +ywuvt + +pcbe +lptbc +picba +plcb + +wt +k +t + +qnjo +xqgjyv + +iozkwcxuhapnqg +pawxsihqkclzvgunm +kxawgbihuqcpfnz +ikgrpunhqwafzxc + +bywxros +rsowbyx + +wjxhogyipvanmbcrste +dcmgwqnepiajvxkbsth + +zbmicrsajtqe +miecstjbarq + +paxrhzkyslnq +zakyxhqslrn +yslaxhzqnwkr + +jkleg +ekyl +kyle + +ydvkwga +nxqarwd +wxakpq +cefbauhmjtoz +kai + +bhwzivoacl +zcwqtxhsakyb + +fsnged +ocmlx +wol +brc + +ztswjbceaolgi +jlsmcupgw +rxsgkyjhdqfwnv + +xtqjfacuirwvzksmlbhodnep +btremfjsvncyzapowqxidklhu + +bmtz +ytjmhezbf +bwmtz +mwtzb +mtbz + +bju +ubj + +zywb +bwy +bwyz +wby +buwye + +nerhbp +htbple + +beurhjyvtdimocqn +hcvniqytrjeobumd +mncoeuqtihydrvjb +qibvdmywzrehcnout + +egc +k +s + +deltoa +etdoal +aedolt +amdtleo + +gdwalptufnsxhr +uwgadebmvrhnlxfpcst +hlwsrfungajxdpt +ygnfwhrtaldpuxs +rzxalndgutkpswfh + +mucn +hewbdvanpomyrj +mnsik +tmnqu +fnxm + +gvykqxtmzwfsbrcleahjnod +hunoyzdjrmsvtbqckfaexlg +acketzflmjhqdrosbnvxyg +fevrokybsmxcatzhnldqgj +toqeprafdycksnhlvxzjgmb + +ou +uo +ou +wuno +uo + +eyfckdvlwibquogtsnrpazjxm +ybdsnauwojtxpilqmzvcgrkehf +lmtjdcxwvpysezqkonfrguiab +caferxuopydjsvtgbmlziwqnk + +jgxudzlbswaefhpk +xzrcbshwdlkgjpfaen +kxbaemgwzoytidfjl + +czjw +gykomq +xthi +nxzsp + +exyjs +jxsyd +xeydsj +jsxyvg +wixbsyfjl + +ultdkrv +udlrkv +drkuavl +kravldu +dvfrlkua + +zjgofiydu +zijfdougy +yoizudjgf +jdogzfiuy +jziugdfoy + +cdxlhpgtzrmubyse +owcrpythmfuxbe +xymtcphrdbueqis + +drfatx +xfrad +rafdx +fdaxr + +tuxmnqvwiodzl +znwmiuxvldtqo +qxwidtoplzuvem + +l +dle +l + +uv +fabuvn +zvdu + +htgwvcus + +kzfijesnvuhlqd +trudmvekzjisofl + +qbltyocnjvigse +oriqujavzntpblfw +vmqltjciondkeb \ No newline at end of file diff --git a/6/part1.py b/6/part1.py new file mode 100644 index 0000000..85cbd28 --- /dev/null +++ b/6/part1.py @@ -0,0 +1,12 @@ + +answers = [] +with open("input.txt", "r") as f: + answers = f.read().split("\n\n") + +possibleAnswers = "qwertyuiopasdfghjklzxcvbnm" + +totalGroupYesCount = 0 +for answer in answers: + for possibleAnswer in possibleAnswers: + totalGroupYesCount += answer.find(possibleAnswer) > -1 +print(totalGroupYesCount) \ No newline at end of file diff --git a/6/part2.py b/6/part2.py new file mode 100644 index 0000000..8babb61 --- /dev/null +++ b/6/part2.py @@ -0,0 +1,12 @@ + +answerGroups = [] +with open("input.txt", "r") as f: + answerGroups = [answerGroup.split("\n") for answerGroup in f.read().split("\n\n")] + +possibleAnswers = "qwertyuiopasdfghjklzxcvbnm" + +totalGroupYesCount = 0 +for answerGroup in answerGroups: + for possibleAnswer in possibleAnswers: + totalGroupYesCount += all(answer.find(possibleAnswer) > -1 for answer in answerGroup) +print(totalGroupYesCount) \ No newline at end of file diff --git a/7/input.txt b/7/input.txt new file mode 100644 index 0000000..cd73ad7 --- /dev/null +++ b/7/input.txt @@ -0,0 +1,594 @@ +pale chartreuse bags contain 3 faded orange bags. +drab gold bags contain 5 dark aqua bags. +mirrored magenta bags contain 3 dotted violet bags. +posh black bags contain 3 dark lavender bags, 3 mirrored coral bags, 1 dotted chartreuse bag. +striped yellow bags contain 5 pale red bags, 2 light lime bags, 5 clear indigo bags. +bright aqua bags contain 2 vibrant orange bags, 4 clear lavender bags, 1 pale gray bag. +dim silver bags contain 2 bright blue bags, 3 faded olive bags, 1 faded cyan bag. +light beige bags contain 2 bright silver bags, 4 vibrant crimson bags. +dull cyan bags contain 2 drab beige bags, 3 mirrored turquoise bags, 2 mirrored indigo bags. +dark black bags contain 5 dull turquoise bags, 4 faded cyan bags, 4 plaid coral bags. +dotted bronze bags contain 3 light blue bags, 2 dull teal bags, 3 dull chartreuse bags, 1 plaid green bag. +light purple bags contain 3 clear tan bags, 3 dull tan bags. +wavy orange bags contain 3 wavy tan bags, 3 faded green bags, 1 shiny brown bag, 2 dim tan bags. +drab beige bags contain 1 vibrant tan bag, 3 pale chartreuse bags, 3 plaid indigo bags, 2 mirrored chartreuse bags. +light coral bags contain 4 faded green bags, 1 pale crimson bag, 3 light bronze bags, 4 posh blue bags. +wavy coral bags contain 5 vibrant cyan bags, 5 light blue bags, 1 dotted turquoise bag. +dotted plum bags contain 1 clear orange bag, 2 drab black bags, 5 dull chartreuse bags, 5 plaid fuchsia bags. +striped olive bags contain 4 clear brown bags, 2 shiny beige bags. +vibrant maroon bags contain 2 dotted beige bags, 4 plaid olive bags, 5 dull black bags, 5 mirrored aqua bags. +drab purple bags contain 2 light green bags, 1 clear orange bag. +shiny violet bags contain 5 drab white bags, 5 dark aqua bags, 3 muted gray bags, 4 wavy orange bags. +muted maroon bags contain 2 plaid red bags, 3 bright silver bags, 5 posh yellow bags, 1 bright yellow bag. +clear black bags contain 1 bright plum bag, 1 faded brown bag, 4 wavy chartreuse bags. +dotted maroon bags contain 5 mirrored turquoise bags. +drab silver bags contain 2 vibrant violet bags, 2 muted orange bags, 4 dull purple bags. +faded purple bags contain 1 bright lime bag, 2 striped brown bags, 5 dull maroon bags, 2 shiny olive bags. +dull maroon bags contain 1 clear lime bag. +pale salmon bags contain 5 striped blue bags, 5 posh blue bags. +plaid orange bags contain 1 pale coral bag, 3 shiny orange bags. +drab black bags contain 5 vibrant orange bags, 1 dotted tomato bag, 2 dim red bags, 3 muted blue bags. +dotted teal bags contain 3 light fuchsia bags, 5 vibrant tan bags. +plaid tan bags contain 5 dark brown bags. +shiny coral bags contain 2 pale green bags, 1 muted lavender bag. +plaid plum bags contain 5 drab lavender bags, 2 shiny teal bags, 1 plaid tan bag. +dim olive bags contain 1 dark beige bag, 1 drab coral bag, 5 muted chartreuse bags, 4 bright teal bags. +dim bronze bags contain 1 striped turquoise bag, 4 muted turquoise bags. +muted red bags contain 5 dark gray bags, 4 muted gray bags, 5 muted blue bags. +shiny crimson bags contain 2 dark aqua bags, 4 faded fuchsia bags, 3 faded tomato bags. +vibrant teal bags contain 1 dark cyan bag, 4 wavy lime bags, 1 bright crimson bag. +dark yellow bags contain 2 striped coral bags, 1 drab tomato bag. +posh orange bags contain 3 wavy lime bags, 3 clear lavender bags, 5 bright indigo bags. +shiny orange bags contain 3 striped gold bags. +wavy magenta bags contain 2 vibrant crimson bags, 3 mirrored teal bags, 1 shiny lime bag. +clear indigo bags contain 2 pale green bags. +wavy red bags contain 5 plaid indigo bags. +wavy crimson bags contain 2 dim teal bags. +clear chartreuse bags contain 2 dull gray bags, 4 plaid lime bags, 3 striped cyan bags. +muted beige bags contain 2 drab white bags. +dim plum bags contain 3 vibrant green bags, 1 clear red bag. +dotted white bags contain 5 wavy magenta bags. +shiny chartreuse bags contain 2 striped tan bags, 2 dim maroon bags, 5 plaid bronze bags, 4 dark white bags. +pale green bags contain 5 drab crimson bags, 3 dull teal bags, 4 plaid red bags. +clear purple bags contain 3 light indigo bags. +striped brown bags contain 1 light yellow bag. +bright plum bags contain 4 faded olive bags, 2 dotted crimson bags, 3 pale green bags, 1 light yellow bag. +posh crimson bags contain 3 bright aqua bags. +dotted olive bags contain 4 striped tomato bags, 4 faded chartreuse bags, 2 dull bronze bags, 2 shiny olive bags. +striped magenta bags contain 2 posh indigo bags, 3 dotted tomato bags. +vibrant chartreuse bags contain 5 light crimson bags, 5 light bronze bags. +light cyan bags contain 1 faded red bag, 1 light silver bag. +faded teal bags contain 5 vibrant crimson bags, 3 drab gray bags, 5 striped turquoise bags, 1 pale plum bag. +mirrored aqua bags contain 1 vibrant white bag. +dull violet bags contain 2 dull orange bags, 1 light green bag. +clear orange bags contain 5 dark green bags. +muted silver bags contain 4 striped indigo bags, 3 mirrored lime bags, 1 bright lavender bag. +posh green bags contain 4 drab gold bags, 4 dim black bags, 4 faded gold bags. +dark bronze bags contain 1 faded plum bag, 5 mirrored teal bags, 5 striped indigo bags, 4 muted salmon bags. +shiny teal bags contain 4 plaid tomato bags, 3 clear brown bags, 4 dull silver bags, 2 wavy orange bags. +light gold bags contain 4 pale tan bags, 3 vibrant gray bags, 5 wavy tan bags, 5 dark violet bags. +bright indigo bags contain 5 shiny silver bags, 4 wavy indigo bags, 5 dark gold bags. +bright gray bags contain 5 shiny lime bags, 4 dull aqua bags. +dotted orange bags contain 1 dim red bag, 4 striped blue bags, 3 bright lavender bags. +dark indigo bags contain 4 drab indigo bags, 1 dotted turquoise bag. +pale lavender bags contain 2 vibrant green bags, 4 dim yellow bags, 1 mirrored yellow bag, 1 bright blue bag. +dotted silver bags contain 2 posh blue bags, 3 posh maroon bags. +plaid salmon bags contain 4 light yellow bags. +plaid magenta bags contain 3 striped gold bags, 2 mirrored black bags, 3 dull tan bags. +wavy blue bags contain 3 faded teal bags, 4 drab blue bags, 1 dotted gold bag. +muted black bags contain 1 drab teal bag, 3 muted lime bags. +clear violet bags contain 3 bright lavender bags, 1 vibrant plum bag, 3 wavy white bags, 1 shiny chartreuse bag. +bright teal bags contain 1 muted chartreuse bag, 4 dull indigo bags, 5 striped tomato bags, 1 drab white bag. +drab lime bags contain 3 posh maroon bags. +shiny tan bags contain 3 faded chartreuse bags, 3 wavy orange bags, 4 drab white bags, 4 light chartreuse bags. +light green bags contain 4 dotted tan bags, 1 dim salmon bag. +pale tan bags contain 3 posh green bags. +light gray bags contain 3 posh brown bags, 3 dim green bags, 3 mirrored tan bags, 1 mirrored yellow bag. +clear gray bags contain 4 dim brown bags. +drab magenta bags contain 4 dark aqua bags, 5 faded tomato bags. +pale violet bags contain 2 bright violet bags, 1 bright indigo bag, 2 muted salmon bags. +vibrant black bags contain 1 bright magenta bag, 4 vibrant crimson bags, 4 clear blue bags, 2 light chartreuse bags. +striped white bags contain 3 plaid yellow bags, 3 muted orange bags, 1 shiny gold bag, 5 light white bags. +wavy turquoise bags contain 5 wavy tan bags, 4 posh chartreuse bags, 5 posh red bags, 3 muted purple bags. +light white bags contain 3 shiny brown bags, 1 striped tan bag, 2 bright lime bags, 5 shiny yellow bags. +faded orange bags contain 3 dim silver bags, 5 wavy tomato bags, 4 wavy chartreuse bags, 1 shiny black bag. +mirrored fuchsia bags contain 2 plaid lime bags, 3 vibrant salmon bags. +dull aqua bags contain 5 clear brown bags, 3 dull indigo bags, 3 dull green bags, 2 muted gold bags. +dim gray bags contain 5 dark bronze bags, 4 dark silver bags, 3 wavy cyan bags. +dull tomato bags contain 4 drab tan bags, 3 striped brown bags. +dim gold bags contain 3 shiny tomato bags, 2 dim tomato bags. +striped beige bags contain 3 shiny violet bags, 3 striped aqua bags, 3 muted blue bags, 3 shiny gold bags. +mirrored coral bags contain 2 muted coral bags, 3 shiny teal bags. +vibrant white bags contain 1 clear brown bag, 3 drab gold bags, 2 wavy crimson bags, 5 light plum bags. +posh tan bags contain 3 dim salmon bags, 1 faded gold bag, 1 drab gray bag, 4 shiny coral bags. +drab tan bags contain 4 bright magenta bags, 3 dull green bags, 1 drab crimson bag, 4 dark green bags. +striped coral bags contain 2 drab tan bags, 4 wavy purple bags. +dark white bags contain 1 bright magenta bag. +striped red bags contain 3 plaid black bags. +drab coral bags contain 4 dotted violet bags, 2 pale magenta bags, 5 posh purple bags, 4 light lime bags. +pale yellow bags contain 5 plaid black bags, 3 shiny olive bags, 3 clear brown bags. +faded coral bags contain 2 pale salmon bags, 5 dim teal bags, 3 vibrant crimson bags. +faded black bags contain 2 wavy white bags, 5 faded brown bags, 4 drab beige bags. +dim salmon bags contain 4 vibrant white bags, 3 wavy salmon bags, 2 wavy lime bags, 2 bright purple bags. +dim black bags contain 3 dull tan bags, 2 striped beige bags, 2 plaid brown bags. +plaid cyan bags contain 2 muted coral bags, 3 dim red bags. +dotted gold bags contain 3 dotted orange bags, 3 striped coral bags, 1 clear magenta bag, 1 dotted crimson bag. +mirrored white bags contain 4 clear brown bags, 2 drab crimson bags, 4 shiny gold bags, 2 posh red bags. +vibrant olive bags contain 4 striped indigo bags, 5 dim salmon bags, 5 bright magenta bags. +dim teal bags contain 5 striped blue bags, 4 dull aqua bags, 5 dark cyan bags, 2 wavy magenta bags. +faded chartreuse bags contain no other bags. +clear yellow bags contain 5 wavy olive bags, 1 drab tomato bag, 2 plaid red bags. +mirrored bronze bags contain 1 vibrant beige bag, 5 clear cyan bags, 3 muted aqua bags, 5 striped turquoise bags. +vibrant tan bags contain 2 dull tomato bags, 5 dark aqua bags, 3 muted gray bags. +light olive bags contain 4 dark white bags, 2 dim teal bags. +light lavender bags contain 5 wavy indigo bags, 3 posh olive bags, 4 striped brown bags. +dotted gray bags contain 1 dim red bag, 5 light tomato bags, 2 dull gray bags, 4 light black bags. +plaid olive bags contain 5 wavy purple bags, 2 posh blue bags, 3 faded purple bags, 1 pale fuchsia bag. +muted salmon bags contain 5 shiny tan bags. +dark olive bags contain 4 mirrored black bags. +striped turquoise bags contain 4 pale olive bags, 2 pale tomato bags, 3 bright yellow bags. +plaid fuchsia bags contain 4 clear silver bags. +vibrant magenta bags contain 1 vibrant green bag, 2 muted silver bags, 4 light plum bags, 5 pale teal bags. +vibrant bronze bags contain 2 dull gold bags, 2 bright coral bags. +mirrored purple bags contain 1 drab tomato bag, 3 faded silver bags. +light lime bags contain 5 shiny violet bags, 4 wavy aqua bags. +pale gold bags contain 3 vibrant brown bags, 5 dim red bags. +dim orange bags contain 4 dark cyan bags, 3 light chartreuse bags, 3 wavy orange bags, 5 dark green bags. +clear fuchsia bags contain 4 posh blue bags, 4 mirrored lavender bags. +pale bronze bags contain 3 pale silver bags, 2 dotted tomato bags, 4 plaid gold bags. +dotted aqua bags contain 3 drab magenta bags, 3 dull green bags. +posh silver bags contain 5 striped lavender bags, 1 dotted maroon bag. +dim coral bags contain 1 wavy bronze bag, 5 striped gray bags, 2 light indigo bags, 2 dim orange bags. +bright green bags contain 5 drab plum bags. +striped teal bags contain 1 light fuchsia bag, 5 vibrant aqua bags, 3 mirrored white bags. +dim crimson bags contain 5 posh gray bags. +drab salmon bags contain 3 bright olive bags, 5 dim tan bags. +muted green bags contain 2 dark beige bags, 4 posh coral bags. +light tan bags contain 5 wavy white bags, 3 dim indigo bags, 3 bright green bags, 5 clear lavender bags. +posh teal bags contain 4 pale salmon bags. +muted cyan bags contain 4 posh yellow bags. +bright turquoise bags contain 3 posh indigo bags, 2 mirrored salmon bags, 2 dim magenta bags. +vibrant salmon bags contain 5 light tomato bags. +dark violet bags contain 3 light bronze bags, 5 dark gold bags, 1 striped magenta bag, 4 faded lavender bags. +faded maroon bags contain 5 plaid teal bags, 5 light turquoise bags, 5 posh white bags, 4 drab orange bags. +dotted magenta bags contain 4 shiny chartreuse bags, 5 drab turquoise bags, 4 bright tomato bags, 2 striped maroon bags. +dotted beige bags contain 5 clear white bags. +bright magenta bags contain no other bags. +dull red bags contain 2 muted lavender bags. +drab green bags contain 2 dotted cyan bags, 4 striped white bags, 3 muted magenta bags. +posh brown bags contain 5 muted lavender bags, 2 posh red bags, 5 drab magenta bags. +faded tan bags contain 3 bright purple bags, 5 plaid tomato bags, 3 dull teal bags. +faded brown bags contain 2 light silver bags, 5 mirrored tan bags, 2 clear tan bags, 2 drab gold bags. +striped black bags contain 3 vibrant yellow bags, 3 dull blue bags, 1 dull aqua bag, 5 dull teal bags. +faded white bags contain 1 muted maroon bag, 1 dark gray bag, 5 dark white bags. +drab aqua bags contain 3 muted white bags, 4 dark cyan bags, 5 pale tomato bags. +dull teal bags contain 2 plaid red bags, 5 mirrored teal bags. +vibrant plum bags contain 2 dim salmon bags, 3 light purple bags, 2 muted gray bags. +plaid crimson bags contain 5 shiny blue bags, 1 dull bronze bag. +wavy violet bags contain 3 dotted tomato bags, 3 striped brown bags. +clear cyan bags contain 1 drab crimson bag, 2 shiny lime bags. +shiny green bags contain 5 muted gray bags. +posh purple bags contain 2 vibrant white bags. +plaid lime bags contain 2 clear crimson bags, 3 bright magenta bags, 5 shiny silver bags, 1 posh blue bag. +dotted violet bags contain 1 dark teal bag, 5 faded crimson bags. +pale maroon bags contain 5 mirrored lime bags, 5 clear olive bags, 5 shiny orange bags, 4 mirrored fuchsia bags. +wavy indigo bags contain 5 plaid lime bags, 5 plaid fuchsia bags, 2 faded chartreuse bags, 4 dotted tomato bags. +faded silver bags contain 5 striped lavender bags, 4 muted lavender bags, 5 plaid brown bags. +drab violet bags contain 1 posh white bag. +bright white bags contain 3 light cyan bags, 1 dark indigo bag, 2 pale turquoise bags, 1 pale brown bag. +faded olive bags contain 2 clear lime bags, 4 muted chartreuse bags. +muted violet bags contain 1 clear lavender bag, 1 dark green bag, 3 dark cyan bags. +shiny gray bags contain 2 dull tan bags, 1 shiny olive bag. +plaid blue bags contain 3 dark aqua bags, 4 muted silver bags, 5 pale beige bags, 1 drab chartreuse bag. +posh fuchsia bags contain 5 posh red bags, 2 muted gray bags. +faded blue bags contain 1 plaid fuchsia bag, 1 mirrored turquoise bag, 2 plaid indigo bags, 1 dark aqua bag. +bright brown bags contain 4 drab violet bags, 5 shiny lime bags, 2 bright beige bags. +mirrored teal bags contain 5 dark gray bags. +bright violet bags contain 2 dotted crimson bags, 3 striped coral bags, 5 shiny maroon bags, 3 dull lavender bags. +striped plum bags contain 2 dim orange bags, 4 clear blue bags, 3 shiny violet bags. +plaid green bags contain 2 bright teal bags, 5 striped lime bags. +muted fuchsia bags contain 4 clear gold bags, 2 vibrant plum bags, 5 bright black bags. +bright purple bags contain 3 vibrant crimson bags, 1 dotted maroon bag, 4 dark gold bags. +faded cyan bags contain 4 dim teal bags. +wavy fuchsia bags contain 5 dull yellow bags, 2 light yellow bags, 5 bright black bags. +wavy salmon bags contain 1 shiny black bag, 3 bright teal bags, 5 clear yellow bags, 1 dull maroon bag. +dark fuchsia bags contain 1 muted violet bag, 3 light cyan bags. +clear salmon bags contain 4 light beige bags, 4 vibrant green bags, 3 pale yellow bags, 1 muted turquoise bag. +pale purple bags contain 1 bright blue bag, 5 pale bronze bags. +posh salmon bags contain 3 faded cyan bags, 4 posh maroon bags, 1 plaid green bag, 2 shiny silver bags. +bright blue bags contain 3 vibrant green bags, 2 drab gray bags. +shiny brown bags contain no other bags. +dark gold bags contain 5 vibrant aqua bags, 2 posh yellow bags. +mirrored violet bags contain 2 pale silver bags, 1 posh fuchsia bag. +bright fuchsia bags contain 3 muted brown bags, 3 plaid purple bags, 2 faded coral bags, 3 mirrored turquoise bags. +dim beige bags contain 2 dull lime bags, 3 dim gold bags, 3 plaid fuchsia bags, 1 posh yellow bag. +shiny white bags contain 1 pale fuchsia bag, 3 shiny beige bags, 3 posh aqua bags, 5 clear tan bags. +posh red bags contain 3 bright magenta bags, 2 dark aqua bags, 4 dark cyan bags. +vibrant fuchsia bags contain 3 striped indigo bags. +faded tomato bags contain 3 wavy olive bags, 5 shiny brown bags, 5 shiny tan bags. +dull purple bags contain 4 plaid teal bags, 4 dull indigo bags, 3 dull bronze bags, 4 faded tan bags. +shiny magenta bags contain 4 pale tomato bags, 4 shiny brown bags. +wavy tan bags contain no other bags. +dull salmon bags contain 3 faded crimson bags, 5 shiny fuchsia bags, 4 dotted silver bags. +pale magenta bags contain 2 faded chartreuse bags. +vibrant purple bags contain 3 muted orange bags, 5 dotted brown bags. +shiny turquoise bags contain 4 dotted turquoise bags, 1 dotted purple bag, 4 dim black bags. +shiny black bags contain 2 clear brown bags, 4 vibrant yellow bags, 1 vibrant aqua bag, 5 mirrored teal bags. +shiny cyan bags contain 3 dotted coral bags. +dim magenta bags contain 3 bright purple bags, 2 wavy white bags, 2 shiny fuchsia bags, 2 shiny yellow bags. +pale beige bags contain 3 dim orange bags, 5 wavy purple bags. +wavy bronze bags contain 5 posh yellow bags, 1 pale green bag, 5 dark cyan bags. +dull blue bags contain 4 wavy tan bags. +striped lime bags contain 5 striped crimson bags, 1 bright plum bag, 5 plaid yellow bags. +faded magenta bags contain 1 plaid green bag, 2 vibrant silver bags, 1 dim turquoise bag. +muted white bags contain 5 bright lime bags, 4 light fuchsia bags, 4 light violet bags, 4 dark aqua bags. +pale fuchsia bags contain 1 striped tomato bag, 1 drab crimson bag, 4 shiny yellow bags. +posh cyan bags contain 5 dark maroon bags. +dim indigo bags contain 3 dark gold bags, 5 bright maroon bags. +faded fuchsia bags contain 4 plaid tomato bags, 2 mirrored red bags. +shiny red bags contain 5 dull olive bags, 1 posh tan bag, 4 bright green bags. +posh maroon bags contain 4 clear blue bags, 5 muted chartreuse bags. +shiny indigo bags contain 4 wavy orange bags. +dim violet bags contain 1 dotted chartreuse bag, 2 mirrored lime bags, 1 drab chartreuse bag. +dim lime bags contain 4 posh fuchsia bags, 5 dull blue bags, 2 dull silver bags, 2 bright lime bags. +muted blue bags contain 5 mirrored lime bags. +dotted fuchsia bags contain 2 wavy magenta bags. +bright beige bags contain 1 mirrored maroon bag. +light bronze bags contain 1 posh maroon bag, 1 dotted maroon bag, 3 clear silver bags. +posh olive bags contain 2 wavy orange bags. +shiny salmon bags contain 2 light teal bags, 5 dark violet bags. +plaid tomato bags contain 5 shiny tan bags, 5 drab white bags. +striped blue bags contain 3 dark cyan bags, 2 pale magenta bags, 3 striped indigo bags. +bright lime bags contain 4 dark cyan bags. +vibrant crimson bags contain no other bags. +mirrored salmon bags contain 1 pale gray bag, 5 dark plum bags. +dim brown bags contain 4 faded fuchsia bags, 4 dull indigo bags. +clear aqua bags contain 1 mirrored black bag, 1 light bronze bag, 2 mirrored maroon bags, 4 mirrored white bags. +clear red bags contain 1 bright lavender bag. +dark maroon bags contain 1 light chartreuse bag. +bright silver bags contain 1 wavy tan bag, 3 plaid black bags, 2 dark gray bags. +faded lime bags contain 1 pale silver bag, 3 drab teal bags. +plaid lavender bags contain 1 plaid fuchsia bag. +faded yellow bags contain 4 dull blue bags. +dark blue bags contain 1 dotted red bag, 1 bright indigo bag, 2 posh tan bags. +light aqua bags contain 3 shiny olive bags, 2 dotted brown bags, 1 dull green bag. +striped gray bags contain 5 faded crimson bags, 4 clear white bags. +dark chartreuse bags contain 5 faded lime bags. +plaid chartreuse bags contain 3 shiny teal bags. +wavy gray bags contain 5 plaid lime bags, 5 wavy olive bags, 5 dim orange bags. +dull yellow bags contain 5 faded chartreuse bags, 2 clear crimson bags, 4 faded fuchsia bags. +muted magenta bags contain 4 mirrored teal bags, 3 drab silver bags, 3 drab lavender bags, 2 mirrored orange bags. +pale turquoise bags contain 3 bright lavender bags, 1 shiny tan bag, 4 posh teal bags, 2 posh cyan bags. +light turquoise bags contain 1 plaid gold bag. +pale brown bags contain 4 muted orange bags. +posh chartreuse bags contain 1 plaid lime bag, 4 shiny gray bags, 3 pale bronze bags, 3 vibrant bronze bags. +posh gray bags contain 3 dim salmon bags. +wavy tomato bags contain 3 vibrant salmon bags, 5 vibrant yellow bags, 2 vibrant green bags, 3 striped brown bags. +dotted indigo bags contain 5 shiny fuchsia bags, 1 posh lime bag, 1 muted beige bag. +pale lime bags contain 4 wavy fuchsia bags. +dull lime bags contain 2 light bronze bags, 3 light beige bags, 4 wavy tomato bags. +shiny olive bags contain 5 dull aqua bags, 5 muted gray bags, 5 posh olive bags. +muted teal bags contain 3 dull teal bags, 5 bright magenta bags. +dull white bags contain 5 striped yellow bags, 1 dim aqua bag. +shiny silver bags contain 4 shiny olive bags, 4 wavy orange bags, 2 mirrored red bags. +dim turquoise bags contain 4 drab gold bags. +clear brown bags contain no other bags. +mirrored olive bags contain 4 dim aqua bags. +striped purple bags contain 5 wavy tan bags. +faded violet bags contain 4 dull tan bags. +faded salmon bags contain 5 striped fuchsia bags, 1 muted lime bag. +mirrored yellow bags contain 2 dark orange bags. +wavy gold bags contain 2 muted salmon bags. +pale tomato bags contain 1 vibrant crimson bag, 5 light black bags, 3 dotted brown bags. +clear bronze bags contain 1 mirrored black bag, 3 wavy red bags, 4 faded white bags, 5 vibrant bronze bags. +mirrored silver bags contain 3 wavy salmon bags, 4 drab brown bags, 1 striped green bag, 4 mirrored lime bags. +dull bronze bags contain 1 dim orange bag, 1 light maroon bag, 5 wavy bronze bags, 2 posh blue bags. +posh lime bags contain 2 dark bronze bags. +light teal bags contain 4 dotted cyan bags, 4 dark crimson bags, 4 striped orange bags, 4 pale black bags. +dark lime bags contain 2 posh red bags. +vibrant yellow bags contain 4 dull indigo bags. +vibrant green bags contain 3 bright silver bags, 1 striped fuchsia bag, 5 dim tan bags. +mirrored lavender bags contain 1 dull maroon bag, 1 bright silver bag, 4 drab teal bags, 2 posh blue bags. +bright salmon bags contain 1 dark aqua bag. +clear green bags contain 3 vibrant blue bags, 4 dotted salmon bags, 5 striped violet bags. +clear lavender bags contain 2 faded silver bags, 5 dim tan bags, 4 drab white bags. +dim chartreuse bags contain 4 dark gray bags. +posh blue bags contain 1 clear silver bag, 5 clear crimson bags, 2 light beige bags. +dim maroon bags contain 5 dotted fuchsia bags. +muted crimson bags contain 1 dark cyan bag. +drab cyan bags contain 4 wavy brown bags. +faded lavender bags contain 3 posh coral bags, 2 dotted violet bags, 3 pale gray bags, 4 plaid beige bags. +dim aqua bags contain 5 dim tan bags, 3 posh olive bags. +posh magenta bags contain 3 bright orange bags, 4 bright salmon bags, 1 vibrant beige bag. +plaid purple bags contain 2 mirrored gray bags, 5 mirrored tan bags. +muted tomato bags contain 1 dotted tomato bag, 4 bright magenta bags, 1 striped turquoise bag. +dull black bags contain 5 wavy coral bags, 4 wavy beige bags, 1 drab lavender bag, 4 dark beige bags. +mirrored maroon bags contain 4 shiny teal bags, 3 light blue bags, 1 light aqua bag, 3 faded tan bags. +posh aqua bags contain 3 dotted orange bags, 4 wavy crimson bags, 5 pale magenta bags, 5 posh fuchsia bags. +muted lavender bags contain 4 faded green bags, 1 dark aqua bag, 4 posh maroon bags, 2 dark white bags. +posh tomato bags contain 2 posh black bags. +dull gold bags contain 1 faded turquoise bag, 4 drab brown bags, 4 shiny turquoise bags. +plaid violet bags contain 3 bright plum bags, 4 clear olive bags, 4 drab bronze bags. +pale silver bags contain 5 wavy olive bags, 5 dull indigo bags, 1 light plum bag, 4 dark gray bags. +dull brown bags contain 1 dim orange bag. +shiny beige bags contain 5 faded purple bags. +striped cyan bags contain 1 muted black bag, 4 dull aqua bags. +dotted green bags contain 4 wavy white bags, 2 shiny violet bags, 4 muted chartreuse bags. +dotted chartreuse bags contain 5 dull bronze bags. +plaid aqua bags contain 2 shiny indigo bags, 5 muted lavender bags, 3 light blue bags, 4 vibrant salmon bags. +mirrored beige bags contain 2 light white bags, 1 wavy coral bag. +light orange bags contain 3 drab salmon bags, 3 clear lavender bags, 4 dark beige bags, 1 clear purple bag. +dark tan bags contain 1 posh olive bag. +muted lime bags contain 3 faded chartreuse bags, 4 muted silver bags, 3 vibrant salmon bags, 1 mirrored blue bag. +posh gold bags contain 5 vibrant magenta bags. +faded beige bags contain 5 faded black bags, 4 clear coral bags, 4 bright olive bags, 1 faded lime bag. +vibrant turquoise bags contain 3 clear cyan bags, 1 dotted fuchsia bag. +faded bronze bags contain 4 posh teal bags, 3 plaid tomato bags, 4 dark bronze bags. +shiny blue bags contain 3 drab indigo bags, 1 dark lime bag. +plaid yellow bags contain 1 plaid lime bag. +shiny aqua bags contain 1 vibrant tomato bag, 4 dark aqua bags, 5 vibrant cyan bags, 4 striped coral bags. +mirrored indigo bags contain 5 vibrant turquoise bags. +wavy cyan bags contain 1 light yellow bag, 4 faded fuchsia bags, 2 clear silver bags, 3 vibrant fuchsia bags. +dull gray bags contain 2 mirrored turquoise bags, 2 posh yellow bags. +dim yellow bags contain 4 light silver bags. +striped crimson bags contain 3 dim salmon bags. +pale coral bags contain 4 vibrant violet bags, 4 posh teal bags, 3 drab aqua bags. +faded aqua bags contain 3 bright magenta bags, 4 muted aqua bags, 3 light salmon bags, 3 light black bags. +drab orange bags contain 2 drab purple bags, 5 light black bags, 5 dull blue bags, 1 bright purple bag. +drab bronze bags contain 3 clear violet bags, 3 drab crimson bags, 3 dotted yellow bags, 5 muted salmon bags. +drab blue bags contain 3 faded violet bags, 4 bright lavender bags, 2 vibrant cyan bags. +pale olive bags contain 4 shiny yellow bags, 1 dull yellow bag, 2 striped tomato bags. +light salmon bags contain 2 shiny gold bags, 2 light silver bags, 4 wavy magenta bags. +wavy brown bags contain 4 dim indigo bags, 3 pale olive bags, 3 mirrored orange bags. +vibrant beige bags contain 5 light lavender bags, 3 wavy bronze bags, 1 plaid yellow bag, 2 dark aqua bags. +clear tan bags contain 3 posh fuchsia bags, 1 pale fuchsia bag. +dotted turquoise bags contain 3 light maroon bags. +dull magenta bags contain 2 dark tomato bags. +dull chartreuse bags contain 5 light chartreuse bags, 2 dotted chartreuse bags. +bright red bags contain 1 dotted brown bag, 1 posh yellow bag, 5 light white bags, 4 shiny maroon bags. +bright bronze bags contain 4 bright salmon bags, 4 plaid bronze bags, 2 dim chartreuse bags. +vibrant gold bags contain 2 faded purple bags, 3 mirrored maroon bags, 3 dull gray bags. +vibrant cyan bags contain 2 faded olive bags, 4 dull silver bags, 3 mirrored lime bags, 4 faded red bags. +mirrored plum bags contain 3 dark orange bags, 5 plaid lavender bags, 5 dim red bags. +clear white bags contain 3 striped beige bags. +drab fuchsia bags contain 4 striped magenta bags, 2 vibrant violet bags, 4 pale aqua bags. +dark purple bags contain 5 striped violet bags. +mirrored tomato bags contain 5 drab olive bags. +dull olive bags contain 4 wavy purple bags. +wavy maroon bags contain 4 pale gold bags. +vibrant blue bags contain 1 faded lime bag, 4 light plum bags. +clear teal bags contain 4 dark green bags, 5 clear brown bags. +clear beige bags contain 4 shiny cyan bags, 3 striped salmon bags. +drab indigo bags contain 5 drab tan bags, 4 shiny black bags, 4 striped brown bags. +muted bronze bags contain 4 dark chartreuse bags, 5 pale crimson bags, 4 vibrant gold bags. +muted olive bags contain 3 wavy olive bags, 5 dark bronze bags, 4 bright aqua bags, 1 dotted yellow bag. +dull beige bags contain 1 dull purple bag. +dotted yellow bags contain 3 dim plum bags, 2 plaid lavender bags. +wavy lavender bags contain 1 vibrant violet bag, 4 posh blue bags, 1 posh plum bag. +dim fuchsia bags contain 5 pale yellow bags, 4 faded plum bags, 5 bright lime bags. +plaid gray bags contain 5 dark violet bags, 2 dotted crimson bags, 4 dull fuchsia bags, 1 drab magenta bag. +vibrant coral bags contain 2 shiny cyan bags, 4 pale magenta bags, 5 striped coral bags, 3 pale teal bags. +drab yellow bags contain 4 clear orange bags, 5 faded fuchsia bags. +dark red bags contain 5 mirrored maroon bags, 3 clear blue bags, 2 striped crimson bags, 2 dotted violet bags. +mirrored cyan bags contain 5 dotted maroon bags, 5 posh turquoise bags, 2 faded gray bags. +muted yellow bags contain 1 light cyan bag, 2 dim orange bags, 5 dull olive bags, 5 light green bags. +wavy aqua bags contain 2 muted cyan bags, 4 mirrored green bags, 5 muted tomato bags. +vibrant lavender bags contain 1 dotted gold bag, 1 light chartreuse bag, 3 mirrored gray bags. +bright black bags contain 1 striped lavender bag, 2 shiny tan bags, 4 bright lime bags. +wavy chartreuse bags contain 4 mirrored red bags. +dull turquoise bags contain 5 faded red bags, 1 light brown bag, 1 clear magenta bag. +dull silver bags contain 4 dark gray bags, 1 faded green bag. +pale black bags contain 1 plaid indigo bag, 3 light tomato bags, 4 drab blue bags. +clear tomato bags contain 1 dim tan bag, 1 clear lavender bag, 1 striped fuchsia bag, 5 clear orange bags. +dark cyan bags contain 4 shiny brown bags. +pale blue bags contain 1 clear green bag. +dotted lavender bags contain 3 dotted maroon bags, 5 wavy salmon bags, 2 pale tomato bags, 5 mirrored blue bags. +pale orange bags contain 4 pale silver bags, 4 striped lime bags. +drab chartreuse bags contain 2 dark gold bags, 5 clear crimson bags, 3 dull green bags. +striped violet bags contain 4 plaid lime bags. +muted gold bags contain no other bags. +mirrored gray bags contain 1 light green bag, 1 striped beige bag. +bright lavender bags contain 2 clear blue bags. +striped gold bags contain 3 muted turquoise bags. +dim white bags contain 1 vibrant lavender bag. +wavy beige bags contain 4 light chartreuse bags, 5 dark lime bags. +dim tomato bags contain 2 wavy aqua bags, 3 faded salmon bags. +light blue bags contain 2 wavy purple bags, 1 dull olive bag. +drab brown bags contain 5 drab magenta bags, 2 muted teal bags. +wavy olive bags contain 3 pale green bags, 5 muted gray bags. +bright chartreuse bags contain 1 clear yellow bag, 2 dotted olive bags, 1 posh olive bag. +posh violet bags contain 5 muted tomato bags, 5 light aqua bags, 3 pale cyan bags, 2 mirrored chartreuse bags. +dotted blue bags contain 4 plaid yellow bags, 3 vibrant bronze bags, 2 dull maroon bags, 3 shiny silver bags. +pale white bags contain 3 plaid brown bags, 2 mirrored aqua bags, 2 dim turquoise bags. +dull lavender bags contain 1 light blue bag, 5 drab tan bags, 3 light yellow bags. +pale cyan bags contain 5 pale green bags, 5 dull tomato bags, 4 vibrant orange bags. +mirrored tan bags contain 1 mirrored blue bag, 5 wavy purple bags. +plaid maroon bags contain 5 bright orange bags, 1 dull fuchsia bag, 5 dull indigo bags, 4 light white bags. +drab plum bags contain 5 pale silver bags, 1 clear yellow bag, 5 dotted fuchsia bags. +muted aqua bags contain 2 posh blue bags, 3 muted chartreuse bags, 1 drab tan bag, 3 dotted brown bags. +striped lavender bags contain 3 posh yellow bags, 5 drab white bags, 1 muted gold bag. +posh bronze bags contain 1 mirrored lime bag, 2 muted cyan bags, 3 muted aqua bags. +dotted brown bags contain 1 dotted orange bag, 3 striped blue bags, 3 dotted teal bags, 4 wavy magenta bags. +light chartreuse bags contain no other bags. +dotted purple bags contain 3 muted lavender bags. +vibrant violet bags contain 3 light violet bags. +dark green bags contain 3 mirrored teal bags, 3 bright magenta bags, 2 light chartreuse bags. +faded indigo bags contain 3 faded fuchsia bags, 4 dim magenta bags. +bright cyan bags contain 4 vibrant olive bags, 4 faded olive bags, 1 posh teal bag. +drab white bags contain no other bags. +clear magenta bags contain 1 dotted maroon bag, 2 wavy olive bags, 5 drab white bags. +light yellow bags contain 4 shiny brown bags, 4 light fuchsia bags, 1 mirrored turquoise bag, 2 drab teal bags. +dark beige bags contain 4 dim crimson bags, 5 mirrored turquoise bags, 3 posh yellow bags, 1 dull chartreuse bag. +dark teal bags contain 5 mirrored tan bags, 5 vibrant tomato bags, 2 bright violet bags, 2 striped silver bags. +pale plum bags contain 2 drab white bags. +light red bags contain 2 striped blue bags, 2 bright violet bags, 4 clear orange bags. +plaid brown bags contain 4 light maroon bags, 5 dull bronze bags, 3 plaid black bags. +plaid bronze bags contain 4 muted salmon bags, 1 light violet bag, 4 plaid black bags. +bright orange bags contain 5 light green bags, 2 wavy plum bags, 5 faded coral bags. +plaid black bags contain 5 dark green bags, 3 dull indigo bags, 3 dim tan bags. +shiny lime bags contain 5 bright lime bags. +shiny fuchsia bags contain 2 dotted tan bags, 3 drab white bags. +bright gold bags contain 1 drab magenta bag, 4 pale salmon bags. +shiny gold bags contain 1 drab white bag, 2 wavy purple bags, 2 muted gray bags, 5 clear crimson bags. +plaid beige bags contain 3 dotted yellow bags. +vibrant silver bags contain 2 muted gold bags, 5 dim teal bags, 4 mirrored white bags, 2 clear blue bags. +dotted black bags contain 1 wavy crimson bag, 5 vibrant purple bags. +mirrored brown bags contain 4 drab aqua bags, 4 dark teal bags, 5 striped plum bags. +dotted red bags contain 5 bright lime bags, 5 vibrant magenta bags, 1 striped turquoise bag. +bright tan bags contain 2 dull yellow bags, 2 posh tomato bags. +striped aqua bags contain 3 clear blue bags, 1 dark maroon bag. +dotted coral bags contain 1 vibrant silver bag, 3 dark green bags, 4 posh gray bags, 2 light red bags. +mirrored lime bags contain 3 mirrored white bags, 1 plaid tomato bag, 2 shiny yellow bags, 2 vibrant black bags. +dark gray bags contain 3 faded green bags, 3 vibrant crimson bags. +wavy lime bags contain 5 wavy salmon bags, 2 faded tomato bags. +dotted lime bags contain 5 drab brown bags, 1 faded salmon bag, 2 wavy violet bags, 4 posh olive bags. +light black bags contain 5 striped indigo bags. +shiny yellow bags contain 5 wavy tan bags, 5 drab white bags, 4 posh olive bags. +bright yellow bags contain 3 posh red bags, 2 plaid black bags. +dull tan bags contain 4 clear brown bags, 3 wavy tan bags. +shiny tomato bags contain 2 shiny orange bags, 4 light lavender bags, 1 plaid lavender bag. +vibrant aqua bags contain 5 pale green bags, 3 drab crimson bags, 2 shiny brown bags. +striped salmon bags contain 2 posh orange bags. +light silver bags contain 1 shiny yellow bag, 4 mirrored turquoise bags, 1 bright coral bag, 2 posh maroon bags. +striped fuchsia bags contain 3 drab white bags, 3 faded chartreuse bags, 4 vibrant black bags, 3 wavy tan bags. +bright tomato bags contain 3 light beige bags, 4 drab teal bags. +shiny plum bags contain 4 clear bronze bags. +vibrant red bags contain 3 bright magenta bags. +mirrored orange bags contain 2 mirrored white bags, 3 dotted brown bags, 3 bright silver bags, 4 pale teal bags. +dull indigo bags contain no other bags. +wavy yellow bags contain 4 wavy white bags. +muted turquoise bags contain 2 posh red bags, 3 dark green bags, 4 mirrored white bags. +striped indigo bags contain 3 dark cyan bags, 5 clear blue bags, 2 faded chartreuse bags. +mirrored green bags contain 4 mirrored chartreuse bags, 3 striped red bags. +plaid white bags contain 1 vibrant salmon bag, 1 dark yellow bag, 2 vibrant violet bags. +dark plum bags contain 4 muted coral bags, 4 mirrored blue bags, 1 vibrant aqua bag. +drab turquoise bags contain 1 dotted purple bag, 1 light plum bag. +light maroon bags contain 2 wavy purple bags, 2 dim orange bags, 1 mirrored white bag, 3 striped tomato bags. +shiny maroon bags contain 2 bright blue bags. +drab crimson bags contain 1 bright magenta bag, 3 drab white bags. +dark aqua bags contain 3 shiny brown bags, 5 dark gray bags. +posh turquoise bags contain 2 shiny gray bags. +muted indigo bags contain 4 wavy purple bags. +dotted salmon bags contain 1 vibrant violet bag, 1 mirrored lavender bag. +plaid indigo bags contain 2 wavy indigo bags, 2 dark white bags, 3 wavy tan bags, 3 vibrant crimson bags. +muted brown bags contain 3 posh yellow bags, 4 shiny lime bags, 5 striped lavender bags. +vibrant gray bags contain 1 mirrored silver bag, 2 light coral bags, 1 faded gold bag, 1 dull fuchsia bag. +drab tomato bags contain 1 wavy tan bag, 1 shiny tan bag, 1 clear crimson bag. +wavy white bags contain 3 muted blue bags, 2 wavy plum bags, 4 dim silver bags, 3 mirrored tan bags. +shiny lavender bags contain 1 posh coral bag, 2 dotted crimson bags, 2 plaid red bags, 1 striped silver bag. +dull fuchsia bags contain 4 light bronze bags, 3 clear gray bags, 1 bright coral bag. +drab teal bags contain 5 muted chartreuse bags, 4 dull silver bags, 5 vibrant black bags, 3 shiny olive bags. +clear crimson bags contain 4 clear brown bags, 3 drab crimson bags, 4 clear blue bags, 1 vibrant black bag. +posh beige bags contain 5 plaid teal bags. +clear silver bags contain 3 plaid tomato bags, 3 bright silver bags, 1 mirrored white bag. +mirrored red bags contain 2 striped indigo bags, 2 drab teal bags. +posh indigo bags contain 3 faded red bags. +dark silver bags contain 5 wavy tan bags, 2 dotted maroon bags. +drab red bags contain 2 dotted chartreuse bags, 3 mirrored tan bags, 5 pale plum bags. +plaid turquoise bags contain 4 dim silver bags, 1 bright orange bag. +dim blue bags contain 1 muted lavender bag, 1 wavy plum bag. +plaid coral bags contain 2 shiny coral bags. +striped silver bags contain 2 muted brown bags. +vibrant tomato bags contain 1 muted black bag. +dark turquoise bags contain 2 light silver bags. +vibrant lime bags contain 2 light beige bags, 3 bright green bags, 5 faded purple bags. +mirrored chartreuse bags contain 2 wavy tan bags, 5 dim tan bags. +light plum bags contain 5 faded green bags. +dim tan bags contain 1 faded chartreuse bag, 2 clear brown bags, 1 faded green bag, 2 muted gold bags. +shiny bronze bags contain 5 drab aqua bags. +dotted tomato bags contain 4 wavy magenta bags. +mirrored crimson bags contain 1 dim bronze bag. +light crimson bags contain 3 posh red bags. +dull coral bags contain 3 striped crimson bags, 4 mirrored salmon bags. +drab lavender bags contain 3 dim salmon bags. +dotted crimson bags contain 3 dark cyan bags, 4 posh blue bags, 2 light fuchsia bags. +dotted tan bags contain 2 posh fuchsia bags, 4 dim black bags. +dark coral bags contain 2 mirrored green bags, 4 shiny white bags, 2 shiny tomato bags. +striped orange bags contain 1 muted violet bag, 5 pale cyan bags, 2 drab tomato bags, 3 faded violet bags. +pale aqua bags contain 3 shiny fuchsia bags, 4 shiny violet bags. +wavy plum bags contain 4 light chartreuse bags, 5 vibrant tan bags, 4 muted lime bags. +mirrored turquoise bags contain 4 shiny brown bags, 4 drab tan bags. +dark magenta bags contain 5 faded violet bags, 2 posh lavender bags. +striped bronze bags contain 3 light silver bags, 3 mirrored brown bags, 3 posh purple bags, 4 drab turquoise bags. +faded red bags contain 2 dark cyan bags, 2 striped tan bags, 4 mirrored violet bags. +faded turquoise bags contain 1 striped crimson bag. +clear gold bags contain 3 clear crimson bags, 5 faded green bags, 4 dim tan bags. +clear coral bags contain 3 striped salmon bags. +faded gray bags contain 4 light salmon bags, 5 clear orange bags, 1 dim yellow bag, 2 wavy green bags. +posh lavender bags contain 2 clear silver bags, 1 wavy indigo bag, 4 faded brown bags, 2 light white bags. +pale red bags contain 3 clear orange bags. +dim lavender bags contain 1 posh silver bag. +vibrant orange bags contain 2 pale magenta bags. +pale gray bags contain 2 dark aqua bags, 2 mirrored turquoise bags, 2 striped fuchsia bags, 5 wavy purple bags. +pale teal bags contain 2 striped brown bags, 4 shiny brown bags. +muted tan bags contain 3 dotted purple bags, 5 clear blue bags, 5 bright plum bags. +dotted cyan bags contain 1 mirrored chartreuse bag, 2 dotted gray bags, 5 pale tomato bags, 1 mirrored lime bag. +dark brown bags contain 4 vibrant orange bags, 3 faded olive bags, 5 posh blue bags. +dull orange bags contain 5 posh coral bags, 5 vibrant green bags, 3 dull maroon bags, 1 striped tomato bag. +plaid silver bags contain 1 muted turquoise bag, 1 wavy green bag. +dull crimson bags contain 4 faded red bags, 1 dotted plum bag, 2 plaid orange bags, 1 posh yellow bag. +muted orange bags contain 4 pale yellow bags, 1 dark maroon bag, 5 mirrored white bags. +wavy black bags contain 4 mirrored blue bags, 4 drab chartreuse bags, 4 dull aqua bags. +light magenta bags contain 2 muted coral bags, 3 wavy violet bags. +faded crimson bags contain 2 dim orange bags, 3 vibrant crimson bags, 4 clear lime bags, 5 wavy olive bags. +light fuchsia bags contain 2 dull green bags, 4 dull indigo bags. +mirrored black bags contain 1 wavy magenta bag, 3 light bronze bags, 3 dull teal bags. +striped tan bags contain 5 vibrant yellow bags, 3 dull silver bags, 5 mirrored teal bags. +dark crimson bags contain 1 mirrored teal bag, 2 muted maroon bags, 5 dull green bags. +light indigo bags contain 5 dotted purple bags. +light brown bags contain 4 dark fuchsia bags, 1 bright olive bag. +wavy purple bags contain 3 vibrant black bags, 5 dull teal bags, 1 bright magenta bag. +posh white bags contain 5 muted purple bags, 5 drab silver bags. +faded gold bags contain 2 dull teal bags, 5 muted orange bags, 3 mirrored lavender bags, 2 clear orange bags. +clear maroon bags contain 2 dim crimson bags, 3 dim maroon bags, 5 wavy salmon bags, 5 mirrored black bags. +bright maroon bags contain 5 dark bronze bags, 4 pale coral bags. +clear turquoise bags contain 1 muted gold bag. +bright coral bags contain 3 striped lavender bags, 4 drab tomato bags, 1 bright lime bag. +wavy teal bags contain 3 faded tan bags. +mirrored gold bags contain 4 faded violet bags. +dark orange bags contain 5 muted purple bags, 1 drab turquoise bag, 5 pale beige bags. +dull green bags contain 1 faded chartreuse bag. +posh plum bags contain 1 dull turquoise bag. +plaid red bags contain 4 wavy orange bags. +faded green bags contain 2 wavy tan bags, 2 muted gold bags. +drab maroon bags contain 5 striped fuchsia bags, 5 light indigo bags. +clear blue bags contain 5 bright magenta bags, 2 muted gold bags, 1 faded chartreuse bag. +shiny purple bags contain 3 mirrored lavender bags, 3 light crimson bags, 2 light turquoise bags, 1 drab aqua bag. +wavy silver bags contain 5 mirrored tan bags, 2 dotted crimson bags, 3 pale magenta bags, 5 vibrant plum bags. +drab gray bags contain 4 mirrored red bags, 4 plaid yellow bags, 4 muted silver bags, 3 light black bags. +striped maroon bags contain 5 dull teal bags, 1 bright indigo bag, 3 clear gray bags. +striped tomato bags contain 2 clear gold bags, 4 plaid red bags, 1 vibrant yellow bag, 2 dark aqua bags. +vibrant brown bags contain 4 vibrant orange bags. +wavy green bags contain 5 striped coral bags, 5 clear brown bags, 4 drab gold bags, 3 faded green bags. +dark tomato bags contain 3 wavy gray bags, 4 clear yellow bags, 4 light fuchsia bags, 1 drab plum bag. +plaid gold bags contain 3 faded red bags. +light tomato bags contain 1 striped black bag. +clear olive bags contain 2 drab lime bags. +dim red bags contain 4 light yellow bags, 5 vibrant yellow bags, 3 dark green bags, 2 vibrant aqua bags. +vibrant indigo bags contain 1 vibrant silver bag. +pale crimson bags contain 4 wavy green bags, 1 striped fuchsia bag, 4 posh indigo bags. +clear lime bags contain 1 wavy tan bag. +muted gray bags contain 1 faded green bag, 2 dull silver bags, 4 drab crimson bags. +striped chartreuse bags contain 2 vibrant silver bags, 2 shiny tan bags, 3 muted silver bags, 2 shiny maroon bags. +muted coral bags contain 5 dark maroon bags, 1 clear lavender bag, 4 bright teal bags, 4 faded cyan bags. +posh coral bags contain 2 clear brown bags. +bright crimson bags contain 2 vibrant salmon bags. +muted plum bags contain 1 pale silver bag. +dull plum bags contain 2 shiny cyan bags, 3 faded salmon bags. +bright olive bags contain 3 dim brown bags, 5 dark brown bags, 1 muted white bag. +clear plum bags contain 5 clear chartreuse bags, 5 striped aqua bags. +muted chartreuse bags contain 1 faded crimson bag, 1 dark cyan bag. +muted purple bags contain 1 bright plum bag, 2 light olive bags, 2 striped red bags, 4 pale magenta bags. +posh yellow bags contain 4 wavy purple bags, 3 dark green bags, 3 striped tomato bags, 3 light chartreuse bags. +light violet bags contain 5 plaid black bags, 1 muted brown bag, 1 vibrant aqua bag. +drab olive bags contain 1 dim brown bag, 2 dull blue bags. +pale indigo bags contain 3 dark magenta bags, 2 dull blue bags. +mirrored blue bags contain 5 clear crimson bags, 1 clear orange bag, 3 drab tomato bags. +striped green bags contain 2 shiny black bags, 4 dotted chartreuse bags, 4 wavy white bags. +plaid teal bags contain 4 dark green bags, 5 muted chartreuse bags, 5 vibrant aqua bags, 4 dotted olive bags. +faded plum bags contain 2 drab white bags, 4 light blue bags, 2 clear lavender bags, 3 vibrant white bags. +dim green bags contain 2 faded green bags, 2 bright magenta bags. +dark lavender bags contain 2 muted lime bags, 2 faded tomato bags, 5 wavy purple bags, 3 light olive bags. +dim purple bags contain 4 dotted plum bags. +dark salmon bags contain 1 dull violet bag, 3 bright indigo bags. +dim cyan bags contain 5 dim crimson bags, 2 clear brown bags, 1 muted brown bag, 4 light silver bags. \ No newline at end of file diff --git a/7/part1.py b/7/part1.py new file mode 100644 index 0000000..4f00ce5 --- /dev/null +++ b/7/part1.py @@ -0,0 +1,32 @@ +import re + +rawRules = "" +with open("input.txt", "r") as f: + rawRules = f.read() + +rules = {} +for rawRule in rawRules.split("\n"): + bags = re.findall(r"(\d+)? ?(\w+ \w+) bag", rawRule) + targetColor = bags[0][1] + + rules[targetColor] = {} + if (bags[1][1] != "no other"): + for bag in bags[1:]: + rules[targetColor][bag[1]] = int(bag[0]) + +shinyGoldMemo = {} +def doesContainShinyGold(color): + if shinyGoldMemo.get(color) == None: + for nestedColor in rules[color].keys(): + if nestedColor == "shiny gold" or doesContainShinyGold(nestedColor): + shinyGoldMemo[color] = True + break + if shinyGoldMemo.get(color) == None: + shinyGoldMemo[color] = False + return shinyGoldMemo[color] + +# Populate memo +for color in rules.keys(): + doesContainShinyGold(color) + +print(sum(shinyGoldMemo.values())) \ No newline at end of file diff --git a/7/part2.py b/7/part2.py new file mode 100644 index 0000000..d154f32 --- /dev/null +++ b/7/part2.py @@ -0,0 +1,25 @@ +import re + +rawRules = "" +with open("input.txt", "r") as f: + rawRules = f.read() + +rules = {} +for rawRule in rawRules.split("\n"): + bags = re.findall(r"(\d+)? ?(\w+ \w+) bag", rawRule) + targetColor = bags[0][1] + + rules[targetColor] = {} + if (bags[1][1] != "no other"): + for bag in bags[1:]: + rules[targetColor][bag[1]] = int(bag[0]) + +countMemo = {} +def getTotalBagCount(color): + if countMemo.get(color) == None: + countMemo[color] = 0 + for bag in rules[color].items(): + countMemo[color] += (getTotalBagCount(bag[0]) + 1) * bag[1] + return countMemo[color] + +print(getTotalBagCount("shiny gold")) \ No newline at end of file diff --git a/7/test.txt b/7/test.txt new file mode 100644 index 0000000..38b2f50 --- /dev/null +++ b/7/test.txt @@ -0,0 +1,7 @@ +shiny gold bags contain 2 dark red bags. +dark red bags contain 2 dark orange bags. +dark orange bags contain 2 dark yellow bags. +dark yellow bags contain 2 dark green bags. +dark green bags contain 2 dark blue bags. +dark blue bags contain 2 dark violet bags. +dark violet bags contain no other bags. \ No newline at end of file diff --git a/8/input.txt b/8/input.txt new file mode 100644 index 0000000..0eeee4e --- /dev/null +++ b/8/input.txt @@ -0,0 +1,626 @@ +jmp +149 +acc -11 +nop +95 +acc -6 +jmp +196 +acc +2 +acc -6 +acc +38 +acc +18 +jmp +246 +acc +43 +acc +37 +acc -1 +jmp +390 +acc +32 +acc -15 +jmp +487 +jmp +382 +jmp +71 +jmp +331 +acc -3 +acc -12 +acc +4 +jmp +417 +acc +30 +acc +20 +jmp +410 +acc +22 +acc +25 +acc +19 +acc +5 +jmp +405 +acc +15 +acc +33 +acc +7 +acc -18 +jmp +463 +acc +25 +acc +8 +acc +1 +jmp +64 +jmp +1 +jmp +562 +jmp +4 +acc +21 +acc +12 +jmp +467 +nop +197 +acc +32 +jmp +7 +acc +2 +jmp +352 +acc +15 +jmp +289 +acc +39 +jmp +448 +jmp +227 +acc +17 +acc +4 +jmp +326 +acc -1 +nop +167 +acc +30 +nop +471 +jmp +101 +acc +45 +nop +276 +acc +12 +jmp +215 +nop +80 +acc +23 +acc +31 +jmp +104 +acc +39 +acc +15 +jmp +40 +nop +433 +acc +21 +acc +22 +acc +37 +jmp +421 +acc +14 +jmp -30 +acc +42 +acc +38 +jmp +203 +acc -8 +acc +27 +jmp +102 +acc -5 +acc +0 +acc +18 +acc +26 +jmp +212 +acc +25 +acc +18 +jmp +209 +acc +18 +acc +44 +acc +47 +nop -40 +jmp +372 +acc +29 +jmp +384 +acc +39 +acc -11 +acc +43 +jmp +406 +acc +2 +nop +439 +jmp +343 +acc +29 +acc +18 +jmp +457 +jmp -31 +jmp +146 +acc +12 +acc +26 +nop +98 +jmp +125 +acc +6 +acc +35 +acc +48 +acc +44 +jmp +497 +acc +17 +acc -8 +jmp +223 +acc +47 +jmp +405 +jmp +212 +jmp +317 +acc -13 +acc -6 +jmp +94 +acc +47 +acc +50 +acc -16 +acc +38 +jmp +290 +jmp +383 +nop -44 +acc +38 +nop +418 +acc +42 +jmp +233 +nop -94 +acc +46 +jmp +413 +acc +10 +acc -6 +jmp +410 +acc +30 +jmp -93 +acc -13 +jmp +6 +acc -16 +acc +18 +nop +403 +acc +0 +jmp +68 +acc +45 +jmp +302 +acc +5 +jmp +26 +acc -5 +acc +49 +jmp +412 +acc +3 +acc +14 +jmp +278 +acc +6 +acc +4 +jmp -58 +acc +14 +jmp -60 +acc -12 +acc +23 +jmp +225 +acc +9 +acc +17 +acc -10 +acc -13 +jmp +216 +acc -8 +nop +363 +jmp +84 +nop +300 +acc -15 +jmp +415 +acc +17 +acc -11 +nop +96 +jmp +377 +nop +259 +acc +4 +jmp +327 +acc +0 +jmp +149 +jmp +12 +acc +23 +acc +43 +acc +2 +jmp +1 +jmp +400 +acc +24 +jmp +114 +acc +3 +acc -13 +jmp +149 +jmp +100 +jmp +1 +jmp +157 +acc +23 +acc -15 +jmp -139 +nop -85 +jmp +201 +acc -2 +acc +39 +acc +30 +nop -93 +jmp -11 +acc +46 +jmp +285 +jmp +1 +acc +41 +jmp +115 +acc +48 +acc -12 +acc -17 +jmp -15 +nop +82 +acc +25 +jmp -151 +acc +20 +acc -14 +acc +9 +acc -9 +jmp +284 +acc +27 +acc +38 +acc +50 +jmp +145 +nop +279 +jmp -55 +nop +245 +jmp +254 +acc +4 +jmp +368 +nop -119 +acc -11 +acc +16 +acc +19 +jmp -54 +nop -186 +nop -187 +acc +9 +acc +44 +jmp -222 +jmp +253 +nop -234 +acc +33 +acc +35 +acc -17 +jmp +11 +acc +2 +acc +41 +acc +47 +jmp +310 +acc +0 +acc -8 +acc +1 +jmp +55 +acc -1 +jmp -257 +acc +7 +acc +44 +nop +253 +acc +41 +jmp +302 +acc +16 +jmp -185 +jmp +140 +jmp +1 +nop +3 +acc +35 +jmp -267 +acc +6 +jmp -269 +jmp +211 +acc +30 +acc +14 +acc +16 +acc +41 +jmp -47 +jmp -192 +nop -21 +acc -1 +jmp +192 +acc -6 +acc +15 +acc +3 +nop -247 +jmp -88 +jmp +164 +acc +47 +nop +43 +acc +40 +jmp +151 +jmp +85 +jmp +1 +acc +40 +jmp -257 +acc +13 +acc +13 +jmp -256 +acc +25 +acc +39 +jmp +260 +acc +13 +acc -18 +acc -19 +acc -14 +jmp -10 +acc -16 +acc +9 +jmp -199 +nop +185 +acc +38 +jmp -261 +nop +200 +acc -18 +nop +115 +acc +36 +jmp -259 +acc +47 +acc -2 +acc +9 +jmp -139 +nop -117 +jmp -13 +jmp +1 +jmp +247 +acc +19 +acc +49 +jmp +177 +acc -1 +jmp +249 +jmp -218 +acc +12 +acc +33 +jmp +108 +jmp -48 +nop -205 +acc +32 +jmp -159 +jmp -129 +acc +32 +jmp +1 +jmp +249 +nop +75 +acc +17 +acc -16 +jmp +253 +acc -9 +jmp -12 +acc +15 +jmp -14 +acc +13 +acc -8 +nop -13 +jmp +27 +nop -336 +acc +33 +acc +10 +acc -1 +jmp -350 +nop -134 +acc -11 +jmp +5 +acc +10 +acc +13 +acc +13 +jmp -249 +acc +8 +jmp -215 +jmp +49 +acc +35 +acc +28 +jmp -54 +acc +14 +nop -264 +jmp +1 +jmp -166 +jmp -291 +acc +9 +acc +43 +jmp -301 +nop +149 +acc -9 +jmp -81 +jmp -287 +acc +9 +acc +35 +acc -12 +jmp -295 +acc +46 +jmp -394 +acc +29 +acc +19 +acc +9 +jmp -58 +acc +7 +acc +32 +nop -261 +acc +44 +jmp -365 +jmp +1 +jmp +120 +acc +37 +nop -177 +jmp +101 +acc +42 +acc +13 +acc +36 +jmp -343 +acc +45 +jmp -408 +acc +23 +acc +0 +jmp -66 +jmp +1 +acc +34 +acc +19 +jmp +104 +jmp +1 +acc +36 +jmp -141 +jmp -44 +acc +9 +acc +30 +acc +18 +acc +0 +jmp -303 +jmp +1 +acc +12 +jmp +66 +acc +0 +jmp +82 +acc +43 +acc +18 +jmp +49 +acc -16 +acc -3 +acc +0 +jmp -249 +acc -2 +nop +81 +jmp +40 +jmp +94 +acc -16 +acc +1 +jmp -445 +jmp +1 +acc +22 +jmp -130 +acc +44 +jmp -73 +acc +3 +acc +5 +jmp -121 +jmp -352 +jmp -163 +acc +15 +acc +47 +nop +141 +jmp +140 +acc -18 +nop -289 +acc +16 +jmp -476 +acc -19 +nop +134 +acc -10 +acc +37 +jmp -13 +jmp -359 +acc +32 +acc +14 +jmp -306 +acc +25 +acc +30 +jmp -441 +acc +44 +acc +14 +acc +12 +acc +19 +jmp -387 +jmp -12 +jmp -180 +jmp -113 +jmp -29 +acc +34 +acc -13 +acc -12 +nop +73 +jmp -263 +jmp -373 +jmp -360 +acc +38 +nop -123 +jmp -176 +nop -155 +acc -11 +acc +32 +nop +54 +jmp -461 +acc +31 +acc +10 +acc -7 +acc -19 +jmp -212 +acc +41 +acc +4 +nop -2 +jmp -483 +acc +16 +acc +42 +acc -15 +jmp -286 +jmp -122 +acc -4 +jmp -436 +acc +27 +jmp -508 +acc +38 +nop -309 +jmp +10 +acc +31 +acc +18 +acc +5 +jmp -119 +acc +8 +acc -7 +acc -16 +acc +18 +jmp -416 +acc -15 +acc +1 +acc +30 +acc +8 +jmp -476 +jmp -298 +acc +29 +acc +24 +acc -9 +acc +35 +jmp -438 +nop -5 +jmp -100 +acc +5 +acc +3 +acc +5 +acc -4 +jmp +14 +acc +43 +acc +3 +acc +40 +jmp -517 +acc +10 +acc +35 +acc +38 +jmp -120 +acc +1 +acc -18 +acc +0 +acc +42 +jmp -69 +jmp -101 +acc +1 +jmp -271 +acc +37 +acc +17 +jmp +1 +jmp -401 +acc +1 +acc +3 +acc -8 +jmp -392 +nop -99 +acc +2 +jmp -301 +acc +10 +acc +32 +acc +3 +jmp -286 +jmp +1 +jmp -444 +nop -364 +acc +46 +acc +30 +acc -2 +jmp -13 +nop -65 +acc +22 +jmp -292 +acc -13 +jmp -480 +acc +4 +acc -8 +nop -500 +jmp -113 +acc -16 +acc +40 +acc -18 +jmp -125 +jmp -482 +acc +28 +acc -5 +jmp -471 +acc +33 +acc +49 +acc +21 +acc +9 +jmp +1 \ No newline at end of file diff --git a/8/part1.py b/8/part1.py new file mode 100644 index 0000000..7eee2e1 --- /dev/null +++ b/8/part1.py @@ -0,0 +1,21 @@ +import re + +lines = [] +with open("input.txt", "r") as f: + lines = f.read().split("\n") + +acc = 0 +visitedLines = [] +currentLine = 0 +while currentLine not in visitedLines: + visitedLines.append(currentLine) + cmd, num = re.findall(r"(\w{3}) ([-\+]\d+)", lines[currentLine])[0] + if cmd == "jmp": + currentLine += int(num) + elif cmd == "acc": + acc += int(num) + currentLine += 1 + else: + currentLine += 1 + +print(acc) \ No newline at end of file diff --git a/8/part2.py b/8/part2.py new file mode 100644 index 0000000..5e2d7bc --- /dev/null +++ b/8/part2.py @@ -0,0 +1,43 @@ +import re + +lines = [] +with open("input.txt", "r") as f: + lines = f.read().split("\n") + +def simulate(): + acc = 0 + currentLine = 0 + visitedLines = [] + numOfLines = len(lines) + while currentLine not in visitedLines and currentLine != numOfLines: + visitedLines.append(currentLine) + cmd, num = re.findall(r"(\w{3}) ([-\+]\d+)", lines[currentLine])[0] + if cmd == "jmp": + currentLine += int(num) + elif cmd == "acc": + acc += int(num) + currentLine += 1 + else: + currentLine += 1 + + if (currentLine == numOfLines): + return ("exited", acc) + else: + return ("terminated", acc) + +# Change between jmp and nop +for i in range(0, len(lines)): + status, acc = "", 0 + line = lines[i] + if line.startswith("jmp"): + lines[i] = "nop" + line[3:] + status, acc = simulate() + lines[i] = line + elif line.startswith("nop"): + lines[i] = "jmp" + line[3:] + status, acc = simulate() + lines[i] = line + + if status == "exited": + print(acc) + break \ No newline at end of file diff --git a/9/input.txt b/9/input.txt new file mode 100644 index 0000000..210177c --- /dev/null +++ b/9/input.txt @@ -0,0 +1,1000 @@ +2 +29 +23 +1 +49 +16 +14 +10 +45 +17 +48 +19 +5 +24 +6 +31 +37 +27 +40 +18 +22 +26 +9 +25 +39 +3 +7 +53 +12 +8 +11 +43 +34 +10 +13 +16 +14 +33 +15 +29 +92 +17 +19 +35 +41 +42 +18 +82 +20 +21 +23 +22 +24 +25 +26 +54 +32 +31 +46 +27 +37 +34 +36 +33 +78 +38 +67 +57 +39 +43 +56 +40 +41 +79 +44 +121 +49 +106 +103 +71 +68 +58 +61 +65 +63 +118 +69 +72 +100 +84 +81 +147 +101 +80 +83 +85 +105 +107 +93 +102 +159 +112 +119 +121 +123 +169 +209 +124 +128 +219 +141 +149 +152 +164 +185 +161 +181 +371 +192 +190 +178 +254 +195 +205 +306 +231 +233 +449 +245 +276 +447 +252 +265 +269 +349 +313 +527 +316 +454 +425 +437 +359 +509 +368 +373 +677 +717 +460 +743 +476 +561 +478 +649 +712 +517 +521 +581 +628 +689 +1017 +791 +675 +684 +741 +934 +1153 +727 +938 +1187 +851 +936 +1376 +1037 +1104 +1495 +995 +999 +1192 +1439 +1149 +1102 +2038 +1777 +1364 +1888 +1425 +1994 +1411 +1665 +1578 +1787 +2103 +1935 +2514 +1955 +2887 +2032 +2543 +2097 +2934 +2144 +2251 +3939 +2466 +2574 +2513 +3346 +2775 +2789 +3299 +3513 +2989 +4822 +4478 +3722 +3967 +4038 +5353 +4129 +3987 +4966 +4176 +4241 +4671 +4395 +4718 +4764 +4979 +5087 +7540 +5288 +5764 +5564 +6918 +6288 +8751 +9054 +7689 +7709 +7760 +9108 +8025 +8116 +12668 +8163 +9328 +8417 +8636 +9066 +9113 +14458 +9743 +10066 +10375 +10852 +11052 +12482 +11852 +15396 +20015 +15714 +15398 +15449 +18394 +15785 +16141 +17182 +16752 +16580 +16799 +17053 +29446 +25851 +19132 +18856 +19809 +20118 +27851 +32148 +26250 +22904 +24334 +27566 +30794 +30847 +43992 +34530 +31234 +32584 +68326 +32721 +33332 +33379 +36185 +36862 +35909 +47684 +88135 +37988 +65916 +39927 +50912 +47238 +59714 +57484 +55181 +79959 +58360 +61641 +80570 +63818 +63955 +66053 +65305 +68906 +66100 +76112 +75836 +72094 +72771 +73897 +85226 +131358 +77915 +87165 +90839 +98150 +120486 +141677 +167124 +113541 +120001 +122178 +137753 +136589 +127773 +129260 +146668 +131405 +135006 +138194 +157997 +150009 +144865 +227924 +151812 +163141 +176065 +227428 +274783 +188989 +211691 +233542 +241314 +265353 +235719 +283059 +280175 +257033 +259178 +298480 +266411 +269599 +276270 +279871 +327877 +400680 +448489 +296677 +422319 +410990 +487961 +365054 +416417 +422531 +424708 +506667 +469261 +477033 +559329 +492752 +516211 +523444 +893432 +743444 +691918 +545869 +823211 +556141 +797138 +776044 +956821 +1062808 +661731 +833521 +1200752 +1618949 +781471 +841125 +847239 +901741 +1693504 +946294 +969785 +1008963 +1039655 +1062080 +1266888 +1207600 +1248059 +1996476 +2157573 +1332185 +1337612 +1437775 +3312453 +1748980 +1508970 +1443202 +1886894 +1622596 +1628710 +1683212 +2054839 +1793533 +1848035 +1955257 +2517933 +2031865 +2948974 +2101735 +2946745 +2455659 +2539785 +3387024 +2775387 +2669797 +2769960 +3469640 +2880977 +2952172 +3065798 +3330096 +3416129 +3305808 +3422243 +3311922 +4871695 +4010096 +4568920 +5264164 +4410916 +4619668 +4133600 +5962028 +4557394 +5309745 +6891073 +7327354 +5439757 +5445184 +5550774 +9929413 +5833149 +10316879 +6017970 +10860519 +6838372 +6617730 +6728051 +7432339 +12167808 +8143696 +8421012 +9030584 +19004215 +8544516 +8753268 +9578784 +9867139 +17749218 +29321094 +10884941 +13566423 +10990531 +15648314 +11568744 +16896964 +11851119 +12635700 +12746021 +23735336 +13345781 +15038742 +17999796 +15576035 +27616357 +35586455 +16965528 +17575100 +18123300 +18411655 +18332052 +20463725 +20752080 +22453685 +31566219 +23736552 +22559275 +22841650 +23419863 +33498101 +30920881 +24486819 +28384523 +26091802 +28921816 +37598017 +30614777 +34540628 +33151135 +46796178 +35698400 +39419213 +35986755 +63155765 +38875380 +43305375 +41215805 +70137621 +46578202 +45400925 +67691763 +36845998 +46261513 +47906682 +64418982 +55013618 +102031145 +56706579 +59242937 +59536593 +77202560 +63765912 +68849535 +122603485 +71685155 +72544398 +72832753 +74862135 +75721378 +101591820 +92839715 +94484884 +82246923 +96088935 +123464073 +126934700 +128386128 +205588688 +102920300 +111720197 +128092472 +115949516 +116243172 +118779530 +167029282 +202656078 +132615447 +140534690 +144229553 +191670894 +145377151 +225055893 +204559912 +314376275 +208789231 +188928650 +176731807 +178335858 +306721986 +235022702 +300648847 +243454990 +214640497 +341299065 +227669713 +234729046 +261326667 +285911841 +251394977 +401861357 +273150137 +276845000 +284764243 +349937063 +322108958 +323713009 +355067665 +550176976 +385521038 +387125089 +365660457 +391372304 +544103837 +442310210 +449369543 +458095487 +511574046 +491485497 +462398759 +479064690 +486124023 +512721644 +635848904 +524545114 +809837032 +973972805 +608477252 +606873201 +645821967 +677176623 +915917418 +720728122 +845220576 +751181495 +752785546 +1135272110 +840741847 +941463449 +891679753 +907465030 +1326865870 +948522782 +953884256 +1199792812 +1263903139 +998845667 +1037266758 +1131418315 +1133022366 +1215350453 +1252695168 +1705065751 +1658646525 +1596402071 +1397904745 +1636645540 +1471909617 +1503967041 +1591923342 +1593527393 +2437143918 +1732421600 +2163873235 +2459888236 +2542050175 +1902407038 +2237059570 +1952729923 +2170289124 +2214196120 +2396750412 +2168685073 +2264440681 +3065437010 +2873996978 +2724604785 +2901871786 +2869814362 +4444457213 +2975876658 +3063832959 +4674084356 +5416047153 +3546257316 +3495934431 +3634828638 +4121414996 +3855136961 +4989045466 +6576491394 +4384485244 +4123019047 +4217170604 +4382881193 +4433125754 +7420333871 +6610090275 +5134255043 +11020948607 +7314271575 +7878815624 +5771686148 +6471811089 +9967745520 +6039709617 +7763427920 +7042191747 +7181085954 +14350626713 +7130763069 +7489965599 +7976551957 +8072307565 +8340189651 +8505900240 +8507504291 +10472835371 +11697152768 +15183761791 +9567380797 +12381776423 +13261651747 +11173964660 +18784376527 +11811395765 +15548091987 +12243497237 +29534388504 +16698143866 +13081901364 +14172954816 +14223277701 +14311849023 +19187118367 +14620728668 +15466517556 +16048859522 +16412497216 +16846089891 +18073281037 +20318900056 +21264533565 +27245244755 +21810878034 +31960589203 +24193172188 +26343553111 +25346919476 +24054893002 +27254856180 +49056122789 +27710014793 +27305179065 +41395778998 +30087246224 +28396232517 +28535126724 +32385130060 +30669588190 +31466818559 +37164989947 +32461356738 +48312908450 +34919370928 +57924444370 +41583433621 +46004050222 +67814928256 +62174227108 +55701411582 +48248065190 +51360072067 +49401812478 +63928175297 +54560035245 +55015193858 +55840305789 +56931359241 +58483478741 +64846486798 +60001945283 +59204714914 +97649877668 +62136406749 +79714883749 +117129159284 +113159395248 +126982893547 +76502804549 +87587483843 +89831498811 +108178277330 +99608137257 +100761884545 +102808100435 +116206558865 +103961847723 +104417006336 +109575229103 +178342965614 +112771665030 +114323784530 +115414837982 +191829380345 +119206660197 +121341121663 +164944507184 +138639211298 +141851290498 +156217688298 +203794042708 +179310904984 +225781787968 +279268291714 +224149222098 +190593383356 +345490343761 +203569984980 +523833309375 +206769948158 +237547680528 +338473006628 +304601045375 +223899013633 +240547781860 +252962995828 +229738622512 +365750304131 +277558809961 +259980332961 +263192412161 +332444673854 +280490501796 +321162195482 +503167305347 +369904288340 +428141063884 +573474273320 +536083727117 +397363331514 +394163368336 +410339933138 +427468998613 +756130301175 +539214622012 +476862009461 +464446795493 +483879346594 +453637636145 +731196446106 +482701618340 +489718955473 +939224577451 +537539142922 +523172745122 +601652697278 +612935175650 +887201942599 +691066483822 +764067656676 +1118535482435 +804503301474 +880064949854 +874786728631 +1173768102162 +1001985938415 +1344131621756 +881106634758 +943356591618 +947148413833 +1005874363462 +918084431638 +936339254485 +972420573813 +2262216053394 +1012891700595 +1327676046596 +1136107920772 +1487721904281 +1537991951763 +1214587872928 +1923038783909 +1455134140498 +1942213617947 +1568570958150 +2054874736920 +1679290030105 +2402282554331 +1811125983116 +2245760478234 +1799191066396 +1817445889243 +2474331206248 +3126867112992 +1953022777295 +1854423686123 +1908759828298 +2651710603918 +2500613604876 +2227479573523 +2148999621367 +2782810187094 +2350695793700 +2669722013426 +2752579824691 +3496735919348 +3960125604483 +3616636955639 +3247860988255 +3367762024546 +5314181808591 +5053993158249 +8930818764230 +3763183514421 +3671869575366 +3653614752519 +4604733381213 +4499695415067 +5275866734359 +4003423307490 +4637233873217 +4649613226243 +8597359477700 +4578175367223 +11281514557930 +4818721634793 +5103275618391 +6901475740774 +6000440812946 +6120341849237 +7723309118904 +6615623012801 +6864497943894 +7945937391769 +7021376777065 +7325484327885 +7416798266940 +8503118722557 +8367916895634 +7657038060009 +9149308641310 +8822144942283 +8581598674713 +8640657180707 +8653036533733 +10578616180169 +9227788593466 +19806404773635 +12946092262857 +13480120956695 +9921997253184 +11103716431337 +14066279241006 +12120782662183 +12735964862038 +16949515570347 +14272661072810 +20501497733760 +14346861104950 +17517225536944 +20271576590742 +17730907316023 +22629429598005 +16238636734722 +16297695240716 +22647877915719 +31270086778712 +17222255855420 +31300914449452 +31583504777950 +49031821765475 +19149785846650 +21025713684521 +23988276494190 +22657962115222 +22042779915367 +32129430115858 +26467643767133 +24856747524221 +27082825966988 +28619522177760 +46739220357875 +30585497839672 +30644556345666 +44690657831086 +37493832446162 +32536331975438 +33460892590142 +35447481087366 +33519951096136 +67983813062804 +42079003379641 +41210532349610 +52326628133973 +40175499531171 +41192565762017 +43138062340840 +55562731011503 +44700742030589 +49740788082210 +46899527439588 +57668323806660 +96755296773520 +57393079499659 +55702348144748 +59205020017432 +63180888321104 +61230054185338 \ No newline at end of file diff --git a/9/part1.py b/9/part1.py new file mode 100644 index 0000000..af158d9 --- /dev/null +++ b/9/part1.py @@ -0,0 +1,15 @@ +from itertools import combinations + +numbers = [] +with open("input.txt") as f: + numbers = list(int(num) for num in f.read().split("\n")) + +for i in range(25, len(numbers)): + possible = False + for numberPair in combinations(numbers[i-25:i], 2): + if sum(numberPair) == numbers[i]: + possible = True + break + if not possible: + print(numbers[i]) + break diff --git a/9/part2.py b/9/part2.py new file mode 100644 index 0000000..e7b2835 --- /dev/null +++ b/9/part2.py @@ -0,0 +1,25 @@ +from itertools import combinations + +numbers = [] +with open("input.txt") as f: + numbers = list(int(num) for num in f.read().split("\n")) + +def getInvalidNumber(): + for i in range(25, len(numbers)): + possible = False + for numberPair in combinations(numbers[i-25:i], 2): + if sum(numberPair) == numbers[i]: + possible = True + break + if not possible: + return numbers[i] + +invalidNumber = getInvalidNumber() +found = False +for setSize in range(2, len(numbers)): + for setStart in range(0, len(numbers)-setSize, 1): + if sum(numbers[setStart:setStart+setSize]) == invalidNumber: + print(numbers[setStart] + numbers[setStart+setSize-1]) + found = True + break + if found: break