2016 / Day 9: Explosives in Cyberspace
Puzzle
puzzle =
"./puzzles/day09.txt"
|> Path.expand(__DIR__)
|> File.read!()
|> String.trim()
"(121x14)(7x7)UOBCTWD(24x1)KBBJJRCFNOTNFFCKJOFGWJZT(12x6)(7x3)CKJUMES(47x12)(2x3)IY(4x12)JSFP(12x13)FDTYFDWLHWXE(5x11)XLPGL(2x7)EK(113x4)(7x2)LTVKCEC(75x4)(22x8)XBUQNQXMZPOAACRFZACRVP(2x2)HV(33x10)HTJYEBCTFDFRIXRIUBWJJXFDNGBIVATET(14x6)(8x10)IGIWGAFX(102x2)(34x6)(6x14)AEVIDQ(8x10)BSMUYCJH(3x9)CQH(2x8)RC(33x4)(19x3)CPFEVGBWGTXAVXRBGPB(3x7)UDY(10x6)VMWBUOTFKL(349x6)(5x6)GZJZB(70x1)(3x11)JEL(13x6)TAKTWPYEOKXNW(2x1)JH(7x12)JGYKSGB(15x14)BBWIZVLZCTAVPQZ(56x4)(7x8)DITERGP(19x11)QHUEFNLLGAPSGBUERXM(11x10)XNAJVEWBNKK(67x10)(10x9)NLJNVBTKYM(13x9)CHUZLFTGZHHVQ(7x13)TQXJQNB(12x13)YTMWUHSNSVTZ(120x9)(10x3)GBAYFDGZQY(3x3)HLY(66x12)CZOGABFCFJVWGRBIRSUYRNZIBKYSAMKBMDDHMIFUKNQXXRZCPKTOSEEPIUOSNWASFL(11x1)FUJVJTMDHYF(1x6)Y(97x3)(91x5)(15x3)QIOHSIYFOFKMOVR(7x14)ZOJZFUL(9x2)SLKMEGOIT(9x8)WTSYWBDVB(22x15)VJOWEEJVZEDJZHXFMMFJGN(144x6)(18x15)YSOSIDNVRKTMWVTUIR(54x11)(30x7)WJMCXFQRIHVATBGUGBSNIBACCIZLDG(6x13)PGAEOU(1x4)M(52x1)(31x6)HYVTZLRQMOOTDMVNTHCWNKFZAYCSQDH(3x1)QQE(1x13)L(79x15)(3x15)IQI(8x4)(2x14)MJ(44x9)(1x13)V(9x15)JYDFLMSFM(8x7)DUSANCRL(3x15)DOI(2x5)GS(147x3)(8x9)MSJOZXRZ(41x10)(10x3)HBIUVPYOFY(8x9)UQEDFXWT(6x11)UIUAZE(11x8)CEBVPEYTVRL(63x2)(9x8)JUXYTSTDQ(7x1)KGXPMHC(7x1)BGCLZRI(12x8)UORTKYVYSXLA(2x1)AS(45x5)(38x13)(8x6)MFOJKOZQ(7x15)IJQIBPC(1x7)G(1x7)D(9x13)LFUYNWIXV(229x6)(6x15)QVZPFF(89x11)(29x11)XGWPJUJRATUJIUDSLVLEFIZGYPTRR(2x7)SF(5x6)YNESL(30x6)HUFRTOKJTJHJTDMPEPSSABHRXFVRIO(114x9)(3x11)VIX(12x4)STJTDQNVYIXT(14x8)TSOQFREGDHTUQQ(18x3)SJGFDEXKAJRYGQOMFH(36x13)JMVZCRLSAWLVQVCUYLOCRFJPZCSERWTFBXFP(3814x13)(38x6)KCXWJCALVQUEFCIKOALALSWMVFIESMMPSMNQAX(466x10)(459x7)(6x15)KKUJXQ(269x4)(140x3)(2x15)MZ(8x7)CSWFLUNG(74x12)(9x9)YJCQSVNOZ(4x13)XPBE(10x13)SMUGHEJULA(27x5)JVKTVTMERNTWSWWVTGGVLXJEROH(18x4)(12x3)KEYEMKAWQGVH(9x1)VZOQEDQIE(109x1)(33x13)TWTVQLOCYDQNNDWJFQEQGBXHWXRNQDCHA(3x8)TYE(40x15)(15x7)HSMPJHLPWLJXDER(13x5)NQPINIKIHMOKO(3x8)AOO(1x8)R(1x8)J(163x13)(7x11)PALPTMS(142x12)(90x5)(12x8)DEFZASIKPPFQ(5x5)BITJH(10x11)EMZCZAQLEP(1x13)X(31x15)JWCDSINOGRNKIBKIFHFZLRXGNSAAKDR(2x2)IP(17x7)BBADYLQPAIFUMEHQF(10x3)(4x13)UNPM(2547x14)(1582x6)(171x15)(5x7)QGBQE(15x5)BJBAVPZIREQQPQB(85x9)(8x11)BLPDYKFE(26x11)(3x11)ZJV(4x14)OWVX(2x6)SZ(32x4)(9x6)ISYMZALQX(12x4)LVSIEBNWGKXY(43x1)(12x7)MVESNOTEVGHU(6x13)(1x2)R(7x11)EJLJPEC(338x11)(111x3)(4x4)XOGF(13x15)(7x14)BOGERKD(76x2)(34x11)IBXWTZTGKHVIKHJLUKWRLBDDZMEMWGTBXM(18x10)LIOCEHZYYGEQCFVCTO(5x9)NUQES(83x14)(77x3)(4x10)IVPI(1x8)Q(15x15)EVBXNJWFADWAMPJ(15x14)NEJGHYLWAMYQFRZ(10x12)WSLXPORPOK(84x14)(2x15)UI(2x4)HJ(7x4)(2x8)PS(44x5)(8x3)NSSLXQCC(4x13)OKKT(14x13)NGFKAHTJPDKWIT(2x1)NV(14x7)MIVPVOYSJLQVVQ(13x2)(8x7)WZRWGDQB(289x7)(191x2)(33x4)(10x2)EMQXNCJNCO(10x11)FEFLAKJYDY(11x12)XJJJYHETAJG(1x4)S(121x8)(2x13)DX(1x8)P(68x8)XZSHJIRKVIUFYAXDMEFBWNLSKFWXGSVRPBZQSBETBRDAMXKBJYXUGUBLMTLYJSIFFALT(17x1)KDZERNMMSGTYHOSDG(5x3)ELXYV(13x7)DUJFZQVHTLGLX(5x5)BSSPA(45x13)(8x8)(2x15)IQ(26x7)(1x9)F(14x3)MIVVMBTQPFJIHR(5x8)AHCMX(345x9)(17x2)(10x10)ERNQLSNKFZ(193x5)(151x4)(4x8)IWVW(44x3)CMHSZBZXRRNJZMFPQQEDHKEFJUGCSFURIGSFBQRGKGWV(3x7)PLK(59x15)OKACOKQHSCRHLIHMJAIGWRXGHTKSJOBJDSRQXATSPQNGEFRMQCUJNFXRIEH(11x14)TJGIYWOKPQJ(29x1)LSZTUQPVMFIMUIAHOBGIHNNYAADTO(102x9)(14x14)JBNBEKQBJUJCUF(15x3)(1x1)L(3x14)NLZ(10x14)LWUIBZBSMP(11x15)(5x10)SMKOZ(18x12)BIXUYNRSKGCFCDUYMR(7x10)RQDUWBR(401x14)(156x13)(19x1)YIHAILDJTRIQRGOJLXG(50x3)(16x3)IUSNUKLYPRYVPQBS(12x9)YRWCMTSRLLHE(4x10)PGVI(22x5)TFRNDARBWQVDBNEAAFWFNC(11x12)CVTPWLLKOOL(22x13)(15x11)MZIXMUTZNSTCPGH(51x15)(11x5)YZCZIVXNDQB(28x4)(1x7)Y(15x14)FTWOCQZSLYVAUUO(151x14)(59x11)(1x5)V(29x9)PLRFQAYNGSFNPVYKBEROCOGAIWSIC(12x1)ILEJWRNOOBNG(13x14)BGUFJIUCSIHCW(6x4)(1x1)Z(48x6)(14x6)HVZAHRPHBXJWCR(8x14)FFKVJJOZ(9x7)DPYJRKZME(1x1)O(9x5)ITNZNTTRD(313x1)(306x9)(27x8)(21x1)NKKBLUJCWKWVBJYSRUKFF(192x11)(26x14)(9x3)OGJHUBJYO(6x13)YUFAFB(15x9)(2x15)CC(1x15)A(53x1)(9x12)APARACDIC(2x15)CZ(3x11)UMU(5x10)UAFTC(5x5)RWTLW(8x14)(2x14)NR(59x6)(16x14)WEODWYCZMJOZBTDL(12x9)YHFTSACYAOEZ(12x8)PXVAKYHBRBQN(15x1)VQBOISACGXREBRL(46x2)(2x5)HY(33x7)(3x8)WIR(19x7)RCQIINYDJENBXGQELIC(630x3)(171x10)(164x6)(59x12)(11x15)JLMMVVVNCEV(7x6)OWHQFSO(23x9)BCOOQXWVYIECJTMXJZDBYVM(17x15)YMSGKTAVHEZIRIUIZ(68x6)(22x14)HLRCOAKRFQYRSQZ" <> ...
Part 1
Wandering around a secure area, you come across a datalink port to a new part of the network. After briefly scanning it for interesting files, you find one file in particular that catches your attention. It’s compressed with an experimental format, but fortunately, the documentation for the format is nearby.
The format compresses a sequence of characters. Whitespace is ignored. To indicate that some sequence should be repeated, a marker is added to the file, like (10x2). To decompress this marker, take the subsequent 10 characters and repeat them 2 times. Then, continue reading the file after the repeated data. The marker itself is not included in the decompressed output.
If parentheses or other characters appear within the data referenced by a marker, that’s okay - treat it like normal data, not a marker, and then resume looking for markers after the decompressed section.
For example:
-
ADVENTcontains no markers and decompresses to itself with no changes, resulting in a decompressed length of6. -
A(1x5)BCrepeats only theBa total of5times, becomingABBBBBCfor a decompressed length of7. -
(3x3)XYZbecomesXYZXYZXYZfor a decompressed length of9. -
A(2x2)BCD(2x2)EFGdoubles theBCandEF, becomingABCBCDEFEFGfor a decompressed length of11. -
(6x1)(1x3)Asimply becomes(1x3)A- the(1x3)looks like a marker, but because it’s within a data section of another marker, it is not treated any differently from theAthat comes after it. It has a decompressed length of6. -
X(8x2)(3x3)ABCYbecomesX(3x3)ABC(3x3)ABCY(for a decompressed length of18), because the decompressed data from the(8x2)marker (the(3x3)ABC) is skipped and not processed further.
What is the decompressed length of the file (your puzzle input)? Don’t count whitespace.