From ef644da9f01e38d8459c5d668ee48115c5e14f2d Mon Sep 17 00:00:00 2001 From: Katie <5213160+KatieLG@users.noreply.github.com> Date: Mon, 23 Dec 2024 07:34:04 +0000 Subject: [PATCH] day23 python --- AOC/data/day_23/dataset.txt | 3380 +++++++++++++++++++++++++++ AOC/data/day_23/sample_part_one.txt | 32 + AOC/data/day_23/sample_part_two.txt | 32 + AOC/python/solutions/day_23.py | 53 + 4 files changed, 3497 insertions(+) create mode 100644 AOC/data/day_23/dataset.txt create mode 100644 AOC/data/day_23/sample_part_one.txt create mode 100644 AOC/data/day_23/sample_part_two.txt create mode 100644 AOC/python/solutions/day_23.py diff --git a/AOC/data/day_23/dataset.txt b/AOC/data/day_23/dataset.txt new file mode 100644 index 0000000..f263568 --- /dev/null +++ b/AOC/data/day_23/dataset.txt @@ -0,0 +1,3380 @@ +qn-ub +ra-sg +zx-kx +go-xf +kz-fc +vb-sp +mt-oc +da-xb +hu-gq +cg-nn +le-lw +zk-uf +ss-wn +yg-mf +vw-pe +bc-jp +xb-qi +jd-fj +en-os +du-ha +zo-rx +ss-jf +xs-zt +an-wj +ua-pj +am-tq +ae-pb +gy-ce +yp-qk +qs-cw +da-qi +nu-cr +wp-ui +jn-im +zm-pq +gc-yl +cs-xs +wo-xx +bo-cg +nu-nt +pr-op +ha-bm +qm-ld +go-ef +wo-jp +cq-sf +dh-sm +wy-bl +av-wg +fa-ue +eo-qz +fk-mj +mh-bi +ui-lt +ep-og +jg-oa +yb-ft +sz-oo +jl-yu +cb-lo +ln-hu +ak-ou +yx-gg +cr-ag +pj-al +kl-os +hl-zp +yj-lp +li-rz +qr-uh +qs-tx +mj-eq +bd-ev +jm-kh +et-oy +br-ku +na-em +mw-rn +sx-fw +og-wq +rs-bu +bl-tt +hg-ba +qs-sb +la-tu +ab-ma +eq-ca +ex-uz +iz-we +kn-of +nd-jf +wh-gb +pj-gz +et-lz +xq-ga +tw-ew +sv-im +uv-xl +ud-hx +jf-eo +kd-xo +jb-sa +og-vz +jm-sg +cg-lg +ol-vd +dm-qv +vq-mw +id-pr +tk-cp +dw-hn +ai-oy +rm-xe +vy-xb +gx-rw +di-to +fl-gc +vm-go +db-kh +ap-vm +nv-ua +eu-zi +gt-la +df-xa +xz-ig +lv-bs +ch-mj +za-bz +mh-vz +ta-wc +qp-qv +gv-mw +ju-xo +tt-sa +pc-js +cc-vn +ca-it +hw-mc +qy-rq +iw-xg +di-if +an-gf +gi-wj +yn-rk +sp-fz +ps-fq +gy-zp +hq-fc +uw-jx +pd-zm +ho-uo +gm-ni +ei-wv +vj-gn +dt-de +ss-ys +oc-jy +bw-nm +hl-ci +uv-ry +jn-bb +vn-yz +sg-ms +jf-dr +ox-dp +pe-yy +he-dd +ei-gw +fr-ic +ag-qw +ht-pa +sf-gl +hq-ea +xx-rs +bc-fh +uf-yu +bf-qz +pl-ye +dg-xo +rf-ui +uu-xc +gi-xp +yt-ll +qm-zc +zp-yy +qf-sa +sq-od +rz-yg +gh-sp +ui-rx +lp-qk +jb-hf +fp-ru +xv-gy +uo-un +dm-ug +ln-hx +ux-zc +zr-ic +tv-jz +kz-wx +xx-ed +ld-ij +ab-yt +wm-vx +rv-ww +tn-ym +fj-vm +se-sp +yy-mz +ds-qq +nd-od +tl-jc +ym-xz +ro-ql +vj-jh +fj-zv +yv-kh +zb-ff +lv-tq +nc-dp +mp-ko +aj-hk +yx-ch +vx-hn +vh-zw +py-xk +ue-rg +ek-ma +co-ed +ll-qn +ox-nc +lo-tw +uw-as +sk-sv +at-bi +cj-rx +bi-wq +za-fx +ui-zo +di-qp +fq-sp +bf-dq +vo-gb +lk-yd +gp-mp +zu-jk +ch-je +sm-rh +gm-fm +nq-gl +ig-aa +vd-sp +zt-cs +dx-uy +ld-uo +sk-wx +ka-pl +jh-ht +ha-yk +wu-xz +hm-fk +tl-xf +io-uf +jj-yb +zd-lz +fq-je +ht-kl +ee-le +qf-bl +yn-xp +mb-nv +xa-nz +ji-sb +gb-jl +nx-vv +ff-bb +vr-ow +rs-sr +ok-nc +cw-gx +wy-hf +dn-sp +cc-mw +ou-gw +ep-dy +rb-ld +sf-nq +rg-kc +qy-sw +eu-nh +yp-ij +py-ah +bz-zb +ai-ul +ga-rn +mp-nn +wp-sn +cu-as +jf-aw +ky-ze +eu-bp +hm-zb +wl-bf +yt-xa +pc-ao +az-ty +pq-kx +lw-kd +jh-pd +qr-nh +qs-ou +by-bu +wu-so +fm-ve +kd-ok +ds-yg +eq-it +ix-nx +bc-jj +uy-zm +mc-sx +av-yk +bt-uz +mj-gg +cb-me +ul-oy +fu-vt +ro-cr +lv-oj +ng-rr +rs-gn +xs-hk +dt-zb +ah-at +xq-dx +gx-ak +ca-er +qw-yq +dw-vv +rq-yb +ps-ab +nh-uh +vn-as +zo-sn +bq-pl +lw-dp +fj-ap +rv-nm +se-fz +du-va +vn-zu +fz-it +ti-gi +ze-jm +cx-bt +rz-ow +wi-gm +at-xh +xe-sa +or-ub +dm-qp +sj-zu +en-qn +ng-df +ab-xc +gf-uu +tk-no +nz-jk +od-dr +qk-fa +jx-cc +ka-oj +er-yx +ph-vc +pk-vj +yw-jr +xo-ok +rv-zd +we-bl +pd-pq +bu-iv +yc-mp +zu-vh +dm-oc +hu-ht +la-iw +kh-sg +pb-yk +nd-aw +qj-aj +uz-qf +bz-jn +ic-nu +wg-yk +ix-dw +qm-rw +ye-dl +df-iq +iz-gg +jp-by +mn-hk +id-uq +kc-td +xp-hf +yp-sl +aj-nq +ry-go +kv-ed +iz-ca +aa-fu +sz-hw +li-hy +gy-or +cj-sn +sg-gz +lv-kh +io-jl +yz-rg +ao-hz +tq-bs +iw-oo +ot-gw +rm-ak +zt-qj +ol-gh +ky-fx +lt-zo +fu-hq +or-yy +mu-kk +vm-zv +hk-qb +iv-ed +dr-nd +ym-fn +rn-dx +zd-ww +se-vb +sx-iw +cx-ex +ow-mf +kv-gn +ux-fa +ek-xa +bt-bl +vc-vo +xw-cv +sw-pm +ga-hv +mc-in +yz-ux +bo-ao +rl-sw +wl-cp +qz-ba +oa-yr +yg-jg +ow-li +gp-nn +as-jx +wc-uz +xv-yy +rf-kp +dp-ee +vw-ce +ds-li +rg-fi +br-fn +rh-nv +ln-nx +hm-iz +un-gy +xh-ep +in-iw +ou-tx +ba-oq +mc-iw +bb-im +xo-st +jh-pq +ng-mb +zc-kc +od-ss +we-mj +nv-sm +mb-cb +sw-jj +sx-oo +vr-of +jk-as +yp-lp +pd-sl +sg-db +wh-vl +kq-tq +yo-co +ou-xe +ve-rw +rb-hx +jq-uu +zm-pk +mx-vb +or-tj +rl-rq +vx-jh +bi-xh +fy-hf +py-ru +kr-lg +in-xo +fr-hl +os-ev +aw-lq +cb-tr +uu-yn +qk-wk +du-av +uu-uf +kc-au +vq-vh +ra-jm +gt-hw +wj-rk +hq-tb +jg-sm +im-yf +tr-mb +qk-yj +wq-ep +sk-su +et-nm +fo-ot +ea-gd +jh-sl +sq-dr +if-qh +dm-di +lr-rn +av-ha +an-uu +gb-cq +ul-jn +wp-lt +zs-nc +kd-nc +gc-ff +hz-to +bp-qr +sa-ex +cc-pd +bd-uw +ak-gw +gm-da +gv-uw +jd-ap +lc-vy +mq-iv +gz-jm +yf-xa +bx-uv +mu-oo +dy-wu +nb-eg +ai-bw +sx-la +nx-em +mw-uw +rf-ty +gc-zb +cw-ak +yk-pr +qf-cx +bo-lg +lm-sn +fk-ca +lo-me +ha-fc +ef-ap +rb-qm +fd-pq +xv-jz +ae-av +hs-xp +sn-ui +sz-la +gq-ev +hb-dd +hq-aa +fu-kz +zx-sl +zv-ef +nj-wp +nq-hk +er-ch +hw-sx +ox-kd +vq-gv +fy-uz +xe-ak +vr-rz +iz-eq +oq-tk +kp-ui +cj-ty +tn-ku +no-dq +ib-il +wv-pj +le-zs +hn-sl +te-ds +vw-or +sd-ys +nn-lg +nb-sp +zt-mn +qd-mp +ig-ku +eo-oq +gm-vy +lq-jf +xp-xc +og-mh +zi-xq +tn-xz +cz-ba +as-sj +ro-nu +ia-hl +ae-op +cd-ps +tt-jb +to-dm +bu-hg +yf-dq +fp-ls +dl-oj +nj-ui +st-ee +mc-kk +ix-bh +vd-gh +sm-yr +st-zs +sb-ak +ue-ux +it-yx +jg-yr +lp-il +zw-vq +dd-rw +zb-fl +gx-gw +gv-vh +dh-pj +ot-cw +xk-xh +la-mc +ql-ww +fk-me +iv-lg +qf-hf +lv-cn +zs-ye +ah-bi +wk-lk +to-ml +rq-fp +vb-vd +bo-gp +vw-gs +yv-fx +ka-bs +vb-pi +rv-ai +fw-mu +zd-ac +vy-ni +nq-cs +tj-ce +mu-hu +ul-ac +dt-jn +po-tq +py-bi +zw-on +dg-st +xu-nx +lr-bj +hb-he +ze-ra +ws-yw +no-cz +xf-fj +hg-cp +eq-er +kc-bj +pq-wm +bs-bq +ew-iq +ah-xk +zb-im +ql-et +cq-yu +wu-tn +fz-ol +ng-ew +fd-pl +on-dn +ys-wg +qn-bd +ju-lw +iw-fw +yr-fg +az-rx +zx-vx +pi-sp +ib-wk +zk-po +sc-ij +ua-jg +ty-rx +ek-cd +gd-kz +du-bm +os-am +rl-bc +wa-ij +ca-mj +lg-ko +aj-gl +lr-ux +nj-sn +dl-ji +ot-tx +zv-do +ru-og +vt-jj +tn-fn +uh-vl +rs-wo +gn-th +wi-qi +yw-jk +oy-lz +rg-td +ds-mf +gy-yy +ta-ps +no-bf +jd-do +jg-pj +lr-zc +xe-ff +vd-nb +yv-gx +cu-pm +gn-ed +wk-yj +yl-qw +id-yk +go-jd +vb-eg +vw-gy +xs-nq +az-lt +bd-en +vt-fp +ht-gq +qi-jr +lt-lm +ff-ol +jl-cq +tq-pl +pg-bl +ah-ep +ma-wc +jg-zz +vy-jr +ai-nm +il-ph +cx-tt +hv-eu +hy-te +am-pl +ku-dy +so-tn +tk-hg +tj-vw +ex-fy +jl-wh +xx-th +qi-ws +vi-ti +uw-vq +dz-mf +pc-kr +tj-tv +js-sb +le-xo +tt-bt +hg-eo +dr-ss +dt-gc +ei-pj +ef-do +dl-ka +ow-hy +kv-wo +en-kl +yu-vo +hs-an +bs-oj +zv-xf +ka-am +xb-yw +nt-ir +sj-uw +dm-hz +hv-dx +pc-qd +pe-gy +ua-ei +yw-wi +er-fk +cb-iq +bo-qd +tz-tl +bf-tk +rn-eu +ft-bc +og-hi +ey-fa +nn-kr +yc-bo +fi-kc +sx-sz +ro-fr +tl-go +bt-ex +fy-cx +mt-ba +qw-ff +ox-le +ps-xa +mu-hw +yr-rh +ag-ia +ld-ve +tz-sz +am-kq +jc-zv +il-wk +sn-kp +nh-xq +ds-rz +bf-cp +jj-rq +sm-wv +wv-rh +ds-hy +xh-yu +sb-tx +xu-vv +vm-xf +vl-cq +dz-te +dz-rz +le-st +eq-ch +zi-bp +wa-yp +ir-ro +jz-tj +po-cq +jy-mt +yq-bb +zk-vo +ku-xl +td-xm +dg-ju +oo-kk +tb-sv +go-ap +gi-vi +xj-qm +au-yv +tz-zv +ze-fx +pc-gp +if-ug +qy-zg +vy-wi +qk-sc +tk-qz +sr-cr +hn-pq +ve-uo +lz-ac +vc-io +wm-hn +nz-ta +fj-rl +lv-ye +wq-py +id-va +dl-tq +bh-nx +jy-if +dd-xj +cd-yf +at-nj +hk-qj +kk-hw +nz-ps +uo-rw +en-pn +mx-dw +iw-mu +py-hi +ud-ix +fs-bf +uv-tn +ij-lk +vc-zk +ub-os +wn-co +ng-te +tq-mi +eo-tk +if-hz +je-cd +os-ll +vi-xp +pf-hx +aa-ea +rv-oy +zm-hn +lo-ng +pn-hu +he-ve +bu-gn +if-mt +sz-fw +as-zw +fi-ey +jr-da +pq-vj +cz-cp +vr-ds +qq-vr +al-dh +uh-rn +cq-vc +bs-ye +lt-sn +vr-li +ok-ox +wn-dr +mt-qh +no-qz +xw-cb +ao-nn +gg-ca +mw-jx +oo-gt +dy-so +at-wq +yd-eq +gt-gd +gq-qn +ef-tl +nx-mx +lt-rf +su-tb +jp-xx +tv-or +xe-fo +hn-xj +wk-yp +cd-xa +xj-hb +vh-mw +ta-xa +ze-za +qb-zt +tv-mz +fz-vb +nc-ee +oc-ml +df-lo +tx-ak +st-ok +li-yg +xt-ij +ym-ku +yl-fl +ka-tq +hn-kx +qi-lc +id-av +lr-xm +wj-yn +dq-oq +ic-ro +fi-lr +gi-uu +ef-vm +fe-zi +dy-ym +gb-vw +hw-oo +jd-xf +kp-az +vc-gb +ix-mx +od-aw +yf-ps +kk-sz +rg-ey +jc-ef +ro-ia +ql-ai +qp-ml +bw-ql +yu-zk +bg-er +pq-vx +ww-ny +le-dp +cc-vq +po-gb +ty-zo +cv-tr +eu-kl +dl-bq +pi-dn +kv-by +by-th +fo-tx +ek-fq +cz-bf +zr-cr +uv-so +wy-qf +ng-xw +da-vy +yb-fh +rr-tw +dp-kd +ue-td +he-ld +sl-pk +jq-ti +kv-di +xv-mz +uy-eu +lc-xb +ql-rv +am-dl +qw-fl +wm-zm +kl-gq +ek-ab +jg-al +vq-kk +re-vz +ag-ci +ft-qy +wc-ab +df-tr +rg-bj +dt-bz +br-xl +fe-uh +cb-ng +oq-wl +xh-ah +or-jz +zc-ey +rf-wp +su-fc +cd-wc +xz-uv +qq-yg +fx-tn +po-uf +xv-gs +ry-jc +se-on +nj-az +qf-ex +ev-pa +wm-ta +pm-xs +wg-du +fn-so +mc-tu +ga-bp +rq-sw +yd-ib +nd-yo +vt-ft +wp-ty +wx-tb +te-rz +yy-ce +kz-sk +in-la +jc-tz +ty-lm +rm-tx +pk-wm +zu-uw +fz-oz +ua-yr +eu-fe +hg-dq +jj-fp +oz-pi +sx-tk +to-ug +pr-wg +lo-xw +pf-ud +de-ff +ah-mh +jp-mq +dw-pf +gd-wx +jm-mo +pi-se +hz-jy +va-bm +pg-uz +dm-if +zk-gb +rm-fo +wg-ae +dh-ua +wl-hg +dx-fe +lr-kc +qm-ve +ab-fq +fi-yz +gh-fz +uo-kn +ew-mb +yu-ph +jb-fy +it-iz +ue-xm +os-ht +td-ey +fk-we +em-hx +dh-jg +fd-pk +mj-hm +vt-sw +tv-xv +xp-gf +sm-zz +mn-pm +le-ok +su-sv +jj-qy +br-uv +ix-hx +ok-zs +ch-iz +gw-xe +fm-yw +yc-nn +rq-bc +bc-ls +li-dz +am-cn +ni-qi +nb-pi +il-wa +xw-tr +wo-xg +aj-sf +wj-ti +co-ys +qk-ij +ot-gx +fw-in +ed-mq +jq-gf +sr-nt +yz-td +qs-me +pa-en +xv-or +xz-qy +or-pe +cw-ji +kk-in +ng-iq +gq-ll +se-oz +uf-wh +jz-gy +on-gh +qm-ms +do-ry +ga-qr +tz-fj +uh-bp +qd-cg +hv-fe +jk-vq +oz-dn +ho-qm +uq-ha +mj-bg +hs-rk +et-ai +th-rs +cw-tx +yj-yp +xj-un +rb-uo +qp-to +sk-kp +qd-ko +fy-pg +wu-xl +yg-ow +qb-cb +bx-ku +az-ui +dq-fs +fc-ea +pm-hk +oy-nm +xh-mh +bw-lz +xl-xz +na-xu +au-fx +uw-vn +ds-kn +rf-zo +gg-it +jh-zm +ek-cs +sj-gv +bw-ww +dd-ve +yj-wv +cp-qz +zi-uy +wu-ig +gp-js +rq-vt +ew-xw +wh-po +jq-hs +fn-xz +tj-gs +un-ho +za-ra +an-ti +vo-cq +xm-wh +fl-bz +ju-ee +sz-gt +bl-sa +na-ix +ux-ey +lk-qk +mq-kv +bx-tn +fl-nq +sq-lz +ug-oc +lq-sd +jb-cx +ga-dx +rh-zz +ze-db +by-aa +ul-bw +ul-nm +ub-hu +tq-oj +fk-iz +fl-dt +ru-at +ud-em +gb-yu +vt-rl +cg-mp +xe-cw +hf-cx +gv-jx +jx-vh +bj-tv +kd-xl +by-iv +mf-fk +zw-sj +fl-ff +of-dz +ef-xf +sq-nd +ju-dp +ug-qp +xt-yd +lc-wi +pk-pd +eg-vd +qy-bc +ot-ia +av-pb +ko-js +tb-fu +zd-bw +tn-br +kh-ky +gn-xg +fo-gw +zi-rn +er-we +xb-gm +fh-zg +ao-cg +gn-xx +xm-fi +vb-nb +oo-in +gh-eg +eq-yx +ha-pb +qf-fy +vr-te +wl-cz +ce-gs +kl-qn +dr-vm +cw-rm +wl-dz +aj-xs +wx-su +av-op +js-bo +vt-ls +ps-ek +op-pb +ei-oa +rg-ux +pf-xu +zz-oa +yz-ue +oa-dh +qj-gl +wg-id +gq-pn +zz-dh +un-he +lk-ib +bz-de +tw-ng +wy-bt +sk-hq +gz-kh +ds-dz +ln-ix +pa-bd +hz-ls +fk-yx +ug-qv +uz-qh +na-hx +cs-aj +vi-yn +yv-sg +qi-hy +ci-ic +lc-en +he-qm +ao-ko +un-ld +sx-ah +fn-dy +ba-dq +xq-eu +kh-mo +hn-zx +ny-zd +lk-sc +ma-yt +gh-ny +vy-gs +du-uq +nn-pc +mz-pe +kd-ju +qy-fp +sc-lp +pe-ce +il-lk +za-db +iq-xw +cb-df +rr-iq +fq-xa +ew-df +hl-ic +oo-fw +ao-qd +ca-hm +zd-ql +ee-zs +je-ma +ep-at +vm-ry +xo-nc +mz-vw +qi-fm +za-iz +uy-ga +rb-he +ko-nn +rq-ls +nq-mn +bm-wu +zi-ma +uv-ig +hf-sa +st-ju +ol-eg +on-pi +xt-lp +hq-su +ox-lw +et-ul +dn-fz +pl-oj +ug-qh +sl-vx +bd-gq +fa-rg +ji-tx +ny-ql +xl-ga +bj-yz +ln-ud +mh-ep +hs-yn +kh-za +oo-la +og-xh +wl-eo +nc-dg +rb-hb +bm-wg +vr-ey +pg-qf +ah-hi +fd-hn +nv-dh +oz-vb +dq-wl +by-mq +iz-er +go-jc +bb-yl +bz-gc +it-er +if-to +wp-rx +qn-yp +mf-hy +as-vh +qb-xs +lp-jd +fc-sv +ba-tk +lo-iq +zt-aj +nd-if +we-yx +ni-wi +jb-wy +tt-pg +cz-oq +xf-qp +mh-wq +hm-gg +jl-vl +kn-ow +ia-ic +je-ab +fi-bj +yj-il +sl-fd +we-bg +tv-pe +sd-co +lg-pe +gx-ou +ae-du +ju-ok +xl-so +dl-kq +sv-re +ux-fi +im-fl +ab-nz +pf-na +wa-ib +am-bq +dm-qh +hi-mh +ed-by +kn-yg +fs-ku +tj-it +zz-nm +hw-la +bi-ru +al-nv +ms-xj +pe-zp +zv-go +ky-ra +nn-js +rk-uu +ws-wi +il-yd +ey-lr +py-mh +av-pr +ib-xt +dx-eu +cj-lt +de-qw +bi-tw +dx-ac +di-ug +ra-mo +bm-pr +zu-jx +sb-fo +jy-to +cw-zp +ga-zi +ea-tb +eq-gg +ry-zv +xv-tj +xj-kl +tv-zp +tv-gs +pd-vj +yj-sc +ex-pg +rm-sb +fu-sk +jd-zv +jy-qv +xo-dp +ef-jd +ji-gw +mb-iq +am-ye +nh-zi +ta-yf +na-dw +qq-rz +wa-xt +fg-qi +yw-ni +lg-js +re-kz +tl-ap +wq-pb +fy-sa +yo-ss +di-ml +fi-rq +he-xj +aw-ys +zo-az +dm-ml +ei-zz +uq-pb +ho-dd +fq-nz +po-vc +lw-ee +sk-gd +du-pr +am-mi +fg-fm +kp-rx +ql-lz +zm-vx +vo-vl +de-yl +pr-oq +co-jf +an-vi +ft-rq +cr-ia +ro-nt +nd-ys +by-wo +nv-ei +gf-xc +eq-hm +yb-zg +ig-ym +gy-tv +hg-fs +vo-wh +rg-xm +ru-vz +jk-sj +ud-zk +fh-ls +rx-lt +gg-ch +st-ox +cw-sb +xw-mb +bd-ub +ev-ht +qv-to +ir-ua +ea-sv +va-av +fg-gm +wn-yo +cz-dq +su-ea +al-wv +ea-re +qq-li +jm-yv +bq-ye +fg-xb +aw-kz +fu-fc +ta-cd +tu-gt +aa-gd +fr-nu +dt-im +oc-qp +zp-ce +ag-ro +bw-ny +mq-wo +xg-jp +cx-pg +rb-rw +ry-tl +of-yg +mp-kr +uu-hs +sn-az +pm-aj +ms-rw +xo-ee +qh-ml +wa-db +mz-gy +dy-ig +no-oq +eu-uh +jp-gn +zr-ag +qi-gm +rn-bp +yu-po +ys-wn +jb-pg +iv-xx +so-ig +jp-kv +bo-pc +oo-mc +rx-nj +ky-jm +cd-ma +ci-nt +mu-la +yk-uq +tw-tr +jm-fx +sb-ou +cp-oq +wn-aw +tz-xf +aa-sk +so-fw +nz-ek +xb-ws +zc-fi +gs-rz +ul-ww +lz-ny +gf-zw +ma-xa +wx-hq +yq-pf +fu-re +yx-mj +ic-ir +au-mo +sk-tb +gd-sv +iz-mj +jx-vq +dh-jb +vn-mw +tb-kz +og-py +xb-ni +cq-wh +ao-gp +wv-ua +qk-xt +qm-un +pk-jh +ag-sr +bg-ch +xf-ap +og-at +pj-yr +xj-rb +xc-vi +xm-yz +xq-qr +uf-jl +lp-ij +lw-dg +tt-hf +ht-bd +xk-ep +gv-as +pb-wg +yp-lk +wc-xa +dt-bb +xw-df +xk-mh +ps-ma +fx-gz +rf-lm +jc-jd +rl-fp +dl-lv +gw-tx +qy-ls +kx-fd +wj-gf +pn-bd +wj-ai +ag-nu +de-zb +lq-ys +rm-qs +pj-rh +zg-bf +ac-ww +so-br +kc-yz +pm-qj +bl-cx +vl-gb +nb-se +of-mf +fh-sw +jx-jk +sd-jf +hs-vi +yl-zb +nj-lm +mo-ze +qp-hz +so-bx +ib-li +cd-ab +cp-ba +va-pr +ry-ap +jz-rh +an-gi +ic-nt +op-wg +pe-tj +pf-nx +mx-ud +yl-jn +au-za +su-kz +ma-ta +xq-fe +rn-xq +fs-tk +ub-pn +tv-vw +yp-ib +hq-gd +pr-ae +ww-iq +co-od +de-ds +ci-fr +mi-pl +pb-du +db-au +ye-kq +wg-ha +di-qv +qp-mt +db-mo +cz-eo +cu-sf +rv-bw +ev-pn +bi-hi +da-vo +mu-tu +sc-il +kd-st +we-hm +qs-ji +ew-me +do-ap +xb-jr +bu-wo +na-oy +dd-qm +tr-rr +yz-zc +dx-qr +hy-yg +qs-xe +za-jm +fu-su +fx-db +ed-jp +bx-br +mf-qq +su-aa +yo-ys +cq-uf +mq-lt +yr-nv +uq-pr +yl-yq +ht-en +ey-kc +vh-uw +hk-cs +za-yv +yd-lp +da-wi +de-yq +ue-lr +nm-ny +fm-ws +oz-ol +wh-ph +xt-wk +ka-lv +jq-gi +bx-xz +mx-hx +az-cj +sb-gx +iv-jp +ix-pf +cd-xu +tz-jd +oq-bf +cv-ew +kx-zm +qr-yn +qy-vt +oc-hz +jf-sq +an-rk +xf-jc +gf-hs +ch-fk +wo-bx +jl-vc +gh-pi +rb-ms +br-wu +ph-vo +mx-ln +yq-jn +vx-fd +yd-sc +ig-tn +tk-cz +hk-zt +rr-df +lo-cv +od-wn +sg-au +bl-uz +dz-kn +da-yw +rm-gw +ph-io +jq-tr +ml-mt +gt-iw +ru-xh +rk-vi +pb-pr +sc-wk +jy-ix +cb-ew +rv-cx +ba-bf +ra-gz +qj-pa +em-hs +ms-dd +yy-vw +sv-wx +qh-oc +al-zz +js-cg +vx-rk +eq-fk +fw-mc +zb-qw +rs-ed +yp-sc +ui-ml +yf-yt +aj-cu +rf-nj +qj-qb +ku-wu +vc-uf +xb-yx +pk-hn +fl-yq +im-yl +tz-do +yf-wc +uq-ae +cz-fs +hm-yx +al-yr +ak-ot +jb-ex +nx-bs +fq-cd +yg-te +ra-io +kc-ue +se-pk +fo-ou +bu-xx +li-mf +ce-tv +aw-ss +sk-ea +gd-fu +te-qq +jq-rk +vr-mf +ep-ru +ti-yn +qp-jy +yn-jq +ew-tr +pg-sa +he-uo +cu-nq +lz-rv +fy-tt +dn-ol +uz-jb +ft-sw +uy-rn +fn-uv +ls-jj +ir-ag +ue-fi +xl-tn +mt-ug +gp-ko +wl-fs +lp-wa +xc-wj +fh-qy +sn-rf +em-dw +tu-oo +we-gg +it-ch +lr-td +wx-aa +zt-nq +ps-wc +zw-vn +ua-al +cg-kr +tn-dy +sf-xs +sd-yo +de-bb +zu-cc +de-jn +mj-it +ma-nz +sx-tu +vi-wj +nx-ud +or-ce +hm-bg +pn-ux +va-ae +oc-hq +ps-je +th-kv +kr-ao +ox-ee +tu-sz +bs-pl +vz-xh +fw-tu +xw-me +yp-il +cw-ou +mz-or +ht-qn +wl-ba +xo-ox +xu-ud +pl-kq +mt-dm +ml-qv +di-yk +uq-av +os-pa +iq-cv +rl-yb +fo-ji +pc-lg +hx-xu +mi-kq +zt-sf +zr-fr +yu-vc +vv-na +vv-ud +ub-ll +xq-uy +cu-xs +xl-fn +au-ze +gs-gy +ae-ha +ab-ta +cn-tq +rb-un +zr-ia +fh-jj +re-hq +hb-un +sg-ze +ux-bj +jl-po +di-mt +xm-ey +je-xa +qd-js +wp-lm +dw-hx +wy-pg +je-yt +mz-gs +cg-yc +sv-fu +eg-se +hy-kn +gz-yv +dy-uv +eg-pi +ta-fq +vj-vx +st-nc +di-qh +je-ta +sl-vj +qn-ev +lq-ig +ys-he +sz-in +yg-ky +vd-on +td-zc +fs-qz +on-ol +cx-sa +yl-dt +wi-xb +do-go +ky-db +lw-xo +xc-ti +fz-on +fo-gx +tu-kk +fg-ni +yt-cd +jp-rs +je-wc +em-bh +th-xg +rr-xv +yu-wh +rk-xc +qz-dq +ps-yt +ji-ou +qk-il +sm-bg +nz-yf +gz-ze +os-bd +oq-fs +fa-yz +vz-bi +hy-of +ql-ac +vd-dn +pe-gs +wv-yr +re-su +bl-jb +yd-yj +nu-ia +pn-pa +sz-mc +mc-gt +ds-ow +mo-za +vl-uf +nq-qj +on-oz +fr-ir +xz-so +bq-mi +jb-bt +vy-ws +th-ef +cn-pl +zm-fd +bc-vt +xc-hs +bp-ho +ox-dg +qz-wl +nx-hx +pf-bh +vb-dn +gv-zu +in-sd +ty-ui +ed-xg +eo-no +vj-zm +le-zv +ib-yj +vi-ev +nu-zr +ij-yj +hf-uz +uq-op +qq-ow +yp-xt +xe-sb +pf-ln +pj-sm +rw-ho +hs-wj +mo-fx +ui-lm +vj-fd +ek-ta +st-qz +fe-uy +pa-qn +ey-ue +xh-wq +ia-sr +hi-ug +os-pn +en-ll +fh-rq +cr-fr +lg-ao +bz-yl +xo-zs +wn-ep +fz-nb +xs-mn +bi-xk +ls-sw +hq-sv +ew-lo +kr-bo +em-jx +io-vo +gt-kk +bb-zb +tb-re +iv-xg +nm-ww +fh-rl +cr-gi +fq-ma +sq-lq +ic-ca +yq-bz +wa-qk +db-yv +sf-qb +bs-am +kp-lm +tz-ap +vw-xv +ru-xk +cj-kp +oj-bq +dq-eo +rw-he +bz-im +vz-xk +tl-fj +ex-bl +jl-ph +sc-ib +qp-qh +mx-xu +bj-td +gx-ji +qv-oc +fm-vy +tb-fc +mu-gt +ue-zc +sl-zm +xj-rw +se-ol +mq-bu +jc-fj +iv-wo +th-ed +re-sk +hl-cr +kh-ze +yn-gi +yo-od +nh-rn +fs-cp +wc-yt +ft-fp +sr-zr +gl-xs +ra-au +pr-ha +cr-nt +gf-vi +le-dg +ft-jj +nj-cj +jk-cc +sq-wn +pk-vx +tt-wy +et-bw +nu-qf +dd-rb +pn-ht +qv-qh +os-hu +nm-lz +mi-ye +ku-fn +wo-ed +hm-ch +fa-bj +aw-co +vh-sj +kx-vx +lz-ai +oo-gp +hl-ag +mq-xx +gt-fw +nh-hv +ae-yk +uv-ku +ye-oj +ee-xg +uy-hv +yt-nz +bx-ym +kl-pa +rz-mf +rb-ho +hk-nm +kq-bq +mu-sx +zg-ls +ro-zr +ib-ij +td-fa +gc-de +fa-kc +by-xx +ll-hu +nh-fe +yx-ca +zx-vj +vc-sj +cb-rr +yc-js +rh-jg +ij-wk +ms-ho +in-tu +ae-bm +fc-gd +hf-pg +kl-pn +ci-ia +ht-ub +rb-ve +qm-hb +lw-su +un-ve +tl-jd +fk-bg +ko-yc +zt-gl +gb-ph +tj-mz +oc-to +oa-nv +xp-uu +fa-zc +kl-ev +ga-fe +vl-io +tw-mb +ee-kd +rv-et +zd-ul +pa-gq +lw-st +jk-vh +jz-gs +go-fj +ao-js +pc-yc +yv-ra +bt-qr +or-zp +br-dy +zx-zm +of-li +ab-xa +xc-gi +oy-ac +lv-mi +sp-ol +cu-gl +qb-pm +xw-rr +nt-wi +fj-ry +bc-fp +kn-mf +zi-hv +op-id +jg-wv +wa-lk +zs-lw +qn-hu +tw-cb +fx-kh +iq-me +ek-yt +vd-nh +xs-ex +bt-sa +dd-cn +hz-mt +ka-kq +mb-rr +fg-vy +st-dp +ma-zd +ji-rm +xe-ji +il-ij +dl-mi +ei-dh +cr-ir +dw-ud +ow-sr +fq-yf +xp-rk +hx-bh +iz-bg +mo-sg +wy-ex +hb-uo +jz-zp +jr-td +zz-pj +zr-ci +lq-yo +sz-iw +em-mx +gx-rm +tq-bq +cs-mn +zz-yr +vy-yw +wa-yj +ny-ul +ir-hl +en-hu +mw-as +mf-te +xv-pe +vv-mn +sx-kk +dz-ow +oa-on +hv-uh +tu-hw +ps-ir +zr-nt +po-vl +df-cv +qq-kn +fn-bx +ni-fm +vz-ep +jy-di +ci-ro +oj-bj +tt-ex +jn-qw +fl-jn +dg-ee +ac-rv +fw-kk +du-dn +pm-nq +bb-bz +lz-ww +jn-zb +rn-fe +tk-dq +jd-ry +sq-ss +db-ra +gs-or +vr-yg +wx-fu +mb-lo +vn-gv +hl-sr +dl-zt +kx-jh +zw-cc +gt-sx +ln-em +da-lc +yk-op +gz-mo +gc-yq +lt-kp +sf-mn +ls-ft +vi-uu +ka-mi +qk-ib +lq-dr +ky-au +ap-zv +tj-gy +uo-ms +sj-vn +gw-cw +zp-xv +zd-et +ln-xu +rs-kv +fn-ty +cx-uz +mn-cu +pf-mx +ss-co +vr-kn +an-ox +ru-mh +hg-oq +mc-mu +xg-by +ia-ir +zx-ql +fr-oz +gn-mq +yx-iz +le-nc +sn-rx +xt-vh +sl-kx +jy-qh +dd-ld +hb-ld +qv-mt +wu-bx +rx-od +hi-ru +rk-gi +kz-hq +do-tl +mi-oj +gg-fk +uz-wy +zr-xw +oy-ww +ka-bq +aa-re +vz-hi +ye-tq +ml-hz +cr-ic +zs-kd +ju-le +eo-fs +vl-ph +dt-yq +of-ds +pm-gl +bh-vv +vm-jd +ch-we +qr-zi +mh-yc +fq-yt +tw-cv +gz-db +ha-op +xp-ti +uf-gb +ze-jr +fx-ra +du-fh +nv-wv +kv-bu +kx-xm +nu-hl +nc-ju +az-wp +gv-kq +xf-ry +ql-ul +df-tw +ei-rh +hg-qz +bp-uy +nd-lq +lc-ws +nd-sd +cc-vh +qs-ot +mo-ci +fd-zx +hz-ug +fp-yb +sg-za +yy-gs +fm-da +xv-ce +ig-bx +na-mx +gm-ws +ra-kh +gh-oz +aj-an +wc-nz +jc-py +fw-hw +bh-dw +rs-xg +uq-wg +no-cp +yw-lc +dz-tx +al-sm +jp-bu +cs-nb +kk-la +ak-ji +id-bm +ou-sc +zu-vq +bb-gc +bc-sw +qq-hy +fz-vd +hu-ev +yc-gp +ys-sq +of-rz +uy-uh +at-mh +cd-nz +tu-iw +pc-mp +zg-la +yr-dh +cs-qj +gh-se +bo-mp +pq-sl +pf-vv +hw-to +od-ys +mo-ky +yf-ab +sv-kz +gx-qs +xg-bu +jm-yy +un-ms +yr-ei +jr-lc +hn-vj +ha-id +tv-yy +ol-nb +gh-dn +pd-hn +cu-cs +kx-vj +ho-ve +pd-kx +yt-ta +wk-lp +fw-la +uf-vo +kz-ea +kk-iw +cj-lm +fs-no +kv-xg +xm-kc +nx-na +et-qq +yb-qy +gn-wo +cb-cv +lq-od +im-qw +mw-jk +al-oa +ia-nt +yq-zb +en-ub +ub-ev +rm-ot +jr-ni +so-ym +ka-cn +wk-yd +kr-jf +tr-lo +wm-sl +sw-fp +zs-ft +fg-da +ss-sd +jj-yc +nv-zz +oa-pj +gf-rk +qq-of +wn-sd +vl-vc +ac-et +gf-ti +hy-vr +ss-nd +tl-vm +dz-hy +rn-hv +ok-nn +wm-vj +gd-su +eg-wy +ek-yf +gl-hk +dt-yn +rl-ls +wc-fq +sq-yo +tb-aa +ot-xe +jq-xc +rq-zg +on-vb +nt-hl +un-dd +bp-dx +io-gb +oa-sm +fe-xu +vt-yb +nc-hi +dr-ys +bo-rf +bs-dl +jc-ap +qf-tt +og-xk +pn-qn +sf-hk +yc-kr +zo-nj +to-qh +wn-jf +mz-wk +dp-dg +ww-ai +oj-am +kn-rz +dx-nh +xx-kv +fr-nt +hv-mi +aw-yo +eq-bg +zc-rg +ci-cr +qb-aj +jq-wj +lg-gp +jq-vi +mb-df +ix-xu +ho-hb +co-sq +tu-wp +lk-lp +zw-gv +zw-jx +lr-rg +gq-ub +dr-aw +th-wo +kc-ux +zi-dx +eq-we +ud-na +yu-io +lc-gm +wa-wk +sz-mu +wq-hi +yd-qk +gx-tx +xh-hi +dy-bx +gl-pq +ak-qs +zp-tj +pk-kx +bh-xu +cs-gl +te-li +bc-zg +ae-dp +kq-cn +ml-jy +ev-en +lq-co +bh-ln +bg-ca +ws-da +ia-fr +en-gq +fd-pd +qw-bz +ka-lk +aa-sv +zi-uh +uo-dd +ah-wq +ju-dm +hg-cz +ny-oy +ga-eu +br-xz +wg-va +zr-ir +co-dr +bj-zc +qr-hv +rl-zg +xl-dy +sr-ro +jr-wi +qb-cu +ol-vb +wx-re +bi-og +ji-ot +sr-ci +cj-do +of-tt +uw-cc +hw-iw +ll-ev +cu-qj +qf-bt +fo-cw +cg-ko +tw-xw +du-yk +vn-jx +nj-lt +fo-gg +au-gz +ag-ic +gf-yn +ek-je +dh-rh +te-of +yv-ze +nm-zd +gi-gf +do-vm +eg-sp +gz-za +pc-cg +pi-ti +ws-ni +dm-jy +zp-mz +me-mb +gq-os +qi-vy +lg-qd +cj-rf +uu-ti +xt-il +pq-pk +jq-xp +fl-de +xf-do +ea-wx +te-ow +ok-dg +dz-qq +gl-qb +va-vm +rx-rf +yb-ls +zx-wm +lv-am +au-kh +td-fi +qv-ym +qz-oq +ky-gz +bm-uq +ym-uv +ve-hb +bp-xq +mo-yv +xz-ku +go-tz +he-ho +xj-ho +zw-mw +av-bm +rs-by +as-zu +ac-ai +iq-tw +jz-yy +ow-of +kx-wm +no-lm +tr-me +jq-an +fm-lc +qb-nq +cs-pm +ko-bo +gd-re +yq-im +ah-ru +iq-tr +py-ep +ty-nj +rh-oa +ok-ee +bl-hf +ga-nh +eg-dn +dw-ln +lz-ul +sj-jx +ce-mz +qr-fe +pl-dl +ru-wq +ac-nm +zw-uw +aw-sq +al-rh +bs-cn +sm-ei +ww-et +eo-ba +sg-fx +gv-cc +ed-bu +mn-aj +wu-uv +cp-eo +hv-bp +ai-zd +ok-dp +av-mj +id-ae +wm-pd +sk-fc +bd-hu +er-gg +rl-ft +dg-ss +gc-qw +jk-gv +fh-fp +sp-oz +ig-fn +xq-sf +xq-hv +mi-bs +pb-bm +uw-jk +go-gm +sw-yb +ue-rm +br-ym +ff-dt +bg-gg +vc-wh +uz-sa +ud-bh +sr-fr +oc-di +uu-wj +ln-vv +pj-nv +op-bm +wh-io +fc-re +ms-hb +lr-yz +bh-na +ox-ju +vl-zk +jz-ce +jg-ei +oj-kq +ku-so +lm-az +yo-jf +kl-ub +yq-ff +xj-ve +jm-db +wp-kp +fr-ag +kp-ty +zs-ju +zx-pd +id-pc +bd-kl +ni-da +uh-dx +vo-jl +sw-zg +zw-zu +zo-kp +ht-ll +cg-gp +qf-jb +xx-id +kr-js +qd-kr +cn-bq +hm-er +jg-nv +as-cc +vh-vn +xp-an +hi-xk +qj-mn +oz-nb +jh-wm +wa-yd +oy-zd +qd-tz +pn-ll +dp-az +ql-oy +de-im +nj-kp +te-kn +rf-az +dz-vr +je-yf +ph-uf +cv-rr +rr-me +ib-lp +yv-ky +ff-yl +in-mu +vz-ah +bd-ll +ll-kl +vv-mx +cn-mi +nc-lw +ey-bj +th-jp +ag-nt +kd-dg +zk-wh +yj-xt +hx-vv +zp-vw +gm-cn +ix-em +ig-br +bq-lv +zk-io +ty-sn +vw-jz +qb-mn +os-qn +dg-zs +on-eg +sr-nu +sm-ua +bg-it +uh-xq +nd-co +ry-ef +bq-ce +fz-eg +ws-fg +lt-ty +yj-lk +vm-jc +em-pf +hb-rw +qp-if +xk-cp +jk-vn +pb-id +zo-cj +xl-ym +ph-cq +bh-fy +ln-na +ci-nu +qj-sf +op-va +pa-ub +cj-wp +jy-ug +yw-gm +hs-gi +uy-nh +fm-jr +jh-zx +bb-qw +qb-cs +mn-gl +fc-aa +kr-ko +jn-gc +rl-jj +cu-zt +fa-xm +pl-lv +mp-lg +ld-ms +wu-fn +th-mq +ny-et +sj-cc +rl-qy +wl-mp +lq-ss +bg-yx +wx-dh +hl-zr +tj-yy +iv-kv +og-mq +lk-xt +yc-ao +wi-fm +wm-fd +ot-sb +li-kn +pm-zt +vz-py +fy-wy +ot-ou +yn-xc +gp-qd +eo-bf +vv-em +io-cq +zg-jj +cz-qz +ua-zz +va-ha +du-op +ng-me +bj-ue +iv-th +pg-bt +un-rw +sf-pm +hg-bf +le-kd +zg-ft +ix-vv +mw-zu +zx-pk +rg-al +sn-yb +wx-fc +fe-bp +cj-ui +me-df +va-uq +pa-ll +bh-mx +vn-vq +fo-ak +xk-at +dn-nb +ew-tt +py-xh +at-hi +if-oc +mb-cv +yo-vt +vo-po +bo-nn +yo-dr +bz-ff +ap-kz +ey-yz +fg-jr +xu-dw +ew-rr +sc-wa +pb-va +tl-tk +sb-gw +hz-qh +tw-ky +me-cv +do-jc +sg-ky +ep-bi +ij-yd +fs-ba +au-jm +fo-qs +gw-qs +yc-qd +va-yk +gn-iv +gn-by +we-it +pe-jz +ou-rm +je-nz +ok-lw +ca-we +ve-ms +rs-iv +xb-fm +tr-ng +hz-qv +wp-zo +pc-ko +td-ux +ux-xm +oa-wv +ng-cv +tb-gd +nu-ir +if-ml +vt-fh +oa-ua +ml-ug +uq-zo +ef-fj +rz-hy +zk-ph +eu-qr +mp-js +cu-hk +mz-jz +wv-zz +xl-bx +jr-ws +no-hg +it-hm +fl-bb +ah-og +ic-sr +no-wl +ny-rv +ac-bw +ea-cz +fz-pi +yl-pg +ym-wu +ni-lc +cn-oj +vx-pd +rs-mq +pi-ol +ga-uh +nn-qd +ws-yd +br-cg +he-ms +sq-sd +eg-oz +hf-ex +jh-po +er-bw +zk-cq +xk-wq +qi-yw +zk-jl +xe-tx +xs-qj +lv-kq +nh-bp +ea-fu +wn-nd +rv-ul +xt-sc +oz-vd +gt-in +al-ei +lc-fg +rx-lm +nx-dw +gh-nb +bt-hf +uy-qr +bm-yk +bb-wv +gq-ph +mt-to +xj-ld +hw-in +at-vz +wq-vz +ft-fh +ny-ac +ba-no +jl-hb +xz-dy +op-mc +sj-vq +xm-zc +rk-ti +zx-pq +dn-se +cx-wy +cv-gc +yw-fg +ff-jn +bt-fy +ao-mp +nb-on +dt-qw +wn-lq +fa-fi +fg-wi +as-vq +py-at +io-po +fa-lr +ni-ak +sj-mw +gc-im +rw-ld +tz-ry +se-vd +yb-bc +ua-rh +kr-gp +do-fj +wj-xp +aw-sd +ai-ny +ef-tz +zu-uo +dq-cp +gh-vb +lm-zo +bs-kq +sp-lo +qm-uo +rr-lo +th-bu +wy-sa +ca-ch +zs-ox +fy-bl +xg-xx +od-sd +ti-hs +jf-od +xc-an +hu-pa +ye-ka +hl-ro +yu-vl +ye-cn +fp-zg +qv-if +ko-tb +oy-bw +jh-fd +er-mj +wc-ek +pi-vd +ir-ci +zv-tl +sd-dr +ho-ld \ No newline at end of file diff --git a/AOC/data/day_23/sample_part_one.txt b/AOC/data/day_23/sample_part_one.txt new file mode 100644 index 0000000..d8576a8 --- /dev/null +++ b/AOC/data/day_23/sample_part_one.txt @@ -0,0 +1,32 @@ +kh-tc +qp-kh +de-cg +ka-co +yn-aq +qp-ub +cg-tb +vc-aq +tb-ka +wh-tc +yn-cg +kh-ub +ta-co +de-co +tc-td +tb-wq +wh-td +ta-ka +td-qp +aq-cg +wq-ub +ub-vc +de-ta +wq-aq +wq-vc +wh-yn +ka-de +kh-ta +co-tc +wh-qp +tb-vc +td-yn \ No newline at end of file diff --git a/AOC/data/day_23/sample_part_two.txt b/AOC/data/day_23/sample_part_two.txt new file mode 100644 index 0000000..d8576a8 --- /dev/null +++ b/AOC/data/day_23/sample_part_two.txt @@ -0,0 +1,32 @@ +kh-tc +qp-kh +de-cg +ka-co +yn-aq +qp-ub +cg-tb +vc-aq +tb-ka +wh-tc +yn-cg +kh-ub +ta-co +de-co +tc-td +tb-wq +wh-td +ta-ka +td-qp +aq-cg +wq-ub +ub-vc +de-ta +wq-aq +wq-vc +wh-yn +ka-de +kh-ta +co-tc +wh-qp +tb-vc +td-yn \ No newline at end of file diff --git a/AOC/python/solutions/day_23.py b/AOC/python/solutions/day_23.py new file mode 100644 index 0000000..c86e79b --- /dev/null +++ b/AOC/python/solutions/day_23.py @@ -0,0 +1,53 @@ +from collections import defaultdict +from functools import cached_property + +from models.aoc_solution import AOCSolution + + +class Day23(AOCSolution): + EXPECTED = { + "part_one": {"sample": 7, "data": 1230}, + "part_two": { + "sample": "co,de,ka,ta", + "data": "az,cj,kp,lm,lt,nj,rf,rx,sn,ty,ui,wp,zo", + }, + } + + def __post_init__(self) -> None: + self.connections = [tuple(line.split("-")) for line in self.data.splitlines()] + self.__dict__.pop("groups", None) + + @cached_property + def groups(self) -> dict[str, set[str]]: + groups = defaultdict(set) + for a, b in self.connections: + groups[a] |= {b} + groups[b] |= {a} + return groups + + def part_one(self) -> int: + threes = set() + for computer in self.groups: + group = {computer} + for conn in self.groups[computer]: + for sub in self.groups[conn]: + if computer in self.groups[sub]: + group |= {conn, sub} + threes.add(tuple(sorted(group))) + group = {computer} + return sum((any(computer[0] == "t" for computer in three)) for three in threes) + + def part_two(self) -> str: + connected_groups = set() + for comp, connections in self.groups.items(): + connected_group = {comp} + for conn in connections: + if all(nbr in self.groups[conn] for nbr in connected_group): + connected_group |= {conn} + connected_groups.add(tuple(sorted(connected_group))) + biggest = max(connected_groups, key=len) + return ",".join(biggest) + + +if __name__ == "__main__": + Day23().run()