From f896e7c75354ac44bb8152a04ea6fb386c524819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Guti=C3=A9rrez=20de=20Quevedo=20P=C3=A9?= =?UTF-8?q?rez?= Date: Wed, 9 Dec 2020 09:26:04 +0100 Subject: [PATCH] initial commit on day 9 --- 1/1.py | 11 + 1/2.py | 18 + 1/input | 200 +++++ 2/1.py | 16 + 2/2.py | 17 + 2/input | 1000 +++++++++++++++++++++++++ 3/1.py | 12 + 3/2.py | 23 + 3/input | 323 ++++++++ 4/1.py | 23 + 4/2.py | 54 ++ 4/input | 1023 +++++++++++++++++++++++++ 5/1.py | 33 + 5/2.py | 33 + 5/input | 933 +++++++++++++++++++++++ 6/1.py | 13 + 6/2.py | 19 + 6/einput | 15 + 6/input | 2172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 7/1.py | 34 + 7/2.py | 26 + 7/einput | 9 + 7/input | 594 +++++++++++++++ 8/1.py | 18 + 8/2.py | 30 + 8/einput | 9 + 8/input | 623 ++++++++++++++++ 9/1.py | 15 + 9/2.py | 12 + 9/einput | 20 + 9/input | 1000 +++++++++++++++++++++++++ 31 files changed, 8328 insertions(+) create mode 100644 1/1.py create mode 100644 1/2.py create mode 100644 1/input create mode 100644 2/1.py create mode 100644 2/2.py create mode 100644 2/input create mode 100644 3/1.py create mode 100644 3/2.py create mode 100644 3/input create mode 100644 4/1.py create mode 100644 4/2.py create mode 100644 4/input create mode 100644 5/1.py create mode 100644 5/2.py create mode 100644 5/input create mode 100644 6/1.py create mode 100644 6/2.py create mode 100644 6/einput create mode 100644 6/input create mode 100644 7/1.py create mode 100644 7/2.py create mode 100644 7/einput create mode 100644 7/input create mode 100644 8/1.py create mode 100644 8/2.py create mode 100644 8/einput create mode 100644 8/input create mode 100644 9/1.py create mode 100644 9/2.py create mode 100644 9/einput create mode 100644 9/input diff --git a/1/1.py b/1/1.py new file mode 100644 index 0000000..76e87f9 --- /dev/null +++ b/1/1.py @@ -0,0 +1,11 @@ +import sys + +ns = [] +with open("input") as f: + for n in f: + n=int(n) + m = list(filter(lambda x: n + x == 2020, ns)) + if m: + print(m[0]*n) + sys.exit(0) + ns.append(n) diff --git a/1/2.py b/1/2.py new file mode 100644 index 0000000..4c72e21 --- /dev/null +++ b/1/2.py @@ -0,0 +1,18 @@ +import sys + +def find_sum(l, total): + for i in l: + m = list(filter(lambda x: i + x == total, l)) + if m: + return (i, m[0]) + return (None, None) + +ns = [] +with open("input") as f: + for n in f: + n=int(n) + n1, n2 = find_sum(ns, 2020-n) + if n1: + print(n1*n2*n) + sys.exit(0) + ns.append(n) diff --git a/1/input b/1/input new file mode 100644 index 0000000..840b70a --- /dev/null +++ b/1/input @@ -0,0 +1,200 @@ +1440 +1511 +1731 +1400 +1542 +1571 +1768 +1730 +1959 +1342 +1744 +872 +1237 +1846 +1597 +1583 +1711 +1499 +1679 +1895 +1875 +1928 +1728 +1673 +481 +1934 +673 +1704 +1916 +1958 +1821 +1649 +1640 +1802 +1732 +121 +1924 +1438 +1748 +1046 +1905 +1566 +1152 +1964 +1518 +1603 +1414 +1785 +1993 +1594 +1761 +1455 +1738 +1699 +1507 +1483 +1450 +1653 +1644 +19 +1340 +1227 +1353 +2009 +1188 +1228 +1898 +1941 +1515 +1766 +1351 +1980 +1378 +1702 +1620 +1729 +1279 +1384 +1894 +1770 +1853 +1161 +1970 +1986 +1669 +1938 +1602 +1190 +1822 +425 +1750 +1632 +1613 +1805 +1718 +1990 +1762 +1242 +1485 +1598 +1893 +1995 +1823 +1786 +1506 +1464 +1467 +1639 +1674 +1903 +1961 +1478 +1847 +1760 +1997 +2010 +899 +2000 +1488 +1243 +1891 +1504 +1693 +1176 +1391 +1563 +692 +1497 +1428 +1745 +1368 +1723 +1989 +1930 +1171 +1840 +1372 +1987 +1952 +1842 +1967 +1759 +1929 +1945 +1919 +1333 +1692 +1811 +1221 +1520 +1920 +1093 +1618 +1795 +1686 +1369 +1820 +1857 +1356 +1562 +2004 +1519 +1628 +1831 +1687 +1792 +1948 +927 +1789 +1546 +1338 +1614 +1472 +1494 +1979 +1936 +1577 +1147 +1446 +1683 +1375 +856 +1787 +1517 +1724 +1334 +1642 +1496 +1668 +1725 +1800 +1708 +1814 +1585 +1827 +1801 +1208 +1839 +1596 +1925 diff --git a/2/1.py b/2/1.py new file mode 100644 index 0000000..e5b6ca4 --- /dev/null +++ b/2/1.py @@ -0,0 +1,16 @@ +def validate(password, rule, letter): + count = password.count(letter[0]) + mi, ma = rule.split("-") + if count >= int(mi) and count <= int(ma): + return True + else: + return False + +count = 0 +with open("input") as f: + for passline in f: + rule, letter, password = passline.split(" ") + if validate(password, rule, letter): + count = count + 1 + +print(count) diff --git a/2/2.py b/2/2.py new file mode 100644 index 0000000..7e41773 --- /dev/null +++ b/2/2.py @@ -0,0 +1,17 @@ +def validate(password, rule, letter): + p1, p2 = rule.split("-") + p1 = int(p1) - 1 + p2 = int(p2) - 1 + if (password[p1] == letter[0]) != (password[p2] == letter[0]): + return True + else: + return False + +count = 0 +with open("input") as f: + for passline in f: + rule, letter, password = passline.split(" ") + if validate(password, rule, letter): + count = count + 1 + +print(count) diff --git a/2/input b/2/input new file mode 100644 index 0000000..d0aa998 --- /dev/null +++ b/2/input @@ -0,0 +1,1000 @@ +3-11 z: zzzzzdzzzzlzz +3-7 x: xjxbgpxxgtx +3-4 v: vvmv +3-5 t: tgkfq +9-10 j: jjjjjjjjqjjjj +5-7 r: rnhrhrr +2-6 n: gnntnnsnnqjsbrn +3-4 g: vrggfvxsgmggkgsm +1-4 c: brccqr +1-5 h: hhhzzvcdhhhhhhhh +4-11 c: ncnqbzlkckc +1-13 q: hqqqqqqqqqqqlq +8-9 h: hhhhhhxxkh +3-9 b: bbbbsfbbc +3-8 k: zfqzkzgk +3-9 k: wjkwhnkkfvxk +3-11 v: vgkvvcjvvvv +5-6 l: llllhr +9-11 z: lzzzgzzmzzdzzz +13-16 w: wwlwwwwlwwxwwfwf +8-11 r: rrrrrrrrrrcrdrr +1-9 v: mlvvvxnwrwvv +4-6 z: mzzzzz +3-4 s: svsj +8-11 w: wwwwwwwjwwww +10-13 r: drrrrzhmxfjdrtfgr +19-20 h: hhhhhhhhhhhhhhhhhhfh +1-4 z: nzzcz +10-11 d: ddldddddxdfdd +10-14 d: dddddcddndkddd +7-15 h: hhhhhhhhhhhhhhhhh +1-9 h: rhhhhhhhhh +3-4 m: mmztmm +4-6 w: wmwxcwwlwwj +7-15 g: ggggggggggnggglgg +9-14 n: ntnnnnqnnnnnng +2-3 f: fffl +1-7 b: bjsqsbbzblt +3-6 c: cckccccc +4-9 z: hhgtvzszb +1-7 l: tlllllll +2-3 v: mknzrq +12-18 w: wwwwwwwwwnwwwwwwwsww +5-8 k: kkkgkjkdkrwgk +10-12 z: gczzgvzzpzwzzzzzf +11-12 x: xxxxxxxxxnqxxnxx +4-7 c: chccccgccccscpcc +7-9 k: kqbkxhkkkkkscfr +2-4 r: rrrrr +3-5 p: lwhwp +11-13 r: pfjmrrdqnbrwrn +4-8 l: nkpmjlrbtsxdzkqjqj +1-10 k: kkbdtkkqrkkkkkknklk +16-17 b: cxtqsbfbtkxqbprzbbgr +7-9 x: xlgxdxxtqhxkbnxw +5-6 k: kbkqkqkk +6-9 s: sbssspssk +13-17 p: pzrpphmphgpkpbppj +2-8 r: ttbrrmrfr +16-17 c: cccccscckccccccvccc +4-5 v: hvvmv +4-12 s: swssssssssshjsszrss +9-10 q: qgqqqjqjkqhqq +2-4 s: rwtknhj +3-8 s: rbstpgqdslkvkkzprdzp +8-9 d: ddsddvdpd +1-2 r: rkrrrrrtrrdnrr +7-8 v: vfpfrmltllx +2-3 k: knkrk +4-5 f: pwrbffffc +7-9 n: nnntnnnpnbjjn +6-13 r: rrrrrrrrrrrrrr +5-8 g: bfgzlbmgjn +3-4 q: tqhq +13-16 m: mmmmkmmmmmmmmmmmmmm +1-5 w: wwwwhhwgwfgfkvwqbx +4-7 n: nbjnnnqnbpc +12-14 g: ggggggggghgbgk +14-15 b: bdbbbxbdbzjtbcs +8-9 z: zdfzxzkpz +19-20 r: xbpdfrkmtgzrrqrrjrrr +9-12 f: ffffffqfpgvzgfnf +11-12 m: mmmmmmtmmmmm +6-7 q: lbqqqqtb +6-10 g: gggggtgggmgggg +9-16 p: prppzppdppppkpjfpc +1-3 x: xkrbrxdvrncxd +17-18 b: bvpbnbrgvjcbbkjrbj +13-18 d: dddmddddjdtdddddddd +3-4 z: zzdzc +8-9 m: mmmmmmmpm +4-10 v: rvzqvrvvgvqvv +1-9 q: jnhbqjlvq +5-13 d: sddkhdjddkddpkvdsw +5-9 d: dppdpddtmvl +5-7 s: knzhssbxsjcssnsqb +10-15 p: ppgvpppvplpppxpcp +5-6 c: cczccv +5-6 q: dqlvjfqqqqmqxq +8-10 j: jjjjjwjxgknjfjj +7-16 x: xxxxxxxxxxxxxxxcx +9-13 h: hhhhzvwhhbhhhhljhh +6-7 v: wvzxlvt +16-18 f: fsffbffffpffffflfff +1-5 r: rhrvrprwwb +5-8 h: hhhhhhhjh +3-6 p: ppgppsp +15-17 r: rrrrrrrcrrrrlrrrb +3-6 m: jhzmtmbnwh +6-9 r: rhfjdrrhrg +15-17 l: gqngllrsxrlpxblfl +2-12 w: wwwwwwwwwwwww +2-3 c: cpncdqzp +3-4 f: ffllffqjf +1-9 c: ccccccccbcc +19-20 x: xxxxxxxwxxxxxxxxxxvx +3-4 p: pplvs +2-3 s: ftss +11-12 s: ssdsssgsssths +4-11 m: mmgmpmsqrmmmbwmm +2-4 x: xhrk +6-8 g: gggvgggv +8-14 h: whhhlhhdhhhlhhh +5-16 g: fnxpglggbrsgscqmzlfq +5-11 h: hnhhhhhhhhthmh +5-7 x: xvxxxxxqxw +1-3 m: mnbt +1-6 g: bgggbwghg +1-6 f: sptjzfxcfw +9-12 g: ggzgggggvgtjgg +2-4 q: qlrvx +4-5 j: jjjgj +1-3 g: htmg +6-8 j: jjjjjmjjjjjj +12-14 h: xhhhhhhhhhhlhhfhh +9-11 h: hkvhhgvhhhrshml +12-13 j: jjjljjtjpjjjgj +6-7 r: drqdrrvr +6-17 q: qqqlqqqqqqqqqqqqbqqq +6-7 j: vjjrvjjjwzj +11-12 v: vtvvvjvvvvgvv +6-8 x: xxxbcbxl +3-9 f: fffffffff +9-10 c: cccsccllrktqccfjzz +2-5 s: ssssqn +8-15 x: brlmqdmpfdqgmgptgxd +1-4 t: ttlcttw +5-6 c: cqccnc +10-11 m: mqmmmmmmhvvlrmm +3-4 j: jjhjwbjj +10-11 c: ccccccccckd +6-8 h: xhhchhfchh +9-10 n: rnnnnnnncnnnn +1-4 l: lvslw +3-4 s: spfs +11-13 n: fqtdnnnnnlnnx +6-7 g: xdgxggp +7-8 r: xhrnqlrr +1-12 r: rrrrnwwrbrbrhrjxr +14-15 b: chmbmkxngftlfbf +1-3 m: fmmgmdgs +5-7 w: fwwwswwwwwgw +10-14 l: qlllgzljczmpls +1-2 k: kkkq +5-6 t: tttttt +9-16 r: gpdtlxhntjfjjtlsxd +4-5 g: kgjrhjmszxg +4-5 z: zmszpklzsvz +1-2 j: mfjjb +3-6 s: sfxlzslsrszcsstsrb +3-4 n: knlvnnkq +1-2 s: jsst +3-4 n: nsnm +1-2 m: wzgczk +10-11 b: btnnwgbgtht +2-7 d: qcrdlgdgc +10-13 w: wxwwdrwwwtdwwwswh +2-3 c: cckcd +3-6 p: ppqppppp +1-6 n: nmsnjdn +2-3 h: hhrhj +11-12 w: wwwwwwwwwbvwwwwwh +1-14 c: zkctkncccccfcccpccc +6-7 m: zqvdkmnztcvmdrgbw +1-13 q: qgmqhfgphjzrt +6-7 l: llllljdv +2-5 k: jspjkkkk +7-15 p: ppppppvppppppppppp +12-16 k: klkkkkkvkkzxkkkg +8-17 x: xrxxnxxxsxvvxwbwzl +11-14 s: ssssssssssssst +8-15 z: cfznhznzwnzzrmm +5-7 q: rqpnqwqvw +2-9 c: zrpcmsclcbxtkbjvjc +5-12 c: ccccpccccccjcccc +3-8 w: hwswwrwwww +4-9 p: wphzppzxpkxpbpzsplp +4-5 q: rqqcqw +11-14 k: kkckkkkwkkkkkdkk +2-5 v: sqvvpvxvqgvvvzr +5-10 f: ffffzffffjff +4-6 b: bhbbjk +4-8 z: zxzzzdzrzz +4-8 h: hhhhfscrnhthppkkvh +2-3 w: wgvwwjwwww +3-5 d: dsdjddnndzbxtd +5-13 m: mmmmfmmqmmmmmmm +1-2 l: wglcs +8-9 r: rrrrrrrsr +8-16 l: lllllllllllllllll +8-10 s: fmqsscwtshsss +2-13 q: qqqzqqnxvqqsqjzl +5-7 f: vrwrfffcmjwsfdzffm +2-8 k: hhsbmrkkfhkkxkkz +12-13 f: ffffffcffffff +4-5 x: pzrxwxbxxdgfnxg +1-5 c: cccww +8-11 g: dgggjrggggggg +9-14 t: httdgxxtthtsxtpsml +7-11 p: pprppppppppp +13-16 m: mmtkphqvkrzpwzsm +12-15 g: gkzgggggggggggltb +5-7 k: kkkkvkjkkk +15-17 p: pppptpppppcjppppsp +1-5 z: znzzz +2-14 j: lnjjjghjjrjjjj +3-9 r: rrvrrcrrr +2-4 m: wggmmh +4-5 b: bbbbrb +2-16 v: vgvvvvvvvvvvvvvvv +2-15 s: rsswfmvsrdkjqjssl +3-6 b: nbbbnbbbb +2-4 x: pxxwj +12-13 c: cccccccccccccc +6-8 g: gggggpgvggg +3-6 j: srljvjqpkjvtdrndkgjr +7-8 g: gmggtcggz +3-7 p: tmvpppkm +4-10 w: qrwgmwdwlww +6-8 k: kknckkkjkkk +11-14 g: ggggggggzggggcgggggg +11-14 j: jjjwjjjjtmjjjgjj +7-12 n: njmntnnsbncknqnn +5-8 t: tbrttttctrt +4-6 f: gffrffzffffffm +4-11 c: pksccvlcsrcjgmzn +2-3 p: vbcfdppzw +2-5 c: lqfcc +1-2 h: lhskgvhc +10-11 b: bbbbbwbbbmc +3-15 n: nkbtnlznnxffzjlpfm +2-5 s: ntsqc +9-11 l: llllllllblfl +9-10 d: ddcdfdbcqn +8-10 g: htgcjhggzmnl +5-10 v: vvqvvvvvvbvv +2-6 l: lllfjdc +3-4 c: gxtmsqdsps +7-8 f: fffffbbm +1-6 z: zlndzbf +9-11 g: ggzgxgggkgggzd +15-16 n: fflrvmnrvjnrznqgq +1-3 b: lkbb +2-3 k: kgkk +9-12 r: skrrrrrjrmrhr +10-15 c: ncccmccpvcqfcqgcfcj +5-13 r: rrrrrrrrrrrrrrrr +13-14 b: bbbbbbbbbbbbfb +13-18 l: llvllllllpllllllbl +4-5 m: mmmmqm +5-9 g: ggrgcgggggggg +1-4 q: qqqq +1-13 l: llllllllllllll +14-18 g: ggggdgpgggjfgmngggg +13-16 p: pppphppppppppppv +1-7 f: ftffffgffff +8-9 s: tbslsssjsqsssss +8-9 s: szmzsssss +7-8 l: lllllllll +4-6 t: twtjrt +3-11 z: zjzntzxzlzczdtz +4-8 c: ccchcclc +3-11 l: wvldjftflsgzcwllbbm +1-7 x: xwjhmgxkqqtdx +8-12 c: cccccccnccckcc +2-8 f: nghfxvqtfrpwjf +6-7 b: nbbbrbslsb +3-4 w: zwnwdzqw +7-8 p: tpppppnpppppp +8-9 q: qwqqqjbft +3-4 z: zztzn +13-14 f: dfffffmxffffff +3-14 t: gnpksvbtpzxrsw +12-16 z: zzzzzzzzzzzfzzzz +2-4 b: mzbxbk +5-6 r: rrrrpr +5-10 z: cfflzmzxdc +4-5 l: lvtvblll +6-19 t: tttttdtttttttttttttt +7-8 g: gjgbtggjggg +3-5 s: sssssr +8-9 s: kssvfsssrsrssns +2-4 p: gpbm +1-2 g: gbjsl +3-4 k: tdkn +8-9 z: zzbglvpbrfml +5-13 m: mmmmlmkmsmxzmpmmcmm +16-18 b: lbbwbbbbbbbbbbbbsb +2-4 s: fgsstnssztbzkzcmp +3-9 l: hvllztddtj +4-8 w: wwzcwwwf +11-12 z: zzzzzzzzzzck +9-10 q: qmqqqqqqqw +1-8 x: qpxxxxxrxxxcxvxt +12-16 l: lllllllllllsllllllll +4-5 r: rrrbt +4-6 v: mjvwvvv +5-7 r: rhrrrrrrr +1-2 v: vgfvv +4-15 b: bbblblbvbbbbslbbbcq +14-15 c: cclcccccccccccc +8-20 h: gzkhwrhrjdphrrhnjhcm +5-10 m: mmmmtmkmmmmpmmhm +2-14 f: kjcwnfhcqnwhbgm +11-13 m: mzmvmmsmlmmppm +3-9 g: kglkgdctgxxs +2-7 s: ssdglzsb +7-10 j: jtjjjjjjkj +12-13 q: hxhjqsqsqzqqmjnqks +18-19 f: ffffffffffffffffffxf +3-11 v: xhvtvnjcccnsvgzv +8-9 j: jjjjxjjjrw +4-8 c: bvxgnmvczbsjvtc +11-18 g: gggggggggzzgggggggp +8-13 p: pppppwpdppppppp +14-15 t: tttttgttttttttj +14-17 h: hhhdnhhhhhhhhbhhg +3-5 m: mmmmm +1-8 n: znnnnnnhn +2-5 l: qwvchzxlrlrlpldl +17-18 j: jjjjjjjjjjjjjjjjjmj +7-18 s: sksssssssstsssshsg +4-5 k: kbqks +6-8 q: qqqqklcjm +8-17 x: tjdsxwtxwxcjtzxfxgkt +5-8 w: qwxwvwcwvzlvrwwww +16-18 f: fffffffffffffftfffff +3-12 z: zzzzzzzzzzzfzzzz +10-13 m: mmmmqmmmvmmmx +4-7 z: zkjzvpf +11-13 p: pzqpppppppgpt +11-12 c: cccccwfccccccz +3-4 s: ssxsss +8-9 j: bsjjjjjpxjjjj +2-7 x: cxkbqkf +7-18 x: vmrsdvxxpbjrxbnxqxxg +8-11 d: nwzdcqvddfd +7-11 h: hhhhhhlhbhhh +9-10 f: fhlmjqfzfq +13-15 p: jcfprqlvrnfnfnp +2-3 b: gblb +5-7 s: jssssqz +1-18 c: ccccccccccccccccczc +10-15 x: xxxxxxxxxwxxxxxg +6-7 w: jswwwwdcw +4-10 q: bqtxmcgxnjnkvq +1-2 c: ccccc +10-12 h: hhhlhhhhjkhsh +3-4 w: hwgwxd +17-19 j: jjjjjjjjjjjjjjjjdjpj +1-4 d: dddt +7-8 z: zzzzzzlhz +13-16 z: zzzzzdzzzzzzzzzpzzz +4-10 d: dgdzdddddddd +4-7 l: llclxltlpqh +1-4 x: hxxxx +5-7 n: vnnnnnndxn +10-11 n: nnnnnnnnngg +5-12 k: bkcdkpjrpkkv +6-8 j: lsjhjjqjcx +7-10 t: ttttfttttt +17-19 n: nnwnnnnnnnnnnnjndznf +1-4 v: vvvv +14-18 x: xxxxxxxxxxxxxnxxxx +3-5 x: kxjjx +3-8 k: kkrkkkkskkkkkkk +8-11 h: hhhhhhhhhhlhhnjh +4-5 x: nxxxnz +7-10 z: zzzzzzzbzq +7-13 b: dvbsbbbbbbbkcbb +3-5 k: drkrkpnhkpjhkk +8-9 w: wrwwwwwwf +3-4 x: kxxtwx +5-17 n: nnbnnnlnnnnnnqnnn +11-14 k: kkkkqkkbkklkkkkkkkkk +4-7 q: qqjjqqqqqqq +3-4 k: gkkkxlx +11-17 s: ssssqssssjrsmgssstgs +6-17 n: dntjvnhjgrbtcnnmkdc +1-5 l: hrqqlqpdlmbjlllmfjqz +1-5 k: kkkvk +9-15 z: zmzzzjzxmzzzbzv +1-2 s: rsssxzss +1-4 f: fdfc +1-7 t: ntttttttttt +10-12 t: mtttzttwtttkstjtztt +9-15 q: qlqqqbqqqqqqqqq +4-5 f: jwfff +5-6 p: ppwppvppp +12-14 p: ppppppppppplppp +2-8 x: wxbngjrxzx +1-2 h: hlhlg +9-10 b: bbbbbdbbbqb +6-15 w: wwwwwwwcwwwwwwww +2-7 d: sgcfddnqmjthdphl +7-9 m: zqrwxkmjr +5-7 f: qklfrzfgffff +14-15 n: lnnnnnnnnnnnnnnn +2-11 q: gqqlcqjlqrsbqkqqq +7-8 x: xxxxxnlx +2-9 v: xvvqbvfkwd +10-12 z: rmvxznxnszkzdb +2-3 q: qkqq +2-6 n: nnqqgv +4-6 d: dddddc +8-9 z: zzzzwzjzz +1-14 q: wxqnqqqqqqtqqq +1-5 g: grgtggnh +4-6 x: mbtxxxxxxtm +3-7 w: wwtwwww +4-6 h: phchhbxf +4-6 n: npznhtxf +14-20 v: vkpjvvbrvvvfvzvvvcxv +17-18 m: rmccmmmmvmkmnmqtmz +4-9 n: nnsnxnfbjnjnnnkn +8-10 c: ccqclccvcccc +1-12 b: blbhbbbbbbbbbbgbbbb +4-8 v: vvvbvvvgv +4-6 m: mdnmmmgrsqjjbctjvhm +6-9 r: rlrrgrrrhr +4-6 q: qqqjnq +8-9 g: spqxllrngwkjgpzpg +6-9 m: zbsggmvzsmpcm +3-9 s: xssmzstbsrfz +4-11 c: cxcrrccccrcncc +3-4 p: ppqb +5-8 f: vcfflfflmf +9-13 b: bbbpwbjbkbhbbktz +4-9 p: ppppppmpps +7-17 s: ssssksrvssnsbsssrxsm +10-12 m: mmmmmmmmmmmsmgmm +6-13 x: xwxxxxxxxxxxm +9-10 t: rrthttjtttwlvpttgttt +6-10 z: vzklxxzvwgzt +2-4 v: vvvk +5-8 h: twhghhhw +7-8 n: nnwnnknrn +2-4 m: mmmmm +3-7 r: srxrrmrwrrhrg +5-6 x: xxxxxh +5-6 x: xxxxxtx +5-13 d: ddddddddddddndddd +15-16 c: drfrpmbhcncvmxnk +14-15 r: rrrrrrrrrrrrrrk +4-6 z: qmlsgz +9-10 x: xxxpnxrxxl +3-6 h: hhhhwfhh +3-8 b: jvpscbzbvb +9-12 j: jjjjjjjjfjjj +1-2 n: hwnn +3-9 l: lpgmzxcwlpsp +2-7 k: zkbnlwlpk +2-12 t: tttttttttttttt +5-14 h: rhjchxhlfjhxfhhb +1-4 p: pbstdbpctfdzxzh +9-14 k: swkkkkckqkkrqlkkrtk +5-6 v: vcvkxvfvrmvvv +14-17 n: nnnnnnnnnnnnnnnns +9-13 d: dbdjdhdhrddgmk +5-6 c: cvzcclcccdf +16-18 x: xxxxxxxxxxxxxxxxxxx +15-16 v: vvvvvvvvvvvvvvfv +3-6 g: jggwkcdpmmttl +18-19 g: gggslcgggtggggggxgxd +7-10 r: rrrvrrjrrrrrr +7-8 f: xzmwmgfkh +2-4 g: gcgvg +5-7 k: qkknzkfncgkckkj +8-10 q: qxgvffbqgq +5-7 d: slfqbddnrvj +8-11 k: xtfkkwnccck +3-4 s: jsrs +3-6 m: mmdmkmwmmmnd +6-7 q: gxbthqc +6-7 v: vvvvvqv +7-14 n: nxnqnnqnqnnnnnn +8-12 d: chkdcslxddddd +8-11 g: cgwlgszgfnk +12-13 b: bbbbbbbbbbbjc +7-9 w: wwwwtwwqdw +14-15 q: qqqqqqqqqqqqqlq +8-11 q: rhmqdzslbgqwq +4-5 k: khkxrqxwb +2-6 l: lskblllkqxdllmhl +2-9 s: xwxncpjgch +8-14 x: vxxxxxxhcxxxdxxm +3-11 g: gggwgggggggggg +9-11 b: fbbfdmbbbbjbstbb +5-13 z: zzzzxnzzzzzzzgz +1-10 b: bnsbgsnrbb +3-6 w: zxtfmwndwnwkj +2-4 s: smss +4-5 q: qjqqz +12-15 b: kbbbbbbbxbbhbbj +3-4 d: dhkd +5-6 k: pkbkkp +2-4 p: wppkz +2-6 d: dnddgd +7-10 j: jdwrhhjszjbkmfphj +1-3 b: vkcbb +7-8 f: ffffffdf +11-13 t: ttttttttttttl +14-18 x: xvxxfxxxxrxxxgxxxrx +8-10 k: gtkbkksnkskkrkkk +2-4 h: hnhh +10-13 m: vmmwpmlmnckmcmm +1-2 z: zzzsz +4-5 p: pppbf +2-4 q: pwdbsxlrqmhhtccl +9-11 f: fffhffffvffvfq +8-9 x: xxrxxxxsx +8-14 z: zzzzzzzzzzmzzzz +9-11 j: jjjjqjjpjjwj +3-4 s: sskss +8-12 s: tlcssmclnvgstg +11-12 v: vvdnvmvsvvkx +4-5 c: ccccbcc +1-2 d: ddthwdk +10-13 n: nnnnfnnnnpncnm +7-8 z: zzzzvzbz +2-3 n: nnsqnrnnnnnltn +4-5 q: qqqmq +6-9 s: ssnsssssksc +9-11 r: rrrfrrrrhrrr +3-4 d: tzdd +3-6 c: cccccmcc +7-8 q: qqqqtmsqqqqq +17-18 z: zwkzbhqnhznzlkqxnz +4-7 m: hfvdmmnszdmb +14-17 z: zzzzzzzzzzzzzzzzjzz +12-14 k: kkkkqkfkkkkjkz +1-3 z: zzdzh +2-7 v: vvvvnvr +14-16 j: jjjjjjmjnjxjjtjjjwj +15-18 h: hhhhwhhqhhtfhhhhhzhh +1-2 z: dzznmxzt +5-6 c: cccpkc +6-10 z: trwqgzmwtvbgnvjkxz +3-4 w: twwjwg +6-10 w: nwwcxwjschxpjkrqwvw +9-10 z: kzzfzzzzzhlzzg +6-7 r: rrzhqnnrrrhk +9-11 k: kkklkzkgkrkj +11-16 d: ddddddsrdddpbdldrb +6-9 v: njfrfxbqvv +3-4 j: jjjd +3-4 q: qgqq +4-15 h: hhhtthhhhhhhhhhhh +3-11 b: bbbcnzglwcbqxgwvbc +2-3 b: nbhbrkkzbs +4-5 p: ppppk +2-5 q: jqkzqrzqbtkcqgb +6-7 s: sssssqm +1-5 r: rrrrr +3-4 w: wwwgt +2-8 x: xxxxxxqx +9-10 c: ccfccccwcc +2-10 r: crmkxbcrrkr +7-16 c: cmmfkhclcwqjcqsmccn +7-14 p: ppgppppppppppqppppp +1-3 s: sshs +1-3 d: lfdd +5-14 n: fkxsnvxclfnklbqrknvd +15-17 j: jwjjjjjjjzjjjjjjpj +4-7 l: lllljnlt +5-8 c: pczkvcsqpfzcw +3-14 q: xkqqsvcqdqqqjscfd +7-11 m: rmhmmmmmmmjmm +10-13 x: xxxxxxxxxhxxxxx +1-4 m: mmmmm +1-4 r: dmrrl +10-11 s: sssssslssgg +9-10 g: rtksgmrpbl +4-10 t: wtfttttttbmntsth +8-18 k: vwstrvjbjttzbrtghwk +9-11 s: ssdslssssss +10-13 s: pssssssfcnjcs +2-17 l: wpltglllsslllwlslrpc +13-15 g: gglggglgggvgwgzgggg +4-6 v: qqvvvvvlbzdv +4-5 j: jjqdvt +2-9 n: nnnnfvxnpvfjnnbg +2-9 c: pgctwtlccvl +4-6 n: nnnqncnnn +2-5 l: lzllllnll +6-10 k: zjkkvkkzwkk +3-4 h: hhhkh +3-15 k: kkkgkkkxkkknkkv +4-7 k: skkknxdf +4-8 h: hhhhzhkdj +9-11 j: jjjjjjjjjjsk +3-6 s: qswngs +3-7 v: vvcvvvvvv +11-12 s: ggcxrkcsntpsf +3-4 v: hvvv +15-16 t: tttfttftttfttttkttt +8-13 b: bbbbbbqgbrbcbqbb +9-12 s: cstnslsssjsv +3-13 j: kwkjmmqtpcjcjhdllwjj +2-6 r: rrrrrn +10-11 s: bsssssstsssss +1-6 f: cgggvn +3-10 l: hblknspmlx +2-3 h: hthhhs +3-5 n: nnbwn +1-3 z: nzgzzz +16-19 p: pppppppppqppppppppqp +5-11 d: ddddntddgdd +6-7 s: ssssswk +1-7 r: lrrkrqrwbkk +2-9 z: cwzthgjzzgzzhzz +3-4 c: cxxt +5-13 c: jczpcmcccccccjpc +7-8 l: llllllgf +3-11 q: rqkxqckgqqqqb +2-14 r: mhlbmsrsgrwrtrbrpt +2-10 v: tvnxllwvhdkcjsvxlztx +2-3 q: nwqqwfqlq +16-18 k: bdkkktkkkkkkkkkqjq +8-17 k: pkjckwmzqkkvqqshks +6-7 f: fffffbff +3-7 p: pppphpp +6-8 w: wrwcwwjswnwwwp +3-4 h: hhfh +2-5 h: hhhrsc +3-19 b: txxmgxhnbqhtjhjfvdbb +14-20 w: wwwwwwpwqnwwkwwwwwwn +5-6 z: zzzzvz +2-5 x: rxxllbfhnvxx +15-17 f: fwtfjjfffwfffffph +1-6 m: msmmmwmsmmmm +6-11 f: mdtdmfhpscfmrm +1-16 l: zmlxxnlzzbhfscll +14-15 x: xxxxxxsxxxxxxxt +7-10 q: qqqbpqqqhdq +5-8 v: vvbrtvwvvvlvvsv +6-7 x: xwfzsjxxxxzpxvsx +7-10 l: lllllldmll +10-11 c: cctccccccdw +3-6 g: ggppjgg +16-18 c: cfcmcczcvwccccgccccc +7-9 v: vxdvzvvvchbvvvq +11-18 t: btnttrttqbtgtxttstrc +8-10 p: hppppbptppsp +9-10 g: gtsgglgggtgg +13-20 f: ffpsfffffffffffffffg +12-19 m: rmpmmdvzmtmmbfmtxwm +1-7 g: xgggggxgg +1-8 w: wsnkwcww +2-3 z: zmzgxp +9-11 w: wwwnwwwwwkww +5-6 w: wwwwrw +4-5 s: prxsnscsm +5-6 n: nnnndn +6-14 g: gfqgggwggjlswdg +1-3 t: tvtqmtth +9-10 v: vvvvvvvvvtvvv +3-4 d: dbvfdw +10-11 x: nxhxxnxxxvx +19-20 c: rcchbchcsjghmnjbgpcc +7-8 n: mxtnnkxcnhnnjknptn +3-8 k: knjxpwkkzkmzkwfknvzg +9-10 z: zzzzlznzztzzz +1-2 k: pxkk +2-3 k: spkgwkpmns +12-13 k: kkhkkkkvkkkkzk +10-13 g: zgwsbgkgjgdgtsm +4-6 k: kkkwkk +3-12 w: gbxksbkdvjpwrjplhwvf +1-6 t: gtttsckj +14-15 w: wwwwwwwwwwwwwzl +2-5 b: zbblgb +11-12 m: mtmmmmmmmmsvb +10-11 t: tttntttttmtttt +6-7 v: vvvvvvqv +8-16 b: bbbbgbbrxbbbbrlgb +3-5 f: fvfpfghnvkdtpfjrf +10-13 t: rtttjtsfttttntwt +10-12 c: ccvcccrczcccqccnj +6-13 f: fffffkfffffffff +9-17 k: kkkkkkkklkkkkkkkr +6-9 k: kkkkkkkkvkkkkkkkm +7-8 g: gnggmggmgg +7-8 l: plllgllsll +6-12 s: sssksjxssssssfw +7-8 d: fdddqddjddfdpmdlf +6-11 g: gqggrggvgbgg +2-3 s: sstsqssssv +15-16 b: sbfbbbbbbbbnbbrmbbb +13-14 z: tbptvnfzxwlkgz +3-5 r: rddtrrdrt +10-15 p: pspppfppwppppwpp +2-4 j: bsjjjgkvtw +3-5 m: pmmmh +6-7 k: nkdkhwsq +3-13 r: rfrrfrrrrrrzr +17-19 r: rrrrrrrrrrrrrdhrrrfr +8-10 n: nnnnnbnxhnn +5-6 k: kkkwdwkd +14-15 s: sdsgspstttvfsks +1-7 t: tttttttt +6-7 r: cgrrmrrrrgrbcnhfmvn +5-18 v: vkxvvsvwhvvvrvvvmrr +3-4 m: xsmkm +10-12 q: qqqqqqqqqqqcqqq +1-6 h: jwhhchh +6-10 g: ggggmdgtgg +5-6 v: jsxvwvvsvcrzlnvqwmvq +2-6 k: kkkkkck +3-6 w: nckwlw +4-17 k: wqjnlsmcskndlwpxb +5-7 f: qrrlbfrrx +4-9 z: czcrzzzgl +2-3 t: wttt +1-8 b: vxbwwxrbbqsjb +11-12 g: dxgggvbwhnrcg +3-6 j: jjjjjjjj +1-10 v: vvvgvvrvvjvvdvv +2-13 k: jkgfcnqkhdkdjk +5-7 q: kqqqhrqq +1-4 p: npqpqpmh +6-7 x: hmxrnxh +4-15 n: npncnnnznnkqdnqnn +2-3 d: dhzdd +6-10 n: nnnnntnnnnnnn +4-9 l: lllclllhll +14-16 n: nnnnnnnnnnnnnvnnn +6-13 d: sckddddfxdddvdddd +1-5 f: hfffff +7-14 f: fffnnfpfffjgqqdf +9-13 s: msssrsssnsssssss +5-8 j: bjvdgjkj +3-5 q: msqqnnb +11-14 t: ttqtttttttttttttthtt +13-14 x: xrxxxvxxxxxxxxxxxbbx +19-20 h: hhhhhhhhhhhhhhhhhhht +2-4 q: wrlqgqlh +9-14 z: zznzzzzcmvthzd +2-6 m: qtlznmbbsznljmhd +3-5 m: mmmmcl +2-6 s: ssnbgssnsskhssnrz +4-5 r: rrrlr +1-4 b: gbbb +12-13 v: xvvvvvvvvvvkmv +7-15 b: bbbbblgbbbbbbbbbbbbb +3-4 n: ngpv +3-12 b: bbbbbbbbbbbhrbbbbbbb +19-20 s: sssssssssssssssssssf +6-12 c: jcccbckcqxcss +2-10 r: frsbkmqqpsqdpzrvpr +3-12 p: ppmkphqgdfphhcpd +2-4 n: ncnn +7-14 j: rjjjjjjjjmjjjhjjj +6-13 p: pppfvppppppppp +7-8 h: xhbshhhtmxvh +6-9 f: fffffrfffffffff +1-6 d: dddddkddd +3-14 p: pprppppppppppppppp +5-6 s: sssssvs +4-13 z: zzzgzzzzjzzzzx +14-16 f: fffffffvfffffnfff +4-7 h: xhskgbhbbbq +5-7 f: fvffffj +8-9 g: hxfgghdgg +15-17 w: pxwzjdwcwwmmwnwxz +2-6 q: pmqqqqqq +11-17 d: cndddtdnvlnkkrfzdcz +7-8 w: swwwwwgww +19-20 c: ckhccpjcjcxcsccvdngh +5-10 d: ddddddddddd +4-5 r: rrrrrr +2-4 c: gcccql +5-6 t: qbmqfxcsr +2-6 f: qpfffzff +3-5 p: lpbwph +3-6 t: ttrtttt +2-5 s: wslkz +3-4 x: cgxt +6-20 z: hdxggqznjfwjnlvmwsmz +1-4 l: tkzlgkl +5-18 s: ssssrssssssssssssss +8-13 p: wpkpcpppgwplpppp +6-7 g: ggzxpvpdfggjrgkqdjb +3-9 b: pqfnczzfb +11-12 l: llllllllllxl +17-18 m: gzjvfgvcdxmxxftlzmb +9-12 v: wvbvvfvrvvxzvsqvfwrv +13-14 j: jrjjjjjjjjjjjs +2-20 r: vrvcqskfwkqrdhvtlshr +1-3 v: wvvvr +2-3 s: tqlhxbs +2-19 j: jjjjjjjjjjjjjjjjjjbj +2-8 h: zphrlkvhczdgrhrm +9-14 d: ddddbdddddddxfdd +3-4 c: cctc +5-6 x: xxxxxvjx +10-11 s: mvsxzpmssqx +1-18 m: wmmmmmmmmmmmmmmmmmm +2-8 f: vffkrwff +11-14 k: lgknbvvkkfkcqq +2-4 n: wcnnv +4-6 w: wwbwnwwb +2-5 d: jlddr +2-7 h: hhqhfhvghzgtbfjhhshn +2-4 j: fjjjbj +1-10 w: wwwlwbwwsswdww +9-10 m: mmmmmmtmmmcmc +13-18 l: lbtllllllzllllllbdl +5-6 k: bkckkkkkkkckkkkzb +14-17 v: vvvvvvvvvvvvvvvvvvvv +9-13 d: dmdpddddqtddddddvd +10-12 k: kkkgkrkrkkktxkk +7-8 w: hvwtwwwwwww +6-13 d: fdpgbqbpmdmkdxkbl +2-3 m: ctmmlm +2-5 j: lcjjj +8-13 w: wwwwwwwwwwwnwws +12-13 l: lwlmlrlllcpkz +2-4 g: xgtgg +5-6 c: cccccrc +3-10 f: mffnffvjxtfdjd +1-9 k: nkkdkkkkkkk +7-13 t: wpmtclstqwtpctgcql +3-4 r: rfrr +6-10 b: vkbbbwzbwbbjnsrwb +4-7 s: qxlmqssqcbhstknvjzss +3-4 m: mmfmnmmxvm +1-2 b: cbcjhzllb +17-19 z: zzzzzzzzzzzkzzgzzzsz +2-4 d: ddkml +6-10 m: nmmmmcwmmmlsm +4-9 b: lhlbxslpxfbzzn +5-13 n: njvdnxghhkxlsrm +3-4 p: pppq +1-5 s: sgvrgss +1-13 h: hhhhhhhhhhhhmfhh +9-11 w: cwwswwwnwwbwwh +6-7 j: jhdjjjzj +18-19 g: ggggggggggnggggggzgg +13-14 k: kwkkkxnpkkwkmf +5-6 f: ffffff +18-20 c: cccccccccccccccccfcc +2-5 d: ddhbdbl +10-14 g: ggwgfggjggggfhlg +11-13 q: qqsxqfqqqqqcqwqzq +16-19 q: fqsqtqqqqrcjqqxxwqf +6-7 w: wwwwwwx +6-7 h: hhhhhhp +1-8 w: twkwwbgw +7-15 g: ggggggkggggggggdg +3-5 j: jjjjtjj +1-5 p: phdppmwnfxpjpbgpppbd +6-10 b: bbbclbbbbhbbbbb +9-10 n: nnnnnnnnnp +5-6 n: tktfwnqcqrv +3-9 l: lhlxflczslf +3-4 f: fffnvthfj +10-11 j: gjjjjjjjjjbtj +3-8 x: dxxcrsxxbbqrfx +2-3 h: hfhhh +2-16 c: wcfpjtbpgbbbnnpzchn +7-11 x: xxrxcxxvxxfjxsvpxm +9-10 f: fffsfffsfpfff +2-4 f: hvcf +9-11 b: bbbbbbbbjbp +8-14 n: qqlxkxnnhvbdzn +7-10 v: vvvvvvcvvgxvvvvqvp +2-4 c: ncvw +3-4 r: rprg +6-12 p: tpmdppppgpppgp +6-7 t: tztrtwt +10-11 f: qfwfcwfngds +4-13 q: zsqqqqqtdkqgnrtqqqr +5-6 p: phpppjpprpb +11-12 c: cjcccccccpccp +8-10 g: xggpbmgkfg +9-10 l: gllllllllzl +2-5 z: jzzjqqvp +3-4 c: sccc +6-13 x: xzhxgzxfxxsvxh +7-8 n: nnnnnnxn +18-19 t: tttttfttttrttttttttt +10-11 l: llllllfllrl +3-7 r: tllmrjr +3-4 q: vqntw +1-3 w: wjwxr +3-12 z: zwqzjfmxgtxmqvzgqnsw +6-7 m: wmmsmhmmc +6-10 l: lllllrllljll +6-8 n: nnnnnnnp +5-8 h: shqhhfhghhqhdw +19-20 l: lnrrrbztcfsmcjkgdzlj +3-8 q: pxqgbqsg +1-3 q: fqrqqqqqqqqbq +2-7 k: skcsgnk +4-9 v: vvvvvxvvsvvvvvzvpzq +3-16 c: ccccccccccccccccc +10-12 c: chdpcccccccwcdvhtmc +6-8 s: sxmssfwdss +1-2 b: hrbsckfth +2-4 s: sngs +6-8 b: bbbgdvbb +13-14 b: bphfdzgmhhwmbhb +3-4 h: hhhjh +2-3 p: cppp +13-14 r: rrrrrrrrrrrrxr +6-8 r: drbzrhdr +4-16 j: cmtlnsprjjfhjgmj +1-10 m: dfsmnmmdmm +5-11 w: gtxwxmzwwtwrmwwwgwcd +4-5 c: cccfcc +3-9 p: pbpppdfpfpp +1-3 m: nmmx +16-20 f: ffffffffffffffflffff +2-13 v: pvmmfzmjvvqvv +8-9 z: wrzbzzzdz +10-11 n: nntnnvnnncn +14-16 s: sssssssjjssssxss +1-13 p: kppppppppppppp +14-15 w: wwwwwwwwwwwwwmk +3-6 t: ttkdtp +6-7 d: dddddpdd +5-15 r: lrpsrrrrrzrrcxng +10-11 f: ffffffffftff +6-10 l: lllllwllflwlll +2-8 w: rjdvtwgw +10-15 c: cchcccccccccccjc +6-17 q: gjlcqjvhsbjmcgxvv +5-11 s: ssssllsssssmh +14-16 s: sssssssssssssssfx +6-7 l: lnjqdlllltlvkwnvlxs +10-11 r: lttktskrkcx +16-17 w: hfgdbpwkqlwfvqtwf +2-3 k: tnkp +13-20 w: wxrcpvvxfkxnzfvgvfkn +14-15 f: tffffffffffffrf +7-8 q: gqqxhtfqqqqpqm +5-9 r: dkklrrrnh +2-15 w: wlwwwlgmhwwgwwkwz +4-5 h: hhhthh +9-11 x: mxxxxxxxxqqx +3-6 f: lzfxfmjfbgrl +8-9 s: ssstssszss +11-13 t: lrkbvdhvjzklltk +6-7 x: xxdgxxwgx +2-4 n: pnnn +8-10 d: dnhlvbddxdjgvn +4-7 q: qqqfqqqq +2-4 t: ljztcptpmz +2-16 f: fqfffffffffffffff +12-13 t: tttttttttttxct +9-12 s: sssstssssssb +3-11 g: nsggzgxljjlfxfl +1-7 l: llnqshlsjl +8-10 d: jzddhkjdwpddddddcwj +2-5 v: rvznj +6-8 l: lllllzljl +1-2 v: ddvmtr +13-18 s: bspzsssrtssdvmwqss +5-7 s: ssstgss +4-8 j: kqfknvjj +4-5 x: xmxxx +9-10 z: zzkzzzzzzpzzzzzz +16-18 t: dttsttttttttttnttwt +13-17 d: dbvdddddddddpfzdd +4-5 m: mmmmnms +2-3 f: dlzzdhh +3-5 t: nstxrvjkjq +2-6 d: ddfxwvd +1-5 l: lkppsbblc +8-11 c: ccskccccbhclc +2-3 x: bdhx +2-4 v: hxfhfs +8-10 f: fgffsmfrzfqlfffmnpr +1-4 m: qjpm +3-4 f: fbcff +2-5 t: ttglwxxghtznp +2-12 l: lrllllllllllll +2-8 m: rgmnzxxmwmbdldhbpnsp +2-8 j: jjjjjjjjjqjjj diff --git a/3/1.py b/3/1.py new file mode 100644 index 0000000..4cb0687 --- /dev/null +++ b/3/1.py @@ -0,0 +1,12 @@ +count = 0 +width = None +x = 0 +with open("input") as f: + for passline in f: + passline = passline.strip() + width = len(passline) + if passline[x] == "#": + count += 1 + x = (x + 3) % width + +print(count) diff --git a/3/2.py b/3/2.py new file mode 100644 index 0000000..385c609 --- /dev/null +++ b/3/2.py @@ -0,0 +1,23 @@ +def calculate_trees(dx, dy): + count = 0 + width = None + x = 0 + y = 0 + with open("input") as f: + for passline in f: + if not bool(y % dy): + passline = passline.strip() + width = len(passline) + if passline[x] == "#": + count += 1 + x = (x + dx) % width + y = y + 1 + return(count) + +i1 = calculate_trees(1, 1) +i2 = calculate_trees(3, 1) +i3 = calculate_trees(5, 1) +i4 = calculate_trees(7, 1) +i5 = calculate_trees(1, 2) + +print(i1*i2*i3*i4*i5) diff --git a/3/input b/3/input new file mode 100644 index 0000000..a8bdfa9 --- /dev/null +++ b/3/input @@ -0,0 +1,323 @@ +......#...........#...#........ +.#.....#...##.......#.....##... +......#.#....#................. +..............#.#.......#...... +.....#.#...##...#.#..#..#..#..# +.......##...#..#...........#... +.......#.##.#...#.#.........#.. +..#...##............##......#.# +.......#.......##......##.##.#. +...#...#........#....#........# +#............###.#......#.....# +..#........#....#..#..........# +..#..##....#......#..#......#.. +........#......#......#..#..#.. +..#...#....#..##.......#.#..... +.....#.#......#..#....#.##.#..# +......###.....#..#..........#.. +.#................#.#.......... +.........#..#...#......##...... +##...#....#...#.#...#.##..#.... +...##...#....#.........###..... +.#.#....#.........##........... +....#.#..#..#...........#...... +..#..#.#....#....#...#......... +..........##.....#.##.......... +..#.#....#..##......#.#.....##. +..#...#.##......#..........#... +......#....#..#.....#.....#...# +#.#...##.#.##.........#..#..... +...#.#.#.........#.....#.#.#... +..#.........#...............#.. +#..##.....#.........#....#..... +...#....##..##...........##..#. +......##.................#.#... +##.......#....#.#.#.....#...... +....#.#...#.................##. +#...#.........##.....#......... +#....#.###..#.....##.#....#.... +#..#....#...#....#.#.#......... +.......#...........#....#.....# +#...#.............#........#... +.......#.....#...#..#.........# +.##.....##.....##.......#...... +....##...##.......#..#.#.....#. +.##.........#......#........##. +.......#...#...###.#..#........ +..#..###......##..##........... +.#..#......##..#.#.........#... +...#.......#........#...#.#.... +...#....#..#....#.....##....... +............#......#..........# +.#.......#......#.#....#..#.#.. +##.........#.#.#..........#.... +....##.....#................... +.......#..#........#........... +....##.#..#......###.......#... +....#....#...#.#......#...#...# +.......#.....##..#....#...#.... +#...#........#.........#..##... +...........##.........#.#...#.. +....................#....#.##.. +.#..#..#.........#....#..#..##. +......................#........ +..###....#.......#.....###.##.. +......#......#.......#.....#..# +.....#...#.##...#......#....#.. +.....#.....##.............#.... +....#......##..#....#.......#.. +.##....#..##......###....#..#.. +...###.#.............##...#.#.. +.....#.....#.....#...#..#.#.... +..#.#.....###......#.......#... +..........#.##......#.........# +..##..#.......................# +........#......#............#.. +#..#..#..#.#......#..#....#.... +...##......#.............#....# +...........#..#..##.......#.... +.....#.........#.#..#.......... +##...#.......#.#....#..#..#.... +#.#.#...........#.##.#.#..###.. +#..#...........#.........##.... +............#.#..............#. +.#....#....##.#...........#..#. +....#...#..#...#....#....#..... +....#....#...#..#......#....... +.#.#.........#.......#.##...... +.#..##...#........#...........# +##...#..#...#...#.....#...#.... +....###.#..#.......##.#..#...#. +...##.......####...##.#........ +#....#....#.#............#..#.. +#.#.#...#...................##. +##......#...........#.......... +#..#..#....#.#...#......#...... +.##...#.....#...#........#..... +..#............#..............# +###........#..#....#...#......# +###..##......#.##...........#.. +........#......#..#.....#...... +...#..........#..#...........#. +....#..#..#....#........#....#. +.#.................#####..##..# +.....#...##..#..........#.##... +..#..............#...####...... +.....#.##..................#.#. +...#.#..#..#........#.......... +...........#....#.#..#......... +.....##.......#......#..#.#.#.. +...#.............##...#........ +...............#.......##.##.## +.....#........#........#.#..#.. +...#..#.........#...##...###... +...#.#.............###.#.....#. +.#..........#......###.#.#..... +....##..##.............###..... +..#..#.#...##...#.......##..... +..........###........#.....#.#. +#.#....#..#..#......#...#...#.. +.........#......##.......#.#..# +...#.....#.........##..#..#.... +.....##.#..##.##..##........... +...#.#.##....#..#..#......#..#. +#....#....#.............#...##. +#......#..#.####.#.##.#....##.. +##.#.#....##..................# +.....##......#.......##.......# +..#......#.#..#...##......##... +..#....##....#.........#..##... +.###.....#....##...........#... +.........#......#.#........#... +...#...#..#.#....######.#..#... +###......#.#.#.........##.#.... +.....#...#.........#...#....... +....#.............#.#.........# +..##...#...#.......#......#.... +.....#...#.#...#...#..#........ +.#......#...................... +...###..#..#....#...##.#....... +.#.#.....##...#...#.....#...##. +.....###..###....##............ +.....##....#..#.....#.##....... +#........#.........#...#..#.... +...#.#.........#..#.......#.#.. +....#.#....##.....#..........#. +.#..#....#..#.#..#..#.........# +#...#....#..............#...... +.........#.....#.##...##...###. +.....#....##............#..#... +.....#.#...........#..#....#... +.#..........#...#......#.....#. +.#...........#.....#..#........ +..............#......##...#..#. +...#.........#..#....#..##...## +..##...#..................#.... +#.....#.................#...... +...#......#..#..........#.#.... +......#..#.....#.....##...#..#. +......#........#..........#.... +...##.##....#..##.#..........#. +..........#..#.#.##............ +..##........................#.. +.....#.#.#......#....#....##... +#....#.........#........#...... +.##.......#...#...#........##.. +....##......#....#.#..........# +..#.......#..............#..... +.....#......#.#...#..#.#.#....# +.....#..#........#.##.##....... +##........#..........#......... +.....#..##....#.#......###..##. +#.#...##.........#.#.....#..#.. +#....#.#...#........#.....#..#. +........................#...... +....###......#............#...# +...#..##......#..##.........#.. +.............#...#......#..#..# +....#......#....#...........#.. +..#.#.####.#.....##........#..# +#..#...#..#..#.......#.#..#.... +..#..#..#....#.#.........##..#. +.......#......#.#............#. +...#.............#.#.....#..... +...#.#.........##...#.#.......# +........#...#...........##...#. +..........#....#......#....##.. +..........#...........#........ +...#..#...#..........#......#.. +......#......#....#.....#..#.#. +........##.................#..# +.#........#.#...........#...... +#...#........#.#.#.....#.#.#... +.........#........#..#..#....#. +##........#..........#....#..#. +.#.##...........#..#.#..##....# +.......#.#....#..#......#...... +..#.....#........##..#......### +..#...#..................#....# +......#...#..#.##.......#...... +........#...#.#................ +.........#............#........ +..#.....##....#.#..##.......... +#.....#..........#....#........ +....#.#...#...##....#.....##... +..#.#.......#.............#...# +...##..............#......#.... +#......#...#................##. +.#.#...#.#..#.................. +...##.......#...........#.#.#.. +#......#.#.#........#.##...#### +.......#..#.#.........#.#.##..# +..............#....#.........#. +...........#.#..#....##......#. +#.............#...##..#.......# +.........#............#...#.##. +.......#.........#.#.....#..#.. +........................#.#.##. +#......#.#......#.........#.... +...#.......#.......#.....#..... +#..#....#................#...#. +........#.#..##......#......... +#..#...##....##....##.........# +.......#...#...###............. +#.#..#........#.#.#............ +#.....#........##.........#.#.. +.#..........#....#.#....###.... +.#.....#...#.#........#..#.##.. +...#.##......#..#.............# +..##..#.#...................#.. +.....#....#...#.#...#...#...... +.....#..#.#....#.#............. +#.#....#.#.##..###..........#.. +........#.#.............#..#... +.........#.......#............. +.##.#............##...#........ +......#................#....... +...............#..#...........# +...#.......#...#.##.....#....#. +##..##..#..........#........... +.##.#.......#...#..#...#...#... +....#..#...........#....#.##... +.#........#........#....#...... +.......#...#.##.#..#.#..#...... +.#..#......#....#...##....#.#.. +......#...##.#.....##.###.....# +.#....#..#......#...#.#.....#.. +#............#....##...##.##... +#...#.#....#...#.......##...##. +#...........#.##..#....#.....#. +...#..#...#.........#.......#.. +.#....#.....#............#.#..# +.#.....#.#...#.#....##......### +..#..#.#.#...#..#.............# +...#...#..#....#........#...##. +.......#.....#...##...........# +#.##.................#...##...# +..............##........#.....# +............#...#..#.......#.#. +#.#.....#.........#...#......#. +#.###..#......#..#..#...#.....# +.....#.......#................. +........#..#......#.#...#...... +#.......#..#........#...#..#... +..#...#.......##.............#. +#.......#.......##...#......... +.........#....#.#..##.....#...# +..#.....#.#.......#....#....... +...#.......#.....#..##.#..#.... +....#.......#.#.#.............. +.#..#......#........#.#..##..## +....#...#.##.#...#....##...#... +#..##..#.....#.......#......... +....#..#..#.#............#..... +#.......##...##..##............ +............................... +....#.......#.##...#.....#.#... +...#........#....#.#..#..#..... +##.......#.....##.#.#....#....# +#.............#...........#.##. +#...........#.#..........#..... +#..#....#....#.#.........#.#... +......#.#.#..#.#.#............. +...#.....#........##....#...... +..#...#...#.#.......#......#... +.##........#...#..#..........#. +..#...........#..##.....##..... +............#..#.#...#.....#... +..........#....##.......#...... +....#....#.................#..# +....#...............#.........# +..#.#...#......#..........##... +.....#...........#.........#..# +.......#.....##.....#.#........ +.#.#..........#....#........... +.#..##....#........#....#...... +....#.#..#.......#..#.........# +..#....#.....#......#..#....... +......#........#.......#...#.#. +.......#.......#....#.....##... +....##........#..#...#.#..#...# +.#......#...........##....#.... +##....##......#.......#.......# +.##....#.##......#.......##..#. +...#..#.#.#.......#..#.###..... +..........##....#..#.##........ +...#........###.#..#........#.. +.....#....#..##....#.....#....# +#..........#..........#.#....#. +..#....#.....#..............#.. +#..................#......#.##. +.#...#.#.....#.........##...... +...#...........#.....#......#.. +......#.....#.#..##......##.... +...#....###..#.....#..#..##..## +......#.......##..#..#......... +#..#.#....#.#..#..........##.#. +..#..#..##..#.#.#.#.....#...... +..#.#...#..#.....###.#......... +##.#.#......#........#.####.... +.............#..#..#....#...... +...##..........#.......#.#....# +..#.....................#...... +..#..#...##...#.##........#.... diff --git a/4/1.py b/4/1.py new file mode 100644 index 0000000..6efffea --- /dev/null +++ b/4/1.py @@ -0,0 +1,23 @@ +def validate(entry, required_fields): + for field in required_fields: + if field not in entry: + return False + + return True + +entries = [] +entry = {} +with open("input") as f: + for line in f: + line = line.strip() + if not line: + entries.append(entry) + entry = {} + else: + for field in line.split(" "): + key, value = field.split(":") + entry[key] = value + entries.append(entry) + +required = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'] +print(list(map(lambda x: validate(x, required), entries)).count(True)) diff --git a/4/2.py b/4/2.py new file mode 100644 index 0000000..3928357 --- /dev/null +++ b/4/2.py @@ -0,0 +1,54 @@ +def validate_int(value, mi, ma): + value = int(value) + return mi <= value <= ma + +def validate_height(value): + v = int(value[:-2]) + t = value[-2:] + if (t == "cm" and 150<=v<=193) or (t == "in" and 59<=v<=76): + return True + return False + +def validate_hex(h): + return h[0] == "#" and len(h[1:]) == 6 and is_int(h[1:], base=16) + +def is_int(x, base=10): + try: + int(x, base=base) + except ValueError: + return False + return True + +validators = { + 'byr': lambda x: validate_int(x, 1920, 2002), + 'iyr': lambda x: validate_int(x, 2010, 2020), + 'eyr': lambda x: validate_int(x, 2020, 2030), + 'hgt': lambda x: validate_height(x), + 'hcl': lambda x: validate_hex(x), + 'ecl': lambda x: x in ['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'], + 'pid': lambda x: len(x) == 9 and is_int(x) + } + + +def validate(entry, required_fields): + for field in required_fields: + if field not in entry or not validators[field](entry[field]): + return False + + return True + +entries = [{}] +index = 0 +with open("input") as f: + for line in f: + line = line.strip() + if not line: + entries.append({}) + index = index + 1 + else: + for entry in line.split(" "): + key, value = entry.split(":") + entries[index][key] = value + +required = ['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid'] +print(list(map(lambda x: validate(x, required), entries)).count(True)) diff --git a/4/input b/4/input new file mode 100644 index 0000000..b17cdcd --- /dev/null +++ b/4/input @@ -0,0 +1,1023 @@ +ecl:#eef340 eyr:2023 hcl:#c0946f pid:244684338 iyr:2020 cid:57 byr:1969 hgt:152cm + +pid:303807545 cid:213 ecl:gry hcl:#fffffd +eyr:2038 byr:1951 +hgt:171cm iyr:2011 + +hcl:#c0946f byr:1933 eyr:2025 pid:517067213 hgt:173cm +ecl:hzl +iyr:2018 + +pid:5253256652 byr:2009 hgt:152cm iyr:1989 eyr:1968 hcl:64cb63 ecl:hzl + +iyr:2013 +pid:862607211 eyr:2020 +hgt:174cm +byr:1990 +ecl:blu hcl:#888785 + +ecl:grn byr:1955 +pid:608098408 eyr:2027 iyr:2020 hcl:#b6652a cid:264 +hgt:181cm + +byr:1998 ecl:hzl eyr:2021 +hcl:#866857 hgt:189cm iyr:2030 +pid:013735467 + +pid:075417314 hcl:#b6652a byr:1957 +iyr:2011 +hgt:154cm +eyr:2025 +ecl:amb + +iyr:1993 hgt:74cm eyr:1960 +byr:2029 +hcl:293244 ecl:#3cb5e5 pid:4861232363 + +hgt:153cm hcl:#6b5442 pid:065240897 byr:1932 +cid:196 ecl:blu eyr:2028 iyr:2019 + +eyr:2024 ecl:amb +hcl:#866857 byr:1922 pid:496904942 hgt:164cm iyr:2020 + +pid:847705161 byr:1951 cid:124 iyr:1991 +eyr:2028 ecl:dne +hcl:6b2d28 hgt:172cm + +byr:2007 iyr:2029 ecl:hzl eyr:2026 hgt:168in +hcl:z +pid:63151612 + +iyr:2027 hgt:172in +cid:174 byr:2014 hcl:z eyr:1921 +ecl:grt pid:#cebdc2 + +ecl:amb hcl:#d09c0f +iyr:2015 hgt:156cm eyr:2026 byr:1962 +pid:086120872 + +cid:125 +pid:837849996 +byr:1958 ecl:brn hgt:166cm hcl:#ceb3a1 eyr:2028 iyr:2012 + +ecl:gry hgt:180cm +pid:939059935 eyr:2023 byr:1977 hcl:#b6652a + +hgt:190in byr:2029 eyr:1984 +ecl:gry hcl:z pid:055092916 iyr:2010 + +hgt:63in ecl:blu byr:1940 iyr:2012 eyr:2029 hcl:#7d3b0c +pid:163033394 + +eyr:2040 pid:181cm +iyr:1928 hgt:76cm hcl:d8aafb byr:1949 cid:275 ecl:xry + +hcl:#cfa07d ecl:oth byr:1948 eyr:2021 +pid:719690182 hgt:179cm iyr:2020 + +byr:1939 cid:266 +eyr:2026 iyr:2017 hcl:#f116d2 +ecl:hzl pid:522421825 +hgt:68in + +hcl:z hgt:61in +cid:115 pid:180cm iyr:2030 byr:2014 eyr:2032 ecl:hzl + +ecl:xry +eyr:2028 pid:191cm iyr:2015 hgt:150cm byr:2029 + +eyr:2027 +hcl:#a97842 pid:997937480 hgt:61in iyr:2019 +byr:1921 +ecl:grn + +hgt:163cm +pid:912318455 iyr:2016 byr:1988 ecl:brn hcl:#a97842 cid:221 eyr:2029 + +cid:333 hcl:#c0946f +hgt:163cm iyr:2018 eyr:2027 ecl:oth + +cid:70 hcl:#c0946f +pid:961507902 byr:1949 ecl:grn iyr:2017 eyr:2029 hgt:69in + +hgt:169cm ecl:amb +iyr:2013 pid:496169901 +byr:1943 eyr:2028 hcl:#ceb3a1 +cid:249 + +ecl:blu cid:343 +iyr:1998 hgt:154in hcl:#efcc98 byr:1972 + +pid:508213120 iyr:2012 eyr:2025 hcl:z hgt:70cm byr:1976 +ecl:brn + +iyr:1924 +eyr:2005 +hcl:z +hgt:167 pid:154cm +byr:2007 + +pid:761333244 hgt:180cm iyr:2017 hcl:#18171d eyr:2021 +byr:1983 +cid:67 ecl:oth + +eyr:1993 +byr:2003 +hcl:#602927 +ecl:grt +cid:84 hgt:178 +pid:1847086637 iyr:2026 + +hcl:#866857 hgt:162cm pid:483774485 iyr:2010 +byr:1946 eyr:2028 ecl:gry + +pid:726639691 eyr:2028 +hgt:171cm hcl:#ff65a6 +iyr:2011 byr:1989 + +hcl:z iyr:2026 ecl:xry +eyr:2037 byr:2005 pid:#f09a0f +hgt:68 cid:156 + +hgt:71in ecl:blu eyr:2026 hcl:#18171d +byr:1981 iyr:2017 +pid:698636544 + +eyr:2021 +byr:1957 ecl:brn pid:365378126 cid:93 iyr:2019 hcl:#18171d hgt:179cm + +byr:1996 iyr:2014 hgt:64cm +eyr:2034 +hcl:z + +pid:629486472 cid:140 +hgt:192cm eyr:2020 hcl:#b6652a iyr:1988 byr:2021 ecl:brn + +byr:1955 iyr:2015 eyr:2030 +ecl:gry hcl:z pid:6550198754 +hgt:158cm cid:305 + +ecl:gry hcl:#a97842 +hgt:176cm eyr:2022 pid:810146585 iyr:2020 + +byr:2027 hcl:#cfa07d +iyr:2011 ecl:#f07598 +cid:293 +hgt:150cm pid:#fa948d eyr:2029 + +eyr:2028 iyr:2013 hgt:69in ecl:gry pid:317170371 +cid:147 hcl:#bfe1f1 + +byr:1976 +pid:059341891 hgt:174cm +ecl:oth +eyr:2029 iyr:2017 hcl:#733820 + +iyr:2018 hcl:#ceb3a1 hgt:188cm cid:308 +pid:792826885 byr:1948 ecl:blu eyr:2028 + +iyr:2017 cid:94 hcl:#95c7dc +pid:231757803 eyr:2022 +byr:1992 hgt:153cm ecl:amb + +eyr:2027 +iyr:2011 hgt:186cm +ecl:brn pid:996347346 hcl:#866857 +byr:1960 + +eyr:2025 byr:2001 +ecl:blu pid:755715478 iyr:2019 hgt:61in + +ecl:gry +eyr:2038 +hgt:81 hcl:z iyr:2028 +cid:214 byr:1965 + +pid:412744447 byr:1979 hcl:#cfa07d ecl:blu +eyr:2029 cid:157 +hgt:180in iyr:1948 + +hgt:170cm +pid:623557081 byr:1924 eyr:2024 hcl:98d623 iyr:2012 ecl:amb + +cid:311 ecl:grn +iyr:2011 byr:1982 +eyr:2002 hcl:#ef318a +pid:0548169957 +hgt:87 + +eyr:2030 hcl:#733820 iyr:2016 pid:558470391 +byr:1936 ecl:oth hgt:185cm + +iyr:2019 +ecl:amb byr:1949 +pid:376468392 +hgt:178cm + +pid:019195245 +ecl:grn hgt:171cm +byr:1978 iyr:2011 eyr:2022 hcl:#733820 +cid:134 + +hcl:#623a2f hgt:192cm eyr:2026 byr:1977 +ecl:grn cid:308 + +ecl:hzl pid:715816358 hgt:69in iyr:2014 hcl:#623a2f +byr:1996 +eyr:2027 + +iyr:1947 +ecl:#39a697 +hgt:183cm byr:2029 +eyr:2022 pid:7951883913 +hcl:z + +ecl:gry byr:1950 +hcl:#18171d hgt:168cm iyr:2020 pid:677187333 eyr:2027 + +byr:1969 ecl:blu hcl:#18171d iyr:2011 +hgt:162cm +pid:701349891 + +cid:269 byr:1966 +iyr:2011 +pid:905940527 eyr:2023 hgt:190cm +ecl:brn hcl:#ceb3a1 + +eyr:2027 pid:454627395 ecl:brn +hcl:#ceb3a1 cid:302 hgt:184cm +byr:1959 +iyr:2015 + +iyr:2011 +eyr:2028 +hgt:166cm +hcl:#733820 byr:1938 ecl:blu pid:857984986 + +hcl:#c0946f ecl:brn pid:226877822 +hgt:182cm byr:1998 +cid:160 + +hgt:186in pid:26499164 byr:2017 +hcl:z +iyr:1998 eyr:2026 +cid:331 ecl:#236556 + +pid:328866543 +hgt:165cm eyr:2039 iyr:1987 ecl:amb byr:2018 hcl:z + +iyr:2016 eyr:2036 hcl:#888785 byr:1976 pid:160402352 hgt:76cm ecl:blu + +ecl:blu +hcl:#fffffd eyr:2025 hgt:66in pid:979788527 +byr:1957 iyr:2013 + +ecl:grn pid:279357265 iyr:2019 eyr:2021 byr:1953 +hgt:177cm hcl:#c0946f + +ecl:oth hcl:z eyr:2025 byr:1949 hgt:189cm iyr:2020 pid:901383503 + +byr:2019 hcl:#733820 +pid:31022828 eyr:1929 +hgt:75cm iyr:2012 ecl:grn + +pid:080462937 +ecl:blu hcl:#866857 +cid:102 +iyr:2013 eyr:2025 byr:1975 hgt:64in + +iyr:2016 +eyr:2028 +cid:125 +byr:1979 hcl:#866857 +ecl:brn hgt:173cm pid:814947616 + +hcl:z byr:2020 pid:#c3b54b hgt:174in eyr:2038 +iyr:2016 +ecl:gmt + +cid:132 +iyr:1958 +pid:61543452 hcl:z +ecl:zzz eyr:2039 byr:2006 + +cid:55 eyr:2022 byr:1954 iyr:2015 +hgt:188cm hcl:#a97842 pid:49143631 ecl:amb + +hgt:152cm +byr:1982 +iyr:2013 ecl:blu +hcl:#341e13 +eyr:2026 pid:440841976 + +iyr:2019 ecl:blu pid:553456616 hcl:#733820 hgt:160cm byr:1932 eyr:2030 + +byr:1980 hgt:169cm hcl:#7d3b0c cid:312 iyr:2010 +eyr:2026 pid:028550304 ecl:grn + +ecl:amb eyr:2021 iyr:2014 hgt:71in pid:986053283 byr:1981 + +ecl:oth +eyr:2023 hcl:#888785 +byr:1949 +iyr:2016 pid:699325656 + +hgt:63cm cid:297 eyr:2020 pid:990390922 +hcl:#602927 ecl:lzr +iyr:2012 byr:2016 + +hcl:9ea2fa eyr:2023 pid:088680493 +byr:1998 iyr:2017 ecl:utc hgt:170cm cid:175 + +cid:316 iyr:2016 eyr:2026 hcl:#79ff1d hgt:65in +byr:1997 pid:215466710 ecl:oth + +cid:213 byr:1983 hcl:#888785 iyr:2016 pid:767747981 eyr:2025 +ecl:hzl hgt:168cm + +eyr:2030 byr:1972 +cid:282 +ecl:gry hgt:178cm +hcl:#a97842 +iyr:2018 + +hcl:#6b5442 ecl:amb +eyr:2028 cid:104 hgt:159cm pid:446429120 iyr:2012 +byr:1938 + +byr:1940 hgt:178cm ecl:oth +hcl:#ceb3a1 +pid:845683663 iyr:2015 eyr:2024 + +byr:1940 pid:496262233 +hgt:184cm hcl:#b6652a +ecl:grn cid:152 iyr:2012 eyr:2029 + +hgt:185cm pid:455744229 byr:1954 eyr:2022 ecl:gry hcl:#6b5442 iyr:2012 + +hgt:182cm byr:1966 eyr:2028 ecl:#a5b7fc +iyr:2029 + +pid:343591896 +cid:58 +ecl:hzl +eyr:2022 hgt:180in byr:2021 +hcl:#6b5442 + +ecl:utc hcl:#b6652a +pid:635147657 byr:2020 +eyr:2022 hgt:157cm iyr:2018 + +ecl:grt cid:312 iyr:1959 pid:154262836 +hgt:171cm +hcl:#fffffd +eyr:2024 +byr:1982 + +hcl:#7a12b4 pid:223424149 ecl:hzl hgt:175cm +byr:1930 iyr:2010 eyr:2028 + +hcl:#c0946f pid:633476454 eyr:2026 iyr:2011 +byr:1934 +hgt:186cm +cid:289 ecl:gry + +hcl:#fffffd pid:376300524 hgt:155cm byr:1964 iyr:2017 eyr:2021 ecl:grn + +hcl:a5d4dc byr:2006 cid:165 ecl:#db800f iyr:2029 pid:0199789970 eyr:1961 hgt:61cm + +eyr:2027 hgt:170cm iyr:2010 +hcl:#c0946f +ecl:grn pid:415726530 +byr:1985 + +cid:197 byr:1957 hgt:192in hcl:#a97842 ecl:hzl eyr:2029 pid:958973455 iyr:2011 + +iyr:2015 pid:933689314 hgt:162cm ecl:amb +cid:122 eyr:2021 +hcl:#6b5442 byr:1973 + +eyr:2026 hgt:172cm +iyr:2012 +ecl:brn hcl:#733820 pid:004474632 +byr:2000 + +hgt:191cm eyr:2030 byr:1999 pid:9155071477 iyr:2026 hcl:#602927 cid:315 +ecl:grn + +iyr:2010 pid:182884251 hcl:#18171d hgt:154cm +eyr:2020 +byr:1926 ecl:oth + +iyr:2019 eyr:1920 pid:132839546 +cid:283 hgt:188in hcl:#efcc98 byr:2027 + +iyr:2011 hgt:177cm +cid:117 byr:1976 +ecl:gry +hcl:#623a2f eyr:2030 pid:134592046 + +byr:1968 hgt:146 +iyr:2013 hcl:eefdc4 eyr:2028 +ecl:xry pid:722120008 + +iyr:2016 byr:1941 hgt:67cm cid:51 hcl:#b6652a ecl:hzl eyr:2034 pid:994005715 + +hcl:#cfa07d ecl:oth +hgt:182cm eyr:2021 pid:612583941 +byr:1983 +iyr:2019 + +byr:1922 +hcl:#602927 hgt:161cm ecl:gry eyr:2020 pid:190170808 iyr:2013 + +hgt:63cm cid:136 +iyr:1999 +pid:8235748647 hcl:z +byr:2022 eyr:1933 +ecl:#304383 + +cid:273 ecl:blu hcl:z +iyr:2011 byr:2007 +eyr:2020 +pid:942473857 hgt:178in + +ecl:grt byr:2029 hgt:187in eyr:2030 cid:160 +hcl:#efcc98 pid:#39f22b +iyr:1966 + +byr:1978 ecl:oth iyr:2011 hgt:164cm eyr:2027 hcl:#cfa07d + +hgt:75cm hcl:#1e8137 byr:1986 ecl:blu eyr:2022 pid:796688423 +iyr:2012 + +eyr:2026 +ecl:#3013af hcl:z pid:#e8597f hgt:123 iyr:2025 byr:1942 + +hcl:z hgt:177in +iyr:1993 pid:#4c9348 byr:2008 eyr:1989 + +pid:123524366 byr:1935 +hgt:156cm hcl:#7d3b0c +iyr:2020 ecl:brn eyr:2020 + +hcl:z eyr:2038 pid:7663741757 ecl:gmt hgt:174 +byr:2008 iyr:1939 +cid:225 + +hcl:#888785 hgt:172cm +ecl:oth pid:500711541 eyr:2027 +byr:1931 iyr:2012 + +pid:575447108 ecl:amb byr:1943 +hcl:#888785 hgt:173cm eyr:2024 + +eyr:2021 iyr:2010 pid:178773264 hgt:157cm byr:1965 hcl:#bb7bcf ecl:amb + +iyr:2023 ecl:#35bd84 byr:2020 +hgt:72in +eyr:2037 +hcl:#6b5442 +pid:421311669 + +byr:1921 iyr:2011 +pid:146088688 +eyr:2023 hcl:#15ed24 hgt:183cm +ecl:brn + +hcl:#b6652a cid:243 +byr:1993 eyr:2024 +iyr:2014 hgt:172cm +pid:771275594 + +eyr:2024 +hcl:#cfa07d pid:858807920 cid:293 hgt:157cm ecl:hzl iyr:2013 byr:1984 + +ecl:blu hgt:193cm cid:73 hcl:#18171d eyr:2026 +iyr:2016 pid:124151812 byr:1945 + +ecl:amb iyr:2018 +pid:214555737 hgt:157cm +eyr:2028 +byr:1925 hcl:#866857 + +pid:5633250409 +hcl:4ef7d8 +byr:2004 iyr:1958 +hgt:96 +eyr:2038 ecl:xry cid:274 + +byr:1972 pid:401239851 hgt:184in hcl:z iyr:2017 +eyr:2030 ecl:#cb289a cid:140 + +hgt:175cm +byr:1926 hcl:#cfa07d eyr:2029 ecl:gry pid:325039730 iyr:2017 + +cid:101 hgt:166cm byr:1986 ecl:amb +hcl:#7d3b0c iyr:2013 +pid:413769688 eyr:2024 + +hgt:159cm cid:311 +byr:1993 eyr:2028 pid:188cm ecl:oth hcl:#602927 iyr:2013 + +pid:565831038 +ecl:amb +hgt:155cm hcl:#fffffd cid:335 iyr:2016 +eyr:2029 byr:1997 + +hgt:122 +byr:2022 +eyr:2028 ecl:blu iyr:2017 pid:269710626 hcl:#b6652a + +cid:196 +byr:1953 hcl:#6b5442 iyr:2010 +pid:216121215 hgt:188cm ecl:blu + +iyr:2011 hcl:98166c hgt:62cm +byr:2028 +eyr:2024 +pid:792478385 ecl:grn + +hcl:#efcc98 iyr:2012 pid:020039675 eyr:2021 byr:1974 hgt:156cm +ecl:hzl + +cid:123 hcl:#7d3b0c +byr:2026 eyr:2004 iyr:2012 ecl:oth pid:349203133 hgt:160cm + +pid:085461475 +byr:1962 iyr:2020 hcl:#623a2f +eyr:2024 +cid:80 ecl:brn +hgt:154cm + +ecl:oth hgt:156cm iyr:2016 +hcl:#6b5442 +byr:1973 +eyr:2021 pid:539898580 + +iyr:2026 hgt:191cm +hcl:z +byr:1930 pid:#abc2f0 ecl:blu cid:242 eyr:2024 + +cid:167 +hgt:179cm +iyr:2017 eyr:2021 pid:756797571 byr:1949 ecl:brn hcl:#a97842 + +byr:1975 eyr:2030 +ecl:oth hgt:169in pid:4031206183 hcl:#733820 iyr:2017 cid:244 + +ecl:#54cfeb hgt:152cm +iyr:2026 hcl:36b4b9 +byr:2030 +pid:#fa1cb9 eyr:1964 + +byr:1974 cid:99 hcl:9e3296 +eyr:2032 +pid:686747414 +iyr:1995 +ecl:amb + +iyr:2030 ecl:oth hcl:z byr:1979 +pid:114661006 hgt:191cm eyr:1941 + +hcl:#341e13 iyr:2014 byr:1953 +pid:188326193 ecl:gry hgt:189cm cid:283 +eyr:2030 + +byr:1975 +pid:092061576 hgt:73in eyr:2023 +ecl:brn cid:227 hcl:#5e9d91 +iyr:2011 + +hcl:#7d3b0c hgt:167cm cid:141 +eyr:1957 byr:2012 ecl:gmt iyr:2019 pid:#1b7c8a + +hgt:168cm hcl:#c0946f pid:599500784 byr:1930 eyr:2023 ecl:hzl cid:113 +iyr:2013 + +eyr:2030 hcl:#b4cb4f +hgt:68in +ecl:brn byr:1923 pid:699162086 + +iyr:2013 +ecl:dne hcl:z eyr:1971 +pid:#580add byr:2020 +hgt:190cm + +hcl:#ceb3a1 +byr:1976 eyr:2020 +cid:162 iyr:2016 +hgt:168cm +ecl:hzl + +pid:050478613 hgt:59cm +iyr:2017 +ecl:grn byr:2030 hcl:#cfa07d eyr:2025 + +pid:352943968 eyr:2025 byr:1980 iyr:2014 ecl:gry hcl:#c0946f +hgt:193cm + +pid:328621931 cid:310 hgt:170cm +hcl:#733820 byr:1955 +iyr:2016 +eyr:2028 ecl:hzl + +hcl:#866857 +pid:095858739 byr:1956 +iyr:2018 hgt:193cm +ecl:hzl +eyr:2029 + +pid:70973661 eyr:2039 ecl:gry +iyr:2016 +cid:291 +hcl:#623a2f hgt:97 + +hcl:4d51a8 +eyr:1978 +ecl:gmt +byr:2029 iyr:2022 +pid:34507041 hgt:61cm + +byr:1989 ecl:brn pid:769582914 +eyr:2026 cid:218 +iyr:2020 hcl:#866857 hgt:184cm + +ecl:brn +iyr:1998 cid:227 +hgt:162in +byr:2026 +hcl:#602927 eyr:2027 pid:236998728 + +ecl:gry byr:1984 hgt:157 cid:295 +eyr:2020 +iyr:2018 hcl:#733820 +pid:037871534 + +hgt:166cm hcl:#c0946f pid:412146401 +iyr:2011 +eyr:2022 +byr:1938 +ecl:brn + +ecl:brn cid:95 byr:1981 eyr:2030 hcl:#efcc98 pid:777041035 hgt:152cm iyr:2011 + +eyr:2024 hgt:89 pid:3761913749 iyr:1939 byr:1967 hcl:a222f6 cid:165 ecl:#7fe574 + +cid:339 hgt:156cm +ecl:brn iyr:2013 byr:1951 hcl:#efcc98 eyr:2026 +pid:863566946 + +ecl:brn hcl:#6b5442 eyr:2023 +pid:787129723 byr:1949 iyr:2015 + +pid:#7f615a +cid:202 hcl:#6b5442 eyr:2028 +ecl:#a5419c +hgt:75cm +iyr:2011 +byr:2001 + +pid:864001133 +cid:236 +byr:1943 hcl:#733820 ecl:dne eyr:2025 hgt:171cm iyr:1989 + +pid:193073684 ecl:grn byr:1962 iyr:2014 +hcl:#cfa07d hgt:189cm +cid:321 eyr:2029 + +byr:1959 +hcl:#b6652a +eyr:2026 +hgt:159cm pid:815014918 iyr:2011 ecl:amb + +iyr:2017 hgt:182cm +hcl:#a97842 eyr:2023 ecl:grn pid:656177536 +byr:1973 + +eyr:1923 ecl:grn +cid:138 iyr:2020 +hgt:164cm byr:1958 hcl:#c0946f pid:783366277 + +iyr:1932 hgt:172 ecl:blu +hcl:#733820 byr:1962 pid:554221464 + +cid:169 pid:922622614 +byr:1942 hcl:#ceb3a1 hgt:169cm eyr:2024 +ecl:gry iyr:2017 + +cid:219 ecl:grn +hgt:156cm byr:1998 eyr:2021 +iyr:2017 hcl:#ceb3a1 pid:450186263 + +ecl:amb hgt:179cm pid:768428582 iyr:2010 eyr:2023 byr:1952 hcl:#fffffd + +eyr:2024 +hgt:193cm +iyr:2017 pid:469033795 byr:1979 hcl:#18171d cid:67 ecl:amb + +iyr:2016 byr:1937 pid:798267514 hgt:155cm hcl:#866857 eyr:2026 +ecl:oth + +hgt:172cm hcl:#866857 iyr:2018 pid:662186551 +byr:1996 +eyr:2025 ecl:amb + +pid:2854521962 +iyr:2021 +ecl:zzz +hcl:12f1ba eyr:2037 hgt:159cm +byr:1937 + +ecl:oth pid:488050418 byr:1927 hcl:#a97842 hgt:153cm iyr:2013 eyr:2024 + +pid:119536312 ecl:#2036ad +hcl:543178 iyr:2020 +byr:2013 +hgt:177cm +eyr:2022 + +pid:788908662 hcl:#602927 eyr:2029 +ecl:oth byr:1930 +iyr:2020 +hgt:179cm + +byr:1972 +pid:053386972 iyr:2014 ecl:grn hgt:65in hcl:#cfa07d + +pid:9828921035 ecl:blu +hcl:z hgt:152in +eyr:1949 byr:2010 + +cid:157 pid:097910554 byr:1999 +hgt:159cm hcl:#6b5442 ecl:blu eyr:2024 +iyr:2010 + +hcl:#a97842 +eyr:2040 ecl:#f8ad77 +hgt:173cm +byr:2019 iyr:2010 +pid:#d16a6e + +ecl:dne hgt:191cm iyr:2020 hcl:#b6652a +eyr:2021 pid:571971509 byr:1983 + +hcl:#18171d iyr:2016 pid:159074622 +eyr:2027 hgt:163cm byr:1954 +cid:257 + +pid:243560302 cid:58 +hcl:53a4cf byr:2012 +ecl:#fdbfb8 eyr:1920 hgt:179 iyr:2026 + +pid:040606106 eyr:2030 hgt:188cm +byr:1969 +iyr:2012 hcl:#ceb3a1 ecl:amb + +eyr:2022 +hgt:175cm hcl:#b6652a byr:1967 pid:269969031 +iyr:2018 + +hcl:#18171d cid:278 byr:1931 +pid:134809791 +eyr:2035 ecl:#44e6cd iyr:1993 + +hgt:177in +ecl:utc cid:289 +iyr:1923 +hcl:13a67a pid:3045345984 byr:2030 eyr:1944 + +pid:839901650 eyr:2030 +ecl:grn +byr:2015 iyr:2017 hgt:168 hcl:131f4e + +iyr:2015 pid:529736732 ecl:brn hgt:176cm +eyr:2026 byr:1952 hcl:#6b5442 + +hcl:#c0946f +cid:323 pid:303966428 iyr:2019 +eyr:2027 hgt:170cm +byr:2001 +ecl:brn + +pid:193678728 hgt:72in eyr:2027 iyr:2015 byr:1951 ecl:gry hcl:#18171d + +eyr:2026 cid:283 +iyr:1938 pid:687430885 +hgt:186cm +byr:1949 ecl:#521638 hcl:d13b2f + +eyr:2024 hcl:#ceb3a1 iyr:2013 ecl:brn +hgt:168cm pid:792088241 + +hcl:#888785 ecl:amb +byr:2009 iyr:2015 +hgt:151cm +eyr:2020 pid:223927808 + +byr:1926 +pid:717704850 +hcl:#623a2f eyr:2022 hgt:64in iyr:2018 ecl:gry + +eyr:2023 byr:1954 +hgt:169cm +ecl:hzl +iyr:2010 pid:116868997 hcl:#18171d + +ecl:hzl byr:1965 hcl:#a97842 iyr:2011 pid:506354451 hgt:172cm eyr:2029 + +eyr:2022 pid:994565705 +iyr:2013 ecl:brn hcl:#623a2f +byr:1979 + +iyr:2011 +byr:1931 hgt:183cm hcl:#284f26 cid:306 +ecl:amb eyr:2021 +pid:977533079 + +eyr:2027 +iyr:2011 ecl:gry +byr:1993 +pid:272334781 hgt:161cm hcl:#9a35b6 + +eyr:2026 +hcl:#602927 ecl:blu +pid:212300161 byr:1946 +cid:193 iyr:2020 hgt:157cm + +pid:538594567 byr:1976 eyr:2027 hcl:#efcc98 iyr:2011 hgt:154cm ecl:oth + +byr:1949 +hcl:z ecl:#ce67aa +eyr:1942 pid:7978941589 iyr:2025 hgt:161in + +hcl:#c0946f +cid:55 +byr:1963 ecl:blu hgt:161cm +pid:547120453 iyr:2015 eyr:2021 + +hgt:173cm eyr:2022 +iyr:2016 byr:2001 +ecl:hzl pid:239803460 + +hcl:#b6652a ecl:oth eyr:2021 hgt:167cm pid:401266644 iyr:1969 byr:1974 + +eyr:2030 pid:581963885 +hcl:#64cb23 +ecl:blu +byr:1928 hgt:181cm iyr:2018 + +pid:186338247 +ecl:hzl hgt:193cm hcl:#ceb3a1 +eyr:2022 iyr:2010 + +iyr:2015 ecl:gry hgt:159cm eyr:2027 hcl:#ceb3a1 +byr:1925 pid:715902111 cid:149 + +iyr:2018 hcl:#623a2f eyr:2020 hgt:162cm ecl:grn cid:135 +byr:1922 +pid:373216777 + +eyr:2020 pid:749899012 hcl:#888785 ecl:brn +iyr:2010 cid:225 hgt:172cm +byr:1972 + +iyr:2020 hgt:178cm ecl:grn hcl:#18171d pid:613792489 cid:240 +eyr:2028 +byr:1972 + +iyr:2015 byr:1938 eyr:2026 +cid:113 ecl:grn +pid:846231640 hgt:161cm +hcl:#b6652a + +ecl:gry +hcl:#ceb3a1 +byr:1956 cid:338 pid:936012518 +hgt:62in +eyr:2029 iyr:2016 + +pid:730866353 ecl:brn byr:1986 +iyr:2014 +hgt:190cm +eyr:2021 hcl:#a97842 cid:126 + +eyr:2021 +cid:180 pid:958310635 ecl:brn iyr:2015 hgt:189cm hcl:#efcc98 + +hgt:188cm ecl:hzl pid:179001863 iyr:2016 eyr:2029 hcl:#341e13 byr:1932 + +cid:77 eyr:2027 hcl:#623a2f iyr:2016 ecl:brn hgt:170cm +byr:1947 + +hgt:66in pid:617518313 iyr:2013 byr:1977 hcl:#b6652a ecl:brn eyr:2025 + +pid:787861420 +iyr:2014 hcl:#623a2f hgt:61in +ecl:oth cid:78 +eyr:2022 byr:1975 + +ecl:hzl +iyr:2017 eyr:2028 hcl:#602927 +byr:1958 pid:985208714 +hgt:160cm + +byr:2002 +iyr:2013 +hcl:#341e13 pid:188110633 ecl:gry hgt:169cm +eyr:2025 + +byr:1981 +eyr:2028 +hcl:#341e13 ecl:amb hgt:160cm cid:121 +iyr:2015 pid:963848397 + +iyr:2013 hcl:#866857 pid:#db8648 eyr:2021 ecl:gry +byr:1975 +hgt:153cm cid:114 + +hgt:109 +cid:287 hcl:#6b5442 +iyr:2028 byr:1926 eyr:2036 pid:2378208387 +ecl:#245a62 + +pid:857722366 +byr:1975 eyr:2027 +ecl:grn iyr:2019 hcl:#0afad1 +hgt:66in + +byr:1935 hcl:#cfa07d hgt:173cm ecl:brn eyr:2021 iyr:2019 + +cid:66 eyr:2024 hcl:#efcc98 byr:2002 iyr:2010 +hgt:176cm pid:697153153 ecl:amb + +iyr:2019 +hcl:#cfa07d ecl:blu +pid:695914972 +eyr:2024 +hgt:158cm +byr:1943 + +ecl:xry hgt:62in +pid:14733148 cid:148 +iyr:2016 byr:1925 hcl:#6b5442 +eyr:2028 + +iyr:2025 +cid:53 hgt:132 ecl:gmt hcl:159b19 +pid:156cm +byr:2025 eyr:2001 + +hcl:#623a2f ecl:oth byr:1974 iyr:2018 hgt:161cm eyr:2029 pid:6826285172 + +ecl:gry +byr:1956 hcl:#7d3b0c hgt:170cm iyr:2020 + +eyr:2020 +pid:#946a88 hgt:186cm hcl:#733820 byr:1946 ecl:#016645 iyr:2015 + +hgt:181cm hcl:#888785 iyr:2013 pid:634152817 +byr:1982 cid:245 ecl:grn eyr:2021 + +ecl:brn +pid:737531770 iyr:2010 +eyr:2020 +byr:1929 hgt:189cm hcl:#c0946f + +cid:158 iyr:2019 hcl:#341e13 eyr:2027 ecl:amb +byr:1986 pid:834976623 + +pid:976934668 cid:61 eyr:2020 iyr:2020 +hgt:76in byr:1927 ecl:amb +hcl:#e05ee3 + +pid:526042518 iyr:2019 eyr:2027 hcl:#623a2f byr:1976 ecl:amb + +pid:279367290 hcl:#a97842 hgt:158cm +eyr:2027 +byr:1959 +iyr:2020 + +ecl:xry byr:2028 +pid:357216861 hcl:#a97842 eyr:2024 hgt:66cm +iyr:2012 + +hgt:188in +ecl:lzr cid:64 eyr:1958 byr:2014 hcl:z pid:285207570 iyr:2026 + +eyr:1973 iyr:2017 ecl:oth cid:282 pid:695814158 +hcl:z + +iyr:2010 pid:661168409 +hcl:#53c696 +hgt:186cm ecl:amb +byr:1960 +eyr:2029 + +eyr:1982 hgt:169cm +iyr:2002 byr:2025 hcl:327f93 pid:831648100 + +byr:1967 ecl:oth +eyr:2021 +hcl:#602927 iyr:2014 +pid:274974402 hgt:183cm diff --git a/5/1.py b/5/1.py new file mode 100644 index 0000000..195bed2 --- /dev/null +++ b/5/1.py @@ -0,0 +1,33 @@ +def calculate_position(code): + rowt = 128 + rowb = 0 + colb = 0 + colt = 8 + for l in code[:7]: + if l == "F": + rowt = (rowt + rowb) / 2 + else: + rowb = (rowt + rowb) / 2 + + for l in code[7:]: + if l == "L": + colt = (colt + colb) / 2 + else: + colb = (colt + colb) / 2 + + return int(rowt-1), int(colt-1) + +def calculate_id(row, col): + return (row * 8) + col + +with open("input") as f: + max_id = 0 + for line in f: + line = line.strip() + new_id = calculate_id(*calculate_position(line)) + if new_id > max_id: + max_id = new_id + +print(max_id) + + diff --git a/5/2.py b/5/2.py new file mode 100644 index 0000000..e4d2114 --- /dev/null +++ b/5/2.py @@ -0,0 +1,33 @@ +def calculate_position(code): + rowt = 128 + rowb = 0 + colb = 0 + colt = 8 + for l in code[:7]: + if l == "F": + rowt = (rowt + rowb) / 2 + else: + rowb = (rowt + rowb) / 2 + + for l in code[7:]: + if l == "L": + colt = (colt + colb) / 2 + else: + colb = (colt + colb) / 2 + + return int(rowt-1), int(colt-1) + +def calculate_id(row, col): + return (row * 8) + col + +with open("input") as f: + ids = [] + for line in f: + line = line.strip() + new_id = calculate_id(*calculate_position(line)) + ids.append(new_id) + +ids.sort() +for i in range(len(ids) - 1): + if ids[i] + 2 == ids[i+1]: + print(ids[i] + 1) diff --git a/5/input b/5/input new file mode 100644 index 0000000..5ddea26 --- /dev/null +++ b/5/input @@ -0,0 +1,933 @@ +BBBFBFFRLR +BFFFFFFRLL +BFBBBBFLLL +BBFBFFFRRR +BBBFBFBRLR +FBFFBBBLRL +FBFFBFFRRL +FFBBFFFRRL +BBBFBFBLLL +BBBBFFFLLR +FBBFFBFRRR +BFFFBBBLRR +FFBBFFBRLR +FFBFFBFRRL +BBBBFBFRLL +BBBBBFFLRL +FFBBBFBRRR +FFFBBBFLLR +FFBFFBBLRL +FBBFBBFLRL +FFBBBBFRRR +BFBFBFFRLL +BBFBFFFLLL +FFFBBBFRRL +BBFFBFBRLL +FBFBFBFLLL +BBFFFFBLRR +FFBBBFFRRL +FFFBFBBLRL +FBBFBBBLLL +BBFBFFBRLR +FBFBFBBRLL +FFFBBFBLRL +FFBFFBFLRR +BBFBBBFRRL +BBFBBFBLLR +BBFBBBFRLL +BFFBBBBRLR +FBFBFBBRLR +FBBBFFBRRR +FBBBFBFLLR +FFBFBBFLRL +BFBFBFBRLL +BFFFBFBLRR +FFBBBFBRLR +BBFBFFBLRR +BFFFFBBLLL +BFFFFBFLLR +FBFBBBBRLR +BBFFBBFLRL +BFBFFBBRLR +FFFBFBFRLL +BFFFBBFRRL +BBFBFBFRLL +BFBFFFFRRL +FFBFBBBRLR +FBBFFFFLRR +FBFBBFBRLR +BBFFBFFLRR +BBBFFBFLRR +BFFFFFBRLR +FBBFFFBRRL +BFFFBBFRRR +BBBFBFBRLL +BFBBFBBRLR +BFBFBFBLLL +BBBFFFFRLL +BFFFFBFRLL +FFBBFFBLLL +FBFFBBFRRL +FFBBFBFRLR +FFBFFFFRLR +BFBBBFBLLL +FBBFFBFRRL +FBFBFFFLRR +BFFBBBFLRR +FBBFBBBRLL +FFBFBBFLLR +FFFBFFBRLR +BBFBBFFRRR +BFBBBFFLLL +BFBBFBBRRR +BBFFFBBLLR +BBFBFFBLLR +BFFBBFFRRL +FFFBBFBRRR +BBFBBFFLLR +BFFBBBBRLL +BFFBBFFRLR +FFFBFBFLRL +FBFFBBFLLR +BFBBFBFRRL +BFBFFFBRLL +FBBFBFFLRR +FFBFBBFLLL +BFBBFBBRRL +FBBBFFFLRR +BBBFBBFRRL +BBFBBBFRRR +BFFBFFFLRL +BFBFBBFRRL +FFBBFFFLLR +FBFFFFBLLL +BFBBBBFRLR +FFBFBFBRLL +FBFFFBFLRL +FFBFBFFLLL +FBBBFFBRLL +FBBBBBFLLR +FFBFBBBLLL +BFFBBBBLLL +BFFBBBFRLL +FBFFFFBLRL +BFBFFBFRRR +FFBFFFFRLL +BBFBBFFRRL +BBFBFBBLLL +FFBBBBBRRR +BBBFFFBLRL +FBFBBBFRLL +BFBFFFBRRL +FFBFBBBRLL +FBBBFBFLLL +FBFBFFBLRL +FBBBFFFLRL +FBBBFBBRRL +FBBFFBBRRR +FFBFFBBRRR +FBFFFFFLLL +FFBBBFFRLL +FBBFFFBRRR +BFBBBFBRRR +FFBFFBBRRL +FFFBFBFLLR +FBBFBFBRLL +FBFFBFFRLR +BFBBFFBLRR +FFBFBBBLRR +FFBFBBFLRR +BFFFBFFLRL +BBFFFBBRLL +FFFBBFFLRL +BBFBBFFLLL +BFFBFFBRLR +BBBFFBFRRR +FBFFBFBRLL +FBBBFFBLLR +FFFBBFFLRR +FFFBBFBLLL +FBFBFBBLLR +FBBBFBFRLR +BFBBBFBLRL +FBFBFFBLLL +FBFBBFBRRR +BFFBBBBRRR +BFFFBFBLLR +FFFBFBBRRL +BBBBFBBLLL +FBFFBFBLRR +BFFFFFFLLL +FFBFBFBRLR +FBBBFFFLLR +BBBFFFBLRR +FBFFFFBRRL +FBFFFFBRLR +FBFFBBBLRR +BBFBFBFRRL +BFFFBFBRLL +FBFBBFFRRR +BFFFFFFRLR +BFBBBBBLLR +FBBBBFBLRR +FBBFBBFRLR +BBFBBBFLRR +FBFFFBBLRR +BBBBFFFRLL +BFBFFBBRRR +FBFFFBBLLR +FFBBBFFRLR +FBBFFFBRLL +FBBFFBBRRL +BFFFFFFLLR +BBFBFBBRRL +FBFFFBFRRL +BBBBFFFLRL +FFBFFBBLRR +FBFFFFFRLL +BFFFFBFRRR +FFBFFFBRRR +FBFBBFBRRL +FFBFBFBLRR +BBFBFFFRLR +BBFFBBBRRR +BBFFFBFLRL +FBBBBBFLRL +FBBBFFBRLR +FBBFBBBLLR +FFBFBBFRLR +BFFBFBBLRL +BBBFBFBLRL +BFFBBFBRLR +BFFFFFBRRL +FBBFFBBLRR +BFBBBBFRRL +BBBBFFFRLR +BFFFFFBLLR +BBBBFBFRRR +BFFBFBBRLR +BFBFBFFLRL +BBFFBBBRLR +BBFFFBFLLR +FFBFFBFLLL +BBFFFFFRRR +BBFBFFFLLR +BFBFFFFLRR +FBFBFBBRRL +FBFFFFFRLR +BBBBFFBLLL +BBFFFBBLRR +FFBBBBBRLL +FBFFFFFLRR +BFFFBBFLRL +FBBBBFBLLL +FBFBBFFLLL +BBFFFBBRLR +FFFBFFBRRR +BBFFBBBRLL +BFBFFBBLLR +FFFBBBBRRL +BFFFFBFLLL +FBBFBBBRRR +BFBBFBBLLL +BFBFBBFLRL +FBFFBFFRRR +FBBFFFFRLL +FBBBFBFRRR +BBBFBFFLRR +BBFFBBBLRR +FFBBFBBRRR +BFBBBFBLLR +BBFBFFBRLL +FFBBFBBRLL +FFBBBFFLRL +BBFBBBBRRR +FFFBFFFLRR +BFBBBFBRLL +FFBBFBBLLR +BFBFBFFLRR +BBBBFBBRRL +FBBFFBFLLR +BFBBBFFRLL +BBBFFBBLLL +BFBFFBBLRR +FBFFBBBRLR +FBBFBFBRRL +FBFBBBFRRR +FBFFFBBRLR +BBFFFFFLRR +BBBBFFBRLL +BFFBFFFRRR +FFBFBFFLRR +FFFBFBFRLR +BFFFBBFRLL +FFBFBBBRRR +BFFFFBBRLR +BBBFFFFRRL +FBFBFBFRRR +FBBBBFBRLR +FBFBBBFRLR +BBBBFFFLRR +BFFBFFFRLR +BFFFBBBLLL +BFBBFFBRLR +BFBFFBFLLL +BFBFBBFRLL +BFFBBFBLLL +BFBBFFFRLL +FFBBFFBLRL +BBBBFFBRRL +FBBBFFBLRR +FFBBBBBLLR +FBFFFBFLLR +BBFFBFFRRL +BFBFBBBLLL +FBBBBFBRRL +FBFBBBBRRR +BBFBBFBRRR +FBFBFFFRLL +BFBFFBFLRL +BFBFFBBLRL +FFBFBFFRLR +BFBBFBBRLL +FBBBBBBRLR +BBFBBBBLRL +FFBBFBFLLL +FFBBFBBLLL +FFFBBFBRLR +BBBBFBFLLL +FBFBFFBLRR +FFBBFFFLRL +BBFBFFFRLL +FBFFFBFRLL +BBBFBBFLLL +FFBBFFBLRR +BBBBFBFLRR +FBFFFFFRRL +BFBFFBFRLR +FBFBFFBRLR +FBBFBBFRLL +BFFFFFFLRR +BBBFFFFLLL +FFFBBFFRLR +FFBBFFFRLR +BBBFFBBRRL +FBBFBFBLRL +BFFFBBBLRL +FBBFBBBRLR +BFBFFFBLLL +FBFFFBBLRL +FBFFBFFRLL +BFBFBFBLLR +BBFFBFBRLR +BBFFFFBRLR +FFFFBBBRRR +FFBBBBBLLL +BBFBBBBRRL +BBBBBFFLLR +FFFBFFFRLL +BFFBBFFLRR +BFFBBFFLRL +BBBFFBFRLL +FFBFBFBLLL +BFBBBBBLLL +FFBBBBFLRL +FBFFBBFLRL +BBFFFFBLRL +BBBFBBBRLL +BFBFFFBLLR +BFBFBFBRLR +BFBBFFFRRR +BFFBFBFLLL +FBBFBFBLLR +FBFBFBFLRR +FFBFFBFLLR +FFBFFFBLLL +FBFFBFFLRL +FFBBFBFLLR +BFFFBFFLRR +BBFFFBFRLL +FBFBBBFLRR +FFBBFFFLRR +FBBBFBBLLL +BFFBFBFRLR +FFBFBBBLLR +BBBFFBFLLR +BFBFFFBLRL +BFFBBFFLLL +FBFBFFFRRL +BFFBBBBLLR +FFBBBFFLLR +BBFFBBFRRL +FFBFFBFLRL +BBFFBFBRRL +BFBBBFFLRR +BFFBFBBRRR +FBBFBBBLRL +FFBFBFFRRR +BBFBFFFLRL +BBBFFBBLRR +FBBFBFBLRR +BFBBBBFLRL +FBFFFBBRRL +BFFFFBFLRR +BBFFBBFRLL +BFFBFBBLRR +FBBBBFFRLL +BFBFFFFLRL +FBBBBBBLLL +BFBBBBFRLL +BFBFFFFLLL +FFBBBFBLRL +BBFFFFBLLL +BFBBFBFLRR +FFFFBBBRRL +BFFBFBBLLL +FFBBFFFRLL +BFFFBFBRRR +FBBBFBBRRR +BBFBBFBLRR +BFFBFFBLRL +BBFFFBBLRL +BFFBBBFRRR +FFBFFBBRLR +BFFBFBFLLR +BFFBBFFRLL +FBBFBFBRLR +BFFFFFBLRR +BFBFFBFRRL +BFBBFFBLLL +FBFFFFBRRR +BBFFBFFLLL +FBBBBBBLLR +BFFFFFBRRR +BFBFBFFRRR +BBFFBFFRLR +FBBBFFBLLL +BFBFBBFLLL +BFBFBBFRLR +BBFFBFFLLR +FBBFFFBLRR +FBFFBBFLRR +BFFFFBBLLR +FFBFBFBLRL +FFFBBBFRLL +BFFBBFBRRR +BFFBBBFRLR +BBBBFFFRRR +FBBBBFBLRL +FBFFFFBLRR +BFFFBBBRLL +FBFBBFFRLR +FFBBBBFLLR +FFBFFBFRLR +FFBBBBBRRL +FBFFFFFLLR +BFBBBFFLLR +FBFFBBFRLL +BBFFFBFRRL +BBFFBFFLRL +FBFBFFFLLL +BBFFBFFRLL +FFFBFFBLLL +BBFBBFBLRL +BBFFBFBLRL +BFBFBFBRRL +FBBBFBBLRR +FBBBFBFLRL +FBBBBFFRLR +FFBFBFFLLR +BFFFBFBRLR +FBBFFBBRLR +BBFFBBFRRR +BBBFFBBRRR +FFBFFFBRLR +BBBBFFBLRR +BBFBFBFLLL +BBFFFBBLLL +BFBBFFBLRL +FBFBFBFRRL +BBFBBBFLLR +FBBBBBFRRL +BFBFBFBLRR +FBFBFFFRRR +BFBFFBFLLR +BBBFFBFRRL +BBBFBFFLLL +BFFFBFFRRR +FFFBBBBLRR +BFFBBFBLRR +BFFBFBFLRL +BBBBFFBLRL +FBBFBBFRRR +FFFBBBBLLL +FBFFFBBRRR +FBBBFFFLLL +FFBBBBBRLR +BFBFFFFRRR +FBBFFFFRRR +BBBFBFFLRL +BFFFBFFRLR +BFBFFFBLRR +BFBBFBFRLR +BBFFFFFRLR +BFFFBBFLLL +BBBFFFFLRL +BBFFBBBLLL +FBFFBFBRRL +BFBBBBBRLR +FBBFFFBLLL +FBBBFBFLRR +BBFBBBFLLL +FFBFFBBLLR +BFFFBBFLRR +BBBBFFBRRR +BBFFFFBRRL +FBFFFBFLLL +BBFFBBFLLL +BFFFFFFRRL +FBBFFBBRLL +FFBBFBFRRL +BBBFFBBRLL +BFBFBBFRRR +FFBFFFBLRL +BFFFFBBRRR +FFFBBFBRRL +BBBFFBFLRL +BFFBBFBLLR +FFFBFFBLRL +FBBBFBBRLL +BFBBFBBLLR +FBBFFFFLLR +FFBFBFBRRL +FBBFFBBLLL +BBBBFFFLLL +FBBBBBBLRR +FFFBBBBRLR +FBBBBFFRRL +BBFFBBBRRL +FBBFFFFRLR +FFBFBFFLRL +FBFFFBFRRR +FBBFBBFLLR +FBBBBBFLLL +FFBFBFFRLL +FFBFFFFLRR +FFBBBBFLRR +FFFBFBBLLR +BBBFBFBLRR +FFBBFBBRLR +FBFFFFBLLR +BBFBFBBRLR +FBBFFFFLLL +BBBBFBBLLR +BFBBBBFRRR +BBBFBFFRRR +BFFBBBBLRL +BBBFBBBRRR +FBFFBFFLLL +FFBFBFFRRL +BBBBFFBRLR +BFBBFFFRRL +FFBFFFBRLL +BBBBFBFLRL +FBBBFBBLRL +FFBBBFFLLL +FFFBFFBLLR +BFBBFBBLRR +FFBFBBBLRL +BFBBFFFLRR +FFFBFFFLLR +BFBBBBFLLR +BFFBFBFRLL +BFFBFBBRLL +BBFBFFFLRR +BBBFBBFLLR +FBFBFFFLRL +FBFFBFBLLL +FFFBFFBLRR +BFFFBFFRLL +BBFFBBFLLR +BBFFBBBLRL +FBFBBBBLLL +FBBFBBBLRR +FBBBBBFLRR +FBBBBBBLRL +FBFBBFBLLL +FFFBFFBRLL +FBFBBFBLRR +FBBFFBFRLR +BBFFFFFRLL +FFBBFBBRRL +BFBFBBBRLL +BBBFFFFLLR +FBFFFBFRLR +BFFFBFFLLL +BBBFFFBRLL +FBBBBFBLLR +FBBFBFBLLL +BBFBFBFLRR +BFBFBFBLRL +FBBBBBBRRL +BFBFFFFRLL +BBBFBBBLLL +BFBFFFBRLR +FFFBBBBRRR +FFBFFFBRRL +FBFBBBBLRL +BBFBBFBRRL +BBBFFBBLRL +FBFBFBBLLL +FBBBBBBRRR +FFFBFBBRLR +FBFFBFBRRR +FFBBFBBLRL +BBFBBBBLRR +BFFFFFFRRR +BBFFBFBLRR +FFFBBBFLRR +BBFFBBFLRR +BFBFBFFRLR +FBFBFFBRLL +FFBFFFFLLL +FBFBFFBLLR +BFFFFBBLRR +FBBBFFFRRR +FFFBFFFRRL +FBFBBBFRRL +FBBFFFBLRL +FBBBFFBRRL +BBBFBBFLRR +BFBBFBFRRR +FFBFFBFRLL +BBBFBBBRRL +FBBFBFFLRL +BBBFBFFRLL +FFBBBFBLLL +BFFFFFFLRL +FFFBFFFLRL +FBFBBFFLRL +BFFBFBFLRR +BBBFFFFRRR +FBFBBBFLLL +BFFBFBFRRL +BFFFFBFRLR +BFBBBFFLRL +FBBBFBFRRL +BFBBFBFLLR +BFBFBBBLRR +FFFBBBBLLR +FBFBBBBLRR +BFFBFFFLLR +BBFBBFFLRR +BBBBFBBRLR +FFFBBFBLLR +FFFBFBFLLL +BBFBBFFLRL +BFBBFFBRLL +BFBFFFBRRR +FFFBFBFLRR +FFFBBFFRLL +FFBBBBFRLL +BFBBBFFRRR +FBBFBBFRRL +BBFBBBFRLR +FBFBFBBLRL +FBFBFFFLLR +BFFFFBBRLL +BFFFBBBRRR +FBBFBFBRRR +FBFBFBBLRR +BFFBFFBLLL +FFBFFFBLLR +FBBBBBFRLL +FFFBBBFRRR +FFFBFFBRRL +BBFBBBBLLL +BBBBFBBLRL +BBFFFFBRLL +BFFFBBBRRL +FBBBFBFRLL +BFFBBFFRRR +BFFFFFBLRL +FBFBBFFLLR +BFBBBFBRRL +BBFBBFBRLR +BBBBFBFLLR +FBBBFBBRLR +FBFBFBFLRL +BBBFFBBRLR +BBBBBFFLLL +BFFBFBBRRL +BBFFBBFRLR +BFBBBBBLRR +FFBFFBFRRR +BFFFBBBLLR +BFFFBFBRRL +BFFFBFFLLR +FBBFBBFLRR +BBBFFFBRLR +BBBBFBBRRR +BFBFBFBRRR +BBBFBBBLLR +FBBFBFFRLL +BBBFBBFRRR +FFBFBBFRLL +BFFBFFBRLL +FBFBBFBLRL +BBBFBFBRRR +BFFFBBBRLR +BFFBFBFRRR +FFBFBFBRRR +BFBFBBBRLR +BBFFBFBLLR +FFBFFFFRRR +BFBBFFFLLL +BFFFFBBLRL +FBFFBFFLRR +BFFBFFFRLL +BBFBFFBRRL +FBBFFBFLRL +FBBFBFFLLL +FBFFFBFLRR +FBFBFFBRRR +FBBBBFFLLL +BFBFBBBRRR +BBFBFBFLLR +FFBBBFBRRL +BBFBFFBLLL +FBBBBFFRRR +FFFBFBBLRR +FFFBBBFRLR +BBBFFFBRRL +FFBBFBBLRR +FFBBFBFRLL +BBBFFFBRRR +BBFBBFFRLL +FBBFFBFLLL +FBFBBFFRLL +FFBBFBFRRR +BBBBFFBLLR +FBFFBBFLLL +FBFBBFBLLR +FFBBFFFRRR +BBBFBBFRLL +BFFBBFBRLL +FBBBBBBRLL +FBBFFFBRLR +FFBBBBBLRL +BFBBFBBLRL +BBFBFBFRLR +BFBFBBFLRR +FFBFBBFRRR +FFBFFFFLRL +BBFBFFBRRR +BBFBFBFLRL +FFBFFBBRLL +BBFFBFBLLL +BBFFBBBLLR +FBBFBFFLLR +FBBBBFBRLL +BBFFFFFLLL +BBFBFFFRRL +BBFFFBFRRR +BBBFBFFLLR +FFBBBFBLLR +FBFBBBBLLR +BBFFFFFRRL +FBFBFBFRLR +FFBFBBBRRL +FFFBBFFRRL +FFFBBBFLLL +BFBFFFFRLR +BFFBBBFRRL +BFFFBBFLLR +BFFBFFBRRL +BBFBBBBRLL +BBFBFBBRLL +BBFBBBBRLR +BFFFBBFRLR +FBBFFBBLRL +BBBBFBFRRL +BFFBFFBRRR +FFBBFFBLLR +FFBBBBFRLR +FBFFBBBLLR +FFBBFFBRRL +FBFBFFFRLR +BFFBFFBLLR +FBFFFBBLLL +BFBBFFFLRL +FFFBBFFRRR +BFBBFFFRLR +BFBFFBBRLL +BBFFFFBRRR +FBFFFFFLRL +BFFBBBFLRL +BFBBBFBLRR +FFBFFBBLLL +BFBFBBBRRL +FBBBFBBLLR +BFFFBFFRRL +FBBFFBBLLR +BBFFFFBLLR +BFBBFBFRLL +FBFBBBFLRL +BFFBFFFLLL +BBBBFBBRLL +BBBFBBFRLR +FBFFBBBRLL +FBFBBBFLLR +BFBBFFBRRL +FBBFFFFLRL +BFFBBBBRRL +FBFBFBFRLL +BFFBBBFLLR +FBFBFFBRRL +BBFBFBBRRR +FFFFBBBRLR +BBFFFBFRLR +FBBBFFFRLR +FBBBBFFLRR +BBFFFBFLRR +FBFBBFBRLL +BBFFFBBRRL +FFFBBBBLRL +BBFBBFBRLL +FBBBFFFRRL +BFBFBBBLRL +FFFBBBBRLL +BBFFFFFLRL +BBBBFBBLRR +BFBBBBBRRR +BBFFBFBRRR +BFFFBFBLRL +BFBFFBBLLL +BBFFFFFLLR +BFBBBFBRLR +FBFFBFBLRL +FFBFBFBLLR +FBBFBBBRRL +FBFBBBBRRL +BFBFBFFLLL +FBFFFFFRRR +BBFBBBFLRL +FFBFFFFRRL +BBFBFFBLRL +FFBFFFFLLR +FBFFBBBLLL +BBBBFBFRLR +BBBFFBBLLR +FFBBBBFLLL +FBBBBFBRRR +FBBBBBFRLR +FFFBBBFLRL +BBFFFBFLLL +FBFFBFBRLR +FFBBFBFLRL +FFFBBFFLLR +FFFBFFFRLR +BFBFFBBRRL +BBFFBFFRRR +FFFBFBBRRR +BFBFBFFLLR +FBBBFFBLRL +FFBBBBFRRL +BBFBFBBLRR +FFBBFFBRRR +BFBBBBFLRR +BFFBBBBLRR +FBBBBFFLRL +FBBFFFFRRL +FFBBFBFLRR +FFBBBFBRLL +FFFBFBFRRL +FFBBFFFLLL +FBBFBFFRRL +BBFFFBBRRR +BBBFFBFRLR +BFBFFBFRLL +FBBFFFBLLR +BFBBBBBRRL +BFBBFBFLLL +BBBFBFBRRL +FBFFFBBRLL +FBBFBFFRLR +BFFBBBFLLL +FFFBFBBRLL +BBBBFFFRRL +FBFBBFFLRR +BFFFFBBRRL +BBFBBFFRLR +FBFFBFFLLR +BBBFFBFLLL +BFBBBBBLRL +BFFFBFBLLL +BFBFBBBLLR +BBBFFFFLRR +FBBBBBFRRR +FBBFBFFRRR +BBFBFBFRRR +FFFBFFFLLL +FBFFBBBRRL +BBFBBBBLLR +FBFBFBBRRR +FFFBFBBLLL +FFBBBFFRRR +BBBFFFFRLR +BFBFFFFLLR +FBFFFFBRLL +FBBFFBFLRR +BFFBFFFRRL +BBFBFBBLRL +FFFBBFFLLL +BFBBFFBRRR +FFBBBBBLRR +BBBFFFBLLL +FFBFFFBLRR +FFFBFBFRRR +FFFBBFBLRR +FBFFBBFRLR +BFBBFFFLLR +BFFBFFBLRR +FBFFBBFRRR +FFBBFFBRLL +FBFBFBFLLR +FBBFBBFLLL +BFBBBBBRLL +FBFFBFBLLR +BFBBFBFLRL +BFBBBFFRRL +BBBFBFFRRL +FFBBBFFLRR +FBBBFFFRLL +FFFBBFBRLL +BFFBBFBRRL +BFBFBBFLLR +FFBFBBFRRL +FBBBBFFLLR +FFFBFFFRRR +BBBFFFBLLR +BBBFBBBLRR +BBFBBFBLLL +FFBBBFBLRR +BFBFFBFLRR +BFFBBFBLRL +BFBBFFBLLR +FBFFBBBRRR +BBBFBBFLRL +BFBFBFFRRL +BBBFBBBLRL +FBFBBBBRLL +BFFFFBFRRL +BFFFFFBRLL +BFFFFBFLRL +FBBFFBFRLL +BBBFBFBLLR +BBBFBBBRLR +BFFBFFFLRR +BFFBFBBLLR +FBFBBFFRRL +BBFBFBBLLR +BFFFFFBLLL +BFFBBFFLLR diff --git a/6/1.py b/6/1.py new file mode 100644 index 0000000..67d0d56 --- /dev/null +++ b/6/1.py @@ -0,0 +1,13 @@ +entry = set() +total = 0 +with open("input") as f: + for line in f: + line = line.strip() + if not line: + total += len(entry) + entry = set() + else: + entry = set(line) | set(entry) + total += len(entry) + +print(total) diff --git a/6/2.py b/6/2.py new file mode 100644 index 0000000..df1c390 --- /dev/null +++ b/6/2.py @@ -0,0 +1,19 @@ +entry = set() +total = 0 +new_group = True +with open("input") as f: + for line in f: + line = line.strip() + if not line: + total += len(entry) + entry = set() + new_group = True + else: + if new_group: + new_group = False + entry = set(line) + else: + entry = set(line) & entry + total += len(entry) + +print(total) diff --git a/6/einput b/6/einput new file mode 100644 index 0000000..0f5b3bc --- /dev/null +++ b/6/einput @@ -0,0 +1,15 @@ +abc + +a +b +c + +ab +ac + +a +a +a +a + +b diff --git a/6/input b/6/input new file mode 100644 index 0000000..de63680 --- /dev/null +++ b/6/input @@ -0,0 +1,2172 @@ +su +egu + +h +h +h +h + +cpuqz +cfqu +cqekuv +xunqc + +hsaygprt +hsfatgyr +srtagyfbph +rgqywhsealtx + +aefomnlihcsdpyvxurbkq +ipudhrafbcszoxmeqknv +hpricubknmdoqsjvfx +uiwohncxmrpsgqbfvktd + +tvruzqbyspjdfalicehwkm +haswlezrvxjbtckfyipmq +alzkjcqpbsfmetihuvyr +rkjibhvylpfqscaemzt +zjctmrhpseqgfklnibyva + +ix +akdhy +felrouzwt +ygs + +pifgwbtvs +gkwbcpixmt +pbrgitw + +vex +iyhmwl +cks +fj +dzsfn + +xsvmdzrpq +ipzmvdgsxqa +tcouzvhdqxwlspe +psjydqizxgv + +sdcgvhx +ieupwazvdxq +vgfxd +xgjdbslv + +cla +aj +a + +unvhtezsdrxjyka +sruxtezyjhdbkav + +f +s + +l +l +l +l +l + +dqlpmwrfuaeioc +kzpyiembgthnj + +ks +qoh +cftlim +ukv + +ekfwgpbaurcqijdvhtxznl +tafuqxhgjkizprsvylcedb +eukbxaligpfhdvrqtczjm + +muikcbg +ithfkq + +ojdwcsigaflpykv +uzjmbhrdlxnt + +v +v +bv +v +vf + +il +li + +sfqoutzki +erfsuxcjqhtk + +op +gbepq + +vtzpwj +ijmxtzv + +zvoxpf +bwiexz +birzwxq + +h +f + +pjiae +pjkyza +akzptjb +ajipz +sjhap + +xerdismyblco +yaiowgpsedtnzrhx +dilmokqxybrescu + +bxeclkt +bighzytlw + +itokcrbm +isa +iwuq + +rqcue +pisb + +gpdmiyet +mwtgl +gmtdz + +hrselofawdu +roadesjfukh +sopadrhefuj +drusaofeh +hsdoekafur + +matixrjqfw +traxmfqwisj +ajtqkrwmfi +ipmwjaftvrq + +eyvmb +bht +nkpbw +ehtba +zdrsjxblf + +efpgnzjdabsukr +kjpagiumfsbedzrn +djngsrapubzefk +kfbzpeadgrujsn + +pwnqbhjv +vwqhbp +qwbhvp + +sdlizutpwkfbhjm +sdqvrpuflmwjz + +uxahnymvs +xnrlpebt +gnzlxjfoq +kfzxn + +amedtwkgxcypbrqnujvifhs +saxvbymtfrhgdiwqjnkcpe +erjkmaigvdfxcnbtyqhwps + +ivb +vbi +vbi + +gme +gem +gme + +h +p +e +e +e + +b +b +b +b +bl + +t +l +l + +zda +efmil + +ulx +solxwu + +gclsqwx +cgxswl + +qawroeb +owfeqlzxbn +igratbowseq +otvcqjbegw + +mcahbeizsjovynpx +nsbdiclahpmxyove +qgepcisukanhmwyv + +cogbsyu +cusogb +uxoscbgf +bpugchsort +bgocmsuv + +jxigcazhlfsruwetkpynmvqo +drkvthunlgcsyeaxzqpjfwimo +syaeqcvmuxpnkgtwjfhbozilr +mgczoqvyhjuxreawtnkfpsil +acouwfqpjtgkrxyzivehsnml + +xpyldvrbug +falxpgdzuhsvrt +ldewxuvpgrtm + +jzbpury +hlgzxrkpouavq +emirbuzcp +wnfumipczrb + +liydasvrkgqe +ayidqgrsvel +vdjygiulearpws +gvedasikylr + +ikatocyfxps +spaoikxctyf +ckpsxfioyuta +waxiforkpystc +xcmykipsftoa + +zxleoadsyv +yovaleu +veaoyl + +qnmkplahgtubszedcij +pscidealhtqjbguynz +jqseucdgzbpilanth +liahqmuznjscdbpgyte +avqrielhntdjzpgxubsc + +uflmyhndsqboxv +mnlofduxbsqyvh +kvoptzfmrgysanuhxblqdjec +dfsnbvxolqmyuh + +ihrjpxygmfudqwcaoezt +jdlbmonxwraiqyctzhvupfe +utfhadqciozemwjpryxg + +mcy +my +ym +aym + +euktqozh +qvjfhalk + +ziblapqkvhcmdte +lfqkvdeaicmztph +mliqbcvpkathz +ylwiochpqmtakvjz + +oahnmutxc +hncxomtuva + +kfnsgxhiyzcbjmwvloe +ezciqlkbmspnfgx + +fatwrkenzmlij +rftamzejnskiwl +nlifwzaerjmtk + +ygpdfunhz +ycfquwndg +ygfnud +nfrygudbt + +wargt +vzumj + +pevirabdgyntjmfzxu +fbajcpgwtmveixnyzu +fqkgtevmuiybnjxapz +gufjytsplnvamozeixb + +n +w +wsp +y +dheck + +dyltqraen +tpsgabzmoexn +rvkailytneq +tfnayeihu + +ewsxrgjbqyno +qmswbxnjogrye +gobjqesnywxr +bsyexgrnwjoq +rbjewonsqgxy + +stwikjqlp +lrsiupwhofjtk +pljtwiks +pwkijqstl +cslkjtwpiq + +tpdekxavhynbmwq +cplmqztabw + +tagofzql +leaoktp +ltnuaoxv +kylztoa + +cyhkmbsxfwjndv +xykhbcfvmenwdsj +ycfmjwvnbhxskdz +ecvmhdkjbwsxfyn +xbksdmhwfjvycn + +dwhonqeszgyucxip +ilbhvtupfksgzm + +oazfpt +ozfpbt + +yxor +xrbe +brxe +rx +erx + +d +d +d +d +d + +ihnyoscrtazjfwme +jibycpvemkqzas +jbaivmzxsgecudy + +kmsp +smapk +jmpek + +wbeoh +zon +fzoq + +cmbwrupzjkq +qzbprmkowuj +rajuzkbwmpq +ljrpxbuztwiqkme + +ijnglzsbcqfawohpdxmtve +aqpzxbndsfgtomwlvehjci +ambcxwlvdzqftenorgjsihp + +rbjtkm +krm +mkr +mrk + +qjkdftrpnumcizayl +wqplnjcudgxzmkriatyf + +qlhrxgeftoy +bzorhtyxlpqegf +egbolyfxrthq +etflxyhoiqrg +fyruhtqgoxel + +ydogmjnixtkw +yminkvjwfpdqgo +nigxjwoykmd +igwjnydkxom +nikydjgmow + +s +s +s + +mctyqjebhrx +jmteybcxhq +vmbtseyoxhacdl +miyeqcxhtb +cmuybexth + +j +jrn +j +j +j + +gjwhqzotyivsa +dncumikebpr + +rjgvkwqib +dumtbxzowfylh + +oge +eivjdbkmcywg +eg +gfoe +ge + +qebcdswmkoygivfhzt +hxyztepdnocigquwvbfa +dgtwcyhfivboeqz +cdhbgtveizowfylqk +yfzbqhlvitmcgwedso + +evhlbqwtrfx +mlfbwh +hbflwp +bfwlkhim +whnfbl + +pcrf +crhf +fcr +cfr + +okxihbndges +cfheijbgqotnsk +yngobhskevi +rgknsoielhb +dknoeisbhg + +nztcvyikjfx +fkityvjxnc +kjvnfycxilgtp + +tjlbadpizowyev +qehgkdrzbcvotlay +falbynztqeodhv + +x +x +x +x +x + +ausbpe +sbeauop + +ftgly +bf + +erhokg +gekohr +hrgkeo +ghreko +hregko + +ag +ga +ga +ag + +vempgsokyfctax +ckonsxfptmyvge +yxefdorjmuzhvpsgwbltck +esxmcvgykfnpot + +thob +obe + +xg +qyalvxc +xg +x + +sqyowmanjczfebkulxtvgid +fahgqzenwypcbrmtvjslok + +zohlmctqxnueg +jhpbgfkds + +fyj +cwojdbf +jtf +rfjt + +hycpvrmfqlngu +vmqcypgunlrh +pqmhuvylgncr + +rxgswj +dwsybphk + +pcozvsdx +kvznm + +xneik +xkin +xinqk +nxsjik + +btfdr +jbqcasvpd +tkubd +ubdxwr +towilbd + +bfjidznx +nxbijdzf +jzfxidbn +nifdbxjz +nzfbidjx + +kjnydrclqeiumxg +foidejlnxgckm +coinexmgdlkj +lpckgdvnhmjxei + +upnhgfa +uhfpn +uhpfn +phufn + +hvyqepkfdsulzb +kfdepzvyhqlb +yezgbkqpvfdh +yzpfkegqdvhb +ykveqbfjzhwrpd + +lvndux +uxdnlv + +skymq +yqmi +yqzm +zymutq +qym + +lgnxbpzsce +eczlspaibgt + +raimheuwjdlsvncoypgzbqkxt +gcwavnjedbxsyfkqlprthuimoz +gjszrpmaxbydoktivewhlqncu +tojqzuenragvmxckiydphslwb +xeacszmjuliyvqdgkwprbnoht + +eahlnzupx +ulhmektsxdyjz + +zulrwsdaq +rqilsadz +tarlisqmdz +arslzdq + +pwzjtoafs +pzjwoafts +joafwztps +fzstwojap + +qbsykroiwcmzugealpxfjtdn +rcketgxqjupwzbymofaidns +kbngvtqdysrpumcejwaifozx + +vxpyulwietrmfqbo +tyeqbwxprmvfl +jlqismvbdprexwtkyf +betvyxlrnmwaqfpc +pqywsxoerfitvmbl + +osgilzptxmyhdwnbkjucvfq +iovflbqpkshyxdcjtg +iphsqdgyjfcevlotxk + +pdmxwbrzyk +orxtiplgmeua + +rkeaoq +muncxwzvjtfp +eyhkiqso + +acjpbvh +knmspwuebjyvgft +vbjpd +pqbvrj + +spld +qlaogwv +fhzjnmixyrut + +khmw +sjqdtwk +pckw +okwjz +ybvnuakxwgr + +js +j +qj +j +je + +sdqftlargy +jrmtgfaydoizsl +rtdlwafsyg +rtfylgwsad +adgltwryefs + +ujxfzvaptw +txuwfjzp +vjuzfatwxp +gnzfxptwju + +ltnfhrdwxv +dnwxtprhfv +hxfdntvawir + +sd +tl +dvytb +cv +pofkherqumi + +bnhwe +iwesc +swe + +xgukzobv +xkzugbafjrov +ebxukzgvo + +yor +ior +ryo +royk + +wj +jzw +wj +wj +jw + +pigbdcozntylm +toxilbam +bixopln +bvwkrloiefuh + +eduk +uekd +eudk +ckdue + +vulk +klvu + +jeyafmuqxd +aoxfed +edxaf + +sjbkveaymcdtgx +gtskxcyqmhvjarfn +jrngyohawxkqmpcvst + +fmubgnqisdyax +axnydgimfuts + +nzkrjofhqiubspv +fksopnbuihrjqvz +vhrbipqfjsozknu +urfvnibojqpkszh +jvnpuzkifhobqsr + +ctikjyqxempoh +comiqtxhjpkny + +whbdemfkursty +ryfuqxvkwmbesht +tkrumwhfsbeya +ryefhwstbmukn + +xnd +flrakdi +rlps +ehqtbzvjgcouy + +qvwihfpbd +imsfuvbrwhd +fvhdipbw +vhifdbw + +uezrmltpvhd +fykjilqzsac + +davlkgpqbwuc +bgvdnwlcuakpq +abuwhqckgzvtdplr + +nd +fdrjxc +a +bmzeuwq + +luopqihwtygjda +hodyuwapglqjbrti +agwqcijhduoyplt +qypgdtjlahiow +ljpskhxvqwyafiotdg + +nhkdmtw +thyknm + +jnfxrctwgqahudmoiyvs +axdtfwsonugzimcjrhlyqv +atcnfovyhjguxqimrdws + +ue +cm +xrnozk +a + +n +n +n +n +n + +fojreag +e +enq +etdzqm +eb + +wfsakpx +isfaxk +axwskvf +xeldakfsu + +kzpwfxhab +gfkqxdhtpbwz +pfhazwxkb +wbpzfkxh + +tbcn +mg +vbkmg +au +sfz + +vangwftohxdbrzy +vohwdnbraftxzgy +xvozdtfargyhnwb +yardwbvhtofxzgn + +irfa +irawf +iraf +ifra + +jbtsqvywarn +bajcviqwyrt +kutgqjmlxaryzbvwo +rwsqjevdbyat + +iyhg +hyg +hgy +gyh +ghy + +qwidmahzfcueoskvlp +fkysbnihvumpaegtd +kaemjsurfdvhxip + +oujsvbwceghnlpzxraf +ecaogrvjxluswpnfhbz +azexcujlfosbwnvgrhp +busrxgazjvpcfonwhel + +ughqky +ntdwhmblxearjogzck +hfkyg +qighsk +khgp + +cuzonhjegy +zujhocvnyeg +eoculrnjbgzywh +hjzcuyoegn +ugzvhcemynjo + +lrigswxvmcqofua +owxmivacesurglkjq +wcmaqsirovxnglu +lisvmugqxrcofaw + +t +mj +m +j +zdl + +nmsexwigtjulcy +favyolnmgqtbrjkw + +w +w +w + +gxu +utx + +mcgfu +g +gr +rg +gp + +rhjaizdkxup +erblofajmvspxt + +zt +tzf +lxmcowgyk + +q +rux +q +g +q + +uantxs +snwukxvjo + +rixtwvc +vwciatx + +ycipkftmez +yimcftepkz +empozcyfikt + +aijwrvfmgyxlbztod +znytdgfbekxlpi + +svqgfxh +nvkqgseaxh + +mgqxhbl +zkvgqlbxm +lqgmxb + +wq +fm + +ktydgbsziqehmjfl +ksihgtdfjylze + +ne +ne +ne +tenx + +vzcwnxfimj +icvxzjmnwf +vzcmjrdxiwbnf +wjxnmfzcvi + +dwy +h +ovk + +nbowqrxlpyzifjvka +zyvxrolwfbpikqa +vkqdwrbyiapzxofl +kzebrvfiqypaomxlw + +zjksb +zkjbs +zkbsj +bzksj + +oeimldgvybkrznxhc +ejfxokaqhzd + +esvbydlxc +nbvcxlyes +eoclzgsvxkmywb +eltvbcsyx +vnyelctsbx + +hbjpermvdoc +hmjpercovdb +pjchombvred +vdrobejphcm + +ipbeqnsmujhvtdkowc +bhmtonvedjkiuwcqsp + +a +eg +t + +vcmogkuapqrlsednzh +lvhzknodrcapxuetqs +nurkabhsywlceozdpfqv +ingvptqocaszlkurehd +skchauznlpvreodqg + +oaqcwxnjr +btdki +cahmjsof +vuegzpyl + +cvy +vyc +yvc + +pqrtafjgizcldshx +ldsrhuqpjafgctinx + +p +p +p + +bwjtu +ft +fbp +qosmg + +oixgna +wangjr +xomcdugal +agkftv + +tvzoq +oatqsvc + +xvnkdyz +kzdyafl + +cxaquiretkwplvyszm +cmlqxwuertsozyaphi +fjzpsbytwnrxmqadgiceul + +fnb +p +b + +xvjswmpu +fuwspvxm + +ofwkhlpbdarcze +eopfkwbazrhdl + +m +c +a +m + +cnty +ybonsp +nykrh +hnyc + +tunpiybzjvskxwrgh +zhfcxlatqbmdygwrosev +yzdvgmxhesrbwtq + +bflvmeipqojdngtyxuawh +ktdjovceibnugpsfymqxhl +vbueothjgpxfmilndqy +qjinbdmfoerpvhglyutx + +d +d +d + +vcmh +mch + +ti +bt +rwhfdxtsy +ti +tmbi + +ftiokrw +tofkriw +witkofr +tkowrif + +akfsdozrbuleytnjivq +vaefyztrjboiqskhln +ladtnokzvirjbsyefpq + +kyzuqsnpmclrhi +ulqznyrsckhpmi +zilfphqmucyrsnk + +yrtjqxbfmalw +zsfmbqajcrgxyltwkv +yqmjaxwolfbrt +pnxlqmyrbwtfaj + +qukbzapi +uzakbq +zkfbayv +tkaznb +qlbazk + +pzfdbhyav +swlmrnt +rmw +jn +luqm + +fmkgtbahndrqycowsplxiv +micuraxlznwhgbfkystqpo +ghrnsfwkcaoyimlbqtexp + +kougsrdnt +xtrd +rtlwd +hrpdaty +xrdptm + +nivmqo +ivqnmo +vmonqgi + +tluszyrbkhg +rhyucgzetibl +wyuetgnlrzmh +rhdzvluqajotgxyfp + +vhqmbdneyafzgw +lhwkvpaidgmyjzerq +hauvndomegwzqty + +jcwlh +lwch +ltcw +weyckla + +vcfrjqsgdtilbm +edltfjsrcmvbgih +bcylqfrmvstdgiej +fjbzklvdnwasmptcgori + +acyvqjfgopdzksmw +dzofksgmycawpjvq +fogswakdzxpcyvmjq +mwqzsoydfcagpvjk +agsmowfzpykdvcjq + +imxe +exim +iexmd + +zkxaqfudyi +yacupxzkdqebfr +xwfuakhnmqvdzly +bqfydxakzru + +ohaj +ajho +djoah +ohaj + +xmra +mpa +mwaqn +am +anm + +sgqjafrnbm +qfmrbjnas +rsfnjabmq +nsyjrbqfawm +mjfarkqsbn + +fba +vfo + +fncekxpr +epkbzds + +qrpejclbhaf +lzcirpeqahjbf +lsphcjfbqaewir +rpnehulvcqayfj + +ejkpzwght +tzkjegwxph + +mxtojefrbdlnkwaz +mnwzjrbkaxoietfd +daktrfexnojpbzmw + +zyeq +yzq +cwnax + +pvqzxgs +xfqvszg +xsqpzvg + +banycodivlqzt +mjbkheui +rbwixjf + +ltq +tlq +olxtq +iltq + +kerwtgcizshypfnxajdvolu +gueyjtxonfrsliw +lwruobigyesfnxtj +leqrmsoyfbigntjuwx + +qsfokthwrlx +dlxosjagmr +xljorvsg + +dgohszbxkmvw +gwzsboxvchkm +xkzohpsgwbvjm + +mquspzhxlgktcid +xqktughicmdlzsp +cusqlzghkptxmid +zlscphgxdutimkq + +vbrlu +rbdvel +lubvr + +mkwzhyinogvxfl +gwzovxnkfhm +bksxgwzmvohn +mnwvgxlzkho +hgevxtklmwozn + +m +m +jb + +fjidp +pjsid +dfpji +pdij + +nvsmdfhlzowxiqjp +npzqlhxifsvomdwj +dmfhsqxvnjwpzoli +vxoflmpdqzwjinsh +qsjwxoifldmnpzhv + +xthm +mtxh +txmh +btxmwhd + +b +c +kz +c + +ohvnbcapejswtmrk +awskorhblqjepvtm + +tvygs +ysvtg +gvsty +ytsgv +tvsyg + +oyzucnqkxrimf +quxnfyzmckir +mrfkcqxyzniu +yferzmqixkucn +kfinqcrymxuz + +gbuti +bniufgtw +giubt +igutb + +jgtmbxs +mcbsxjt + +huilkbsfytevzxwa +ibuhkapfyszedxrv +yufsaojhzkveibxg + +mnswgtfdojhazrbq +athqodnrgwmzsfjbp +wtgdoaiuqnfxshbmrzj + +wymeobr +mrycewo +oghswaxmzyufer +pemowyr + +vxcfqtzadwkmipnr +iuarmqnpvdwkztx +dktmqbnvwarzixp + +w +l + +nprsxahzgfjltmwcbie +zmrlbnegfxscwaiphj +xzlwhejamsbipcgfrn +pwrealhncjbzgxmifs +mzwbepsjarflxnhcig + +rqnie +qxnimer +ineqr + +ergmlia +jgtxbszvfhy + +tpbklr +plbtrk +tlbkpr +pkrlbt + +e +e +e + +ozqnktgywfjsm +ywfzxqcnomg +nqgfeczamywlo +dyfznqiomgbw + +sxzgtkpvyedf +txgeyfmsd +difagyxtse + +qoehywxtjgpdkavfs +bqjdigkxtwyfphev + +dmni +dimn + +tfrvu +tvaqruf +ruvztfwy +vuftqr + +ydlrkcnoqahzjs +fhlnkersbcy +ervyucshkln + +axkgudrfbvelt +pjuegtolfxdvika +evlkdfuzatgx +bxtvaefudklg +etxdlkafhguvr + +hdcnjpfkbevusm +mblvpcfjseuhdn +bskjevpcufdnmh + +wqnjbpoduamhytfkievszlgxc +xjlygvwsmhnauzkipotb +ixjknowtgzhbvumpylas +wtgnmbxriuhjplvakzyso + +tl +tjl +ayufcpid +zxlm +zm + +cnmwbldgaisjyzpfq +fjmrwsdibzqylcgpa +lozcsdmqfyaijpbgtw + +dtf +fd + +uqmtlwkfvo +yhpgrcdi +jhsnbezaxp + +cefj +tfjce +tec +wsec + +onazewv +wavykhnzd +lxsgvrzabmtcpq + +nbcrxusghzimepqa +psqieacnuxohzgmbr +xhgrbqcnfvuspieamz +rixebsnmcpazdgjquh +sngeamhprxfcbquzwi + +grydbjpzscfunwx +qcakmej + +idhbcqoxzfuvt +dtocbufh +tfubdohc + +yrp +ypr +pyr +yrp +rpy + +bxlkfmjhqawictrnyvdpgus +unbrdyifkgwcsmptjhxlaveq +tlzjsycbnifvrdwuaphmkgqx + +edkclbw +elwabdk + +iehpmokrctn +pydojmegufz +mpxoeayujw + +ewdarsfjpvlchmqiboxg +sfewicgrvdoxbmalhjqp +tsphvciwfqdgrexalbomj +vsxjleqokrfchybdpmiawg +rlqeiwpvacogmhjfbxds + +y +y + +vshoznkgwcdimrp +nzdrkoiehltvwsmg +gsjyoarznhwqvkdm +fshedmouvlrnzkwcg +vsokunwzrbdmhg + +t +t +t +ta + +paejgztcsxq +eszajxg +znjdgasxe +igxezjnas + +ufakhtvdmr +adfmjhvkrtu +vmktjrzfdauh +tumkdfvhra +kutmavlhfrd + +yxcnqsb +hpufomvwaz +lgai +agfdw + +bytx +xrt +rhdtx + +qcuypb +ycwlknup +cpuy +ucpy + +l +l +l +yl +zlx + +kradgyufzbxwole +xydwzbgfauole +alwugfoxbdyze + +rob +oer +or + +smul +lhms + +hxrpgin +oxpcm +xpmc + +ekcjs +nbkqpfjsc +puckyszjo +jsckb + +mtakdsrxwecgozyi +lijgwkmsratdxoyzu +hkrtxgwyiamodsz + +ucnfl +nuflc + +uoh +shog +osh +oh +hovazw + +aywsjgbkn +wgbqynskij +ybsgknjpa +ykqsbgnj +bzsgdxcnyjke + +zwlxdg +wxgnlm +gdjwlx + +vfkurtlgnqpszwod +nvtksfduzwqprglo +fkolzvndqwgurtps +oklfvqwtzgpunsdr + +rbwfldicv +fopvzijb +hukbvgfqexyi +rnzvisfb +dbizvpaf + +ruhvznkbqsxpmla +zhbxpvaqrmknuse +zbsrukpvnmaxwqh +azqrbmnsxkhvpud + +onsfuwzlx +olsxufnvzw +ozfluxswn +oxwufzsln + +xgzhikqe + +pmwhykbvjduq +mxpfyjuvswah + +eylbn +vebjwf +prhomzs +b + +xqsvyfjgr +wqxrsl + +whapjuqyd +uqgpwajd +aqwpuj +sfljpqnmaiuw +kabjpqgewvuc + +cyrpbuoslqkz +zybkcxqfsrnue +yszrkqtucob + +rtweslzqynuoxhmpbc +wuhbjyiackqfvpx + +ahisomynwvbgklpjuzrxdtc +lxavshmbwykztcuniorpgdj +irdcxlzskwempjvghyatunbo + +nlswcqkhvmxyfodrjizegu +mlxaqjovndhyrcgiufzse +fjdugnmlyeqzciovhxrws + +suhwdifyrk +giwtnkpsfauydmc + +weshq +qajovwhi + +ph +ph +ph +ph + +mrouzhwixysv +zarmsieovtyc +yrivmozs + +vsxbz +svyxbzl +szqvxb +xzsbvq + +b +w +w +w + +cwetnkaxfvgirdphsolyzj +kapdhrvxezgwyfolijncts +vdlwgrocshaexyktzifjnp +ikezpjoraldxvfshwcgnty +frdysohpmjtlkxgzewcanvi + +wcoqzgbitjlyad +duoznymtjbiwca +wpahfobjcuiydtz + +aclkhypervifzjbwqgxdstu +sxlarjdgifwbztkchpuyvqe +tfdbrjxepvkslwqzciguhya +dyltqaruiwgckjvsbfxzhpe + +qylp +qpy +yqpl +qype +pqy + +xrkebt +tbrkemx +kebrtx +xketbr +etxrbk + +yucsht +sycwu +vkuzcysl + +qlfbrenuhm +qzfrnelmu +lrixmuefqn +qjmdspkfornela + +vmtc +d + +ait +ita +ait +ati +xavti + +bxoygq +mtgbyoq + +nkes +swkeg +kes +ksen +kres + +saouewqmlfd +cygzlhbndtukixj + +mxuboivyfpctzkael +qjbtgukilvmy +mktqbvhilnyu +gtjykviblusm +klbimtvyuq + +fbdnvswoxpakthuz +adwhspktonufxzv +oamtszpdhkwyfnxuv +tudnvpzawockfxhs + +ugxpjzytdbm +cerilwoby + +onpmy +mylpo +pmoy +lmypo + +jaf +afr +af + +casenkqdir +sicuanvekrxh +yizacrkosntpe +agicxnrkesw + +jqt +ql +qg +jq + +wc +w +w +b + +hzr +g +h +iabscl + +hqwpsagbnldrukzjifytx +zpfrqidyshjkgwaxbtnul +fjiprlyakugwdqzhtbnsx +fiarukdwntlyhgzpbqsjx + +czukvtah +comukqhjbra + +wmhncxkspailt +uxfkbmrgt + +teolabiy +hpktibyaxoc + +bqyarip +wiyp +piny + +mtrgebyouwfk +emwjyfrut +eruvtfywm +amwyfunelrptz + +niduf +nfdiu +ifunjd + +pelahycbn +hpovfylkcbn +iblwzqmxchgdstn +bnrjhkcul + +sfjzl +sa + +b +d +j +ji +j + +zshvimlaw +alwsvmhi +vhlwsami +vhsawlmi + +awvgejcbhlsintoupdf +gajfxdoebcphnsuwtl + +tuickvpglhw +lvthdgiuwp +shuivyptl + +nlxwpzuigcq +lcwpufgxzniq +wlxzuniqpgc +pjgxclzuwiqn + +tsozgkq +lmvyuqracphne +qfitdwgkzjx + +k +zk +skh +drkup +ablk + +qcr +lq + +m +i +jy +m + +hrsgfwaeytpl +rifdnaq + +detrifahwgjs +piagxwmfsrhe + +g +l +l +t +u + +xlphfs +tqnc +knrgiu + +auscpvhwfnkjgxdbtlzo +wldqsafnxycpjzibrvu +fzpdcuvngbxwslaj +flsdbuwexnvajomzgpc +wazdljnbuxcfpvs + +ejpwgam +pmgwja +jgawmp +wpamgj + +jlupvzoyitmkeagfqnxswch +csahitmwogflvunqxkjpzey +vquxiozpmjatncwsykhlfeg +ihoejuxnwtsckzylqmfvagp +ovgfeciumakxsnpqyltzwhj + +rlcy +lyrg +yr +hyqr + +pnv +np + +dxirheclfvkugyq +lmqcngrihtbzkoa + +xmdr +cxdm +jmxlsdgq +dmx +xmdo + +tomwqa +oqawmt +kwtbmaoq + +jm +w + +dem +dme +dejm + +u +u +u +u + +dhqxlsbnp +udbspl +ldbspc +kpsldbu +subkldp + +wconqgth +vuhrlnzgt +kghntm +zhgnrt + +tubwopjkrsglmfdqn +kpixtmabowfsjlezdnqrcg +ymjnolpqstbvfrgwkd + +fykdachlrtxupbgq +aprdlbchfkguytejx +amvksrbwzlcfhyxgtupd + +yac +cay +ydaeoc + +yva +avxy +jyv +vyo + +ryozihbkmxegfvw +ljexptfsyiwqcv + +rszwmnhjp +mslwygz +zgwsm + +lshvanz +vnlha +vnlha + +glrmyfequjpboiczkhw +uozqrgjhwfceyidblmaxpk +wckorliguhqzmyfbepj + +bc +dcj +bhc + +ed +ed +de +led +de + +geyxwujopkzd +pkwuzxjdoegy + +fplwjykaod +rgz + +qgpz +fpgaq + +yfwzkgqej +vuzed +znhsecid + +vlgxshtipzfj +vghilfsztxj +hxpisvfgtlzj +izshytgluxfvj + +wyhoqaieuzf +lcjpm +btdxknglc +rclts + +qucrslhpoywjidgkmvab +bvlidmwphqsoaykgurczj +ramesuijngcxpqlkdovbwh +ubapcqvshrgklwimojd + +wfhcyjidtlqokx +nhgvuwobcklisdqm +drcnwvqslkaizohb + +fidrkaw +fr +rueof + +izypgsvlhfounrwemtdkqx +yfthniwaxlskqopvurg +xnqpustrywighalvbfko + +gkihqofrasyz +xptgbqkim +iemgxqkup + +rstvcynoaxpejid +xajeyproin +jixpmoreany +mriewajpxgony +rjaepyngiox + +hysqpw +quwtyiph +hyqupw +jvfrnywqhlp +hwypqu + +vojesgyt +vgeuyoj + +kq +kgq + +qash +qhsdvl + +ogecvxt +gvtcxqeo +xtvcogeu + +aiuzktwjnshlevr +ixuwcdgptmfzejl + +mlsu +luy +wl +tl +golfv + +ujxfyqdpchbk +mckfrhiqudxp +gkhbuxpcdfq + +kamydczqfrsvg +szgkfuvyicmrqa +smcfgykqrvaz + +hdyistonwvkuxm +uqospkewltar + +iloqsexhubfy +deuiqbhfylxosw +jqheudxwsiblyofa +slahouqefyxib +gfntrbcyqxoeisulh + +rtkqzxi +txzi +vygxiwzt +exztaci + +pscgbunrdmlxz +vmolpgzcxndr +jrompngxdczl +cxdlznrmgp + +myopnajkcxd +aoxdymgknjc +fayoxjbdclvsnm +cmjaxnoyd +adenpocymjx + +gwurxpealzqfn +uqanelrwzpfxg + +p +p +qgmpt +p +p + +osjvfthlruqecwdgab +omqzlxkfuybce +oypfucqleibnm + +jkylogfscpehwnzudbi +yvqcuehfbzwsjplniogk +cpgeosihzlbkwynjfu +ekcwtnyjsgpohfuilbz + +bqoxplvhnmgs +jnmozhsdgqclb +tuhbnyoqsmgwl + +pyanchrwtoqe +oenqatcphw +wpqcnetoah +nwqcapteho + +wndqsh +jfgnq +pclbvk + +gwav +gawv +gawv +awvg + +t +zd +jfcl +t + +ryhqtewijk +fnqwhjkyrie +qhjwrynki +kogrhwuixqypj + +vhytdaqf +vyathqdf + +vyeizmaopnglsqcxbdr +acoixrsbglqvyzujdp +bzqagplxovdcrsiy +scxizbrdvpqgolya +cylxpabuiodgsrvqz + +hp +hs +rzuh +he + +glxeqjf +tmufqbxiekdcj +fxslvpeqj +nzgpxjeqf +xnzjlqefh + +fcwd +pxnowvtfrc +lfcw +wqgkcfd + +teblqdskjwymgipvfocanzr +glbojevqktirspuydncamwfz + +zftjgnpuc +zrcuqjtfn +irdutbecnz +nkcovuxzswmtlyah +ztqncdu + +kdirczys +skrdzciy +dcszyirk + +weytvzmidgnbxl +qdxfpkblsrouajvw + +gmdupkbl +klhtgdmsbp +nbvpmdlkg +pzibclmyeodqgk +mpbxldkg + +ikchnfbqgymdwpet +gkmfnhtwxiqbdcyve +mgdecfiotqknhbaw +dsmrqfnkyctighzewb +mqehgkwnscdbift + +rzdnimcaxe +dceaxbmzrt +dmrecazx +zeuqxmchlrydak +rxeaczmd + +nlbecfu +nuelcf +eufncl +fluenc + +skoltxqicvwfbhzdupem +ilqsfyouaxvkwdcpth + +gvecuatmospxl +mhbxcyskojpeluv +upfslomxcnve +pqvmluiecsox +mnpcfxzueloavts + +mxquegw +esgcbif +gevrn +cykzdhge +bgzkieadl + +hna +nxha + +qmorc +rmcoq +mcrqo +cqorm +qrcom + +tewncgarvqjdoumkb +jgwqdbcmorevutkn +eomtvngdjrbcqkuw + +aeckhjmvzn +mvenkcuhazj +hzkvdejamcn +jevzhnmcak +mhejzkcavn + +yvpjqszo +dtg +atg + +ghczoyrkviaudbtjwne +dnbecrftkowghyuzvai +wbygucnavdktezhior + +vyoq +voy +oyv +voy + +um +m +m + +eijf +jief +jgief +jfie +fijxde + +xy +xyc +xy +yx +xy + +ubcnvioqxlhm +iqzbngoclhmxu +iofwxbcmslndq + +njqvmbatkxlfswizur +dqxkwlzbnmvau +vbuwmznakqlhx +unvzlxmwaqkbg + +izwlbfqdh +wubacgyzrhfm + +xvdzmaireyoqgfpub +rndxuczebfyipvtogma +vodgmwbxfzpeiyurja + +hpdwqz +rqdhpzwn +whpdzq +qphzwd +cwqphvzd + +rndgovb +gdrvobn +govndbr +vgbnord +nbvgord + +ufxdk +pehaqtz +rwpiea + +v +v +v + +zrclgthjybdxwsnmvqi +tnwyvidqrzxlgjscmbh +isjynzrmbgwlxtpchdvq +ynqwlihbxrmztsjdcgv + +q +q +q + +c +c +jb +u +c + +vkejfcmgwixbnolutaqphrzsdy +fqdwjngcuxviloyzkshmpteabr + +rfv +r +rz +qjmrg + +wzhdyp +r +gbm +aw + +rsdywfzikhnlqc +kifcrndqlswzhy +hdfkiylsnqcrzw + +lfhtzrxcj +fbtzlhrcj +lzdaftrjphco diff --git a/7/1.py b/7/1.py new file mode 100644 index 0000000..537796f --- /dev/null +++ b/7/1.py @@ -0,0 +1,34 @@ +def parse_rule(rule_input): + rule_name, contains = rule_input.replace(" bags", "").replace(" bag", "").split(" contain ") + rules = {} + + for rule in contains.split(", "): + rulespl = rule.split(" ", 1) + if rulespl[0] != "no": + rules[rulespl[1].strip(".")] = int(rulespl[0]) + + return (rule_name, rules) + +def find_in_rules(input_rules, color): + output_rules = {} + for rule_name, rules in input_rules.items(): + index = 0 + rule_list = list(rules.keys()) + output_rule = rule_list + while index != len(output_rule): + if color in output_rule: + yield rule_name + break + for i in range(index, len(output_rule)): + index += 1 + if rule_list[i] in input_rules.keys(): + output_rule.extend(input_rules[rule_list[i]]) + +rules = {} +with open("input") as f: + for line in f: + line = line.strip() + rule_name, rule = parse_rule(line) + rules[rule_name] = rule + +print(len(list(find_in_rules(rules, 'shiny gold')))) diff --git a/7/2.py b/7/2.py new file mode 100644 index 0000000..9e601c7 --- /dev/null +++ b/7/2.py @@ -0,0 +1,26 @@ +def parse_rule(rule_input): + rule_name, contains = rule_input.replace(" bags", "").replace(" bag", "").split(" contain ") + rules = {} + + for rule in contains.split(", "): + rulespl = rule.split(" ", 1) + if rulespl[0] != "no": + rules[rulespl[1].strip(".")] = int(rulespl[0]) + + return (rule_name, rules) + +def count_bags(input_rules, color): + total = 1 + for rule, count in input_rules[color].items(): + total += (count * count_bags(input_rules, rule)) + + return total + +rules = {} +with open("input") as f: + for line in f: + line = line.strip() + rule_name, rule = parse_rule(line) + rules[rule_name] = rule + +print(count_bags(rules, 'shiny gold') - 1) diff --git a/7/einput b/7/einput new file mode 100644 index 0000000..1cec74f --- /dev/null +++ b/7/einput @@ -0,0 +1,9 @@ +light red bags contain 1 bright white bag, 2 muted yellow bags. +dark orange bags contain 3 bright white bags, 4 muted yellow bags. +bright white bags contain 1 shiny gold bag. +muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. +shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. +dark olive bags contain 3 faded blue bags, 4 dotted black bags. +vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. +faded blue bags contain no other bags. +dotted black bags contain no other bags. diff --git a/7/input b/7/input new file mode 100644 index 0000000..3c68991 --- /dev/null +++ b/7/input @@ -0,0 +1,594 @@ +wavy bronze bags contain 5 striped gold bags, 5 light tomato bags. +drab indigo bags contain 4 pale bronze bags, 2 mirrored lavender bags. +pale olive bags contain 3 faded bronze bags, 5 wavy orange bags, 3 clear black bags, 1 striped purple bag. +faded white bags contain 5 vibrant violet bags, 4 light teal bags. +mirrored magenta bags contain 2 muted cyan bags, 3 vibrant crimson bags. +dull purple bags contain 1 striped fuchsia bag. +dull lime bags contain 2 posh green bags, 2 muted gold bags, 1 light bronze bag, 2 pale teal bags. +pale indigo bags contain 5 drab blue bags, 3 posh fuchsia bags. +dull lavender bags contain 5 plaid orange bags. +pale teal bags contain 2 dark silver bags, 1 faded silver bag, 1 dotted brown bag. +clear lime bags contain 5 bright crimson bags, 2 dim chartreuse bags. +faded coral bags contain 5 muted silver bags, 5 plaid gold bags. +dull blue bags contain 4 mirrored turquoise bags. +muted salmon bags contain 2 dim chartreuse bags, 2 mirrored tan bags, 2 plaid tomato bags, 3 clear cyan bags. +dim orange bags contain 5 light purple bags. +posh chartreuse bags contain 5 pale red bags, 2 pale gold bags, 3 dotted brown bags. +pale red bags contain 4 mirrored green bags. +dotted turquoise bags contain 2 posh maroon bags, 1 striped silver bag, 2 pale blue bags, 4 drab lime bags. +light blue bags contain 4 muted fuchsia bags. +shiny teal bags contain 5 faded brown bags. +drab gold bags contain 1 dull purple bag, 2 wavy magenta bags, 1 faded red bag, 1 wavy silver bag. +plaid maroon bags contain 3 dark gold bags, 2 dim silver bags, 1 vibrant plum bag. +shiny beige bags contain 3 mirrored bronze bags. +wavy chartreuse bags contain 1 muted bronze bag. +posh teal bags contain 5 dark cyan bags, 5 posh green bags. +faded chartreuse bags contain 3 muted yellow bags. +clear crimson bags contain 2 striped gold bags, 4 bright crimson bags, 1 dull red bag. +plaid turquoise bags contain 3 wavy crimson bags, 5 light gold bags, 2 mirrored olive bags, 1 posh white bag. +dotted gray bags contain 4 posh teal bags, 5 dotted lime bags, 4 clear fuchsia bags. +drab purple bags contain 2 shiny blue bags. +dim black bags contain 3 vibrant white bags. +muted cyan bags contain 2 light bronze bags. +dim aqua bags contain 5 striped brown bags, 3 bright white bags, 1 dark purple bag, 3 wavy aqua bags. +light violet bags contain 4 wavy lavender bags. +light tan bags contain 4 dim cyan bags. +muted chartreuse bags contain 4 drab blue bags, 4 dim yellow bags, 4 vibrant red bags, 2 faded violet bags. +faded purple bags contain 4 clear salmon bags, 4 pale white bags, 3 dim indigo bags, 2 bright fuchsia bags. +shiny violet bags contain 1 dim aqua bag, 3 shiny coral bags. +dim green bags contain 1 pale cyan bag, 2 faded purple bags, 1 light gold bag, 5 shiny fuchsia bags. +dotted teal bags contain 4 muted lavender bags. +drab green bags contain 3 pale aqua bags, 5 striped chartreuse bags, 5 mirrored gray bags, 2 mirrored salmon bags. +pale orange bags contain 3 bright teal bags, 2 dark green bags. +wavy lavender bags contain 3 wavy aqua bags, 5 dull purple bags. +shiny gray bags contain 1 light blue bag, 3 drab beige bags, 1 vibrant blue bag. +dull yellow bags contain 5 dark teal bags, 1 dull teal bag. +muted lime bags contain 3 shiny aqua bags. +pale yellow bags contain 3 dull silver bags, 1 shiny green bag, 5 muted silver bags. +dark salmon bags contain 3 mirrored fuchsia bags, 1 light blue bag, 4 mirrored green bags. +faded fuchsia bags contain 5 dotted lavender bags, 4 clear bronze bags, 3 muted white bags. +dark blue bags contain 3 mirrored orange bags. +striped red bags contain 3 dotted lime bags, 4 mirrored orange bags, 2 dim yellow bags, 1 dull silver bag. +faded lime bags contain 2 faded beige bags, 5 dark coral bags, 5 dark maroon bags. +dim salmon bags contain 5 dark indigo bags, 4 dull aqua bags. +light plum bags contain 2 dotted tan bags, 5 mirrored plum bags. +pale tomato bags contain 1 posh violet bag. +light olive bags contain 1 clear blue bag, 5 clear purple bags. +faded bronze bags contain 1 mirrored lime bag. +mirrored orange bags contain 3 shiny green bags, 2 vibrant white bags, 1 dull black bag. +vibrant purple bags contain 2 dull gray bags, 2 dark magenta bags, 4 wavy green bags. +dull green bags contain 5 shiny tomato bags. +plaid magenta bags contain 4 dim plum bags, 2 dull tomato bags, 2 drab violet bags. +bright magenta bags contain 5 dim plum bags, 3 mirrored teal bags, 5 dim red bags, 2 plaid maroon bags. +dark beige bags contain 4 shiny aqua bags. +dark orange bags contain 1 dark violet bag, 4 mirrored green bags. +dim violet bags contain 5 shiny yellow bags, 1 dark lime bag, 2 vibrant coral bags, 3 mirrored turquoise bags. +light cyan bags contain 2 mirrored gold bags. +striped turquoise bags contain 3 mirrored aqua bags, 3 faded violet bags, 1 plaid maroon bag. +dull plum bags contain 4 posh gold bags, 3 light salmon bags, 4 dull silver bags, 1 dark salmon bag. +posh green bags contain 3 clear blue bags, 3 dull silver bags, 2 drab turquoise bags, 2 light silver bags. +faded salmon bags contain 2 faded black bags. +dull violet bags contain 2 plaid lavender bags, 4 plaid crimson bags, 1 bright crimson bag, 4 striped bronze bags. +posh coral bags contain 4 plaid gold bags. +shiny green bags contain no other bags. +mirrored turquoise bags contain 3 vibrant crimson bags, 2 faded turquoise bags, 4 muted aqua bags, 4 drab lavender bags. +dim yellow bags contain 1 dark tomato bag, 4 mirrored orange bags, 1 bright blue bag, 1 wavy red bag. +vibrant orange bags contain 1 drab turquoise bag. +muted black bags contain 3 dotted purple bags. +faded brown bags contain 2 vibrant white bags, 1 dim silver bag. +posh gold bags contain 5 bright green bags. +pale salmon bags contain 3 faded gray bags, 2 posh tan bags, 5 pale cyan bags. +dull brown bags contain 5 drab lime bags, 1 plaid lavender bag. +dull fuchsia bags contain 4 dim silver bags, 1 shiny gold bag, 1 faded violet bag. +mirrored chartreuse bags contain 3 dark gray bags, 3 muted teal bags, 2 mirrored black bags. +dotted gold bags contain 1 mirrored red bag, 4 dim indigo bags, 4 faded cyan bags. +striped tomato bags contain 5 dull gray bags, 4 light tomato bags. +clear lavender bags contain 1 clear coral bag, 4 wavy turquoise bags, 5 dark maroon bags. +dark chartreuse bags contain 2 clear beige bags. +dark brown bags contain 4 bright white bags, 4 faded turquoise bags, 1 clear black bag, 1 wavy lavender bag. +clear gold bags contain 5 vibrant gray bags, 5 wavy white bags. +plaid cyan bags contain 5 dotted salmon bags, 5 vibrant cyan bags, 3 dark black bags, 4 shiny aqua bags. +dark tomato bags contain 2 muted white bags, 5 bright silver bags, 5 posh red bags, 3 dull black bags. +pale bronze bags contain 2 wavy coral bags, 2 drab blue bags, 5 clear purple bags, 4 vibrant blue bags. +clear tan bags contain 1 dull black bag, 2 drab fuchsia bags. +dotted aqua bags contain 5 striped brown bags, 3 vibrant bronze bags, 1 wavy brown bag, 2 plaid red bags. +wavy blue bags contain 1 dark aqua bag, 2 striped purple bags, 2 dark coral bags, 5 plaid red bags. +clear indigo bags contain 4 shiny gold bags, 4 bright blue bags. +mirrored plum bags contain 3 striped gold bags, 5 dim fuchsia bags. +faded tomato bags contain 2 wavy green bags. +dark cyan bags contain 1 dim yellow bag, 4 dark silver bags, 5 drab aqua bags. +striped blue bags contain 4 dull magenta bags, 5 plaid maroon bags, 5 plaid crimson bags. +posh turquoise bags contain 2 pale silver bags. +vibrant lavender bags contain 3 faded plum bags, 1 dark tomato bag. +mirrored lime bags contain 1 faded lavender bag, 5 light silver bags. +drab fuchsia bags contain 5 faded lavender bags, 2 muted silver bags, 3 pale indigo bags. +clear olive bags contain 1 dotted green bag. +dim gray bags contain 4 pale tan bags. +light aqua bags contain 5 mirrored lime bags, 2 dim white bags, 1 dark gold bag, 5 faded black bags. +striped lavender bags contain 4 faded green bags. +plaid brown bags contain 4 vibrant turquoise bags, 1 posh violet bag. +bright lavender bags contain 1 faded black bag, 2 posh tomato bags. +pale purple bags contain 4 light silver bags, 4 plaid gold bags. +posh gray bags contain 1 drab lime bag, 2 dark chartreuse bags, 3 dim fuchsia bags, 3 vibrant red bags. +dull turquoise bags contain 5 vibrant fuchsia bags. +shiny plum bags contain 2 striped fuchsia bags, 5 dark red bags. +posh purple bags contain 4 vibrant gray bags, 1 plaid turquoise bag. +muted teal bags contain 3 mirrored lime bags, 5 shiny tomato bags. +shiny silver bags contain 2 clear cyan bags. +bright green bags contain 4 plaid gray bags, 4 dull black bags, 1 clear blue bag, 1 dull red bag. +clear orange bags contain 5 bright plum bags, 2 shiny red bags, 2 vibrant lavender bags. +muted coral bags contain 5 dark brown bags. +posh lime bags contain 2 dim silver bags. +clear maroon bags contain 4 dotted chartreuse bags. +dim red bags contain 5 muted yellow bags, 3 dark violet bags, 3 light tomato bags. +faded red bags contain 1 striped lavender bag, 3 mirrored gray bags. +bright maroon bags contain 2 posh crimson bags. +muted gold bags contain 5 vibrant tan bags. +dotted lavender bags contain 3 shiny green bags, 2 muted fuchsia bags. +shiny magenta bags contain 4 shiny red bags. +clear salmon bags contain 2 faded fuchsia bags, 4 posh crimson bags, 2 wavy fuchsia bags. +dim lavender bags contain 1 posh magenta bag, 1 drab silver bag. +vibrant aqua bags contain 5 dim teal bags, 5 bright blue bags. +dim maroon bags contain 4 light white bags. +striped tan bags contain 1 light aqua bag, 4 dim chartreuse bags. +drab lime bags contain 2 dim blue bags. +mirrored purple bags contain 5 striped tomato bags, 3 wavy tomato bags. +dark violet bags contain 2 vibrant red bags, 1 dim silver bag. +wavy beige bags contain 2 muted violet bags, 1 bright white bag, 5 vibrant red bags, 1 faded lavender bag. +dim gold bags contain 1 wavy turquoise bag, 5 dim plum bags, 3 shiny silver bags. +dotted magenta bags contain 2 vibrant white bags, 4 vibrant tan bags, 2 muted orange bags. +plaid coral bags contain 5 dark brown bags, 2 posh coral bags, 2 dull crimson bags, 4 vibrant violet bags. +wavy silver bags contain 2 dim chartreuse bags, 2 bright crimson bags, 4 mirrored green bags, 5 striped turquoise bags. +mirrored olive bags contain 1 light purple bag, 4 muted silver bags. +muted violet bags contain no other bags. +bright red bags contain 1 muted red bag, 2 posh indigo bags, 3 shiny purple bags, 4 clear salmon bags. +dotted fuchsia bags contain 3 muted gold bags, 3 mirrored yellow bags, 1 plaid maroon bag, 1 dull purple bag. +mirrored cyan bags contain 1 muted fuchsia bag, 2 pale lavender bags. +plaid beige bags contain 4 dotted violet bags, 1 mirrored salmon bag, 5 mirrored plum bags. +pale magenta bags contain 3 vibrant indigo bags, 4 drab blue bags, 1 wavy violet bag. +dim olive bags contain 2 drab indigo bags, 4 clear turquoise bags, 2 plaid tan bags. +wavy fuchsia bags contain 1 muted silver bag, 3 striped red bags. +drab olive bags contain 3 striped turquoise bags, 5 dim brown bags, 4 vibrant crimson bags. +dull crimson bags contain 1 dotted tomato bag, 5 light silver bags, 1 dull black bag, 1 mirrored orange bag. +faded beige bags contain 4 mirrored aqua bags, 2 faded plum bags, 3 posh aqua bags, 2 muted violet bags. +posh black bags contain 1 muted chartreuse bag, 2 faded salmon bags. +shiny turquoise bags contain 3 striped plum bags, 4 dull purple bags, 3 pale red bags, 4 dim brown bags. +bright beige bags contain 3 drab white bags, 2 plaid olive bags. +dim silver bags contain 5 mirrored yellow bags, 5 dark gray bags. +muted bronze bags contain 3 pale black bags. +clear black bags contain 4 dark gray bags, 2 drab magenta bags. +posh violet bags contain 1 muted gray bag, 4 dark blue bags. +light gold bags contain 1 mirrored silver bag. +faded magenta bags contain 3 light gray bags. +dotted crimson bags contain 3 clear crimson bags, 4 bright white bags, 5 bright green bags. +striped coral bags contain 1 pale beige bag. +drab brown bags contain 3 mirrored white bags, 4 clear crimson bags. +clear tomato bags contain 5 dim magenta bags, 3 dull magenta bags, 4 dim turquoise bags. +pale maroon bags contain 5 dark aqua bags. +dark silver bags contain 2 bright blue bags, 2 pale yellow bags, 3 mirrored lime bags. +striped purple bags contain 2 wavy red bags. +wavy violet bags contain 2 dark gold bags, 1 plaid red bag. +clear coral bags contain 5 clear violet bags, 2 clear crimson bags, 4 vibrant white bags. +striped brown bags contain 2 posh red bags. +pale brown bags contain 5 posh cyan bags, 3 clear salmon bags. +dotted red bags contain 3 wavy aqua bags, 1 mirrored bronze bag, 2 dark silver bags, 1 pale tan bag. +faded plum bags contain 2 striped brown bags. +posh olive bags contain 5 muted white bags, 3 mirrored tomato bags, 4 dull olive bags. +faded violet bags contain 1 mirrored yellow bag, 1 vibrant white bag, 3 mirrored orange bags. +light silver bags contain no other bags. +striped aqua bags contain 4 dull gray bags, 5 dark lavender bags, 4 shiny cyan bags. +vibrant fuchsia bags contain 3 drab beige bags, 2 dim beige bags. +shiny white bags contain 2 posh aqua bags, 4 faded gray bags. +muted green bags contain 4 dim coral bags, 4 wavy turquoise bags, 3 clear lime bags, 1 striped black bag. +dim tan bags contain 5 pale chartreuse bags, 1 mirrored cyan bag, 1 light maroon bag, 5 muted chartreuse bags. +faded olive bags contain 1 light salmon bag, 2 wavy blue bags, 3 drab lavender bags. +drab cyan bags contain 1 faded cyan bag. +muted magenta bags contain 3 clear purple bags, 4 pale aqua bags. +wavy maroon bags contain 1 wavy bronze bag. +faded green bags contain 2 mirrored gray bags, 4 wavy gray bags, 3 dark salmon bags. +wavy purple bags contain 2 posh red bags, 5 bright white bags. +vibrant black bags contain 4 plaid silver bags. +wavy white bags contain 3 dim chartreuse bags. +dark magenta bags contain 2 dim lime bags. +dull tan bags contain 1 posh red bag, 2 shiny green bags, 3 pale yellow bags, 2 faded salmon bags. +pale lavender bags contain 4 dim red bags. +mirrored black bags contain 1 plaid gray bag. +posh silver bags contain 4 wavy purple bags, 4 vibrant blue bags, 1 dull fuchsia bag, 5 faded brown bags. +plaid blue bags contain 5 pale yellow bags, 5 vibrant salmon bags, 4 wavy cyan bags. +plaid purple bags contain 1 bright bronze bag, 2 vibrant blue bags, 1 shiny salmon bag, 5 faded magenta bags. +striped orange bags contain 5 mirrored black bags, 2 clear cyan bags, 2 wavy yellow bags, 5 dim aqua bags. +pale chartreuse bags contain 1 shiny blue bag, 4 shiny tomato bags, 1 bright lime bag, 5 dim blue bags. +mirrored lavender bags contain 4 shiny gold bags, 3 dull crimson bags. +bright blue bags contain 5 mirrored yellow bags, 5 light silver bags. +dull teal bags contain 1 drab aqua bag, 4 dim coral bags, 3 muted yellow bags. +mirrored indigo bags contain 3 dim brown bags. +dotted coral bags contain 1 light lime bag, 5 mirrored indigo bags, 5 wavy indigo bags. +light white bags contain 1 vibrant coral bag. +faded yellow bags contain 3 light white bags. +plaid black bags contain 5 dim indigo bags, 2 dull olive bags. +dim cyan bags contain 5 shiny blue bags, 5 drab black bags. +plaid tomato bags contain 4 dull crimson bags. +bright yellow bags contain 5 mirrored green bags, 2 dim yellow bags. +clear magenta bags contain 4 dim cyan bags, 4 bright orange bags. +vibrant olive bags contain 4 pale turquoise bags. +dull orange bags contain 1 mirrored yellow bag, 2 clear purple bags. +drab tan bags contain 5 dotted salmon bags. +dark black bags contain 4 bright magenta bags, 3 striped lime bags. +faded teal bags contain 2 dark red bags, 3 plaid teal bags, 2 vibrant red bags. +posh magenta bags contain 3 dark tan bags. +dim indigo bags contain 2 dotted brown bags, 2 dull tan bags, 1 dark indigo bag, 3 dim fuchsia bags. +vibrant red bags contain 2 muted fuchsia bags, 5 bright blue bags. +mirrored tomato bags contain 4 shiny tomato bags, 1 dull orange bag. +dark lime bags contain 3 plaid tan bags. +vibrant silver bags contain 5 pale yellow bags, 2 faded lime bags. +faded tan bags contain 4 pale violet bags, 3 muted gold bags, 3 vibrant red bags. +pale beige bags contain 5 dark blue bags, 1 drab white bag, 3 faded crimson bags, 3 dull gray bags. +wavy teal bags contain 1 posh maroon bag, 2 clear violet bags. +bright turquoise bags contain 2 pale aqua bags. +striped chartreuse bags contain 2 striped tomato bags, 2 dark red bags, 3 posh coral bags, 4 mirrored fuchsia bags. +wavy yellow bags contain 5 striped gold bags, 1 striped maroon bag, 4 dull fuchsia bags, 3 shiny gold bags. +dull salmon bags contain 5 plaid cyan bags. +shiny bronze bags contain 5 pale indigo bags, 1 mirrored orange bag, 1 vibrant bronze bag. +dull red bags contain 5 wavy beige bags. +dotted green bags contain 2 clear indigo bags. +plaid fuchsia bags contain 2 vibrant salmon bags, 1 light silver bag. +striped crimson bags contain 3 dotted bronze bags, 2 shiny coral bags. +mirrored teal bags contain 2 clear purple bags, 5 muted yellow bags. +plaid gray bags contain 1 muted silver bag, 2 pale yellow bags. +pale gray bags contain 5 drab lavender bags, 4 mirrored aqua bags. +clear plum bags contain 3 dull blue bags, 5 clear chartreuse bags. +light salmon bags contain 3 bright silver bags, 3 clear black bags, 1 bright crimson bag, 4 bright white bags. +dark tan bags contain 4 shiny bronze bags, 1 mirrored chartreuse bag, 5 bright silver bags, 4 clear black bags. +vibrant bronze bags contain 4 vibrant teal bags, 3 dark silver bags, 2 mirrored green bags. +light teal bags contain 5 drab blue bags, 4 clear red bags, 1 drab aqua bag. +plaid plum bags contain 2 faded yellow bags, 5 striped maroon bags. +dull silver bags contain no other bags. +mirrored beige bags contain 4 dotted blue bags, 3 clear indigo bags. +pale aqua bags contain 2 shiny blue bags, 1 dim red bag, 1 posh teal bag. +wavy orange bags contain 5 pale red bags, 3 wavy purple bags, 5 shiny aqua bags. +dotted silver bags contain 3 dim beige bags, 5 striped silver bags, 2 pale brown bags, 1 muted white bag. +dotted orange bags contain 3 plaid violet bags, 1 pale salmon bag, 4 dull bronze bags. +vibrant turquoise bags contain 2 drab silver bags. +clear cyan bags contain 5 shiny green bags, 4 dark chartreuse bags. +dotted tan bags contain 4 vibrant blue bags. +mirrored brown bags contain 3 faded olive bags. +bright bronze bags contain 4 light yellow bags, 1 mirrored orange bag, 3 light silver bags. +plaid lavender bags contain 1 posh violet bag, 4 muted yellow bags, 3 bright gold bags. +bright coral bags contain 3 posh teal bags, 5 wavy purple bags. +faded aqua bags contain 1 faded black bag. +posh yellow bags contain 1 vibrant violet bag, 4 drab blue bags. +plaid red bags contain 3 mirrored orange bags, 2 muted gold bags, 5 faded black bags. +muted silver bags contain no other bags. +bright black bags contain 4 plaid teal bags, 2 wavy lavender bags, 5 posh tan bags. +dim white bags contain 1 mirrored orange bag, 1 dotted lavender bag, 4 muted yellow bags. +posh brown bags contain 2 dark purple bags, 3 plaid lavender bags. +dotted plum bags contain 4 bright teal bags. +plaid silver bags contain 1 dark coral bag, 5 shiny coral bags. +vibrant chartreuse bags contain 1 shiny magenta bag, 4 muted crimson bags, 2 dull tan bags, 2 striped cyan bags. +drab red bags contain 3 drab aqua bags, 1 dark yellow bag, 2 mirrored gray bags. +dull gold bags contain 5 dark coral bags, 2 dark blue bags, 5 bright orange bags, 5 muted lavender bags. +dull cyan bags contain 3 faded tan bags, 3 muted teal bags, 1 muted orange bag, 4 striped bronze bags. +drab lavender bags contain 4 faded lavender bags, 2 light blue bags, 3 posh fuchsia bags. +bright tan bags contain 1 faded tan bag, 4 vibrant coral bags. +shiny indigo bags contain 2 dark silver bags. +dark turquoise bags contain 3 dark purple bags. +drab magenta bags contain 2 bright white bags, 5 muted silver bags, 5 posh red bags. +vibrant coral bags contain 5 plaid orange bags, 5 pale gold bags, 1 dark yellow bag, 4 dim yellow bags. +clear yellow bags contain 5 plaid lavender bags, 1 vibrant coral bag, 1 posh coral bag, 4 vibrant brown bags. +bright indigo bags contain 5 bright black bags, 4 plaid crimson bags, 2 dim fuchsia bags. +plaid violet bags contain 1 drab crimson bag, 4 dotted cyan bags, 4 shiny green bags. +dim blue bags contain 1 dotted lavender bag, 5 clear purple bags. +vibrant plum bags contain no other bags. +clear bronze bags contain 5 dull tan bags. +striped green bags contain 1 wavy bronze bag, 4 light silver bags, 3 posh aqua bags. +mirrored gold bags contain 1 pale tan bag, 1 shiny bronze bag, 5 dim beige bags. +plaid lime bags contain 1 mirrored fuchsia bag. +posh salmon bags contain 3 dim brown bags, 4 mirrored silver bags. +wavy coral bags contain 4 light orange bags, 4 shiny orange bags, 4 dark blue bags, 1 bright yellow bag. +clear teal bags contain 2 posh white bags. +mirrored aqua bags contain no other bags. +light green bags contain 3 posh chartreuse bags, 3 shiny red bags, 1 dim silver bag, 4 faded crimson bags. +muted aqua bags contain 1 shiny green bag, 3 shiny gold bags, 5 light blue bags. +posh maroon bags contain 5 pale yellow bags, 2 dim red bags, 5 wavy beige bags, 1 bright blue bag. +faded gray bags contain 3 faded orange bags. +plaid orange bags contain 1 dark brown bag, 4 dotted salmon bags, 4 clear violet bags, 1 clear indigo bag. +striped indigo bags contain 2 muted gray bags, 4 dim brown bags, 4 clear black bags. +bright salmon bags contain 3 dark tomato bags, 5 pale tomato bags, 2 dim magenta bags, 3 dotted cyan bags. +wavy aqua bags contain 5 dark violet bags, 4 dim yellow bags, 2 dark blue bags. +plaid olive bags contain 2 dull red bags. +bright teal bags contain 2 shiny green bags. +vibrant beige bags contain 5 dark teal bags, 3 plaid turquoise bags. +dull chartreuse bags contain 4 pale blue bags, 2 drab violet bags, 2 dotted beige bags. +dotted brown bags contain 5 posh lime bags, 5 muted gray bags. +muted plum bags contain 4 clear violet bags, 2 shiny green bags, 1 dotted fuchsia bag. +muted blue bags contain 5 drab tomato bags. +dull bronze bags contain 3 bright magenta bags, 3 muted purple bags, 2 striped red bags, 1 clear gray bag. +shiny red bags contain 1 shiny green bag, 2 muted white bags. +shiny purple bags contain 1 wavy red bag, 1 drab magenta bag. +plaid tan bags contain 4 wavy bronze bags, 3 clear fuchsia bags. +drab orange bags contain 4 shiny salmon bags. +faded gold bags contain 2 pale bronze bags, 5 striped plum bags, 2 muted violet bags. +light magenta bags contain 5 bright tomato bags. +light yellow bags contain 5 posh gold bags, 5 faded lime bags. +mirrored maroon bags contain 5 posh plum bags, 5 pale gold bags, 5 vibrant maroon bags. +dark coral bags contain 3 shiny red bags, 3 posh fuchsia bags, 1 striped gold bag. +dark teal bags contain 2 striped red bags, 2 striped turquoise bags. +dark purple bags contain 1 clear blue bag. +plaid gold bags contain 2 posh teal bags, 4 dim yellow bags, 3 pale red bags. +dim coral bags contain 4 dull plum bags, 5 faded violet bags. +vibrant salmon bags contain 4 plaid silver bags, 5 faded green bags, 5 clear indigo bags. +bright brown bags contain 1 shiny plum bag, 1 dim magenta bag, 5 shiny turquoise bags, 4 dim yellow bags. +vibrant crimson bags contain 4 pale red bags. +posh crimson bags contain 4 plaid olive bags, 3 plaid orange bags. +faded indigo bags contain 1 clear red bag. +wavy red bags contain 1 vibrant plum bag, 5 dotted lime bags. +faded lavender bags contain 1 mirrored yellow bag, 4 vibrant plum bags. +drab silver bags contain 3 dark gray bags, 3 muted fuchsia bags. +pale black bags contain 4 posh white bags, 3 pale blue bags, 5 shiny plum bags, 1 posh salmon bag. +posh tan bags contain 2 mirrored yellow bags, 3 striped bronze bags. +drab aqua bags contain 1 dull silver bag, 1 dark tomato bag. +wavy plum bags contain 3 clear violet bags. +shiny crimson bags contain 5 drab lime bags. +shiny lime bags contain 5 vibrant teal bags, 5 faded black bags, 1 dull black bag, 5 clear purple bags. +dark maroon bags contain 3 dull black bags. +faded blue bags contain 4 bright blue bags, 1 mirrored lime bag, 5 shiny green bags. +clear turquoise bags contain 2 dim silver bags, 4 muted coral bags, 3 clear bronze bags, 4 light orange bags. +striped yellow bags contain 1 dotted brown bag, 2 plaid coral bags. +pale coral bags contain 5 faded crimson bags, 3 drab tan bags, 2 dotted olive bags, 3 shiny blue bags. +wavy black bags contain 1 mirrored yellow bag. +muted indigo bags contain 3 dim coral bags, 1 shiny lavender bag, 1 drab aqua bag, 5 faded blue bags. +dull aqua bags contain 4 dark gray bags, 3 mirrored orange bags, 3 pale red bags, 4 drab turquoise bags. +striped violet bags contain 4 posh red bags, 3 wavy violet bags, 1 pale aqua bag. +bright crimson bags contain 4 bright silver bags, 4 wavy beige bags, 5 striped fuchsia bags. +wavy tomato bags contain 4 dim turquoise bags, 2 mirrored chartreuse bags. +pale fuchsia bags contain 3 pale violet bags, 4 shiny turquoise bags, 1 drab white bag, 3 mirrored green bags. +mirrored gray bags contain 4 dim chartreuse bags, 4 bright chartreuse bags. +mirrored bronze bags contain 4 drab olive bags, 5 drab white bags, 2 clear crimson bags, 1 dim aqua bag. +light crimson bags contain 5 plaid teal bags. +light lime bags contain 2 faded salmon bags, 5 dim indigo bags, 1 dotted lime bag, 5 striped green bags. +clear silver bags contain 4 vibrant cyan bags, 2 dotted olive bags. +striped magenta bags contain 5 faded aqua bags. +dark gray bags contain 2 bright white bags, 2 posh red bags. +pale crimson bags contain 4 dark teal bags. +dotted cyan bags contain 1 striped brown bag, 3 shiny green bags, 1 dull crimson bag, 1 bright crimson bag. +clear violet bags contain 5 drab magenta bags, 2 striped brown bags, 2 striped fuchsia bags, 5 mirrored aqua bags. +drab white bags contain 3 bright blue bags, 3 wavy purple bags, 4 mirrored lime bags, 4 dotted salmon bags. +plaid yellow bags contain 3 dull violet bags, 1 striped turquoise bag. +clear gray bags contain 1 dim chartreuse bag, 2 dotted chartreuse bags, 5 dull plum bags. +pale cyan bags contain 2 striped tomato bags. +pale turquoise bags contain 1 faded coral bag. +shiny aqua bags contain 3 dotted magenta bags. +dull tomato bags contain 5 vibrant indigo bags. +light orange bags contain 1 posh lime bag, 5 bright yellow bags, 5 faded magenta bags, 2 pale beige bags. +dull white bags contain 1 dotted lavender bag, 1 pale beige bag, 5 posh black bags, 3 light silver bags. +drab yellow bags contain 2 shiny orange bags, 4 faded green bags. +bright gray bags contain 3 muted red bags, 4 dull orange bags, 5 mirrored yellow bags. +dim crimson bags contain 2 bright white bags. +dim fuchsia bags contain 1 light silver bag. +dim bronze bags contain 4 light blue bags, 1 light gray bag, 3 faded crimson bags, 2 posh tan bags. +muted tan bags contain 1 dark blue bag, 5 clear crimson bags, 1 striped silver bag. +dark gold bags contain 4 posh red bags, 5 drab blue bags. +light tomato bags contain 3 wavy olive bags, 3 dark maroon bags, 5 shiny gold bags, 3 muted yellow bags. +shiny fuchsia bags contain 2 faded lime bags, 5 drab beige bags. +striped gold bags contain 1 dim blue bag. +light lavender bags contain 3 wavy fuchsia bags, 2 shiny salmon bags. +shiny tomato bags contain 1 striped turquoise bag, 5 light gray bags, 2 dark tomato bags, 1 dull aqua bag. +dotted indigo bags contain 2 dark indigo bags. +shiny blue bags contain 2 shiny red bags, 2 posh salmon bags, 5 dotted tomato bags. +vibrant blue bags contain 2 plaid teal bags, 3 dim silver bags. +pale blue bags contain 1 striped tomato bag. +dull magenta bags contain 1 striped chartreuse bag, 2 dark silver bags. +drab blue bags contain 2 dark gray bags, 4 dotted lime bags, 3 shiny green bags, 3 wavy olive bags. +light bronze bags contain 3 wavy silver bags, 1 wavy coral bag, 4 faded green bags. +muted beige bags contain 4 dull coral bags, 3 dim chartreuse bags, 3 pale blue bags, 2 plaid lavender bags. +bright plum bags contain 1 plaid indigo bag, 2 dark purple bags, 5 dark indigo bags, 5 vibrant crimson bags. +plaid salmon bags contain 3 dark gold bags, 1 dotted lavender bag, 5 wavy red bags, 1 bright olive bag. +dim lime bags contain 4 wavy brown bags, 5 wavy fuchsia bags, 1 dark tomato bag. +dark aqua bags contain 5 wavy beige bags, 3 pale yellow bags, 2 bright white bags, 2 muted violet bags. +light coral bags contain 4 dotted coral bags, 1 pale indigo bag, 3 dull brown bags, 4 plaid white bags. +clear purple bags contain 4 dark aqua bags, 5 vibrant white bags. +striped plum bags contain 2 plaid gold bags, 1 dim silver bag. +mirrored yellow bags contain no other bags. +shiny olive bags contain 5 dotted lavender bags. +pale gold bags contain 2 plaid orange bags, 5 bright yellow bags. +dotted violet bags contain 3 dim orange bags. +mirrored blue bags contain 2 mirrored coral bags, 5 posh green bags, 1 wavy teal bag. +plaid green bags contain 3 wavy red bags. +wavy cyan bags contain 4 dull crimson bags, 2 dim chartreuse bags. +dull beige bags contain 1 shiny black bag, 5 posh green bags, 2 pale gray bags, 3 posh gray bags. +dark indigo bags contain 3 drab plum bags. +striped black bags contain 1 bright green bag, 4 muted silver bags, 1 plaid crimson bag. +plaid indigo bags contain 2 drab lime bags, 1 faded plum bag, 5 bright yellow bags. +shiny maroon bags contain 3 dark cyan bags, 1 dotted chartreuse bag. +dotted lime bags contain 5 light silver bags, 1 shiny green bag, 1 mirrored aqua bag. +posh beige bags contain 4 mirrored aqua bags, 2 mirrored black bags, 3 wavy blue bags, 1 plaid cyan bag. +bright cyan bags contain 4 mirrored aqua bags, 5 dotted fuchsia bags, 1 wavy plum bag. +plaid white bags contain 5 vibrant lime bags, 5 dull magenta bags, 2 pale blue bags, 5 plaid cyan bags. +drab maroon bags contain 1 clear violet bag, 5 posh green bags, 3 dotted bronze bags, 2 dark silver bags. +plaid bronze bags contain 4 shiny plum bags, 5 dim brown bags. +dim magenta bags contain 2 muted chartreuse bags, 4 wavy lavender bags. +clear blue bags contain 1 muted yellow bag, 5 muted fuchsia bags. +dotted salmon bags contain 3 muted silver bags, 4 mirrored yellow bags, 1 vibrant red bag. +posh orange bags contain 2 pale violet bags, 3 posh maroon bags. +mirrored red bags contain 5 posh crimson bags, 1 light green bag, 1 striped black bag, 2 dark black bags. +vibrant green bags contain 5 faded fuchsia bags, 4 faded orange bags, 3 clear turquoise bags. +pale violet bags contain 2 bright teal bags, 5 faded crimson bags. +clear brown bags contain 3 posh coral bags, 2 vibrant maroon bags, 1 drab olive bag, 5 mirrored cyan bags. +vibrant violet bags contain 4 dark purple bags, 4 striped olive bags, 5 faded fuchsia bags. +pale green bags contain 4 posh green bags, 2 striped lime bags. +light maroon bags contain 3 dull cyan bags, 4 dim red bags. +wavy salmon bags contain 4 drab lavender bags, 5 bright gray bags. +dotted yellow bags contain 4 mirrored black bags, 1 dim plum bag. +drab crimson bags contain 5 striped fuchsia bags, 1 pale indigo bag. +vibrant tomato bags contain 1 dotted lime bag, 1 dotted green bag, 5 light teal bags, 2 light indigo bags. +wavy olive bags contain 4 muted white bags, 5 muted silver bags. +wavy lime bags contain 2 vibrant bronze bags, 3 vibrant gray bags. +striped lime bags contain 1 faded brown bag, 3 vibrant red bags, 4 mirrored gray bags. +wavy crimson bags contain 1 striped silver bag, 5 pale magenta bags, 1 wavy gray bag, 5 vibrant plum bags. +wavy indigo bags contain 3 shiny cyan bags, 5 light orange bags. +posh fuchsia bags contain 5 dark aqua bags, 1 muted white bag, 2 shiny green bags, 5 dull black bags. +striped maroon bags contain 5 striped fuchsia bags, 5 muted chartreuse bags, 5 dark purple bags, 4 shiny gold bags. +dull gray bags contain 5 dark tomato bags, 3 shiny purple bags, 5 faded violet bags, 1 dull silver bag. +dotted bronze bags contain 4 dark blue bags. +muted olive bags contain 4 mirrored lavender bags. +dark plum bags contain 2 faded lime bags. +drab tomato bags contain 2 posh chartreuse bags, 4 vibrant indigo bags. +plaid teal bags contain 5 dark gray bags, 4 light silver bags. +drab teal bags contain 3 pale salmon bags. +wavy brown bags contain 5 plaid red bags. +mirrored violet bags contain 4 vibrant brown bags, 4 dull crimson bags, 4 shiny violet bags, 1 dim magenta bag. +faded silver bags contain 2 bright teal bags, 2 shiny green bags. +dark bronze bags contain 3 muted violet bags, 5 plaid cyan bags. +dim tomato bags contain 3 dotted black bags. +muted tomato bags contain 3 posh crimson bags, 2 muted yellow bags. +bright orange bags contain 3 pale silver bags. +dotted tomato bags contain 5 posh tan bags, 3 dotted lavender bags. +bright white bags contain no other bags. +dotted white bags contain 1 dim yellow bag, 5 plaid orange bags, 1 bright chartreuse bag. +vibrant teal bags contain 2 vibrant red bags. +light beige bags contain 5 wavy crimson bags, 5 mirrored aqua bags, 5 light yellow bags. +drab black bags contain 2 dotted lime bags, 2 mirrored fuchsia bags. +drab salmon bags contain 5 pale indigo bags. +bright silver bags contain 4 wavy red bags. +pale lime bags contain 1 dark indigo bag. +dark red bags contain 4 vibrant white bags, 1 dark violet bag. +dull coral bags contain 3 dark indigo bags, 3 bright plum bags, 2 wavy silver bags, 4 clear bronze bags. +vibrant white bags contain 1 dotted lime bag, 3 mirrored aqua bags. +posh red bags contain no other bags. +muted fuchsia bags contain 1 bright blue bag. +bright aqua bags contain 1 shiny blue bag, 4 dark red bags, 2 wavy fuchsia bags, 4 pale gold bags. +vibrant magenta bags contain 5 clear red bags. +light indigo bags contain 4 dark red bags, 3 vibrant salmon bags. +mirrored tan bags contain 5 muted teal bags. +dim teal bags contain 1 drab lime bag, 2 drab bronze bags, 4 bright lavender bags, 5 posh salmon bags. +shiny black bags contain 2 faded yellow bags, 1 shiny blue bag, 5 dark teal bags, 2 light crimson bags. +drab plum bags contain 2 muted fuchsia bags. +muted turquoise bags contain 1 faded plum bag, 3 plaid red bags, 3 dotted lavender bags. +muted brown bags contain 1 dotted magenta bag, 4 pale red bags, 4 posh violet bags, 3 muted yellow bags. +dull olive bags contain 2 drab magenta bags, 2 plaid crimson bags. +drab coral bags contain 1 dull blue bag, 2 striped white bags, 1 plaid indigo bag, 2 shiny violet bags. +mirrored white bags contain 1 dull fuchsia bag, 3 muted white bags, 5 faded lime bags. +shiny gold bags contain 1 pale indigo bag, 3 pale yellow bags. +vibrant tan bags contain 2 dull fuchsia bags, 1 faded bronze bag, 5 shiny orange bags. +dark olive bags contain 3 bright green bags, 5 wavy beige bags, 4 muted tan bags. +light chartreuse bags contain 4 dark turquoise bags, 2 striped gold bags. +mirrored salmon bags contain 1 plaid lavender bag, 5 dim white bags. +mirrored crimson bags contain 3 dark teal bags, 1 striped silver bag, 3 clear blue bags. +wavy gray bags contain 3 plaid maroon bags, 5 clear crimson bags, 1 dull purple bag, 2 drab brown bags. +mirrored green bags contain 4 vibrant white bags, 3 shiny cyan bags. +vibrant gray bags contain 2 dotted salmon bags, 5 drab black bags, 4 shiny red bags. +dull black bags contain 1 dark gray bag, 1 mirrored yellow bag, 4 dark aqua bags. +dim plum bags contain 2 clear blue bags, 3 shiny turquoise bags. +posh aqua bags contain 4 bright white bags, 2 pale yellow bags. +muted yellow bags contain 4 dark aqua bags, 3 muted silver bags, 3 bright white bags, 3 mirrored orange bags. +dark crimson bags contain 5 wavy salmon bags. +bright gold bags contain 3 drab lavender bags, 2 dotted magenta bags, 5 dim chartreuse bags, 1 plaid gray bag. +dim purple bags contain 4 clear silver bags, 1 faded purple bag, 2 faded blue bags. +light gray bags contain 4 dotted bronze bags. +bright chartreuse bags contain 3 vibrant white bags, 1 wavy red bag, 1 faded violet bag, 5 dull fuchsia bags. +shiny tan bags contain 3 dim red bags, 1 shiny orange bag, 4 clear violet bags. +shiny coral bags contain 1 dull black bag. +dull indigo bags contain 3 drab blue bags, 2 light gray bags, 3 dim turquoise bags. +dim brown bags contain 1 drab turquoise bag, 5 dull black bags, 1 posh aqua bag. +bright fuchsia bags contain 3 bright olive bags. +light brown bags contain 2 muted tan bags. +posh plum bags contain 5 striped fuchsia bags, 5 shiny cyan bags, 5 shiny violet bags, 1 shiny green bag. +drab bronze bags contain 4 dotted aqua bags, 5 shiny orange bags, 3 dull aqua bags. +dim beige bags contain 3 striped bronze bags. +dark lavender bags contain 1 posh salmon bag, 5 dotted teal bags, 5 dim blue bags, 4 pale beige bags. +light black bags contain 1 clear orange bag. +clear white bags contain 3 vibrant aqua bags, 2 pale aqua bags. +pale white bags contain 5 faded magenta bags. +vibrant cyan bags contain 5 light lime bags, 4 bright purple bags, 4 clear black bags. +bright lime bags contain 5 dim silver bags. +bright olive bags contain 5 striped magenta bags, 4 dark turquoise bags, 2 dark chartreuse bags. +vibrant lime bags contain 3 mirrored coral bags. +faded turquoise bags contain 2 dark gray bags, 1 dull black bag. +muted red bags contain 3 muted coral bags. +vibrant indigo bags contain 3 posh tomato bags. +striped olive bags contain 4 plaid orange bags. +posh blue bags contain 5 plaid teal bags. +striped gray bags contain 1 mirrored purple bag. +posh lavender bags contain 5 plaid maroon bags, 2 dim lavender bags, 1 bright maroon bag, 4 dark coral bags. +dim turquoise bags contain 2 posh tomato bags. +light purple bags contain 1 shiny green bag. +vibrant yellow bags contain 5 pale brown bags, 5 vibrant crimson bags, 2 plaid aqua bags. +pale silver bags contain 3 pale tan bags, 1 vibrant lavender bag. +posh bronze bags contain 5 pale lavender bags, 3 dotted indigo bags, 1 striped olive bag, 5 mirrored green bags. +striped white bags contain 5 faded plum bags, 5 striped indigo bags, 4 pale gold bags, 4 plaid gold bags. +striped cyan bags contain 4 faded salmon bags, 5 dull coral bags, 1 drab bronze bag, 1 mirrored bronze bag. +shiny yellow bags contain 2 faded aqua bags, 1 striped black bag, 4 pale cyan bags, 3 clear red bags. +muted white bags contain 5 mirrored aqua bags, 2 muted fuchsia bags. +bright violet bags contain 4 dark turquoise bags, 5 plaid crimson bags, 2 clear lavender bags, 2 dim red bags. +light red bags contain 4 dim lime bags, 3 vibrant red bags. +drab gray bags contain 2 drab tomato bags, 1 shiny blue bag, 2 vibrant tan bags, 1 striped fuchsia bag. +pale tan bags contain 2 striped green bags, 2 dark maroon bags, 4 drab turquoise bags, 3 posh lime bags. +faded crimson bags contain 4 clear crimson bags, 5 dull purple bags, 1 clear violet bag, 4 wavy beige bags. +shiny orange bags contain 3 dark gray bags, 5 dim silver bags, 3 bright green bags. +clear fuchsia bags contain 4 pale indigo bags. +shiny salmon bags contain 4 dull coral bags, 2 muted crimson bags. +dotted black bags contain 1 vibrant cyan bag. +drab turquoise bags contain 1 shiny green bag. +shiny chartreuse bags contain 5 faded violet bags. +wavy magenta bags contain 5 plaid lime bags, 4 bright chartreuse bags, 2 clear lime bags, 3 plaid orange bags. +wavy tan bags contain 4 dark brown bags, 3 clear turquoise bags, 4 muted fuchsia bags, 5 clear gold bags. +dotted maroon bags contain 2 dim gold bags, 4 posh tan bags. +striped silver bags contain 3 dark coral bags, 4 dark turquoise bags, 1 pale beige bag, 1 bright silver bag. +dotted blue bags contain 3 drab blue bags. +striped bronze bags contain 1 light blue bag, 3 wavy olive bags, 5 dark tomato bags, 4 dark blue bags. +dotted chartreuse bags contain 2 dark salmon bags, 2 striped magenta bags. +muted orange bags contain 2 clear crimson bags, 3 mirrored fuchsia bags, 2 drab blue bags. +light fuchsia bags contain 2 dim cyan bags, 4 pale lavender bags, 1 dark teal bag. +wavy green bags contain 5 faded turquoise bags, 1 faded lavender bag, 3 faded silver bags, 2 dark tomato bags. +muted maroon bags contain 5 vibrant red bags. +drab beige bags contain 2 clear red bags, 4 faded blue bags, 1 dim beige bag. +light turquoise bags contain 3 dim violet bags, 3 light teal bags. +striped beige bags contain 4 vibrant brown bags, 3 dull red bags. +drab violet bags contain 4 dotted gray bags, 4 striped chartreuse bags. +clear red bags contain 3 posh crimson bags, 4 wavy green bags, 3 dotted brown bags, 3 wavy violet bags. +clear green bags contain 3 vibrant gray bags, 5 dim orange bags, 4 posh magenta bags, 4 dim tan bags. +posh indigo bags contain 4 shiny coral bags, 2 bright green bags. +dotted olive bags contain 1 striped bronze bag, 1 dim silver bag. +striped fuchsia bags contain 4 light silver bags, 4 dark blue bags, 1 bright green bag. +dark fuchsia bags contain 5 shiny turquoise bags, 5 shiny maroon bags, 3 dim gray bags, 1 dim cyan bag. +faded cyan bags contain 3 pale gold bags, 3 wavy fuchsia bags, 2 wavy orange bags, 2 drab violet bags. +drab chartreuse bags contain 5 muted blue bags, 5 wavy orange bags, 2 mirrored beige bags, 5 wavy tan bags. +mirrored silver bags contain 3 drab lavender bags. +faded black bags contain 3 drab turquoise bags, 3 muted yellow bags. +muted lavender bags contain 5 light crimson bags, 5 bright gold bags, 4 dull orange bags, 2 striped crimson bags. +shiny cyan bags contain 5 drab plum bags, 4 drab aqua bags. +dark white bags contain 4 mirrored fuchsia bags. +plaid aqua bags contain 1 dark cyan bag, 4 drab tan bags, 3 drab blue bags. +muted purple bags contain 4 dim turquoise bags. +clear chartreuse bags contain 2 vibrant gray bags, 3 striped teal bags, 3 dim tan bags. +clear beige bags contain 4 plaid tan bags, 1 dark teal bag, 4 dark cyan bags, 2 posh brown bags. +posh white bags contain 3 plaid red bags. +posh cyan bags contain 2 dull teal bags, 3 posh indigo bags, 1 dotted aqua bag. +mirrored fuchsia bags contain 4 mirrored aqua bags, 3 striped fuchsia bags, 1 faded violet bag, 5 wavy red bags. +striped teal bags contain 4 dark purple bags, 1 pale teal bag, 3 clear violet bags, 2 shiny yellow bags. +dull maroon bags contain 1 dull beige bag, 3 dim crimson bags. +shiny brown bags contain 5 striped red bags, 5 dotted magenta bags. +vibrant gold bags contain 4 bright lime bags. +wavy gold bags contain 5 vibrant white bags, 3 dim orange bags, 1 dark gold bag, 5 bright tan bags. +muted crimson bags contain 1 plaid chartreuse bag. +mirrored coral bags contain 5 mirrored teal bags, 5 shiny cyan bags, 2 dull purple bags. +dark green bags contain 2 dark gray bags. +dotted beige bags contain 5 shiny gold bags, 1 drab turquoise bag, 2 plaid lavender bags. +plaid chartreuse bags contain 2 clear cyan bags, 1 bright blue bag, 2 dark violet bags, 1 dark chartreuse bag. +dotted purple bags contain 3 bright crimson bags, 1 striped black bag. +bright tomato bags contain 5 pale lime bags, 2 shiny aqua bags. +plaid crimson bags contain 5 dull orange bags, 3 dim chartreuse bags, 4 wavy aqua bags, 5 muted gold bags. +muted gray bags contain 3 posh aqua bags, 1 faded blue bag, 4 striped brown bags. +vibrant brown bags contain 5 shiny crimson bags, 4 mirrored orange bags. +clear aqua bags contain 3 drab magenta bags, 1 drab crimson bag, 3 dull plum bags, 4 faded magenta bags. +posh tomato bags contain 2 clear black bags. +dim chartreuse bags contain 5 bright green bags, 3 shiny gold bags, 4 vibrant red bags. +striped salmon bags contain 1 faded purple bag, 4 wavy fuchsia bags, 5 vibrant chartreuse bags, 5 posh tomato bags. +faded orange bags contain 4 pale beige bags, 4 dim blue bags, 2 faded silver bags. +shiny lavender bags contain 3 dotted olive bags, 3 dotted gray bags, 4 shiny yellow bags, 1 dim cyan bag. +wavy turquoise bags contain 5 wavy lavender bags, 4 striped red bags, 2 drab aqua bags, 3 shiny aqua bags. +pale plum bags contain 4 drab silver bags. +faded maroon bags contain 3 posh fuchsia bags, 5 vibrant teal bags, 1 dull violet bag. +dark yellow bags contain 3 faded black bags, 2 dark salmon bags, 2 vibrant lavender bags. +bright purple bags contain 5 light lime bags, 1 pale gray bag, 1 faded turquoise bag, 2 faded magenta bags. +vibrant maroon bags contain 5 vibrant lavender bags, 3 wavy black bags, 2 striped magenta bags, 2 pale green bags. diff --git a/8/1.py b/8/1.py new file mode 100644 index 0000000..b27aec2 --- /dev/null +++ b/8/1.py @@ -0,0 +1,18 @@ +with open("input") as f: + program = [x.strip() for x in f] + +ip = 0 +acc = 0 +executed = [] +while True: + if ip in executed: + break + inst, count = program[ip].split(" ") + executed.append(ip) + ip += 1 + if inst == "acc": + acc += int(count) + if inst == "jmp": + ip += int(count) - 1 + +print(acc) diff --git a/8/2.py b/8/2.py new file mode 100644 index 0000000..ca07087 --- /dev/null +++ b/8/2.py @@ -0,0 +1,30 @@ +def is_correct(program): + ip = 0 + acc = 0 + executed = [] + while True: + if ip in executed: + return False, 0 + if ip >= len(program): + return True, acc + inst, count = program[ip].split(" ") + executed.append(ip) + ip += 1 + if inst == "acc": + acc += int(count) + if inst == "jmp": + ip += int(count) - 1 + +with open("input") as f: + program = [x.strip() for x in f] + +i = 0 +for line in program: + if line.startswith("jmp") or line.startswith("nop"): + pc = program.copy() + pc[i] = ("jmp" + line[3:]) if line.startswith("nop") else ("nop" + line[3:]) + correct, acc = is_correct(pc) + if correct: + print(acc) + break + i += 1 diff --git a/8/einput b/8/einput new file mode 100644 index 0000000..178df53 --- /dev/null +++ b/8/einput @@ -0,0 +1,9 @@ +nop +0 +acc +1 +jmp +4 +acc +3 +jmp -3 +acc -99 +acc +1 +jmp -4 +acc +6 diff --git a/8/input b/8/input new file mode 100644 index 0000000..e4ffcf2 --- /dev/null +++ b/8/input @@ -0,0 +1,623 @@ +acc +13 +acc -6 +acc -8 +jmp +140 +acc +44 +acc +21 +nop +23 +jmp +455 +acc -1 +jmp +143 +acc +9 +acc +19 +jmp +507 +nop +513 +acc +38 +nop +444 +jmp +560 +nop +19 +acc +9 +acc +19 +jmp +33 +acc +11 +acc -11 +acc +10 +jmp +486 +nop -12 +acc +38 +acc +5 +jmp +394 +acc +23 +jmp +236 +acc -9 +acc -10 +acc +32 +nop +45 +jmp +562 +jmp +423 +acc +3 +nop +340 +jmp +217 +acc -14 +acc -6 +jmp +397 +acc +17 +nop +165 +acc +41 +acc -9 +jmp +554 +nop +7 +acc +0 +jmp +235 +acc +32 +jmp +486 +jmp +280 +jmp +408 +jmp +73 +jmp +482 +acc -17 +acc +24 +jmp +377 +jmp +379 +acc +13 +jmp +277 +nop +232 +acc +2 +acc +33 +jmp +247 +acc +48 +acc +22 +jmp +105 +jmp +269 +jmp +326 +jmp +516 +acc +32 +nop +147 +jmp -27 +jmp +1 +acc -8 +jmp +376 +acc -13 +acc +0 +acc +43 +nop +380 +jmp +230 +acc +34 +jmp +130 +acc +18 +acc +0 +jmp +402 +acc +31 +acc -1 +acc -5 +jmp +134 +jmp +334 +acc +35 +acc +0 +acc +5 +acc -10 +jmp -85 +acc +5 +nop +444 +acc +10 +jmp -9 +acc +46 +acc -12 +nop +98 +acc +29 +jmp +119 +acc +8 +acc +21 +jmp +422 +acc +19 +jmp +78 +acc +42 +acc +18 +nop +344 +nop +353 +jmp +26 +acc -16 +acc +20 +jmp +370 +acc -5 +acc +29 +jmp +465 +nop +176 +acc -13 +acc -16 +jmp +300 +acc +12 +acc +43 +acc -1 +jmp +215 +nop +214 +acc +13 +jmp +141 +acc -3 +acc +42 +acc +5 +jmp +49 +acc +7 +acc +7 +nop +2 +jmp +5 +nop +123 +nop +112 +jmp +45 +jmp +276 +acc +4 +acc +5 +acc +13 +jmp -97 +jmp +311 +nop +347 +acc +6 +jmp +1 +jmp +162 +acc +36 +acc -6 +jmp +386 +acc -10 +acc -8 +jmp +163 +acc +32 +acc +13 +jmp +1 +jmp +361 +acc +43 +acc +6 +acc +31 +jmp +52 +acc +23 +acc +34 +nop +186 +jmp +268 +nop -103 +acc -17 +jmp +242 +acc +30 +acc -4 +jmp -32 +acc +27 +acc -17 +jmp -142 +acc +30 +acc +17 +jmp +1 +jmp +415 +jmp -132 +acc +15 +jmp +176 +acc +15 +acc +12 +nop +382 +jmp +237 +jmp +32 +acc -8 +acc +40 +acc +28 +jmp +1 +jmp -186 +acc +9 +acc +49 +jmp -55 +acc -16 +acc -7 +nop +240 +acc +29 +jmp +255 +jmp +182 +acc -16 +acc +9 +jmp -31 +acc -13 +acc +29 +jmp +387 +acc -13 +nop -180 +acc -11 +jmp +77 +acc +16 +jmp +368 +jmp +224 +acc +32 +nop -187 +acc +48 +jmp +307 +acc +11 +acc +38 +nop +47 +jmp -94 +jmp +1 +nop -170 +acc +31 +jmp -180 +acc +30 +acc +1 +jmp +1 +nop -63 +jmp -12 +acc -4 +acc -12 +acc +15 +nop -68 +jmp +13 +acc +24 +nop -50 +acc +31 +acc -2 +jmp +333 +acc +39 +nop -179 +jmp +158 +acc +24 +jmp +169 +acc -3 +jmp -207 +acc -13 +jmp -54 +acc +31 +jmp -93 +acc -4 +acc +40 +jmp -96 +acc -15 +acc +31 +jmp +68 +acc +38 +acc +7 +acc +12 +jmp -9 +acc +49 +acc +33 +acc +27 +acc +36 +jmp +50 +jmp +208 +jmp +1 +acc +42 +acc +34 +jmp -151 +acc +17 +jmp -195 +acc +37 +acc +34 +jmp +62 +jmp +1 +acc +9 +acc +3 +acc -2 +jmp +266 +nop +254 +nop -170 +nop -133 +acc +40 +jmp +225 +acc +38 +acc +33 +acc +39 +jmp +262 +jmp -278 +acc -17 +acc +16 +nop +128 +jmp -116 +acc +13 +acc +49 +acc +36 +acc +33 +jmp -215 +nop -301 +jmp -197 +acc +50 +jmp -37 +acc +42 +nop -253 +jmp +159 +jmp -142 +acc +14 +jmp -123 +acc -7 +acc -13 +acc +33 +acc +42 +jmp +232 +acc +2 +acc +26 +acc +3 +jmp -112 +acc +29 +acc -12 +nop -263 +nop +114 +jmp +7 +jmp +157 +acc -7 +acc +11 +nop +245 +acc -2 +jmp -225 +nop +120 +jmp -114 +acc -5 +acc +22 +nop -122 +acc -11 +jmp -70 +acc +1 +acc +24 +acc +23 +acc +37 +jmp +188 +acc +0 +acc -10 +jmp +1 +jmp -283 +jmp -80 +acc +4 +jmp -183 +acc -16 +nop -306 +jmp -213 +acc +10 +acc -2 +nop -17 +jmp +146 +acc -8 +acc +5 +acc +19 +acc +37 +jmp -261 +acc +28 +acc +49 +jmp +111 +acc +37 +acc +44 +acc +20 +jmp -11 +jmp -53 +acc +25 +jmp -343 +acc +7 +acc +46 +jmp -187 +acc +20 +acc +50 +acc -8 +jmp -365 +nop -9 +acc -18 +jmp -43 +nop +165 +nop +78 +acc +33 +acc +19 +jmp -321 +acc +46 +jmp -275 +nop -88 +acc +4 +acc +33 +acc +47 +jmp -18 +jmp +166 +jmp +1 +acc -4 +acc -9 +acc -2 +jmp -173 +jmp +54 +acc -3 +acc +2 +nop +16 +acc -13 +jmp +184 +acc +26 +nop -322 +acc -12 +jmp -362 +jmp -118 +acc +7 +acc +33 +jmp +153 +jmp -13 +acc +19 +jmp +1 +acc +23 +jmp -373 +acc +12 +jmp -184 +jmp -185 +jmp -57 +acc +48 +acc +8 +nop +71 +acc +26 +jmp -96 +jmp -227 +acc -10 +jmp -381 +jmp +75 +jmp +74 +jmp -320 +acc +0 +nop +101 +jmp -98 +acc +33 +acc -4 +jmp +1 +acc -9 +jmp -197 +acc +36 +acc +15 +acc +24 +jmp -400 +acc +18 +jmp -77 +acc +25 +acc +1 +jmp -112 +nop -150 +jmp -381 +jmp -152 +acc +38 +acc +50 +acc +43 +jmp +103 +nop -4 +acc -6 +jmp -309 +acc +34 +acc +2 +acc -15 +jmp -411 +jmp -70 +acc +39 +acc -3 +acc +6 +acc +22 +jmp -123 +jmp -89 +acc +11 +jmp +70 +jmp -339 +acc -4 +jmp -325 +acc +44 +acc +8 +acc +15 +acc +29 +jmp +87 +jmp -411 +acc +30 +jmp +12 +acc -14 +jmp -14 +acc -17 +jmp +1 +acc -12 +jmp -441 +jmp +1 +acc +0 +acc -12 +jmp +108 +jmp -277 +jmp +103 +acc +12 +nop -427 +acc +10 +acc -16 +jmp -322 +acc +1 +jmp -412 +acc +37 +jmp -130 +nop -474 +jmp +86 +acc +5 +acc -12 +jmp -461 +acc -18 +acc -12 +acc +30 +nop -356 +jmp -30 +nop -207 +jmp -128 +nop -168 +acc -4 +jmp -98 +acc +32 +nop -264 +jmp -5 +nop -337 +acc -10 +nop -195 +nop +62 +jmp -37 +jmp -489 +jmp -148 +acc +50 +acc +33 +acc +8 +acc +49 +jmp -353 +acc +1 +nop -13 +acc +27 +jmp -492 +jmp +1 +acc +43 +jmp -46 +acc -16 +jmp -149 +acc +28 +jmp -525 +acc +48 +jmp -30 +acc -5 +acc +21 +jmp -15 +jmp +1 +acc +17 +acc +42 +acc +36 +jmp -343 +acc -7 +acc +3 +jmp -346 +acc +44 +acc +18 +acc -10 +nop -262 +jmp -338 +jmp -111 +jmp -105 +jmp -319 +acc -11 +jmp -297 +acc +1 +acc -3 +jmp -271 +acc +15 +acc +6 +acc +24 +jmp -80 +nop -477 +acc +39 +jmp -49 +nop -62 +acc +23 +acc +15 +jmp -47 +acc +16 +acc +5 +acc +11 +acc +42 +jmp -430 +acc +14 +acc -16 +jmp -80 +jmp -571 +acc +46 +acc +31 +jmp +1 +acc +31 +jmp +13 +jmp -5 +jmp -599 +acc +41 +jmp -105 +jmp +1 +jmp +1 +nop -360 +jmp -542 +acc -5 +acc +20 +nop -595 +jmp -124 +acc +14 +acc +40 +acc +14 +acc +34 +jmp +1 diff --git a/9/1.py b/9/1.py new file mode 100644 index 0000000..d06564f --- /dev/null +++ b/9/1.py @@ -0,0 +1,15 @@ +def find_sum(l, total): + for i in l: + m = list(filter(lambda x: i!=x and i + x == total, l)) + if m: + return True + return False + +with open("input") as f: + content = [int(x.strip()) for x in f] + +r = 25 +for i in range(r, len(content)): + if not find_sum(content[i-r:i], content[i]): + print(content[i]) + break diff --git a/9/2.py b/9/2.py new file mode 100644 index 0000000..03946ef --- /dev/null +++ b/9/2.py @@ -0,0 +1,12 @@ +with open("input") as f: + content = [int(x.strip()) for x in f] + +target = 22406676 +for i in range(len(content)): + for length in range(2, len(content) - i): + subset = content[i:i+length] + s = sum(subset) + if s == target: + print(min(subset) + max(subset)) + if s > target: + break diff --git a/9/einput b/9/einput new file mode 100644 index 0000000..cda4246 --- /dev/null +++ b/9/einput @@ -0,0 +1,20 @@ +35 +20 +15 +25 +47 +40 +62 +55 +65 +95 +102 +117 +150 +182 +127 +219 +299 +277 +309 +576 \ No newline at end of file diff --git a/9/input b/9/input new file mode 100644 index 0000000..7b49b61 --- /dev/null +++ b/9/input @@ -0,0 +1,1000 @@ +38 +18 +28 +41 +37 +17 +24 +45 +50 +35 +9 +30 +11 +8 +40 +43 +46 +36 +33 +19 +14 +32 +3 +7 +16 +42 +10 +12 +13 +25 +52 +15 +21 +18 +29 +17 +20 +22 +11 +51 +23 +24 +34 +30 +26 +33 +14 +50 +27 +28 +31 +36 +44 +32 +35 +25 +37 +38 +40 +59 +39 +41 +42 +43 +70 +55 +45 +57 +46 +47 +58 +80 +52 +68 +53 +56 +60 +95 +62 +63 +72 +75 +77 +79 +109 +174 +83 +139 +96 +91 +92 +98 +93 +99 +100 +254 +120 +428 +161 +162 +154 +149 +195 +153 +232 +334 +581 +156 +170 +175 +176 +189 +197 +187 +183 +190 +191 +199 +219 +220 +309 +269 +302 +372 +345 +751 +305 +323 +410 +331 +326 +332 +339 +346 +374 +359 +370 +769 +382 +373 +381 +419 +418 +439 +489 +592 +571 +607 +651 +669 +628 +665 +685 +709 +657 +658 +1068 +792 +705 +1151 +729 +1060 +754 +763 +791 +1010 +1342 +857 +928 +1146 +1163 +1178 +1297 +1515 +1648 +1285 +1438 +1315 +1362 +1363 +1387 +1434 +1459 +1468 +1483 +1492 +1517 +1926 +1620 +1719 +2091 +2003 +2020 +3237 +2309 +2341 +2475 +3011 +2927 +4242 +3640 +2821 +2893 +2846 +4540 +2917 +2902 +4305 +2985 +6130 +3009 +4728 +4094 +3339 +3722 +4023 +4312 +4329 +5294 +4650 +4816 +5296 +8142 +5667 +5714 +5723 +5902 +6707 +8625 +5819 +8708 +8067 +5994 +6324 +6348 +10231 +9006 +9608 +11115 +11625 +10653 +8641 +8979 +9466 +10112 +10483 +10963 +11437 +11381 +11533 +11542 +12672 +14635 +16106 +19949 +17046 +28483 +15814 +22914 +17647 +17620 +17985 +19604 +18107 +18445 +39446 +18753 +19091 +19578 +30985 +34091 +33726 +27251 +24053 +23075 +24214 +27307 +30449 +36137 +36430 +36092 +41861 +33434 +36860 +38669 +66586 +42679 +37198 +36552 +54997 +79211 +37844 +42166 +42653 +47128 +47289 +51360 +48267 +50382 +59505 +51521 +60741 +63883 +69526 +88558 +74396 +80523 +69986 +75221 +148063 +73750 +79851 +88719 +80010 +89294 +99788 +80497 +84819 +102158 +94417 +98649 +131211 +168409 +101903 +148702 +112262 +149996 +137633 +143276 +252154 +143736 +184607 +182248 +148971 +217026 +175653 +164829 +160507 +165316 +259246 +186722 +179236 +272769 +193066 +196320 +200552 +255998 +375556 +364416 +249895 +347564 +292707 +280909 +309478 +309052 +304243 +314287 +342037 +354889 +325336 +530804 +339743 +365958 +526800 +648795 +554792 +435234 +465835 +389386 +859035 +493259 +604784 +542602 +554138 +941502 +573616 +780122 +885693 +613295 +1376736 +963002 +669176 +1047397 +665079 +691294 +1567786 +1222411 +755344 +824620 +928493 +855221 +901069 +882645 +931988 +1334260 +1147386 +1096740 +1207681 +1127754 +1282471 +1186911 +1304589 +1278374 +1334255 +1446638 +1356373 +1360470 +1420423 +2010399 +1579964 +1610565 +1951961 +1656413 +2011531 +1737866 +1756290 +2660962 +1814633 +2214459 +2224494 +3076836 +3804458 +2628104 +2314665 +3184504 +2638844 +2915154 +2612629 +2690628 +4208068 +3531925 +2780893 +3000387 +5691015 +3190529 +3266978 +4537183 +3394279 +5315052 +3552499 +3570923 +4029092 +4039127 +4438953 +4539159 +5708944 +4927294 +5527783 +6661257 +5251473 +7833232 +5781280 +5303257 +5471521 +8718312 +8505581 +5971422 +7610050 +7229656 +6457507 +11162549 +6946778 +11385731 +7123422 +7581591 +8478080 +8068219 +8578286 +8978112 +9466453 +10779256 +10554730 +13849499 +11222895 +13084705 +10774778 +11084537 +11274679 +15841734 +12428929 +12918200 +21777625 +13404285 +14525726 +15601502 +14070200 +14528369 +19752759 +19532842 +15649810 +16546299 +20550990 +22870738 +18444565 +20021183 +21329508 +21639267 +21859315 +31251312 +26488990 +26926271 +26988400 +23703608 +25347129 +25833214 +26322485 +44200246 +53248756 +22406676 +47692529 +28598569 +32196109 +34094375 +38185566 +34990864 +36567482 +38465748 +43188823 +40083832 +41350691 +61082775 +43498582 +51005245 +64298962 +46110284 +47753805 +48239890 +48729161 +60824078 +52155699 +86425456 +56501051 +79888638 +67186973 +60794678 +62692944 +66290484 +69085239 +71558346 +73456612 +105881767 +78549580 +81434523 +123487622 +84849273 +98265983 +91738472 +93864089 +148239523 +94350174 +99909504 +96969051 +100884860 +123688024 +145014958 +117295729 +119193995 +142581582 +127085162 +128983428 +135375723 +139747096 +166054290 +159984103 +195235034 +163398853 +173172995 +175298612 +176587745 +178713362 +185602561 +186088646 +302401386 +191319225 +194259678 +196878555 +260868963 +243466442 +236489724 +244380891 +246279157 +248177423 +262460885 +256068590 +411576276 +321464369 +299731199 +323382956 +430469537 +494966233 +420054187 +351886357 +354011974 +355301107 +607954947 +371691207 +377407871 +668231610 +385578903 +757270110 +433368279 +479956166 +623114155 +480870615 +490660048 +494456580 +562192084 +651617556 +579451546 +621195568 +644847325 +675269313 +677394930 +723577564 +705898331 +707187464 +725703181 +862351255 +726992314 +749099078 +1108637592 +818947182 +971530663 +1430765028 +1371839639 +913324445 +970616214 +1146074136 +1322242255 +985116628 +1200647114 +1513968811 +1286639010 +1224298871 +2430879847 +1320116638 +1352664243 +1383293261 +1450569878 +1413085795 +1432890645 +1719715292 +2559207470 +1568046260 +2415881656 +1732271627 +1790477845 +2131190764 +2920362406 +1883940659 +1898441073 +1955732842 +2185763742 +3415996475 +2209415499 +3241047723 +2510937881 +3905479034 +4386612689 +2672780881 +2703409899 +4056074142 +6336358881 +3018616138 +2845976440 +3000936905 +3358524105 +3300317887 +3451986919 +3616212286 +6204500545 +4069704401 +3782381732 +3839673501 +4917057211 +3854173915 +4141496584 +7441814471 +7310752124 +5450463222 +5214347780 +5376190780 +6526954796 +5673717786 +5518757321 +6844906483 +7757708870 +5846913345 +5864592578 +6146294327 +11360642107 +9504818432 +8369044130 +7068199205 +7398594018 +12444389985 +7622055233 +7636555647 +7693847416 +7995670499 +17126873665 +9355844364 +13155312968 +10590538560 +14881009212 +11192475107 +10894948101 +11365670666 +22973787010 +11383349899 +11711505923 +11993207672 +12010886905 +12932791783 +18781943917 +14466793223 +14690254438 +15063869704 +14704754852 +15020649251 +25585202539 +19059518082 +19019905546 +25958817805 +18586209059 +20739194263 +24866818891 +21973888459 +21485486661 +22087423208 +25897229959 +22905835006 +22749020565 +23094855822 +23376557571 +23704713595 +29395009290 +24943678688 +29171548075 +29710903689 +35803063967 +34040554797 +39798712345 +29725404103 +37108072459 +37606114605 +48784922185 +39325403322 +43488214828 +40071695720 +60746742655 +43572909869 +44722909024 +44234507226 +92357832054 +45654855571 +52144029855 +46453734160 +46471413393 +47081271166 +48648392283 +54115226763 +62549793293 +58882451764 +91315778392 +73298313972 +63765958900 +66833476562 +76433475781 +90377764595 +89750144460 +79397099042 +97798885426 +83559910548 +94186922483 +89889362797 +87807417095 +114693823148 +112997678527 +92108589731 +92126268964 +98597764015 +227691501675 +100586640156 +95729663449 +152927557888 +116665020056 +121432245057 +159469091920 +130599435462 +140199434681 +143163057942 +156583621022 +243749698098 +183537080544 +167204516137 +247276509015 +171367327643 +173449273345 +177696779892 +179916006826 +235271647673 +184234858695 +187838253180 +222018885213 +187855932413 +395468158558 +307403950818 +320132074025 +535667593239 +238097265113 +371393012957 +261631679738 +297803951599 +270798870143 +545501215931 +365181943155 +323788137159 +351439374832 +573164938450 +338571843780 +351146053237 +448495650035 +353365280171 +365552712305 +364150865521 +375694185593 +449469932918 +739845051114 +559435631337 +511644069572 +569035630556 +499728944851 +568602821742 +642191883100 +508896135256 +532430549881 +600203523518 +662985894754 +594587007302 +662359980939 +907607474336 +1008905564255 +689717897017 +702722709301 +995557163271 +1564592793827 +815022645223 +717516145692 +729703577826 +887338255165 +825164118511 +1442567760415 +1008625080107 +1324290585128 +1214366778873 +1685275060288 +1032159494732 +1231588716496 +1041326685137 +1103483142558 +1948934159473 +1194790530820 +1256946988241 +1365082690240 +2880065591108 +2240213796603 +1392440606318 +2379615439050 +1420238854993 +1544726223049 +1447219723518 +2812302413758 +1542680264203 +1554867696337 +3705229709619 +1833789198618 +2298273673378 +2040784574839 +2550702866076 +2812679461311 +2811814684578 +2678808440014 +2272915401633 +2615029385813 +5426844070391 +2677185843234 +3376469462821 +2839660329836 +4259899184829 +2867458578511 +3853141369715 +5397867592764 +6320259095432 +3281008922136 +2989899987721 +5679760992269 +3097547960540 +3583464839042 +8593174497065 +3874573773457 +9554334765726 +5321793496975 +7636368647650 +5292215229047 +4887944787446 +5829560317557 +6864473761178 +4950101244867 +5454689715649 +8707852992527 +5516846173070 +6742032351968 +6573364826763 +5965006539051 +5857358566232 +6087447948261 +11208203882878 +8954906526772 +8614394133610 +6972121733997 +8047649205407 +6681012799582 +9166789002504 +8824675018324 +17781183136114 +9838046032313 +10180160016493 +10404790960516 +10242316473914 +10342634503095 +10466947417937 +12197858972652 +14812265093004 +10971535888719 +11374204739302 +11481852712121 +11822365105283 +11944806514493 +17214438207911 +12538371365814 +12768460747843 +13653134533579 +20709263891851 +21554364755795 +17085803760098 +14728662004989 +21724169186035 +18662721050637 +19004835034817 +20018206048806 +20080362506227 +24908822021482 +20809581921032 +20584950977009 +21314170391814 +21438483306656 +39472302971669 +32291434633153 +22345740628021 +42309120163044 +23304217817404 +23767171619776 +36219273242728 +38743083556864 +25306832113657 +26421595281422 +28381796538568 +35538243926021 +31814465765087 +33391383055626 +45387194619884 +39023041083623 +38680927099443 +39085197541044 +45649958445425 +78108238624667 +41394532898041 +42023434283665 +41899121368823 +42752653698470 +87044491343466 +70495392864530 +47071389437180 +59986444862504 +49725813098826 +48611049931061 +59812978337048 +51728427395079 +67352709691108 +75032645212483 +54803391819990 +67062723638011 +81433580797913 +88465922335221 +75414817339291 +77766124640487 +84735155986469 +80984318909867 +80479730439085