diff --git a/day11/input b/day11/input new file mode 100644 index 0000000..42ed540 --- /dev/null +++ b/day11/input @@ -0,0 +1,602 @@ +ojt: rum xgy guf mqs +srg: mqo ufz +lwb: sxb wsf +pkk: ium +evd: els stn oln +ukv: ocs vxd tfl +fyk: ikm fox nok +bfd: evd kjy smb +wqy: srg tgk +mix: cmj ufz mqo +rew: avm nrs vot mqv +tri: hex zvw yuq jeo +lbo: dgt ica yws pkk qwp +fcn: smr +msw: ssg qtf aem +zwf: zvl qfe +epg: xax pzu +mmw: dhg +hbd: cji vrr ysi bfd +czn: wld cgm gqw tbz +qdh: tvc +dwh: hux lkt lad +ayq: bzr van +lor: xrf jwh +gkc: pwk hgf cdw +jxm: ehg xet fqn +qft: qnl evl +pek: cvj flu +rmo: rxx hbd +nwe: out +liy: tcc rjb pda +xft: azu upo itg +ojy: cfp +nuq: cvj asi ufb flu +ogq: oov dtc ppz +rjb: cmj ufz mqo you +rdz: cvj ozn ufb asi flu +qoa: dgt yws pkk qwp +mbw: lik rmf nqr +yes: ccc +uit: ysj ngh rew +hfa: sum clx +jqd: ozn flu cvj +xfi: dyo zqy +lym: kht +sqm: rdc oao +jmw: nzq +sgq: bju lzc bwx +xjr: lcx kpp mvl fto +tdg: vds kuh +aww: der lwb ijy rjq mof obb fmi unx eqn vyj skb wqa aer tas stx vpf oas fzq gfy pua +rmb: euk xic +hwg: fto xmd kpp lcx +nce: mmd sum clx +ult: ufb ozn +fbj: lcx xmd fto mvl +tgk: you mqo cmj +ppz: nqr +vty: ppz lok mbw dtc oov +eit: xvj ccc +dtc: xvf nqr lik rmf +qso: out +tcc: ufz you +gwp: xur pto ayw rmb +ibm: bwe fuv zkc +onk: ibe gdf +jax: qnl evl nzq +vct: ozn flu asi ufb cvj +bju: sfu azu itg +amz: you mqo ufz +ozn: rqf jzc onk qoa jzs lbk tog fhz vkr hty pnw tej hmv erl mcm msw qky umv +eux: kuc xpq gxc +vmi: mqo you cmj +lft: sum clx fbs +lgv: ufz mqo +quc: npv +bzr: leu ehk +bwx: sfu upo azu +cnk: mmd fbs +xpq: qyh +zon: bwe npv zkc +pqe: mqo ufz you +rks: tje isv +hmv: gdf +evl: tbt ftw lco +vux: rxx zbg +yoa: trv +tpq: cvj +jws: tpq lyi jqd nuq rdz +qzs: clx fbs mmd +vds: amz pid xax +xfg: fof +xak: xjo gwd rcb wzr +erl: aem vux ssg qtf rmo +tzu: out +oht: xmd fto mvl kpp +ogz: ojy gdf +yly: czn fjq +nrs: you ufz mqo +rna: mvl +ins: fbs gyg sum +vwu: ilb wqy bud bba +nxi: npt kht +gfx: hfd sia +itg: cvj ufb asi ozn +nxy: fto xmd +zcq: yoa wvx +jok: rna msk sna +vqb: tdg shp gru +vep: ocg bvi znu +tqa: ame pfb eux +eer: out +lna: blf uph bzr +dyo: ypx kth wcn +ejr: vct tpt joe +vpk: jer fmw erg hwg +lkt: yrk +bok: xet +anx: tpt joe atl vct +yrk: mqs guf +vpd: zle tdg gru shp +htv: auw oyn pek ikf +icv: fto xmd lcx +wfb: you cmj +lrx: xet fqn tzu +wjh: clx gyg sum fbs +xet: out +hgf: fto +tvc: smr tyc irq +gra: cdw hgf rqb +brr: xft mbe +fui: cgm wld ahr gqw +kht: bqw fmu +asi: rqf jzc hmv pnw vkr umv jzs jtv erl msw +dxr: rjk rgc gfg +xic: nys xak xxh +smr: cmj you ufz mqo +bvi: xjr bgh igy oht bzh +fkj: bqr pto rmb +nnm: fbs gyg +zih: tzu fqn ehg xet +npb: thy zao +bhz: you +eny: lor +fqn: out +sna: lcx kpp xmd mvl fto +azu: ozn asi flu +ilh: acj vdg zpt zcq qwn qft aic fay fjj ycs wdh cyp ymi gfx tjs fug jmw abi nih +lad: ojt tqj yrk +abh: ikm nmg +mof: dxr yal +xtl: jar wsf +aem: rxx hbd qdy +clx: veu yes fej yfb zdm vwu vpd tcj imw bfo sak fpe vqb lwp apx uit ysq jsl tyr ahw wec rzx +leu: xjj tji qzs +zww: isz sgq brr +jvq: htl iao uix +cbk: nuq rdz lyi +qfe: out +bei: xxh nys +qsk: you ufz cmj +lik: jgk wce nwe +hfd: qnr ult +bqr: euk xic +fxy: nxi iyn +wvb: fof dzk +ill: weg vpk yqv toh +srl: gfg +svr: xzk ilh xkb gtf ebx +kko: eph czn fui +fay: wya wvx +ikm: qie +sju: lrx +lbk: gdf +fjg: hfn ibm +vso: jwh scd ins xrf +vsi: jxm zih +iao: lcx xmd mvl +ley: out +apx: ysj +pnw: hak hvg fft +fej: ngh ysj +xkz: wjb vso xxn aty +lok: rmf nqr xvf +tjs: nzq +gdf: yck eqp +ubl: gru shp +xdh: anb dzk fof +afd: teg +rbe: out +vdg: nzq evl +ejz: dgg +hux: ojt tqj bgr +xxn: scd +bgh: lcx kpp xmd mvl +wld: dep cnk nnm hfa +xgj: fxy ups tjo +guy: zgs qdh mmw oif +ocs: wjh nce lft +vot: mqo +kav: cny gjt aps +oov: rmf nqr +jwh: mmd fbs clx gyg +hfn: bwe fuv +cac: ocs dci +xjo: niz qso +yta: van +zpt: kfx mam cwc +ame: kuc lkx gxc +hvg: qxn +vdq: out +yal: rgc gfg +ssg: rxx +qbe: dhh oas vpf tas skb eqn unx xtl rjq ijy lwb blk der +joe: flu +ccc: dac liy lqv +pua: dxr sru +oas: nfc +lbv: ibm hfn quc zon vtx +wqa: tje zkz +oif: dhg +pnh: fui +mzt: ubm ame pfb oia +tbt: cvj ozn flu ufb asi +jtv: ojy ibe +izw: xix lvg +avm: cmj ufz mqo +gjt: paa +txn: guy +van: teg +vkn: mvl +qie: ibm hfn zon quc vtx +hsz: npt lwt +ayy: yuq jeo zvw +igy: fto xmd +ptz: vep rdc mhx +wqi: sgq +tjo: hsz sfy lym +epd: oln qbe els +tna: els stn aww +mhx: ocg cwu bvi +bfo: kvy +jsl: eqd wzw +hak: rms tna +akf: kpp mvl +sfu: ozn ufb asi +erg: lcx kpp xmd mvl +jar: uht gra +rum: els stn +anb: prd +tyr: guy +stn: vpf gfy ijy mof der skb rks obb xtl fmi unx +ayw: bei +mqo: kav thd alq qcs ckk fyk ojj mzt abh tqa +tje: akf icv +lzc: sfu azu +gtf: jmw fay jax val qwn zcq zpt mnc cyp wdh rkh +yck: stn els aww +kgq: wjb vso lor aty +fmu: sum clx gyg mmd +ubm: lkx +sia: gcn +huh: ntp vsi +jzc: ssg vux aem +yfb: bud +nih: mam +fto: xgj byk yta xkz pnh lna +zvl: out +qwn: hfd sia +dzk: qfe prd +jxj: eqd mzb +tas: sqm dgg ptz +rfz: ufz mqo cmj +ecn: rna sna oks +aer: yal srl +vpf: jar +ups: hsz sfy lym +bqw: sum clx fbs mmd +cdw: mvl xmd lcx +veu: wzw +ikh: brr +fzq: wsq dxr +irq: cmj +rmf: jgk nwe ykg wce mdv +dhe: zao +npv: gxk ezs +ehg: out +aiy: xur bqr rmb ayw +els: mof lwb rjq der ejz rks skb unx xtl fmi stx vpf tas aer dhh pua fzq gfy +nys: xjo wzr rcb +bba: nkp +mxd: anb zwf fof +gru: vds epg +ppa: fbs gyg +lwt: fmu hrc bqw +gqw: dep hfa +pwk: xmd kpp lcx +lwp: ilb +zvw: vty nbi ogq +guf: stn oln els aww +ocv: kzf huh +wsf: gkc uht +buy: vhu qdh oif +xvf: mdv wce nwe jgk +blf: leu ehk +zgs: tvc dhg fcn +fhd: aty vso xxn +fmi: dhe npb avc mvk bxo +fox: lbv fjg +iqo: msk ocd oks +ufb: fhz erl lbk ogz umv vkr pnw qoa onk tej rqf jzc hmv +sru: gfg +rcb: rbe +teg: tji keq ppa +ikf: ufb asi flu +bxo: thy nvf +weg: fmw +lkx: xfi +qky: xxs dwh wat +zqy: eer ypx +ckk: ocv gga xpa +qnl: ftw lco +tcj: hcg +rxx: dyl cji +sps: mqo +snz: fox nmg ikm +upo: asi ozn +kuc: qyh wot +znu: igy +niz: out +ocd: mvl fto xmd +zle: vds epg kuh +gga: spp kzf +tbz: gyk dep cnk hfa +zkc: ley +cqr: xfg mxd +ezs: out +cwc: cbk +nbi: ppz lok oov +wce: out +ntp: lrx bok +vyj: dgg ptz +atl: ozn +uph: leu ehk teg +mcm: rmo aem +skb: mvk +pzu: you +dgt: ium ykj +oyn: asi flu ufb +jeo: vty nbi +ehk: tji qzs keq ppa +ysj: nrs avm vot +pxi: stn oln +gxc: yed qyh wot +cwu: xjr igy oht +qez: ayw pto xur bqr +jgp: asi cvj +dep: clx gyg sum +ahw: bba bud ilb wqy +keq: clx gyg +tyc: ufz +wjb: scd +bns: kfx mam vjd +zkz: fbj icv +eph: tbz +xmd: fhd bwh cac pnh gmc izt kgq ayq yta xkz kko yly +ica: jzl ykj +asz: blf +oln: ijy lwb mof obb unx vyj ejz wqa aer tas vpf fzq gfy pua +iyn: kht lwt +alq: eux oia ubm +shp: epg +fft: rms qxn tna +ijy: jvq mms nfc +rjk: ecn +euz: anb dzk +euk: xak +fof: zvl +obb: isv tje +wot: zqy +eqn: mms nfc +yed: uef dyo +mnc: zqk lgu izw asb +tej: yws dgt ica +mrh: gyg mmd fbs +bgr: mqs epd +mvk: zao ill +gyk: fbs gyg +ebx: qft jax fjj fay rkh acj vdg zpt mnc zcq qwn val gfx fug jmw abi nih ycs wdh cyp ymi +wya: fio anx +qcs: bqr ayw +kth: out +kfx: jws yoz cbk +nqr: nwe ykg wce jgk +dci: ufh nce mrh +kjy: qbe els stn aww +xrb: cny aps +trv: vct atl joe +paa: wvb euz +zdm: ngh rew qnk +qnr: asi +ddh: gcn ult +wvx: anx ejr trv +vih: lrx jxm bok +xvj: lqv liy +xax: cmj you mqo +wzw: wfb mix rfz sps +mbe: azu upo itg +rdc: ocg +thy: weg toh +ibe: yck pxi cfp +eqd: sps wfb mix rfz qsk +qtf: zbg rxx hbd qdy +ymi: xer +lgu: kop xix lvg +xxs: hux tth +blk: wsf sxb +fbs: rzx uit wec vwu veu sak fpe apx +toh: jer hwg fmw +xkb: zpt zcq bns mnc gfx +rqf: xxs +stx: jar wsf +gmc: eph fjq +kuh: xax pzu pid amz +xix: ikf pek oyn +nkp: cmj you ufz +mqv: cmj +ufz: gwp kav thd ojj ayy fyk mzt tri snz csm tqa abh xrb alq qez qcs fkj lae aiy +tnv: asi cvj +auw: ozn +mms: htl vkn iao +gxf: kzf huh spp +yuq: vty +sxb: gkc +dgg: mhx rdc vep +dhg: irq pqe +isz: xft lzc bwx +xzm: you cmj +ngh: mqv vot lgv +fjq: tbz ahr gqw cgm +cyp: zqk +mam: qmc +byk: vxd dci +dyl: rzq +fpe: hcg ccc +mvl: xkz ayq kgq izt vkq lna pnh gmc yly byk bwh asz cew fhd xgj cac +vkq: vso wjb lor +sfy: npt kht +cew: czn eph fui +ftw: ufb ozn +smb: stn oln aww +tqj: xgy mqs rum epd +vrr: rzq smb +vxd: mrh ufh +mmd: tyr ubl fpe sak bfo veu lwp ysq rzx vpd eit tcj fej ahw txn yfb vwu +xur: xic bei +msk: lcx kpp mvl fto +umv: qwp pkk dgt +xgy: qbe oln aww +aps: cqr umy +cvj: qky ogz umv pnw tej lbk jzs tog fhz vkr hty lbo rqf jzc qoa onk +aic: kfx vjd mam +hcg: lqv liy +qnk: nrs avm mqv vot +yws: jzl +qmc: rdz jqd lyi tpq +nok: fjg lbv +jgk: out +thd: gga +gfg: jok ecn iqo +gfy: sqm +gcn: cvj flu ufb asi +dhh: avc +xer: gcn ult +uht: cdw +xjj: sum gyg +prd: out +asb: lvg htv kop +cmj: gwp kav thd ayy mzt snz csm tqa abh zce alq qcs qez lae +lae: aps gjt cny +hex: vty nbi ogq +ykj: oln stn qbe +zce: cny +kzf: ntp vsi vih +ojj: ocv gxf +yqv: hwg +zqk: lvg kop +aty: ins +npt: bqw fmu hrc +pid: cmj you ufz +wdh: wvx wya +sum: jxj tcj imw ysq jsl sak veu +fio: jgp tpt joe atl vct +nfc: uix nxy +mno: you +wec: mzb eqd +qyh: dyo zqy uef +pto: bei xic euk +spp: vsi sju ntp +der: bxo +vjd: cbk qmc jws yoz +cfp: oln stn els qbe aww +eqp: oln qbe stn els +csm: yuq jeo zvw +mdv: out +fmw: mvl +yoz: lyi +acj: zqk lgu izw +umy: wvb euz xdh +kop: tnv ikf oyn auw +ysq: ccc xvj +cny: umy paa +val: kfx vjd +ycs: ddh +jzl: els qbe +avc: thy nvf ill +rzx: qnk +bwh: afd blf van uph +qdy: cji bfd +flu: jzc qoa lbo qky umv hty jzs mcm +pgw: fmw erg jer +you: qcs ckk fkj xrb csm lae +jer: kpp +wsq: rgc +sak: guy kvy buy +rqb: mvl xmd +bud: mno xzm nkp +xrf: sum gyg +vkr: xxs wat dwh +gxk: out +nzq: lco +lcx: ukv yta eny vkq fhd gmc pnh uor cew +rjq: tje zkz +fhz: fft hak +xxh: xjo gwd +lvg: oyn +zbg: ysi +mqs: aww stn qbe els oln +uor: tjo ups +jzs: hvg fft +ufh: mmd sum +xpa: huh kzf spp +oia: lkx xpq +imw: kvy guy +tpt: ufb asi +mzb: wfb rfz sps +unx: sqm +ykg: out +rzq: els aww +hrc: fbs clx +tfl: lft nce ufh wjh +fuv: vdq gxk ezs +abi: wqi +ysi: kjy +rkh: zww wqi ikh +vtx: fuv npv zkc +wzr: niz rbe qso +wat: lkt hux tth lad +rgc: iqo jok +hty: vux rmo +ium: stn els oln aww +pfb: kuc +xzk: qft gfx fug fjj abi jmw fay ycs vdg mnc +uix: xmd fto +fug: ikh +qwp: ium ykj jzl +lco: asi cvj +cji: evd rzq kjy +scd: gyg clx sum mmd +isv: icv akf orc +pda: cmj +ypx: out +qxn: aww qbe oln stn els +gyg: apx lwp vqb yes fpe sak bfo jsl ysq jxj txn fej wec zdm rzx tcj eit +kvy: oif mmw vhu zgs +zao: toh pgw yqv +cgm: nnm gyk +uef: kth +wcn: out +lqv: vmi +nvf: yqv weg toh +nmg: lbv +htl: kpp lcx +oao: znu cwu +fjj: ikh wqi +orc: xmd mvl fto +tji: mmd fbs clx sum +gwd: qso niz +ilb: nkp xzm mno +ahr: dep +ocg: bgh xjr igy oht bzh +dac: pda vmi bhz rjb tcc +kpp: bwh xgj byk cew uor gmc +lyi: cvj ufb ozn +bzh: fto mvl lcx kpp +tog: qwp +izt: fxy +vhu: fcn +rms: els qbe oln +tth: yrk tqj ojt +bwe: vdq gxk ley +oks: mvl xmd kpp diff --git a/day11/sample b/day11/sample new file mode 100644 index 0000000..01e5b43 --- /dev/null +++ b/day11/sample @@ -0,0 +1,10 @@ +aaa: you hhh +you: bbb ccc +bbb: ddd eee +ccc: ddd eee fff +ddd: ggg +eee: out +fff: out +ggg: out +hhh: ccc fff iii +iii: out diff --git a/day11/sol.py b/day11/sol.py new file mode 100644 index 0000000..eb444f9 --- /dev/null +++ b/day11/sol.py @@ -0,0 +1,36 @@ +import heapq +def solve(input): + G = {} + V = [] + for line in open(input): + parts = line.split() + v = parts.pop(0).strip(':') + V.append(v) + G[v] = parts + + extra = [e for edges in G.values() for e in edges if e not in V] + V += extra + for v in extra: + G[v] = [] + + + Q = [(0,'you')] + dist = {} + paths = {v:0 for v in V} + paths['you'] = 1 + while Q: + cost, v = heapq.heappop(Q) + if v in dist: + continue + dist[v] = cost + for e in G[v]: + if e not in dist: + heapq.heappush(Q, (cost+1, e)) + paths[e] += paths[v] + print(paths) + print(paths['out']) + + + +solve("sample") +solve("input")