From 6734e8dee0ff45229100bfbed9935ce080639981 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Wed, 21 Dec 2022 15:19:10 +0000 Subject: Day 21 --- day21/input | 1619 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ day21/part1.rb | 34 ++ day21/part2.rb | 78 +++ day21/test | 15 + 4 files changed, 1746 insertions(+) create mode 100644 day21/input create mode 100644 day21/part1.rb create mode 100644 day21/part2.rb create mode 100644 day21/test diff --git a/day21/input b/day21/input new file mode 100644 index 0000000..c441f08 --- /dev/null +++ b/day21/input @@ -0,0 +1,1619 @@ +cgrb: gzwb * rcfd +gfbz: bwgp - qlfm +jrbf: 2 +gvvg: rjch + tjdp +vwsh: grwp * ddsv +tpwb: 1 +vjtv: 3 +msjg: tdml * mrgt +snmc: gqls * hcpg +vhps: dmmr * ggfh +mmtm: vmvg + nrvn +ppgv: jjcs + wwbd +bpfp: 2 +qbqs: pqsn * gqmd +dtqj: hwqn + vmlg +ppfj: 2 +wncv: dpzh / jghw +bsfb: 11 +jftc: 2 +cndz: 3 +pnvj: tnfn + tpmn +sbqn: lhcd + tbqv +dprz: 2 +ztlv: vvvw + vlmw +grvf: 13 +pjcd: 2 +tfdp: 5 +dmmr: 4 +twts: 7 +trbj: nzrj * jcjm +fsnr: 3 +ttws: whhz * ljnv +jjqd: nvhn + bsfb +smcn: 3 +jcjm: 7 +zqjm: 2 +cggq: snzc + glmg +wqlv: 5 +gzbv: vjjv + fmzz +mvwl: hbbt * mbcs +rhrv: chhr * rqfs +bjfp: 15 +fzhh: 2 +clrz: 3 +tjrw: wshw * qvwn +tjlt: 4 +dmfn: ngtj / bwtf +fplt: nvdw * qnvj +stms: 3 +sslh: hgqw * tgcb +wdwn: ltnn * cfbh +nbgv: npwd * pqrt +hpzs: cdsp - jvpm +mcjt: ngqt * qdcf +pdpn: 12 +hnpp: 9 +ffwm: 6 +hhpg: 3 +zwcl: mbpm + nrmd +zqbv: 2 +trqr: 3 +brlr: 2 +nswj: 1 +hfpt: mhpj + mdbm +bjqq: 4 +jhhz: 2 +qmmf: 15 +nwds: 5 +nmqc: 1 +npmb: tbfw * hzjl +qzjj: 7 +vnzw: 13 +hdrw: zngj + sqdg +pgpb: 14 +ztgb: 2 +lrjl: jcrv + fdll +gqsl: pmpp * cnwr +vbtw: 3 +wpzj: 2 +hvjb: qrqb / brlr +spwc: 2 +htmn: 15 +zmmr: 2 +tspd: jlvw * nprf +zwgf: fdzw * ffdp +gtmh: 5 +qzcv: 2 +tqwm: lhnq + lffd +ntrm: ftlv + pnrw +hqjb: 2 +hbww: ztlv * dwnc +jdms: rbjm * zvzf +zlrn: fmjm + zlwr +rhnp: vrmz + vnzw +bncr: 10 +nnzh: wcgl / cvtz +bqqz: 5 +czpn: qpgr + hflr +hdlj: ljfj * fmgb +cqlb: 17 +wpzr: mfwq / rdlj +snzc: qgfd + nmls +zdcf: ctlp * nptz +djbr: dbcf - msjg +zjcc: nrhh * ddqb +rdgh: 9 +lhjl: lvml * qbps +flfj: 2 +nwwq: 2 +hsqn: 3 +hvlz: gdrq * mqvd +gfzg: 2 +qrpm: 4 +ljfj: 11 +hdzg: 3 +qgln: 12 +wmld: 9 +vsnq: mlrh * cbwl +mqvd: 13 +cwft: 2 +nssp: 8 +wpzw: clzz * vdhn +rlrt: 6 +pslc: hrdw * dvjb +lffd: bnff * svsm +rzct: 1 +qhdj: 10 +bdwg: cctg * zvjt +nflt: ggpq + csln +fjdr: tdgm + gnjn +wqnv: bfms / lrnn +hzjl: 5 +vszz: 18 +mjhj: 3 +trts: przz + hrqz +ljdc: 3 +jghw: 2 +hmqf: 2 +fjvr: 2 +qtch: ltft / nflj +ffvf: 1 +pdbh: 13 +jncj: cbzf + tshw +grwp: tjlt + pgpb +tsnw: humn + sslh +llnz: dphw * lqjs +bbhd: 2 +rmwv: tzwl * qthg +mlvm: 3 +bpmg: jqnq + qjgz +pjpz: 4 +hbbt: 2 +wmtp: 16 +spnw: 6 +rwtw: rlqz / rrjn +bhtl: 8 +vbmj: jbtq / hqjb +tjfs: 2 +dwjs: rbbm * fmjq +strh: grcb * smsd +pnnc: cfjf + rhrv +mfsv: hqfh + tmhz +ldwr: 13 +nrvn: vbnf + lljr +rsgn: 2 +fmzz: tzdw * vcbr +tdml: 3 +wgvd: tgmh + lnvp +zjjd: 5 +nlcm: lfpm / hfng +vpmh: tnfw * twts +ljfq: 2 +swzm: 4 +rcfd: 3 +wmhm: jrhj + qfld +zdmw: wrbz + bdwh +rczv: ggtj * ttff +djhn: 17 +nghf: 4 +nqbv: 3 +dpmj: tjmj + rcpv +rdlj: 3 +tdgm: djbr * zqbv +rshb: jncj + npws +jpsh: 10 +shvt: 2 +mrgt: wbfn * wszg +mjbr: rmhc / wchb +jbln: jnsw * zdtc +hmtl: 3 +qdcf: 9 +pthw: 2 +fmgb: 2 +sqhn: fcjw + qtfw +rwpc: jrhz * fjcm +mrzf: 2 +rfnz: 3 +tzdw: 2 +dwrj: tjfs * msns +phlg: jlss + jrfr +wtvd: ctqt * cctn +gjjl: lprh + gzlf +zdlw: zfgn + pprr +fnll: tqvg + ddlb +ftpz: 2 +vcbr: lclb + tqlj +nhzg: 13 +hwvl: dmpf + gwhd +fhvq: mngn / zjqh +mhdh: 2 +cmbl: 15 +dhzt: 9 +zbdm: dqcc + slld +trfn: nfpd * bgqg +pvqr: fvln + bjll +smlg: 3 +pbpf: 11 +gzjr: 2 +tqmm: 3 +phnj: 12 +phfv: blpp + mbgm +dzbz: 5 +tlsj: 5 +vbnf: 3 +vfbc: 3 +cvzg: 4 +rpqt: 5 +wnsr: 3 +pmwt: 14 +dlbr: hhjv + jpcr +cbbh: rfzd * gwrh +stdj: 3 +jzzp: 3 +wjfz: 11 +jjrc: htjj + wqdn +ccgr: 2 +sppm: thtt * nvbb +blvh: jcjf + zbmp +wtzp: 2 +swlb: rjzp + qffj +dszm: 4 +rndr: qbnh * hcsl +lbts: bdng + brwc +tvzv: rwtw + brvj +rjzp: plbn / rwhw +vdhn: fnll * qnnr +fpch: 19 +wwzl: 2 +wgnc: 2 +lmfz: 9 +cndr: glpw + hlsm +lnvp: 5 +gvzt: 6 +shjg: 5 +tjht: 1 +zsbn: lsnh + dptl +ltrw: btvs - nzqv +tlqh: bzpt * qmmf +jvpm: 2 +cvpt: 2 +gfmz: 6 +phrq: vnwg * qsjw +ndzf: hnpp + rvfg +snvw: 2 +lnrq: nbtl + vszz +tmhz: 6 +lcsc: 2 +tmhs: 5 +glsg: 3 +jzff: zdlc * hjpt +chvw: 4 +pzsv: 7 +sqcg: 2 +wnml: 11 +bjjn: cbtg * lczq +lzfw: jmbp - nwwd +fvvn: 10 +vrmz: 18 +qfhp: 4 +szjb: wwwv + vrpc +htch: 2 +dvps: 4 +qctd: 5 +rcmp: bqwt * dczs +fpgn: dtpm + vlgl +vbvm: mtjt + tthm +gzgg: 5 +hvgb: 6 +mdbm: 12 +dfnd: 3 +qmvh: 14 +bwtf: 2 +bllg: 7 +nzhv: 2 +mlwh: 14 +vgbr: 3 +svsm: rvdr + hdwp +nvhq: hsrh + qnpj +sjqq: 3 +gtwc: cvfg - lnrq +twww: zrmh * zsgf +gjqf: 4 +mhrs: bmlr * sqjd +vrpc: 7 +swsb: tlsj + szww +lhcd: mnwb / pdcp +hgqq: zqvv * bnfw +frdf: 2 +dmnv: pmgh * bqpl +qvqt: 16 +jpvw: scvl + nvtd +tjdp: 2 +fmgj: ndzf / spsh +qhgp: gvvg + rgwv +fqbt: gzsr - zwcl +dztv: 4 +dqlh: 1 +ljbr: 5 +cvtz: 2 +dnwq: pvts + pwhd +fbgg: zwjl * nfvl +zzgb: 3 +pwpw: pprn + llzn +wwwv: gbgl + vtfn +jjrh: 8 +qnvj: qtcc + ptld +fqsl: 3 +gdbc: 2 +fstq: ngcc * qqzf +bdth: rzct + hbqr +hptn: vtdr + mcgv +ntll: wqmf * swzt +fzmq: dlzs + sqsp +bnpt: bpsl * pllf +mlbz: ncrn * mmnh +mlns: 2 +ctcs: ttzd * pbqv +tvhr: fdfl * sdjs +mzrp: gndt + pnnc +ngcc: 2 +jtfj: mvwl - zrdf +ttff: zwcv + dwjs +prjz: zrfh + jrjs +nvcq: hngp * qhdj +tfwt: gdwm * bjfp +ssnf: 5 +bpbz: 3 +bghs: 3 +dmmw: 1 +tmtl: bpfp * nflt +gmjw: dsrv + dstb +jdnd: tvld + wmtp +rpjn: 3 +qcdq: fzhh * hmtl +jcjf: 11 +sqqh: 3 +wdtq: qvqt + tztb +shhg: 10 +vclb: dclb * mtlb +swqj: 2 +mlwj: vglm + trbj +lfpq: gstj + dhzn +dqcc: 14 +spsc: 8 +rtbm: 2 +gntr: cnvs * jnht +tnfw: 2 +gstj: cmgs * mhth +pqsl: 8 +vlvr: nnzh + cwcj +bnhw: cvrr * hsjc +wtsf: 2 +lnzc: lqft * qmvh +mmfp: wtsf * qjdb +qcvv: 2 +cmvj: jtpg / njcm +rlbv: 2 +gcwr: gqsl + tnnv +wjpz: 6 +gjvt: 2 +tnnv: ffbw - hpsb +hgqw: cdvb + rqnr +ptdp: 4 +lrth: 17 +jdrl: 5 +tvct: sjbd + vsnq +jndd: 3 +dcfd: 13 +cbdl: cqcr * cttg +zbbm: 16 +mwdh: nbzm + jgdd +gstb: 2 +gblj: 7 +hjpt: 7 +njnw: tpwb + sdvs +vmvg: 4 +qpgr: bcmd * cjmh +jrfr: 2 +nzhb: 2 +qlnv: 2 +wqdn: 3 +jfjt: 7 +cbtg: mfhj - czsg +fmqb: gmgr * nhnp +lwnc: 17 +wlzq: 5 +wwbd: 12 +gqmd: 3 +lwzs: 5 +vtfn: 3 +sbft: 9 +hhjv: 13 +vlgl: mrsd + sppm +hfbp: rcrf - hnpn +wbcr: gflt + nsqg +lbdp: 1 +hgdh: zbbm * qnhb +prnm: dhft * swqj +gwrh: 11 +pfbp: 17 +ltnn: 2 +jrjs: wgqw * whbw +ngqt: 16 +qzrh: fmqb + cbbh +vnqn: fjvr * vmqc +gftz: ghvf * rfwz +hznt: qjwg + qnph +dtsq: bjbc * rpcr +jrhz: 3 +mqql: 3 +jnht: 5 +wwhw: 15 +fwgz: 3 +nhdb: pjzc * fnml +bdwh: 6 +mnwb: bnpt / qjpl +rqjq: smcn * bzst +vlmw: 8 +ddlb: twrl + sdfs +tzqq: 2 +plbn: tbpv * hcsd +vnqf: rzcf * pthw +tqbr: blfj * dmfn +nhnp: lcvp + qfms +bjfl: 8 +flrv: 13 +zstd: 2 +swhl: 2 +hcsd: 3 +rzcf: pvqr + cbwv +pssd: twww + ctcs +qmpz: 12 +mwhj: dwph + szjb +dptl: zrwg * mwdh +bjbc: 2 +dwrt: 2 +wnpc: lhbs + tpgw +trws: lzwt + hmlp +gzwb: lpml * zhqg +mjsh: 6 +cnnp: 5 +wlng: jbwt * bpmg +hhmt: gfbz + hvrm +qffj: jqhf - pmbc +cbqp: lnwj * hscl +mdwb: tcff + ttws +nrrc: znsn + mcsm +htjj: 5 +tbfw: 3 +gzsr: tvct / vstc +fnfl: 2 +mbgm: 15 +tccl: nqcp + wbcr +wnsv: 3 +rfbj: cmbl * phfb +phfb: vtzw * lqbd +dmtn: 5 +brwc: ptbz * dttp +zbdl: fhvq * wvgf +ngtj: hwlt * cfdz +dvvq: vfrn * cqpm +rfsn: 4 +bqdd: zstd * fnqt +jrvv: ndhj * vslr +dlzs: jwrl / vbrr +jjhd: 6 +lmwn: vbdt + vsrl +jbfv: 2 +jcrv: fjdr / nwph +fhwg: hbww + blsv +jppc: tgnj + lcjd +jtwn: 9 +jpqm: fbwz + dljv +cctn: bgws + dmrh +lcbh: cfpv * bqdd +jbrc: 2 +gczs: 5 +hdmb: gtwc * qcvv +ptsj: 2 +rvdr: hvhh + nmqc +znsn: 4 +gndt: 1 +qncn: frdf + ltdp +pmbc: vzft * pvrr +dntg: hdmb / chqf +jshb: 8 +qfms: cdmm * tnlr +rvps: 7 +fplf: 2 +plhr: mfsh + prnm +lqlz: 2 +qnts: vlqq * sgsz +wwpm: qjdf + lbmd +tvvl: 1 +phrc: grpr + shjg +cjrq: 8 +nbmm: 5 +ctqt: ptsj * cwjz +jbtq: wnpc * swhl +mfpg: njnw + ntll +fnfn: sjsf + fdbm +sbtw: qtch + tztc +vzwh: wgvd * mpsg +qsgs: qgln + zdmw +vlqz: shzv + dnjl +qnhb: 16 +qtjp: cfqw + dhjv +mwpw: 7 +vnwg: 2 +rcvc: 1 +gnmm: 2 +ltlg: 2 +tqvg: nfqw * zzqz +rcrf: tlfr / bllg +ggtj: rqpw * rdgh +pdbs: pcwg * lgbs +pgpz: 3 +tvld: 10 +ptth: cbqw + qwdf +mhsn: 2 +qnph: htfd * pjcd +hpvv: sbtw + qdcn +sqdg: fdfq + tfww +bbnr: rznq * fhwl +rvqg: 4 +rfwz: 4 +mvsj: 5 +jmrh: 11 +mdjn: mtgh * wpzj +vlfr: 5 +ddqb: wmhm + vjzf +mszq: 3 +whqj: ltpz + ttnz +cqpm: 2 +rlvh: 2 +ptcp: qbvw * fwjf +jnbz: 3 +fprr: 5 +wchb: 3 +qqqw: nntf * hhpg +hnzj: 3 +ggfh: 7 +tqvh: lbts * mlvm +hdwp: mhsn * tgjv +qnnr: 2 +ptld: cnmf * ghss +gpmm: 2 +njvf: qdvl * cjzn +gdwm: 2 +pbdb: qcrp + sdsh +sjsf: 7 +zqrp: nbgv + wsnr +dtpz: scll * sfww +zrmc: tpvw / sqqr +dhft: jdgp - rtqz +bfms: wjlr / lpvw +dlfm: 2 +chhr: 3 +vlcs: wlzq + frvp +pvdl: dnrw * ltlg +dvll: 2 +hhrv: 2 +tndw: shqf * qfjq +sdsh: ptcp + mdjn +hzmj: tcfr - clqd +rqcq: 3 +gqfs: hnnz * fcpv +mmhg: 4 +vszv: 2 +hnqd: 15 +mjwn: mdlq + pssd +fdpm: 15 +fpzz: zqjm * vgfw +zrfh: 1 +ppts: 2 +rmhc: ltvr - snwl +jttq: gwzh - wtvd +cpvl: wtrv + ldwq +bzst: mbst + jbln +qdjl: 5 +qtzz: crbp * lqcj +dwdc: 20 +cgnp: nswh * dzdp +mngn: rgpb * qhsv +gzlf: vssh * prgh +jtpg: whwf * dtpz +pmgh: 2 +pscc: jtwn * ztgb +brcg: dmcf * jtfn +gdrq: 3 +dggp: 4 +qsjw: 5 +nvdw: 2 +pdgh: 4 +nrqf: pqsl + dnqt +qjdp: jrfz * hbbh +gcdz: qtjp * gjqf +lhhh: hhmt + nvcq +phhf: lqzz * szzt +qjdb: bnvr * nhqr +cgwn: wqzs * mzjz +lrnn: vgbr * gmwv +fcps: mmtm * gfzg +nwmq: mqsm + hvgb +ctlp: 2 +mbst: mmbb / jbfv +dzhg: dpmj + njvf +pwnp: 2 +ttnz: nmnv * rctb +ffdp: dsjp * ngbp +tqlj: qfhp + rmwv +rvvq: qbpj + pjgn +jhjp: wqlv + jhmt +rmhg: 3 +clrl: nwds + dtsq +lgfj: vccd / fjls +hpsb: 15 +cjmh: 2 +swml: htgf + gzgg +mdlq: psbd - svpl +mpsg: 4 +fnbf: 2 +spwv: pjgv * dvll +slrp: tjsp * fgvw +sqjd: lrll + mmgr +djws: zscl / lpbw +shzv: tlzj + ncvz +llwj: 2 +gmdw: 3 +vqtr: tsnw / fvbf +ncvz: 3 +bdng: 3 +ftdw: ldwr * zjpn +wvgf: 2 +cdsp: grvf * rqcq +pgtc: 8 +nbzm: 3 +mjzr: nmmd / bzlm +tlzj: 4 +gbgh: hvjb + cmjf +wqzs: 2 +bhbt: nqrl * qvnq +qjgz: rznp / wdqs +jdls: gtmh + dggp +hbbh: 5 +gmdt: tspd - vllv +hbmq: 2 +tlfr: blgm + zqrp +qcrp: 8 +rfmm: vgfs - dpzm +mcgv: scbz * mlfv +vzft: 3 +dzzl: wdtq * nqch +zlcb: bgww * crgr +pdcp: 5 +bgww: 2 +rqnr: rcvc + rnfl +nfpq: 2 +bcmd: cbqp + vslw +mtbf: 2 +ljjz: pslc - mwhj +fpcm: fqsl * nwmq +sgss: 2 +tthm: jvqc - mjhj +hrfs: dhdm + thlr +pwls: 3 +humn: 4053 +rjch: 5 +jwpv: jpvw * wnsv +jtpm: 2 +pvzc: dzqs + phgf +cbzf: hvnc + tjrw +wbfn: 2 +dclb: 2 +prqh: 3 +bsds: bvpp * lmtc +gjsq: ldvq / nbjz +thtt: 11 +smsd: 4 +fscw: smqh * hqnc +dpzh: hwvm + vqcv +spsh: 2 +zdjf: 4 +dqzg: hvlz * pjpz +lbwp: dwvq + phmc +nmsp: pbdb - tjht +lsmb: 5 +tvcv: 5 +dcgn: cdng * wjpz +wqns: dcgn - btsn +dhjv: 3 +sznw: dvvg + dwdc +zwcv: cbdl + fstq +jbgd: 3 +pvbf: 12 +smnr: dwnz * dhth +nfrg: tlbr + zsbn +swdb: rqpf * tqmj +vtdr: dcfc * tqms +hrdw: 2 +fqzj: 1 +mqsm: dvvq + sgmq +mgtl: 1 +dmcf: 5 +zvzf: 5 +scrw: pzsv * gzrq +mswb: vllh + qtzz +rfln: 2 +zvpn: 2 +mqzq: 2 +cwqf: sqqh * ttsg +nnpv: tqbr / rmhg +zscl: lgfj * bjfl +bnff: qcdq * dwrt +dljv: trws + tqth +gzrq: fqzj + gdgm +qfjg: 17 +tfvv: 12 +fmjq: bbnr + qdhz +rrrt: 2 +gnbw: 16 +mrln: 16 +htts: dpfh * nrqf +mmtz: 2 +mznv: sznw * fzfv +tthr: 3 +tmqp: 19 +qvwn: 3 +fbwz: hjsb / tjdj +zfgn: 11 +qtcc: 1 +tgcb: sbqn + mpwl +qbtc: 17 +nhcm: 2 +zpfg: 1 +gscw: wnsr * rvps +qbpj: lbdp + tqvh +fdll: dprz * ddln +vhbm: rrrr + bbbt +lljr: rpqt * ftcb +jpnv: 2 +hfht: 3 +wfdh: dlfm + mrbf +qvlf: 2 +scpp: 14 +dwcz: 3 +ntjd: 1 +frvp: zsqz * scds +dtnb: 3 +fgjm: 3 +tbgb: nhcm * bdwg +srwr: clpr + sfhd +zwjl: 5 +qcng: 18 +ddln: zbdm + qnts +hflr: rhtt * wfdh +rhsr: pmjb * mwpw +cmjf: tqhw * pvbf +dphw: 5 +mtlb: flwd - tmwh +nmmd: rsgn * nmmv +cvfg: nhlg / hbmq +lvgq: zjjd * wnml +vssh: 7 +szpq: 2 +hfln: 3 +pmjb: 3 +nswh: ddjb * jbgd +nmnv: ffgm * prsl +fmtb: lbwp - dwrj +wjwd: 2 +lqbd: 2 +gpfw: 4 +mjdr: 3 +rtqz: rvwq + rvqg +fdbm: lvzd * rldf +ppcm: wvdq * lqhp +vbrr: 2 +tzpn: 13 +tlbr: 2 +qtfw: dtrg + btcr +vglm: nzhv * fdlh +fcjw: 5 +fwjf: 4 +cfpv: 4 +fnqt: 4 +flwl: ppts * bjqq +qjdf: dzbz * mvsj +mlfv: 2 +ljrc: nvht * frff +lhnq: jvvv + qgbq +wpvm: 11 +fjls: wffr - fwgz +rvwc: lrth * jtlr +slld: vclh * rjqr +zjpn: 17 +njcm: 7 +jdgp: nljp + tszm +pprn: gqvq * hzmj +lqzz: 2 +swvs: nlcz * lsrl +ppbl: 3 +lmrt: 1 +dwph: qzjj + lvgq +hvrm: hfjw * vcdg +zvfs: 3 +jmfj: 4 +hsbn: 5 +nwwd: 4 +gdsn: 3 +gvgj: 18 +mhpj: zjcc - dzfs +lrll: 1 +gmzv: 2 +lprh: bwrc - jsjv +msns: wwnt + vhps +msrb: 3 +jwrl: trts / dznf +cpls: 2 +qvsp: 5 +ldwq: 2 +dpzm: gmdt / mqfc +fjcm: 11 +zqvv: 3 +jvvv: lpcv + mjsh +rbbm: cqfl + rpjn +nrhh: 2 +wzzt: 12 +hvhh: bmwf + phrq +dbsm: whqj * dfnd +zbmp: 5 +dhzn: ffbq + tthr +qsrm: 3 +pddh: fzvb + mjbr +nptz: mnhz + tpgr +zcwz: 2 +ctts: 2 +pjzc: 5 +dzgc: bghj - fpgn +zrqb: 7 +qjpl: 2 +whsb: 2 +mrsd: fdrz * thbw +wgfd: 8 +qfjq: 10 +ddsv: 4 +cmwc: 2 +ndhj: ssnf * wjwd +qzln: 19 +ptbz: 4 +fhrg: 17 +nhqr: 2 +tpvw: wwzl * djws +jbwd: 7 +wgqw: 2 +mnqw: smlg * vwsm +bghj: pddh / fqtj +bqwf: 8 +wcgl: cggq * pwnp +jcwh: nslq + tfdp +gdnd: 7 +fhwl: 5 +pnsl: 2 +nntf: 3 +wqmf: 7 +dttp: 5 +qpzl: 3 +npwd: sbmt + vnfl +lvch: cppw + vwcr +gdgm: stms * mqzq +bwhv: cpvl * pzlt +fnml: 3 +wzls: bvss * sjdp +htfl: trqr * dfhn +tsgs: mbdw * jbrc +vnfl: stdj * mqjz +tpgr: mtwc + bqts +wnmc: twfz + phfv +gqls: 20 +glmg: 11 +rlqz: plzv * phhf +hscl: 3 +cnvs: 5 +tjcz: 3 +jmwp: 5 +glpw: 4 +vwsm: 3 +crgr: 3 +pqrt: zcwz * frsb +ncld: 4 +wmvc: ftdw * jdms +jlnv: lhrr + mthc +gmwv: 2 +jbwt: qnwb * hfht +tztb: 1 +vllv: jbnf * ppbl +nsqg: qzcj / vsvq +mfgr: rlfh * ppfj +fdrz: 6 +mhjp: hsbn + fplt +btvs: zrqb * jppc +qbmn: 2 +sfhd: rtlt + gqfs +vwcr: jdrl * wmzz +wtft: nhzg + gfmz +hcpg: bqwf + cmvj +bcwl: 5 +pjgn: 9 +tfbv: 16 +nvht: gfnr * phrc +nmsj: 5 +cdmm: pwnt + qfvg +mlrm: tvcv + dwcz +bpsl: bnnb * dncv +gwzh: mvqc / cmwc +qtmt: wmvc + wpzw +qdsc: mqbb / pnsl +gwrs: 2 +crfg: flrv * chvw +lnwj: 2 +bmwf: 2 +lhrr: 6 +nvtd: 4 +nfqw: wcjr * qvlf +qjvg: fplf * prqh +dstb: jzff / zncm +zbbt: 2 +pthc: rvpr + lvch +ftcb: 2 +tjdj: 2 +mfsh: 5 +dnrw: wzzt + cnnp +dpfh: 3 +hwvm: qlnv * cndz +tbqv: fhrg + tfvv +cfqw: 3 +mmbb: vrch + gcdz +cftg: bghs * zbdl +nszr: bdfb / wntd +fsnq: 2 +pzfj: rlbv * slrp +zhfr: 13 +gbfr: nswj + pdpn +qhsv: 2 +rmcn: chzh * vvvp +zbfm: frpl * sncs +sncs: 2 +fvrn: 3 +ctwg: 3 +dhdm: zzgb + ntpp +bbbt: 17 +cnwr: 5 +czcd: 2 +nvbb: 19 +bjll: nfpq * wrlm +jrhj: 4 +pvrr: qncn * djsh +qgpv: 3 +zdtc: 8 +dfhn: 2 +vmtj: 1 +qfld: ncld + dplp +jsfj: 6 +qdcn: 3 +jpcr: 4 +vjjv: vjtv * gdnd +nlcz: 5 +lfpm: mfpg * hmqf +lgbs: 3 +bqwt: cvrb * gzbv +lzhr: dztv * shqm +zjdn: 2 +cbbv: 3 +bgqg: hdrw * plhr +ltft: szpq * pmwt +ddjb: 3 +rldf: 3 +bsmp: 3 +mlnz: 5 +clpc: 9 +rqpf: 2 +tlvd: 3 +pbvg: 4 +jnsw: 5 +bbcq: vzwh + ntrm +rqgf: pdbs * clrz +nljp: zdsl * gdbc +nzrj: 5 +bdnt: 3 +lvml: tmtl - htmn +vcnd: rbvp * qmbs +nlnl: 2 +dzqs: 4 +lhbs: qrpm * fsnq +mrzs: 5 +vzpz: 1 +hwlt: 2 +zrsm: ptvp * zvpn +gzzl: bcwl * hptn +sphn: 3 +wbbv: 2 +vtsf: 6 +lbmd: vcvr * gvzt +crgd: 8 +ntng: 3 +tfrq: qzdb * gczs +rhtt: 2 +whwf: 7 +fcfj: 3 +qfvg: 4 +tnfn: 14 +qchn: 3 +bnnb: 4 +qcld: 7 +qbvw: 4 +pmpp: 4 +vsww: lcsc * jcwh +msqv: 4 +vcdg: qqqw - fzdc +nbjz: 2 +fzfv: qcng + fwgn +dtpm: mjzr * gnbw +vsrd: gftz * gcwr +qbnh: phnj + bjss +rbvp: mfgr + dhzt +tgmh: 2 +cvrb: 2 +llsf: jvgl + jmfj +ttsg: 2 +qvnq: 2 +cfdz: rndr + mjfc +mdjv: dzqr + mbtd +vqcg: vtsf * qfjg +rpgc: rshb * vlcs +jtlr: 3 +vllh: 12 +nrcv: hmcw + jjhd +jlss: dqlh + mlwh +qgfd: 5 +rqtw: 3 +nrmd: mvbz * gmdw +clqd: jzzp * scrw +wszg: tvzv / wsrm +dcfc: mhrs + tmqp +dnjl: 1 +rbps: fpzz / rcfm +nsnw: fpcm - zdlw +fcrn: sldm + rhsr +rszj: 3 +rgpb: nfrg + tfwt +rgpp: 7 +sbmt: sprj + wdwn +htfd: 14 +plzv: 5 +vpjc: hfbp * fscw +swzt: 2 +dznf: 6 +snwl: vnqf + rqjq +prrn: 4 +przz: zhfr * cdcw +blgm: jsbd + qbhf +cjpw: 13 +zrqj: 2 +mbpm: snmc / cgqg +wrbz: 1 +fdzw: spwc * vfbc +dsjg: trdw * rvvq +hqnc: 19 +hvhp: dqzg / nlnl +sqqr: 2 +cwcj: vbmj + wnmc +flwd: rmsw * fqbt +qthg: mpgn + fnbf +dvcv: pscc / qshz +bzlm: 2 +cdrv: bhhn + vvts +wffr: 10 +fdlh: rfsn + nhdb +zrdf: gjsq * rpgp +dwnc: 6 +sfrr: jhjp + rlcm +dzdp: 3 +trdw: 2 +vlzn: 4 +gphg: 2 +blpp: dzvs + vcnt +htfw: qctd + mgtl +lqjs: 3 +gdjb: 3 +qbhf: vzwb - cgwn +hrrd: qbqs * mhdh +pwnt: 3 +gstq: jwpv + jjrc +npbn: 3 +gdvj: sfrr * rvwc +bwgp: dsjg / qnhw +gmgr: 2 +rpgp: 7 +hzmt: 2 +bgws: vwsh - hbqp +htqd: wtzp * jpsh +blwj: zrsm + mjgs +qsgv: zwgf + pthc +vvvp: nlcm - vdjv +mnht: qchn * lwnc +tlvf: 3 +ljnv: 3 +root: vpmn + pqtt +blsv: nmtr + tfbv +tqsn: 13 +cqwq: 5 +wcjr: 3 +htgf: 2 +fmjm: 10 +vffb: 5 +mtwc: rwpc - spnw +wtrv: 5 +vmqc: 19 +fzvb: nmsj * vlvr +dbdm: 4 +zfnc: 4 +smbw: 13 +qnpj: npmb * lmfz +wbfs: tvhr + lrjl +llzn: rjfw * vsrd +vslw: crgd * qvsp +qjwg: 1 +rctb: 3 +lnqp: qvgc + spsc +tnlr: 3 +wrlm: lmbz + tlwc +mhhd: 12 +fdfl: fpch * qsrm +mtjt: llnz * zrqj +tszm: sbft * rfnz +gbgl: 3 +whbw: 3 +cbwv: 2 +brfw: 2 +nmtr: tqmm * gstq +qgbq: qzln + mcjt +wgzh: 3 +rznp: bjjn - fhwg +rjqr: 2 +mwnf: 5 +wvdq: vlzn + rntc +sffr: hpzs * fhsc +dsjp: 2 +rqrs: 2 +pvts: 4 +wcqz: ptth + gdsn +zncm: wnql + qgpv +nqcp: nsnw - gspn +npws: htch * nszr +lcvp: jrvv / snvw +ncrn: ffvf + wzls +thpp: hrfs * rmcn +gblq: 5 +fvbf: 2 +frpl: lnzc + zpfg +clzz: dmnv * nmsp +gfcn: hpvv * zbbt +bwrc: gzzl / vffb +nbtl: 4 +hvnc: mmtz * prjz +gnjn: wbmf + lhjl +fpdf: zrmc * gdjb +hmcw: 1 +zfzf: 2 +fvln: tfrq + fbgg +vclh: gzhg + vqcg +qnhw: 2 +pttc: hhmh + frgg +qlfm: mlrm * fsnr +zsgf: mrzs + dnjq +cqcr: lmqt + strh +fhvv: qjdp + lzfw +tmwh: wmld * hznt +cjlt: 10 +mvbz: wncv + fhvv +ldgf: 2 +ngbp: gfcn - lfsg +nmss: jshb + mzrp +tzwl: 3 +ntpp: 5 +vvvw: gbfr + vsww +ftqf: wmpg + dbsm +lvdw: 2 +vfrn: fvvn + vzpz +szzt: tzpn * rqrs +hqfh: 5 +zvjt: 2 +hzct: 8 +psbd: wgzh * nvhq +twfz: 6 +mmgr: nwwq + zbcd +ffbw: dtjd * qfvw +cjzn: pfbp + tsgs +cvmz: 1 +ftvm: smnr + vcnd +hlmh: wwpm + jrbf +blfj: 3 +wshw: 11 +tqmj: 10 +tztc: rgpp * hlrj +mnhz: mrln + lcbh +mbtd: 6 +tjmj: vlqz * vnqn +wnql: 4 +fbnd: jttq * fvrn +tgnj: fmgj * bbhd +mqfc: 11 +phgf: zvfs * tlvd +jrfz: 3 +qwdf: 3 +vqcv: dcfd * llwj +vzwb: flbl * qdsc +tpmn: rtbm * bqqz +ltpz: 10 +mhth: 2 +tcfr: shvt * qsgv +lmtc: 7 +zzqz: 5 +tfww: dzzl - fmjn +tcff: rgfz / qlgr +rlfh: 7 +rjfw: mrzf * dzhg +vcvr: 3 +vstc: 2 +cbwl: ftvm + jfjt +zsqz: 3 +cbqw: 4 +hlpr: 3 +sqsp: rfmm / jwph +fmjn: pwls * flwl +frsb: 9 +dpvw: 3 +sdfs: bhbt * prrn +cvrr: nrcv + rjhn +lpcv: bdth / ljfq +pzlt: 5 +pjgv: lfpq + shhg +nslq: jjqd + wjfz +pqsn: 3 +bnvr: 19 +ttzd: bpbz * jnbz +zggt: 9 +mlrh: 3 +rjhn: jjrh * hzmt +lqcj: 2 +clsm: vmtj + qjvg +rvwq: 5 +lpvw: 2 +dsrv: 3 +vccd: pwpw * swml +fwgn: wgqr * hnzj +lmqt: 3 +mjgs: tgnn + bsmp +qdhz: 13 +qrqb: bqrg * wgnc +dhth: 3 +vcnt: lnqp * sqcg +dnqt: trww * mqql +jqhf: lszm * gwrs +hnrr: gjph + jmrh +gspn: ggph * rlvh +vgfw: gblj * tqsn +frff: tlqh + dtqj +zdsl: 5 +qnwb: mtbf * clrl +hlsm: 3 +mvqc: rcmp + wlng +nscd: 1 +hllm: 2 +tngw: gjvt * pbpf +vrch: rlrt * hlpr +hjsb: wvmt + mjwn +btcr: pbvg * mlnz +wgmz: fbnd + swvs +dczs: 2 +bvft: 3 +tqth: lgqt + mlbz +qmbs: 3 +sgmq: 9 +cfbh: 4 +qbps: 2 +ggpq: 19 +cfnc: 3 +jbnf: cdrv - sffr +vsvq: 5 +fzdc: 2 +bdzv: jmwp * gmjw +fcpv: pgpz * qvns +hbqr: wtft * bdnt +shqm: gntr - vlfr +dwvq: ljvg + rhmg +jvqc: qdjl * wbbv +ffgm: 3 +zngj: srwr * mfsv +hngp: hcwc - pdbh +sfww: 2 +djdm: 16 +bzpt: 3 +whhz: nrrc + ppcm +qqzf: bnhw + fcps +ftlv: qcld * gpfw +mjfc: rpgc - ftqf +mcsm: glsg + mprp +bndl: fprr + tjcz +zqsv: czcd * cqwq +cdvb: lvdw * nbmm +shqf: mnht + swdb +wwwn: vqtr - cftg +bvss: mdlw + wlfd +qfvw: zjdn * blwj +dbcf: dzgc * npbn +hgzg: pvdl * nmss +zlwr: lmbq * gstb +dwmf: qbmn + scpp +rfzr: 2 +tscb: 8 +vdzr: dpvw * bwrw +bdfb: rhnp * rrrt +bzhz: 2 +jtfn: 3 +clpr: 5 +mfwq: mwvf - wqns +bbph: mdwb * jftc +trww: swpp + htfl +flbl: cvpt * ljbr +ltdp: dshc + qpzl +fvwt: wcbz * dbdm +mbcs: rfgg + sqhn +rcsc: vclb + thpp +nfpd: bfnw * pzfj +qdvl: 2 +msmp: 7 +mbdw: 15 +vgfs: rqgf * nnpv +dtjd: 3 +hcwc: vszv * mdjv +tbpv: vhbm * clpc +wmpg: fnfl * ppgv +cttg: 3 +jsjv: zqsv * cwqf +pprr: 18 +rgfz: vpjc - gdvj +mwvf: wgmz * gnmm +jwph: 3 +zrwg: 3 +prsl: 3 +twrl: swsb * fgjm +rbjm: ltrw + njcz +dmpf: frhz * dntg +vmcn: 5 +cgqg: 2 +lmbz: 16 +trld: 5 +hlrj: 3 +nprf: 2 +zbcd: nghf * ftpz +pwhd: 3 +bqrg: lwbb + lmwn +mqjz: 9 +rznq: 2 +nfvl: 3 +jqnq: hhzw * bbcq +wvmt: hlmh * wpvm +fgvw: 2 +rnfl: 6 +mqbb: qbtc * sgss +chts: fcrn - nscd +vtzw: bzhz + hzct +ldvq: 14 +scds: 2 +gwhd: tqwm - jsfj +mpwl: 2 +smqh: 2 +hhzw: jjjr * ljpp +lclb: spwv - ltvg +wsnr: rcsc / zdjf +dtrg: 15 +dzfs: jpnv + trld +sldm: 4 +lqhp: 6 +rcpv: tmhs * jtfj +qvns: 2 +lpml: 6 +snff: 9 +bmlr: 2 +wlfd: flfj * mwnf +hwqn: 6 +cqfl: zvzg * vghf +djsh: sphn * mjdr +ghss: 2 +njcz: vpzd * ccgr +sdjs: 3 +rpcr: 6 +rwhw: 3 +zjrr: 2 +mtgh: 4 +rhmg: dtnb + swzm +ggph: 5 +wjlr: hgdh + gjjl +sgmj: 14 +pqtt: dsnl * rczv +qshz: 3 +hrqz: bncr + ljjz +lszm: hgzg + wpzr +nmls: hvhp + fnfn +dvvg: wgfd + hgqq +hnnz: 4 +rqfs: 2 +dsnl: qtmt * hsqn +vvts: mszq * hfpt +lgqt: cgrb + qzrh +jwwh: 3 +pnrw: lwzs * fcmn +nqrl: fdpm + dvps +sjdp: 2 +dwnz: 7 +wsrm: 2 +jgdd: 4 +ffbq: 4 +ldss: tbgb + lmrt +nmmv: djdm + pvzc +wbmf: wqnv * qhgp +cfjf: fvwt + dmmw +ltvr: zmmr * jpqm +sgsz: vbtw * jtpm +jqwf: 15 +tgjv: 17 +lfsg: 19 +mfhj: wbfs / clpv +mmvb: phlg * cpls +zpwh: 1 +jjjr: 2 +rfzd: zpwh + zlcb +brvj: bndl * cwft +vmlg: hhrv * qsgs +sjbd: swlb / msqv +bjss: htts / ljdc +mpgn: fcfj * clsm +ljvg: htfw * dnwq +pllf: 15 +lcjd: cndr * tlvf +gflt: mmbh + hnqd +bwrw: 2 +gqvq: ljrc + fhrr +lmbq: hfln * ctwg +wwnt: 1 +tlwc: 5 +wmzz: 10 +mdlw: 1 +rrrr: jhhz * llsf +rvpr: czpn + hdlj +vpmn: mhjp * fzmq +rmsw: 2 +jvgl: 8 +bjsf: 2 +fhsc: 2 +lsnh: 8 +thbw: 8 +grpr: blvh + smbw +rcfm: 7 +fwrr: vpmh * rfzr +scll: 3 +wntd: 2 +tqms: 5 +hfng: 2 +cdng: rszj * tztz +bnfw: 11 +gpsg: fmtb / zfzf +vslr: 2 +qzcj: vmcn * tngw +qlgr: 5 +scvl: 7 +lwmc: cfnc + mmhg +mprp: pgtc + jdnd +fhrr: rvtg * cgnp +gzhg: mmfp + brcg +hmlp: mmvb + mlwj +hsrh: cqlb * wwwn +dvjb: bwhv + gpsg +wgqr: 4 +grcb: 11 +dshc: 4 +bhhn: dlbr + rbps +hbqp: cjlt + bvft +jjcs: 11 +vlqq: nqbv * ldgf +hsjc: 3 +lwbb: gvgj + ffwm +frgg: ntng * vbvm +fcmn: 3 +bvpp: 2 +mmnh: tsdc + hrrd +ljpp: 6 +dplp: 3 +vjzf: cjpw * whsb +fdfq: djhn * hnrr +cdcw: tccl + tndw +hcsl: wmtw + zggt +zjqh: 2 +zvzg: 5 +vdjv: 14 +lczq: 5 +chqf: 2 +cctg: 3 +tsdc: 5 +dzqr: dmtn * jwwh +bqts: 20 +rrjn: 2 +gfnr: 4 +prgh: 3 +ghvf: 16 +jsbd: rfbj / tzqq +mmbh: sgmj * gmzv +gjph: rfln * nssp +dmrh: dvcv * dqqt +rntc: brfw + snff +lsrl: pwdp * htqd +tshw: lzhr / gpmm +jhmt: 2 +pbqv: 3 +vbdt: 3 +zhqg: 3 +tpgw: zfnc + lwmc +qzdb: 6 +hnpn: wcqz * pnvj +rvfg: mnqw + bhtl +nvhn: 2 +clpv: 7 +dzvs: 2 +rvtg: gbgh * jbwd +nhlg: hllm * jlnv +svpl: crfg * tscb +hfjw: 4 +sdvs: msmp * dszm +swpp: 1 +scbz: 11 +rgwv: 4 +btsn: mwrn * qvtb +thlr: 1 +dnjq: 6 +cwjz: 4 +fqtj: 2 +mwrn: ctts + gblq +mthc: zdcf / bjsf +mrbf: bsds / lqlz +dncv: 2 +rfgg: lsmb * wwhw +qvgc: 4 +vpzd: 19 +chzh: 2 +tgnn: 12 +rlcm: cbbv + ptdp +wmtw: 2 +ptvp: 14 +tqhw: 3 +rqpw: mznv + pttc +vghf: 5 +qvtb: 5 +bfnw: 5 +phmc: ldss * gscw +hhmh: cvzg * mswb +zrmh: 9 +pwdp: 5 +czsg: bdzv * jndd +wdqs: 9 +lpbw: 8 +jmbp: pdgh * hdzg +lvzd: 2 +lqft: 2 +frhz: 2 +vsrl: 4 +wcbz: 3 +mzjz: jqwf + cvmz +rtlt: qmpz * mlns +lzwt: zjrr * zbfm +crbp: 8 +nzqv: fwrr / gzjr +zdlc: gphg * cjrq +nwph: mhhd - sjqq +szww: 14 +nflj: 4 +dqqt: 7 +jlvw: bbph + hwvl +ltvg: jdls + tvvl +cppw: zlrn + ntjd +tjsp: lhhh + dwmf +sprj: nzhb * msrb +nqch: 5 +csln: vdzr * rqtw +cmgs: 3 +tztz: 19 +cnmf: 5 +bqpl: chts / qzcv +pcwg: fpdf + trfn diff --git a/day21/part1.rb b/day21/part1.rb new file mode 100644 index 0000000..4895237 --- /dev/null +++ b/day21/part1.rb @@ -0,0 +1,34 @@ +monkeys = $stdin.readlines + +nums = {} + +monkeys.count.times do |mix| + if monkeys[mix] =~ /(\d+)/ + val = $1.to_i + nums[monkeys[mix][0...4]] = $1.to_i + monkeys[mix] = nil + end +end +monkeys.compact! + +while nums["root"].nil? + monkeys.count.times do |mix| + f, a, b = monkeys[mix].scan(/[a-z]{4}/) + unless nums[a].nil? || nums[b].nil? + case monkeys[mix][11] + when ?+ + nums[f] = nums[a] + nums [b] + when ?- + nums[f] = nums[a] - nums [b] + when ?* + nums[f] = nums[a] * nums [b] + when ?/ + nums[f] = nums[a] / nums [b] + end + monkeys[mix] = nil + end + end + monkeys.compact! +end + +puts nums["root"] diff --git a/day21/part2.rb b/day21/part2.rb new file mode 100644 index 0000000..ab88699 --- /dev/null +++ b/day21/part2.rb @@ -0,0 +1,78 @@ +def mutate(eqn, tgt) + if eqn[6..9] == tgt + op = case eqn[11] + when ?+; ?- + when ?-; ?+ + when ?*; ?/ + when ?/; ?* + end + "#{eqn[6..9]}: #{eqn[0..3]} #{op} #{eqn[13..16]}" + else + case eqn[11] + when ?+ + "#{eqn[13..16]}: #{eqn[0..3]} - #{eqn[6..9]}" + when ?- + "#{eqn[13..16]}: #{eqn[6..9]} - #{eqn[0..3]}" + when ?* + "#{eqn[13..16]}: #{eqn[0..3]} / #{eqn[6..9]}" + when ?/ + "#{eqn[13..16]}: #{eqn[6..9]} / #{eqn[0..3]}" + end + end +end + +monkeys = $stdin.readlines.reject { |l| l[0...4] == "humn" } + +prev = nil +need = "humn" +loop do + cand = monkeys. + select { |m| m.include?(need) }. + reject { |m| m[0...4] == prev }[0] + cix = monkeys.find_index(cand) + break if cand[0...4] == "root" + monkeys[cix] = mutate(cand, need) + prev = need + need = cand[0...4] +end + +root = monkeys.select { |m| m[0...4] == "root" }[0] +candname = (root[6..9] == need ? root[13..16] : root[6..9]) +monkeys.delete(root) + +cand = monkeys.select { |m| m[0...4] == candname }[0] +cix = monkeys.index(cand) +monkeys[cix] = "#{need}#{cand[4..16]}" + +nums = {} + +monkeys.count.times do |mix| + if monkeys[mix] =~ /(\d+)/ + val = $1.to_i + nums[monkeys[mix][0...4]] = $1.to_i + monkeys[mix] = nil + end +end +monkeys.compact! + +while nums["humn"].nil? + monkeys.count.times do |mix| + f, a, b = monkeys[mix].scan(/[a-z]{4}/) + unless nums[a].nil? || nums[b].nil? + case monkeys[mix][11] + when ?+ + nums[f] = nums[a] + nums [b] + when ?- + nums[f] = nums[a] - nums [b] + when ?* + nums[f] = nums[a] * nums [b] + when ?/ + nums[f] = nums[a] / nums [b] + end + monkeys[mix] = nil + end + end + monkeys.compact! +end + +puts nums["humn"] diff --git a/day21/test b/day21/test new file mode 100644 index 0000000..e14be60 --- /dev/null +++ b/day21/test @@ -0,0 +1,15 @@ +root: pppw + sjmn +dbpl: 5 +cczh: sllz + lgvd +zczc: 2 +ptdq: humn - dvpt +dvpt: 3 +lfqf: 4 +humn: 5 +ljgn: 2 +sjmn: drzm * dbpl +sllz: 4 +pppw: cczh / lfqf +lgvd: ljgn * ptdq +drzm: hmdt - zczc +hmdt: 32 -- cgit v1.2.1