summaryrefslogtreecommitdiff
path: root/08
diff options
context:
space:
mode:
Diffstat (limited to '08')
-rw-r--r--08/input.txt300
-rwxr-xr-x08/main.py64
-rwxr-xr-x08/test.py18
3 files changed, 382 insertions, 0 deletions
diff --git a/08/input.txt b/08/input.txt
new file mode 100644
index 0000000..3309605
--- /dev/null
+++ b/08/input.txt
@@ -0,0 +1,300 @@
+"sjdivfriyaaqa\xd2v\"k\"mpcu\"yyu\"en"
+"vcqc"
+"zbcwgmbpijcxu\"yins\"sfxn"
+"yumngprx"
+"bbdj"
+"czbggabkzo\"wsnw\"voklp\"s"
+"acwt"
+"aqttwnsohbzian\"evtllfxwkog\"cunzw"
+"ugvsgfv"
+"xlnillibxg"
+"kexh\"pmi"
+"syvugow"
+"m\"ktqnw"
+"yrbajyndte\\rm"
+"f\"kak\x70sn\xc4kjri"
+"yxthr"
+"alvumfsjni\"kohg"
+"trajs\x5brom\xf1yoijaumkem\"\"tahlzs"
+"\"oedr\"pwdbnnrc"
+"qsmzhnx\""
+"\"msoytqimx\\tbklqz"
+"mjdfcgwdshrehgs"
+"\"rivyxahf\""
+"ciagc\x04bp"
+"xkfc"
+"xrgcripdu\x4c\xc4gszjhrvumvz\"mngbirb"
+"gvmae\"yiiujoqvr\"mkxmgbbut\"u"
+"ih"
+"ncrqlejehs"
+"mkno\x43pcfdukmemycp"
+"uanzoqxkpsksbvdnkji\"feamp"
+"axoufpnbx\\ao\x61pfj\"b"
+"dz\\ztawzdjy"
+"ihne\"enumvswypgf"
+"\"dgazthrphbshdo\\vuqoiy\""
+"dlnmptzt\\zahwpylc\\b\"gmslrqysk"
+"mhxznyzcp"
+"rebr\"amvxw\x5fmbnfpkkeghlntavj"
+"lades\x47ncgdof\"\"jmbbk"
+"dwxuis\xa5wdkx\\z\"admgnoddpgkt\\zs"
+"g\\k\x27qsl\x34hwfglcdxqbeclt\xca\\"
+"lhyjky\\m\"pvnm\\xmynpxnlhndmahjl"
+"c\"uxabbgorrpprw\"xas\\vefkxioqpt"
+"rfrvjxpevcmma\x71gtfipo"
+"fgh\"kcwoqwfnjgdlzfclprg\"q"
+"onxnwykrba"
+"hkkg\x60f\"tjzsanpvarzgkfipl"
+"\"aintes\"ofq\"juiaqlqxmvpe\\a"
+"wiyczzs\"ciwk"
+"mfqeu"
+"v\xe1z\x7ftzalmvdmncfivrax\\rjwq"
+"k\"vtg"
+"exhrtdugeml\xf0"
+"behnchkpld"
+"mhgxy\"mfcrg\xc5gnp\"\"osqhj"
+"rlvjy"
+"awe"
+"ctwy"
+"vt"
+"\x54t"
+"zugfmmfomz"
+"cv\"cvcvfaada\x04fsuqjinbfh\xa9cq\xd2c\"d"
+"oj"
+"xazanf\"wbmcrn"
+"\\\\zkisyjpbzandqikqjqvee"
+"dpsnbzdwnxk\\v"
+"sj\"tuupr\\oyoh"
+"myvkgnw\x81q\xaaokt\\emgejbsyvxcl\\\xee"
+"ejeuqvunjcirdkkpt\"nlns"
+"twmlvwxyvfyqqzu"
+"\"xwtzdp\x98qkcis\"dm\\\"ep\"xyykq"
+"vvcq\\expok"
+"wgukjfanjgpdjb"
+"\"mjcjajnxy\\dcpc"
+"wdvgnecw\\ab\x44klceduzgsvu"
+"dqtqkukr\"iacngufbqkdpxlwjjt"
+"\"xj\"\x66qofsqzkoah"
+"nptiwwsqdep"
+"gsnlxql\x30mjl"
+"yeezwokjwrhelny\""
+"bjauamn\\izpmzqqasid"
+"tvjdbkn\"tiziw\x82r"
+"w"
+"xwoakbbnjnypnaa\xa9wft\"slrmoqkl"
+"vwxtnlvaaasyruykgygrvpiopzygf\"vq"
+"qdancvnvmhlmpj\\isdxs"
+"xzc\\elw"
+"b\"wxeqvy\"qf\"g\xcaoklsucwicyw\"dovr"
+"yomlvvjdbngz\"rly\"afr"
+"bfb\"x\"aweuwbwmoa\x13\"t\"zhr"
+"\"dmfoxb\"qvpjzzhykt\xd2\"\"ryhxi"
+"psqef\"yu\\qiflie\"\x79w"
+"arzewkej\"lqmh\\sayyusxxo\\"
+"vuvvp"
+"hc\"lg\x6bcpupsewzklai\"l"
+"cjdfygc\"auorqybnuqghsh\x10"
+"j"
+"wqjexk\"eyq\\lbroqhk\\dqzsqk"
+"dws\"ru\"dvxfiwapif\"oqwzmle"
+"agcykg\\jt\\vzklqjvknoe"
+"kksd\"jmslja\\z\"y\\b\xaagpyojct"
+"nnpipxufvbfpoz\"jno"
+"dtw"
+"xlolvtahvgqkx\\dgnhj\\spsclpcxv\\"
+"mxea\\mbjpi"
+"lgbotkk\"zmxh\\\\qji\"jszulnjsxkqf"
+"lwckmhwhx\"gmftlb\x91am"
+"xxdxqyxth"
+"\"lmqhwkjxmvayxy"
+"tf"
+"qy"
+"wdqmwxdztax\"m\"\x09\x11xdxmfwxmtqgwvf"
+"\xcbnazlf\"ghziknszmsrahaf"
+"e\x6aupmzhxlvwympgjjpdvo\"kylfa"
+"\x81vhtlillb\xactgoatva"
+"dvnlgr"
+"f"
+"xg\xfacwizsadgeclm"
+"vnnrzbtw\"\\prod\\djbyppngwayy\""
+"lrt\xf4jahwvfz"
+"aqpnjtom\"ymkak\\dadfybqrso\\fwv"
+"gz\"aac\"mrbk\"ktommrojraqh"
+"wycamwoecsftepfnlcdkm"
+"nrhddblbuzlqsl\x9cben"
+"vckxhyqkmqmdseazcykrbysm"
+"sil\xbbtevmt\"gvrvybui\"faw\"j"
+"cjex\\tp\x45pzf"
+"asjobvtxszfodgf\"ibftg"
+"gkyjyjdrxdcllnh\"sjcibenrdnxv"
+"oswsdpjyxpbwnqbcpl\"yrdvs\\zq"
+"\"\"tyowzc\\fycbp\"jbwrbvgui"
+"cbpcabqkdgzmpgcwjtrchxp"
+"iyrzfh\x45gw\"fdlfpiaap\x31xqq"
+"evgksznidz"
+"b\\w\\"
+"loufizbiy\x57aim\"bgk"
+"qjfyk"
+"g\"anmloghvgr\x07zwqougqhdz"
+"usbbmwcxd\\bdgg"
+"htitqcpczml"
+"eke\\cqvpexqqk\"to\"tqmljrpn\xe6lji\""
+"g\xd2ifdsej"
+"h\"sk\"haajajpagtcqnzrfqn\xe6btzo"
+"wfkuffdxlvm\\cvlyzlbyunclhmpp"
+"myaavh\"spue"
+"hqvez\x68d\"eo\"eaioh"
+"s\"qd\"oyxxcglcdnuhk"
+"ilqvar"
+"srh"
+"puuifxrfmpc\"bvalwi\x2blu\\"
+"yywlbutufzysbncw\\nqsfbhpz\"mngjq"
+"zbl\\jfcuop"
+"hjdouiragzvxsqkreup\\"
+"qi"
+"ckx\\funlj\xa7ahi"
+"k"
+"ufrcnh\"ajteit"
+"cqv\"bgjozjj\x60x\xa8yhvmdvutchjotyuz"
+"hkuiet\"oku\x8cfhumfpasl"
+"\"\\sbe\x4d"
+"vhknazqt"
+"eyyizvzcahgflvmoowvs\\jhvygci"
+"kki\x3ewcefkgtjap\"xtpxh\"lzepoqj"
+"wvtk"
+"\"ynet"
+"zh\\obk\"otagx\x59txfzf"
+"ocowhxlx\xe6zqg\x63wx\\tclkhq\\vmaze"
+"w\"cf"
+"qpniprnrzrnvykghqnalr"
+"jctcqra\"\x05dhlydpqamorqjsijt\\xjdgt"
+"sig"
+"qhlbidbflwxe\"xljbwls\x20vht"
+"irmrebfla\xefsg\"j"
+"nep"
+"hjuvsqlizeqobepf"
+"guzbcdp\"obyh"
+"\"mjagins\xf9tqykaxy\""
+"knvsdnmtr\"zervsb"
+"hzuy"
+"zza\"k\"buapb\\elm\xfeya"
+"lrqar\"dfqwkaaqifig\"uixjsz"
+"\"azuo\x40rmnlhhluwsbbdb\x32pk\\yu\"pbcf"
+"dplkdyty"
+"rfoyciebwlwphcycmguc"
+"ivnmmiemhgytmlprq\\eh"
+"lhkyzaaothfdhmbpsqd\\yyw"
+"tnlzifupcjcaj"
+"\\qiyirsdrfpmu\\\x15xusifaag"
+"\\lcomf\\s"
+"uramjivcirjhqcqcg"
+"kkbaklbxfxikffnuhtu\xc6t\"d"
+"n\xefai"
+"\"toy\"bnbpevuzoc\"muywq\"gz\"grbm"
+"\"muu\\wt"
+"\\srby\"ee"
+"erf\"gvw\"swfppf"
+"pbqcgtn\"iuianhcdazfvmidn\\nslhxdf"
+"uxbp"
+"up\\mgrcyaegiwmjufn"
+"nulscgcewj\\dvoyvhetdegzhs\""
+"masv\"k\\rzrb"
+"qtx\x79d\"xdxmbxrvhj"
+"fid\\otpkgjlh\"qgsvexrckqtn\xf4"
+"tagzu"
+"bvl\\\"noseec"
+"\\xgicuuh"
+"w\"a\"npemf"
+"sxp"
+"nsmpktic\x8awxftscdcvijjobnq\"gjd"
+"uks\"\"jxvyvfezz\"aynxoev\"cuoav"
+"m"
+"lkvokj"
+"vkfam\"yllr\"q\x92o\x4ebecnvhshhqe\\"
+"efdxcjkjverw"
+"lmqzadwhfdgmep\x02tzfcbgrbfekhat"
+"cpbk\x9azqegbpluczssouop\x36ztpuoxsw"
+"cqwoczxdd\"erdjka"
+"cwvqnjgbw\\fxdlby"
+"mvtm"
+"lt\"bbqzpumplkg"
+"ntd\xeeuwweucnuuslqfzfq"
+"y\xabl\"dbebxjrlbmuoo\\\x1au"
+"qjoqx\\a"
+"pu\"ekdnfpmly\xbago\""
+"fjhhdy"
+"arl"
+"xcywisim\"bwuwf\"\"raepeawwjub"
+"pbe"
+"dbnqfpzyaumxtqnd\xc5dcqrkwyop"
+"ojv\x40vtkwgkqepm\x8bzft\\vedrry"
+"wggqkfbwqumsgajqwphjec\"mstxpwz"
+"zjkbem"
+"icpfqxbelxazlls"
+"pvpqs\\abcmtyielugfgcv\"tjxapxqxnx"
+"oqddwlvmtv\"\x39lyybylfb\"jmngnpjrdw"
+"gisgbve"
+"\"aglg"
+"y\"\"ss\xafvhxlrjv"
+"qbgqjsra"
+"ihshbjgqpdcljpmdwdprwloy"
+"djja\\wcdn\"svkrgpqn\"uz\"hc\x43hj"
+"cbjm"
+"pnn"
+"pqvh\"noh"
+"\"\\fdktlp"
+"ncea"
+"pqgzphiyy"
+"\xbedovhxuipaohlcvkwtxwmpz\"ckaif\"r"
+"arjuzbjowqciunfwgxtph\"vlhy\"n"
+"c"
+"nrpdxunulgudqzlhtae"
+"iefheu\"uru\""
+"aqijysxuijud\"np\\opbichhudil\xbesum"
+"pfpevmtstl\"lde\"bzr\"vspdxs"
+"vparfbdjwvzsocpnzhp"
+"g\x4ffxaarafrsjthq\\\xc1rw"
+"ng\\rqx\\gwpzucbh\xafl"
+"rw\"nf\\dna"
+"jkkeahxurxla\\g\xb3czrlsyimmwcwthr"
+"twaailoypu\"oas\"kpuuyedlaw\\\xb0vzt"
+"hznex\\gdiqvtugi"
+"imdibsunjeswhk"
+"ta\\icileuzpxro\"cfmv\"mzp"
+"coykr\x57luiysucfaflmilhlehmvzeiepo"
+"u\x3dfh\xd4yt"
+"piw\x1bz\"eowy\"vfk\"wqiekw"
+"gan\"y"
+"p\"bevidoazcznr\"hddxuuq\""
+"bwzucczznutbxe"
+"z\"viqgyqjisior\\iecosmjbknol"
+"dmlpcglcfkfsctxydjvayhymv\x3c\\gp"
+"bfvkqrintbbvgfv"
+"xlzntrgdck\"cprc\xadczyarbznqmuhxyuh"
+"uqdxnuwioc\"kdytxq\\ig"
+"xrafmucpmfi"
+"vr\"hltmfrge"
+"eonf\"nt\\wtcnsocs"
+"j\xb7xoslyjeyjksplkqixncgkylkw"
+"njw\"pefgfbez\x9axshdmplxzquqe"
+"di\x58bvptfsafirpc"
+"l\x1fkco"
+"x"
+"mprndo\"n"
+"psegit"
+"svbdnkkuuqs\"sqxu\"oqcyz\"aizashk"
+"cwkljukxer\\\"\\nff\"esjwiyaoy"
+"ilxrkgbjjxpvhdtq\"cpiuoofdnkpp"
+"hlngi\"ulxep\\qohtmqnqjb\"rkgerho"
+"gxws\"bcgm\"p"
+"bv\"mds\\zhfusiepgrz\\b\x32fscdzz"
+"l\xfampwtme\x69qvxnx\"\"\xc4jruuymjxrpsv"
+"qqmxhrn"
+"xziq\\\x18ybyv\x9am\"neacoqjzytertisysza"
+"aqcbvlvcrzceeyx\\j\"\"x"
+"yjuhhb"
+"\x5em\"squulpy"
+"dpbntplgmwb"
+"utsgfkm\\vbftjknlktpthoeo"
+"ccxjgiocmuhf\"ycnh"
+"lltj\"kbbxi"
diff --git a/08/main.py b/08/main.py
new file mode 100755
index 0000000..bfd5b08
--- /dev/null
+++ b/08/main.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+
+
+
+def solve_part1(lines):
+ result = 0
+
+ for line in lines:
+ len_code = len(line)
+
+ len_data = 0
+ i = 0
+ while i < len(line):
+ if line[i] == "\"":
+ pass
+ elif line[i] == "\\":
+ if line[i + 1] == "\"" or line[i + 1] == "\\":
+ len_data += 1
+ i += 1
+ elif line[i + 1] == "x":
+ len_data += 1
+ i += 3
+ else:
+ len_data += 1
+ i += 1
+
+ result += len_code - len_data
+
+ return result
+
+
+
+def solve_part2(lines_old):
+ # Escape all the provided strings once
+ lines_new = []
+ for old in lines_old:
+ new = "\""
+ for c in old:
+ if c == "\"":
+ new += "\\\""
+ elif c == "\\":
+ new += "\\\\"
+ else:
+ new += c
+ new += "\""
+ lines_new.append(new)
+
+ # Then we can just run part 1 on the new input
+ return solve_part1(lines_new)
+
+
+
+def main():
+ # Read (escaped) strings from input text file
+ with open("input.txt", "r") as f:
+ lines = f.read().splitlines()
+
+ print("Part 1 solution:", solve_part1(lines)) # 1333 for me
+ print("Part 2 solution:", solve_part2(lines)) # 2046 for me
+
+
+
+if __name__ == "__main__":
+ main()
diff --git a/08/test.py b/08/test.py
new file mode 100755
index 0000000..1d97b53
--- /dev/null
+++ b/08/test.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python
+
+import unittest
+
+import main
+
+
+
+class Examples(unittest.TestCase):
+ def test_example1(self):
+ lines = ["\"\"", "\"abc\"", "\"aaa\\\"aaa\"", "\"\\x27\""]
+ self.assertEqual(main.solve_part1(lines), 12)
+ self.assertEqual(main.solve_part2(lines), 19)
+
+
+
+if __name__ == "__main__":
+ unittest.main()