From 5769c7e75c08f98c95174199a5e0116da10a5bcc Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Fri, 15 Dec 2023 07:20:13 -0600 Subject: [PATCH] 2023 Day 15 Complete! --- 2023/day15/input | 1 + 2023/day15/main.go | 128 +++++++++++++++++++ 2023/day15/problem | 296 +++++++++++++++++++++++++++++++++++++++++++ 2023/day15/testinput | 1 + 4 files changed, 426 insertions(+) create mode 100644 2023/day15/input create mode 100644 2023/day15/main.go create mode 100644 2023/day15/problem create mode 100644 2023/day15/testinput diff --git a/2023/day15/input b/2023/day15/input new file mode 100644 index 0000000..e84ef1c --- /dev/null +++ b/2023/day15/input @@ -0,0 +1 @@ +xdx-,jgmf-,knz-,gldqg=3,zqb=3,msqcmb-,ld=1,gvg-,rxmm=5,mbd-,hpgc-,msqcmb-,sxlnpc-,qq-,hbh=1,bb=4,bs-,sc-,jtb-,pb-,btjrgc=4,zbzx-,zv=1,xzh=2,grb=1,ls=6,qc=3,xt-,vtxl=7,gns-,bthp-,dk=2,ljxl=8,fj=8,fl=1,xbf=3,cq-,lvb=4,hrq-,gksxp=5,tlv-,gkp-,rpz=2,glj-,jqjdcz-,tdh=5,pm-,vqnz-,bbpdm=4,jfs-,gfmd=3,vm-,lvb=4,kcps-,rlzd-,ccs=7,gshmhm=1,zj=6,tkdcp-,crfp=7,dgb=4,xm=1,xv=5,fnj=5,rlzd=2,zp=5,rqc=6,smq-,jrs=9,qn=9,mmrgd-,dh=4,hr-,dbfr-,pklmf-,hj=8,vrf=3,qms-,jklm-,mbd-,qgg=1,vm=6,nd=5,td-,jcb=6,sn=9,rvl=7,xtv=3,ph=3,gv-,jrs=9,tszgh-,smv-,ldnq=4,cjb-,qp-,qgg=6,cq-,dxcgx=7,mrh-,jk=6,lzs-,rlzd=8,rfq=1,fv-,xq=1,bd=6,hdj-,px-,hrh-,ggc-,xt-,qnmljg=4,fb=1,dnl-,fgf=6,hmsc-,lhlx=9,psk=9,nxcr-,sfcng-,ndb=5,hr=9,mfgts=5,jm=9,plvs-,gnsb=5,fgf-,fnj=9,mhnt-,xhc-,xv-,fqrxn-,drf=3,vbxn=9,jtb-,lkmb-,tdhhdm-,ggrh=2,gnhn-,hsnx=5,rt-,kzk-,gvx-,sdmcn=8,dnl=7,njq=3,xm=9,hdj-,sksss=5,zsvv-,mjz-,cn-,lhlx-,ld=6,hprr=2,mhnt=1,nct=4,zkxcbl-,jlq-,hmsc=5,lkmb-,bbpdm=8,zqj=2,qd=7,jgz=3,vlb-,fj-,pm=2,ntg=2,hsg-,zfx=2,zqj-,nvbrb-,bfrxh-,gxv=9,sg=8,fnj=9,nmj=8,hlhc-,bzf-,szl=3,lnmd=4,fj-,btjrgc=4,qtx=5,zzg=6,ls-,jlq=7,tlkms-,xvg=5,ng=9,psk=7,rnz=1,gkp=1,ggrh=1,nnr=7,kf=2,hfx=6,ldnq-,bthp-,jndgm=4,sqf-,pkzb=5,cbk=1,jndgm-,lfs-,rssgn-,ms-,vspvtn-,zzng=9,jqvfmd-,cs=4,lrs-,ggc-,pljrqd-,ph=7,hdg=6,jklm-,tprxc-,hdj-,rr=9,nhb=6,rqf=2,rpz=8,qnqh=1,hr=3,dbfr=4,tz=9,pljrqd-,bfrxh-,gvg=2,kl-,mlvtf=8,xb=3,zfm-,cqx=9,ntg=8,cl-,xgp-,bsh=5,zk-,mtm-,qks=1,ksd-,gkcc-,khk-,zhp=5,jdv=9,szl-,xgp=9,hrq-,jcx=8,crfp-,jk-,pkjz=1,bfzt-,tjb-,bfrxh=4,bhl-,fp=9,jk=7,cl-,ddr=3,xm-,dx=7,bd=9,trd-,rlzd=4,xkqv-,qhb-,tklcc-,drrd=8,dgj-,xsm=7,vd-,hsg-,sn=7,djmbm-,bdn-,sksss-,tlkms-,cdf-,rj-,vv-,tszgh=2,td-,dh=4,nnr=6,hdg-,zm=1,lfs-,hkz-,hpgc=5,xk=6,jjdk-,jqvfmd-,xpr-,rg=5,tdh=7,xmdrvf-,smt=8,phjx-,zk=8,rph-,tdhhdm=8,vvt-,gsxt-,gq=9,fv=7,lnmd=7,lx-,ljsz=3,nlgm-,lvb=7,khhb-,psk=2,lbs=2,ddr=9,hjmhxj=8,gnsb=8,zzng=4,tszgh-,mr=9,bfzt=1,gns-,jrs=1,rlp=2,lnqk-,xp-,hjbb=2,hjmhxj=4,jl-,pjvd-,fbl-,bb=4,zv-,nvk=2,hn=9,mfxld-,tz-,fnck=3,knz=3,hdg=6,nvbrb=2,jlvr=8,xp=9,csh=7,ms=2,cvsp=9,vqnz=2,jfs-,bsh-,lvv=3,grp=5,pd=1,gns=5,nbr=6,gmb=9,hfl=1,ms-,rt=1,vfg-,qgg-,mbd=8,st=2,jlvr=6,qhb=6,sn=3,trd-,nlgm-,fgf=2,bb-,sx-,fhbmr=2,qllfk=1,drf=8,qn-,mb-,sqq-,glj-,pcdtdc-,xhc=6,fnck-,qh=7,bsx-,qg=3,hprr=3,knz=4,qb=1,gt=2,jfs=5,cm-,jmlf=4,ls=3,kfz=5,xgttg-,qtbjb-,xdx=9,gmzkng=1,bj=2,drf-,qtx=9,bk-,xgttg=9,gsxt=8,grp=8,xk-,jjdk=1,cm=7,bbpdm-,cj=7,vrf=6,zlcl=1,fnck-,hsg-,sc-,lrs=9,zzg-,kl=4,lvklr-,qzq=9,phk-,hp-,kzk-,kcps-,kl=3,nll-,lhlx=8,hb=5,cvsp-,cmdz-,lvrg=2,kf-,gb-,mk=5,dsb-,rl-,csg-,smzrlj=6,qzq-,phk-,nnk=5,ms=8,prd-,vb=5,fbf-,jrntg=7,gmzkng=8,vlb=4,zqb-,pg=2,bp=9,hsg=4,vqnz-,qfhcx-,xrph-,hfx-,bd=5,sg-,knv-,ljsz=8,mrh-,xmdrvf-,bs-,qks=5,hk=2,rxmm=4,pr=8,hsnx-,flhzg-,dm-,hp=4,qnmljg=7,db=5,zmqb-,xgp-,hb=6,kjjx-,rs=4,rl=3,pck-,xkqv-,njq-,rllmg=9,gv=1,dls=9,zhp=3,jgz=2,dbfr-,gt-,tklcc-,rg-,hjbb=3,vrpkv-,sg=3,zz=7,bcrd=2,kmbz-,vfg=6,rlzd-,ddr-,xt=4,tz-,ms=3,nt-,ddr-,jcb=9,pcdtdc-,grb=7,lfj-,vm=4,hsnx-,gb-,bdz=8,xq-,rt=8,ct-,pklmf-,qtx-,hs-,jqjdcz-,rl-,gts=8,hs=7,vdxmxq=2,nzpz=8,gnsb=8,rqc=6,ggrh=4,ct=4,dz-,ldnq-,xtk=7,kjjx-,rfq=3,nt-,qb-,mbd=8,hdg-,mhnt-,rs-,lfs-,hr=3,lnqk-,ftl=2,xpr=6,nzpz-,hs=7,hfx=5,frr-,dxt=7,jlq=3,trd-,rlp-,gksxp=6,gt=8,lpt=6,fnck-,mrbb=9,jgmf=3,zj-,cm-,fgf=7,lvb=3,msqcmb=9,lh=5,gpg-,xvg-,qnqh=4,qh=4,bsh-,hn=5,ckvt=5,rqg-,lpt-,dz=6,hr=8,nlgm-,ncdch-,fl-,nt=3,scsq-,jz-,mrh=3,lk-,qf=4,dz-,rbc=1,xdx-,sl-,sc-,dg-,nct=8,tlkms=1,ncdch-,xhx-,ct-,zqj=3,nnk=5,gshmhm-,xb=2,xn-,vq=6,ggrh-,fnj-,gmb-,zfx=8,dbfr-,jszt-,hpgc=1,pld-,bgj=2,zvm-,bs-,rssgn-,rqg-,vvt=1,lzs-,lvb=8,drf=8,ckvt=3,cq=1,ckbn=7,lfj=6,cs-,qn=4,jfs=3,mtlb-,vtxl=5,qnqh=4,khhb-,bb-,vvt-,prd=2,grp-,bdn=5,zn=3,zm=1,gj-,prd=1,jk-,pl-,grp-,tklcc-,rqc=9,nd=5,bxnjc-,bd=4,bzf=3,gvg-,njq=8,qfhcx=3,qhb=9,fj-,jjngp=7,jgmf=2,jqjdcz=9,xpr=7,mznfx-,vp-,dls=1,hl-,tdh=9,knqx=3,cd=9,cqf-,ls=4,zm=5,bcgmq=2,hzjfvb=1,hsdn=1,qp-,hjmhxj=1,jk=7,gkp=9,qllfk-,fqrxn=9,sqf-,dx-,bgj=5,rfq-,bxnjc=2,qzq=4,dfhm=6,lvklr=5,rvh=5,hdls-,nfz-,rmhqkf-,fnck=3,ld=6,nll-,gk=1,shm-,nsp=7,rssgn-,bkn-,nbxl-,kblvb-,kt=7,dd=7,cdf=3,pxr-,fnj-,jrntg-,ms=6,cj=4,ncdch-,bgj-,xkqv-,ng-,rmfq-,sc-,ldnq=2,lhlx=6,bcgmq-,ms=1,frd-,bdn=5,zn=8,hqp=8,zh-,mznfx-,zlcl-,nvk-,zz=7,rqf=1,vqnz-,pck-,gq=8,rvl-,st-,vbxn=8,zk-,qtx=2,jqvfmd=3,kfz=2,rmfq-,hk=4,nbr-,vrl=9,jszt=3,hl=2,bgj-,rqf-,sfcng-,dg-,ktz-,vq-,kg-,hn=7,rs-,bk-,hc-,ddr=6,mnd=2,ntg=7,ls=4,ps-,tklcc-,fnj-,tj-,jrntg-,nbv=3,bzf=1,ghvx=2,rlp-,sksss-,rvh=1,pkzb=5,rdm-,qbz-,qk-,zz=7,nct-,mmrgd=5,hc=9,kfz-,hkkp=6,hmsc-,hkkp-,vqnz=6,dxcgx=8,rqc-,xsm=1,vp-,nsp-,hrh-,dx=7,lbs=4,ng=5,szt=1,zqj=5,tqtj-,gnsb=8,ccs-,bvh=4,lk-,lnmd-,jb-,llgdz-,phj-,pb=1,hr-,sg=8,rmfq-,lbl-,lpjt=3,xvg=1,jjdk=2,sxlnpc=3,hdls-,lfj-,ls-,xt=6,qks=4,plvs=9,sm=7,phjx-,xhc-,cv-,xtk=6,jcx-,zkxcbl-,gll=1,gsxt-,smbhcp=3,gj=8,nl=6,vh=6,nmj=5,dm-,gq-,pcdtdc=5,hp=6,hjbb=5,xn-,psk-,fp=4,st-,pcdtdc-,jrs-,fp-,grp-,kt=3,lk-,nxcr-,lnmf=7,bdn=2,sn=4,mjz-,drrd-,jm-,djmbm=1,nlgm-,jklm-,dfft-,ct-,xfzq-,jm-,pgvs-,qmvldj-,bsh-,zzg-,knqx-,vdxmxq-,mk-,tprxc=7,sg-,smt=8,tszgh=2,hp-,nhb-,qhb-,phj=1,crfp-,cqf-,dh-,ddr=8,sgkh=1,vvt-,lh=4,mfgts=2,zbzx-,kmbz-,hl-,tnfbr=9,dgk-,lpt-,xrph-,tklcc-,fh=9,fqrxn-,gq-,xsm-,plvs=3,lhlx=4,zfx-,gk-,bb=2,tj-,cq-,hc=9,cs-,tt=8,qfhcx=8,rt=9,jcx-,jm=1,pr=7,ktz-,ksd-,cj=3,hjmhxj-,jtb=6,fkppl-,smq-,ckbn=8,zbzx-,bkn-,qhs-,mrbb=9,vfg-,rj-,rj=6,qnmljg-,rpz=3,dmg-,tntr-,pv-,bthp=1,rph-,sfcng-,rqf-,sfcng-,jcb-,glj=1,hfx=5,lh-,db=5,xkqv-,csg-,xhj-,gksxp=3,vm=2,px=1,gksxp-,tntr-,dk=1,xzh=7,phjx-,pr-,nfz-,tprxc-,cq-,fv-,jszt-,tnlk-,gth-,zn=2,lx-,tlkms=1,nbxl-,rrk=4,zv=6,npvgh=8,jjngp-,gt=2,rllmg=1,zbzx-,tlkms-,ckbn-,gpg=7,qtx=2,szl-,crfp=3,zk-,zlh=1,rmfq-,xsm=2,lbl=5,nxcr-,pld=4,mjz-,jrs-,crfp=1,ggc-,vfg=3,dp-,jjdk-,mbd=5,mb-,vb-,kzk-,rr-,zf=5,vtd=7,smzrlj=5,nsp=2,tszgh-,pk-,hlhc=2,kblvb-,tlkms-,cjb=2,llgdz=3,mhnt=4,nx-,qmvldj-,rt=6,sgkh=9,hkz-,vd=5,dsb=5,qnmljg=9,jmlf-,nbxl-,bcrd-,zvm-,ckbn-,zsvv-,xgttg-,kblvb=3,rqc-,tsqsl=5,rj-,fv=9,hjmhxj-,smq=2,tsq=1,cvsp=2,lh-,rl=7,ld-,psk=4,zfm=2,qz-,nhb=5,rscx=1,js=3,xbf=7,xhj-,lrs-,qks=6,ld=4,hkkp-,grp=7,dgj-,hk=8,dls-,ksd=7,btp=4,gmb-,jqjdcz-,hj=2,tkdcp-,rr-,nbr=6,zzng=8,hdl-,qzq=7,tsq-,ljxl-,rqtr=2,gmb=3,frr=7,dnd=8,pld=3,khhb-,zzng=7,sn=9,kmbz=5,jqjdcz=8,lpn-,lpt=5,hjbb-,rkh=8,tr-,fbf-,tdh=7,hdf=1,khk-,tz-,nzv=2,sfcng=1,vqnz-,ct-,dsb-,lvklr-,hdls-,xgp=1,ph=7,rl=9,kt=5,gsxt-,xt=5,ltpm-,lnqk-,pck-,gvg-,mnd-,sgkh=1,zmqb-,vrf-,nzpz-,rqc-,nzpz=1,frr-,qn=5,tg-,gxv=9,lvklr=7,vrf=1,bd-,sxlnpc=5,pv-,knv-,jtb-,lrs=2,dxt-,crfp=6,hzjfvb=1,bp-,xtv=1,hzjfvb=3,mk=9,frr=1,gbn=2,pkjz=5,kc=5,fhbmr=6,ldnq=4,gvg-,bk-,shm=1,gk=5,nxcr-,tjb-,hvqg-,ft=7,pkzb=3,vd=2,nt-,fzq-,qks=6,qtx-,qmvldj-,dgj=5,cmdz=8,rqc=2,cqx=9,knv-,frd=2,nct=6,bdn-,ktz=8,trd=6,ntg-,gfmd-,bfzt-,kblvb=4,xhj=1,ssth-,fhzt-,kcps=5,jgmk=2,nbxl-,llgdz-,llgdz=8,mk=6,rscx-,prd=1,gshmhm=3,hj-,qzq=1,hrh=9,hkkp=9,tqtj-,kjjx-,lr-,tg-,nsp=7,dd=9,sgkh=1,xgp=8,kblvb-,zf=1,sxlnpc-,tr-,plvs-,lk-,hqp=5,mtlb-,lkg=2,hp=5,qh-,lvv-,zlh=2,pgvs-,lfj=3,xgp-,cj-,mtlb=7,rdm=2,zfx=2,vq-,znpfn=8,xkqv=5,rmhqkf=1,nj-,ld-,mr-,scsq-,bdn-,hp=6,tklcc-,zp=1,cd=2,cgsb=4,vxb=4,mtm=6,kfz=6,nsp=3,xtv-,frd-,lpjt-,hkf-,hkz=6,dx-,sg=6,pg-,hqp=6,rqtr=1,jk-,ksd-,fhbmr-,qn=9,hbh-,npvgh-,cqf=3,kl=7,mpqhhb=7,zbzx-,lkg=5,dxcgx=6,hdj-,pg=3,bcrd=4,rmzbrv=8,rscx-,khhb=1,khhb-,lvrg-,xhx=9,sdpdm=6,xrph-,dxcgx=7,xbf=4,kzflf=8,xb=3,xt=8,hbh-,nbxl-,rmhqkf=1,xnl=5,hqp-,rdm-,ggc=9,smq-,frd=4,cm=8,rr-,gmzkng=3,sf-,cfm=2,qb=3,ljsz-,rt=6,pk=6,rmhqkf-,jklm-,bxnjc=6,dgj=5,tdhhdm-,mjz=9,lbl=8,vvt=6,gx-,ct-,mpqhhb-,jqjdcz=8,js-,tntr=1,ph-,mjz-,rscx=6,tklcc=2,hm=1,tszgh-,rnz=9,xnl=2,knqx=5,phj=6,zf-,kmbz=5,dk-,jcb=2,dh=8,qzq-,xmdrvf-,dgj-,pkzb-,gxv-,kdg-,zqb-,kg-,kmbz=8,zn-,dls=7,gq=6,fhbmr=2,mtm-,sqf=3,nnr-,hrh=1,gmzkng-,kv=8,qbp=7,dk=2,ftl-,cbk-,xsm=9,gkp-,xv=9,nd-,bs=5,ld-,xhc-,drf-,vrl-,sm=8,hb-,ct=1,xmdrvf=3,rscx=8,vtd-,bhl=3,cd-,glj-,bs-,cmdz-,hp-,nbxl-,gth-,nbv-,zlh-,krfvf=5,hl=5,nx=8,rkh=1,bhmll=8,nzv=6,qp=7,vlb-,qzq=4,mtlb=5,kmbz-,hpgc=7,hs=8,sgkh=3,sz-,dnl=1,gk=9,smzrlj-,hrh-,pljrqd-,cqx-,lvklr=2,lpjt-,gshmhm=1,rr-,pl-,kf-,fbl=3,cv-,qks=5,lvklr=2,bcgmq=9,pkzb=2,xv=2,phk-,fzq-,nzpz=9,hdf-,rssgn-,ghvx=5,tlv=7,hb=4,sxlnpc-,tj=2,hc-,pkzb-,ph-,kg=1,sz-,dsb=5,zk-,bgj=6,hfx-,bs=3,nct-,jlq-,vdxmxq=9,dgb=4,vh=8,ggc=7,tnfbr-,kzflf=8,tlkms=2,sc=3,rmfq=9,xvg=2,scsq-,pd=9,cm-,cvsp-,hfl=1,trd-,kt=8,zkxcbl-,lhlx-,bthp=1,sqq-,btjrgc-,pd-,ltpm-,gt-,tnlk=7,sz-,xhc=2,gksxp-,qmvldj-,knqx-,lzs-,gbn-,vp-,hjbb=5,rxmm-,pzrm-,hsnx=9,rmfq-,ljsz=5,mrm-,xk-,jfs-,sxlnpc=5,vb=3,ntg-,kg-,vbxn-,rvl=1,gmb-,vm-,mfgts-,nx-,hbh=2,cj=4,pgvs=1,lvklr=1,rxmm-,xtk-,fgf-,knv-,rmp=1,xvg-,cdf=3,xgttg-,gkp-,gksxp=1,zr=5,mpqhhb-,dmg-,ftd=6,nfz-,jgmf-,knz=8,bk-,kg-,pjvd-,qllfk-,xb=8,cvf-,gvg-,glj-,pklmf=5,knz=4,cvhhjx-,dfq-,dfhm=1,xmdrvf-,qzq=8,dfft-,sn-,jk-,xmdrvf-,mbd=5,qh-,tr=2,cd-,lnmf-,qc-,xn=7,kv=2,xkqv-,xgttg-,ksd=6,nn=9,gck=1,prp=1,dp-,pklmf-,sx-,rmzbrv=5,hsg-,jlvr=9,xp-,gsxt=7,dz-,dp-,hqp=1,pl=3,rs=1,hj=3,vftk=6,sf=1,dmg=3,bzf=8,szl-,xhc-,csg-,cjb=6,tsq-,krfvf=5,xfzq=5,sqf=2,cbn=4,mnd-,lh-,lvv-,vb-,rscx-,vrf=6,gpg=6,ghvx-,xhj-,pk=5,scsq=4,bfzt=1,nmj-,gvx-,fbf-,tntr=9,cs=7,qtbjb=9,jqjdcz=6,rg-,vrl-,rmhqkf-,knz=9,frr=1,lrs-,pcdtdc=4,sc=7,bsx-,ljsz=5,hm=8,hkf-,gksxp=1,dgb=6,fnj-,lkg=5,gxv-,hqp=1,lhlx=7,bdn-,lzs-,rdm=2,kjjx=9,fl=6,qf=7,nsp=7,pdb-,rpz-,tlv-,qh=3,gmhk-,lvb=7,cv=1,zj-,lnmd-,sxlnpc-,vtxl-,cj-,zlcl-,fzq=2,kjjx=5,knqx-,sxlnpc=8,bgj-,bsx-,tnlk-,lvrg-,kl-,vbxn=2,lx-,mznfx=5,jtb-,rpz-,khhb-,nl=6,pld-,xsm=2,qnmljg=4,hm=4,lr=5,ntg-,mrm=8,xdx-,dfft=5,nxcr-,njq=2,hdf-,ktz-,lvb=2,rxmm-,qtbjb-,kzflf-,ls-,ng-,nn=9,qbp=4,xnl=2,zkxcbl-,dx-,hsdn-,ggrh=8,jjdk-,lr=2,cv-,hfx=6,hzjfvb-,mrbb=1,bsx=7,btjrgc=2,kblvb-,hzjfvb=8,xzh-,px=6,kt=9,kdg-,gv-,hzjfvb-,mr-,hkkp=2,kg-,fv=4,hdg-,md-,kv-,nbv=2,tqtj-,rssgn=2,bs=5,bcrd-,xdx-,pdb-,gvg=7,bsh-,pd=1,gnhn-,zfm-,fh=5,rqtr-,cn-,ps=7,tqtj-,cq=8,qfhcx=3,dxt-,pzrm=6,lx=7,jjngp=3,fj-,nbr=5,qz-,nnk-,gnhn-,nj=3,lx-,ddr=5,lkmb-,lkg-,zkxcbl=5,ftd=4,bd-,cdf-,trd=7,tnlk-,hfl-,qhb=3,hdl-,dnd=9,ftd=2,kzk-,lr=6,jqjdcz-,jz=4,gll-,zbzx=1,mnd=3,ssth=5,vlb=8,hrq-,qbp=3,nl-,gth-,pgvs-,gmb-,xtv=2,ls-,prd=5,bxnjc-,nj-,pzrm-,kc=2,mmrgd=4,vbxn-,cv-,lnqk=6,hzjfvb-,zkxcbl=9,vm=6,rmhqkf-,knv=6,gkcc=6,xn=6,tjb-,smzrlj-,rrk=1,cgsb-,njq-,ghvx-,rqf-,tnfbr=4,zmqb-,hrh-,cbn=6,zj=2,px=2,hs-,fl=4,jjdk-,ld=2,hsdn=8,xn=4,nvk-,plvs=2,bvh-,glj=2,hnnzfl=8,crfp-,lh-,jgz-,hn-,hjbb-,hbh-,qfhcx=8,gvg=7,qzq=3,qc-,ljp=4,qb=8,ggrh-,fjnl-,bp-,fjnl-,gvx=8,mpqhhb-,gfmd-,tj-,cs-,jqvfmd=2,vtxl=8,vm-,zzng-,bzf-,ljsz=9,qtbjb-,rssgn-,mfxld-,xzh-,dls=4,hkz-,rrk-,tntr-,bxnjc=6,ltpm=2,nnr-,sx=6,mtm-,hpgc=7,ldnq-,md-,hb=9,kc=6,ft-,jlvr=3,bd=2,dmg=7,hnnzfl=2,tjb=8,qmvldj=6,nj=3,sz=5,ssth=7,hb-,fbf=3,lfs-,rmp=7,nfhr-,fbl-,xfzq=1,zlh=5,szt-,tg-,nsp-,kjjx=9,gmzkng-,fh-,lbl=7,mlvtf-,zh-,cqx-,rrk-,lr-,gldqg-,lnqk-,ms=9,fp=2,gkcc=1,nnk=4,zsvv-,nj=6,dxt=5,vrf=2,rj=4,lfj=8,hdl-,knqx=2,sqf-,gnsb-,rmzbrv=1,gksxp=8,rqtr=9,kcps-,qms-,nnk=3,nd=3,phjx=4,shm=1,nbxl=3,gmhk-,hrq-,bk-,xdx-,gmhk=7,zkxcbl-,zfx=7,hc=1,hbh=4,gnhn=8,qnmljg-,bb=2,cjb-,vrf-,tntr=3,jszt=8,kjjx=4,jndgm-,fb-,hsdn=1,plvs-,xbf=3,bdn=6,jjngp-,zfm=9,bthp-,fqrxn=6,nlgm=3,dfq-,dls-,hfx=5,ljsz=5,qp=7,vm=1,nx=9,nj-,jgmk=3,hr-,qq-,lvklr=5,drrd-,db=6,vrpkv-,phjx=1,gnsb=8,lvklr=1,pcdtdc=2,rmp=1,trd=7,ct=7,vv=2,jv-,npvgh-,lpn=9,lnmd-,hc=4,zv=8,cjb=9,kl=6,gnhn-,hr=6,krfvf-,xpr-,njq-,sg=6,bdn-,bhmll=1,rqf-,qllfk-,kjjx=7,ftd-,llgdz-,drrd-,fhbmr-,gmzkng=9,xtk=8,dd=6,gxv=7,bvh-,bhl=6,kl-,mb=9,dns-,tnlk-,rnz-,hmsc-,zn=9,jrs-,bfrxh-,jdv-,crfp-,hzjfvb=5,tlkms-,hsnx=9,tprxc-,vb-,hrh=6,xgp-,jv=3,jlq=4,hjbb=4,qc=2,xt=5,lkmb=9,btp=1,xkqv=8,smt=5,nnk-,smq-,xhc-,qk=4,vfg-,jrntg=5,cbk=2,szl-,jlvr-,dp-,ncdch=3,tf-,kmbz-,knv=7,ncdch-,rqtr=1,dx=8,mrm-,lzs-,krfvf-,pjvd=3,jk=1,kcps-,zqj=9,gnsb-,znpfn-,gt=6,qfhcx=1,drrd-,ct-,hbh=3,rbc=8,dgb=4,ltpm-,rr=3,pxr=5,lx-,cfm=7,jb=5,cbk=7,ls=4,fkppl-,hdl=1,zhp=4,sqf=2,xb-,lvv-,fhbmr-,vl=7,kf-,gkcc=8,vfg=5,plvs=6,cs-,hj-,gk-,mbd-,cm-,rmp=7,cgsb-,hsnx=6,tr=6,hj-,bthp=8,nx=3,qhb-,jqvfmd-,nx=4,cbk-,hzjfvb=3,khhb=8,prp=5,dk-,gkp-,nsp-,jszt-,qhb=6,rpz-,bcgmq-,plvs=8,pr-,gnhn-,bcgmq=1,tdhhdm-,ckbn=7,nn-,hr-,dgb=8,tlv=5,xmdrvf=2,tg=9,fbf-,pr=7,qbp=6,pljrqd=1,js=8,mrh=8,zvm-,vlb=7,psk-,dgk-,hc=4,szl=8,ftl-,kt=5,dnd-,kg-,ggrh-,hdj=3,kt=9,hprr-,nvk-,ndb-,sqq-,hrq-,cgsb-,jrs=1,jk-,hdl-,zn=6,xn=5,fbl=8,qb-,fnj=5,bsh=4,xv-,mznfx=5,frd=6,nbr=2,nbr-,ssth=9,qf-,bbpdm-,lvklr=1,mbd-,vbxn-,jszt=6,mmrgd=6,tsqsl-,nnk-,mrh=8,lfr-,sksss-,gksxp-,dfq-,zfm=2,qn=8,zvm=6,qbp-,tf=3,dnl-,dxt-,lpjt-,fj=9,qg=1,hlhc-,gmzkng-,xk-,rmzbrv=1,md=8,hdl=1,cgsb=8,tdhhdm-,dm-,pkzb-,dd=6,qf-,lnqk=5,pkzb=9,nfz-,mk-,csg=4,lvklr-,rmfq-,vl=2,lpn=8,bkn=2,hkf-,qks-,jlq-,kfz=2,hqp=3,qq-,lvv=3,lbl=6,rmfq=5,pgvs-,sgkh=7,zp=1,lpn-,rmfq=6,zz=5,mfgts-,nlgm-,vrf-,khhb-,xpr-,qllfk-,dbfr-,vh-,rssgn=8,tj=2,kzk=1,fp-,drrd-,gvx=3,tdhhdm-,pld-,xhj-,ljxl-,ph=9,rs=4,hdf=2,xtv-,qnmljg=9,mtm-,rvl=3,gck=1,rllmg=4,vv=1,rvh=5,bthp=1,gsxt-,gk-,ljxl=6,bhmll-,sl=6,nct=5,zsvv=1,rpz-,ng=6,lh=5,mhnt-,jrntg=5,gshmhm=4,bk-,vq=5,nbv=8,rxmm=3,prp-,scsq-,hlhc-,hnnzfl=7,zj=7,pck=6,hnnzfl-,bsh-,nj-,cgsb-,gxv=8,hbh-,zlcl-,bthp=2,dls-,rrk=8,ckbn=8,zlcl-,smv=9,kdg=4,tg=2,hr-,gksxp-,dfft=2,lhlx=4,dgk=6,dxcgx-,zbzx=3,sdmcn=1,lnmd-,nj-,hrq=4,qnmljg-,bdn=9,ft-,mtm-,mrbb=4,ct=3,rt-,rnz-,gbn=2,ld=7,zk=3,lbs-,tnlk-,qg-,lvv=2,cl-,fgf=8,fgf=7,zbzx-,rph-,qd-,hlhc=4,vspvtn=5,xmdrvf=9,mbd=4,zn=1,hfx-,td=2,kmbz=8,njq-,grp=6,mpqhhb=2,knv=9,dx-,xp=5,kf=2,qnmljg-,pcbp=8,tklcc-,mb=6,hkf=3,lkmb-,pkzb=4,dsb=1,nbv=7,tlkms-,ggk=9,lpn=4,qc-,cvsp-,smbhcp=6,gth-,jz-,hfx=1,lzs=3,lh=3,xzh=4,cl-,hdg=2,xq-,cl-,qk-,bfzt-,xvg=9,rbc=5,xt=1,bs-,ggrh-,phk-,hfx=9,smzrlj=7,bcgmq-,bshh-,hsnx=8,gth=9,fgf-,rb=1,gk-,qbz-,fj-,zzng=3,qnqh-,hdj=1,dsb-,bgj=9,bfrxh=5,msqcmb-,tklcc-,sksss-,nvk-,mmrgd=4,cdf=6,tj-,xmdrvf=9,ftd=5,tkdcp-,jlq=9,qhb-,jm-,bkn-,db-,csg=3,rt-,rvh-,ct=3,rr-,hprr=7,zv=3,tnfbr-,gq-,xt-,gb-,nlgm-,vm=7,nx=1,rph-,bvh-,hsdn=3,bq=2,csg-,ms=5,csh-,mrh=1,vp=7,njq-,qk-,xnl=1,tntr=1,nvk-,mbd=3,grb-,qgg-,xv=5,qzq=1,rdm=5,sdmcn=4,njq-,ms=2,bq=9,fh=6,hzjfvb=6,pl-,jgmf-,fp-,nvk=3,nlgm-,qzq=5,rmzbrv=5,js-,gns=1,dx-,hfl=2,tqtj-,hmsc=9,nnk=1,hqp=4,ftl=7,lhlx-,ddr-,jql-,xq=8,cq=4,bs-,dz=3,mrh=2,gxv-,pkjz=8,smzrlj=9,gth=1,fkppl-,rfq-,zqb-,nhb-,glj-,cmdz-,vh=1,hj-,pk=4,fnck=1,ljp-,qh-,zbzx=8,hb-,kcps-,rdm=4,gq-,gk=2,gnsb=2,gmzkng=9,zzng=1,dfft-,cn=7,dz-,djmbm-,hqp-,pr=9,llgdz-,pck-,lpn-,jtb-,hpgc-,xvg=2,xpr-,hfl-,gqxp-,ld-,bd-,gvg=5,rxmm-,drf=6,vm=4,gnsb-,nnk-,rg-,shm=7,hmsc=2,lkmb=3,jdv=7,crfp-,vvt=7,nlgm=3,dnl-,kc=6,pl-,prp-,lbl=4,jlvr-,nvk=9,smq-,ddr-,drf=8,hdj=3,ghvx=8,xhx-,dns-,qmvldj=8,mnd-,hdj-,sqq-,xtv=2,qhs=6,rnz=1,cdf=8,npvgh-,lfs-,zp-,xkqv-,ftl=6,mr-,qnqh-,rlp-,cfm-,lrs-,sx-,mbd-,tsqsl=7,lzs-,cvf=5,rqf=8,vrpkv=6,kzflf=2,sx-,jz=5,xn=1,nfhr-,prp-,cjb=1,lpn=9,vtxl-,rg-,xpr-,tkdcp=2,lbl-,hs=8,szt=8,ct=4,sf=9,fp-,bfrxh-,mrh=7,fzq=6,sg-,jrntg=3,bgj-,gxv=4,gfmd-,cvhhjx-,ncdch=1,lvklr=1,jlq-,qgg=4,pl-,rg-,gx-,kfz=6,zlcl=2,tjb=3,mtm=7,bvh-,lh-,rpz=7,sn=5,ct-,jcb=1,bhl=9,kjjx=8,qc=4,nsp=4,pcbp=9,qgg=1,xpr-,tjb-,qn-,mjz=6,jk-,ls-,fgf-,tjb=3,cvsp=9,qfhcx-,vl=8,bthp-,frr=2,gl=5,zlcl-,pv=4,hdj-,qgg=1,qbp-,jgz-,lnmf-,bq=3,cvhhjx-,cq=7,nvk=7,cvsp-,pr=6,hdls-,cvsp-,vspvtn=4,tf-,bcrd-,bs=1,rt-,gt=4,hn-,khk-,nn-,zqb=6,smv-,drf-,mk=8,qzq=9,jgmf-,bq=1,pb-,hp=2,rl-,hpgc-,jfs-,bzf=9,cn-,qg-,pg-,zk=3,pkzb-,jlq-,mhnt=7,ktz-,tlv=9,kmbz=8,fnj-,hb-,xv-,vrl=2,ddr=4,dp=3,zfm-,hsg-,nmj-,rxmm-,hjmhxj=4,ct-,dls=2,gpg=2,dmg-,qfhcx=3,fnj-,gj-,mjz=4,hk-,kmbz-,gmzkng=1,bs-,mbd=7,dbfr-,dm=2,xpr=9,hkz-,lx=6,vb=4,dnd=6,gvx-,gkp=9,md=9,qmvldj-,tf=4,shm=5,lvv=1,bd=8,bdz-,jjdk-,lfr-,prd-,rj-,nl=9,ph-,xkqv=1,nnk-,cvsp-,lpjt=8,st-,vl-,ckvt=1,lkmb-,xb-,rmhqkf=4,gl-,jql=5,zp=6,ms-,ndb=9,ph-,mr=4,drrd=3,lpjt-,phj=3,tdh=4,jjngp-,xkqv-,ljxl-,nbxl=8,qb-,xp=8,rr=9,mrbb-,zbzx-,lpn=3,zv-,vftk=7,sfcng=7,rg-,rfq=1,fv=4,mjz=8,rscx-,fjnl-,xzh-,fgf-,mpqhhb=1,zj-,qf-,pjvd-,gshmhm=9,jgz-,lnqk-,pl-,bxnjc-,tg-,rxmm=2,gk=3,kdg=1,md=8,rvdn-,vqnz=2,hkkp-,js-,tnfbr=4,nmj-,rj=4,trd-,tprxc=1,zj-,gv=8,hfx=5,drf=1,bsh-,jv-,dg=7,dbfr-,ggk-,qn-,vvt-,gq-,hdl=3,rt-,hsg=1,pg=8,csg=2,tg-,frd-,jz-,tt-,zlh-,ms-,kf=9,gpg=4,jl=4,btp-,vrl-,jcx=2,dsb-,pkjz-,vq=3,bq-,zr=4,qb=6,mpqhhb=5,xkqv-,px-,qbz=5,rllmg=7,gmzkng=6,cd-,nd=1,zh=9,vrpkv-,jfs=3,psk-,hfx=4,cgsb-,ljxl-,ljxl=6,qgg-,smq=9,tszgh=3,mnd-,lx=9,drrd=2,hfx=3,gshmhm=6,ntg=6,hrq-,hrh=6,mmrgd=7,khhb=4,zh-,pck=8,sg=4,gts-,nmj=4,rxmm-,qnqh=8,rmhqkf-,fbl=6,jm-,zr-,kf-,rr-,ncdch=2,pcbp=6,frd=2,gl-,sfcng-,tklcc-,cq=5,sz-,nfhr-,tg=7,smzrlj-,jl-,qq=9,dh=4,bsh=1,xkqv-,rmfq-,zmqb=2,rg=6,shm-,vrpkv-,bkn=1,xm-,gk=1,smq-,gmhk=2,jmlf-,gnsb-,vm=3,drf=2,xsm-,dg=9,hdf=5,rmhqkf-,mbd=9,nx=3,xhx-,pv=9,phj-,smzrlj-,jgmk-,bk-,gshmhm=9,bsx=5,dm=2,px-,dx=6,cbn-,pck=2,zvm-,xk-,fgf-,vvt=7,hdj-,glj=5,dgk-,pck=3,hkf=6,hm=8,nbr=2,zf-,flhzg-,zp=1,khhb-,knv-,dnd-,cv-,gj-,tf-,lvv=2,hvqg=5,dgb=8,smq=2,rmp-,xpr=2,pv-,bcgmq-,bthp=5,xnl-,xkqv=6,fnck-,dls-,cj=2,cgsb=7,zj-,gmhk=8,kfnxf-,pkjz-,vxb=9,vl=5,qbz-,zk=3,ggc-,hqp-,jgmf-,cq-,qg=8,vm-,ktz-,pck-,hdls-,qgg=2,ljp=3,qfhcx=8,rscx-,tdh-,ph=3,vv=2,xmdrvf=2,zfm=5,qks=4,vspvtn-,jlvr=2,trd-,hzjfvb=6,jcx-,rvdn-,hl=6,pdb-,gmzkng=3,vqnz=7,bgj=3,mfgts-,lnmd-,bdn=7,khhb-,ccs=4,npvgh=4,dg=7,ftl=6,vtxl-,gsxt-,ms=9,psk-,nn-,vqnz=4,vrpkv=8,hvqg-,lnqk-,nbxl-,tf-,rscx=5,vd=1,jl-,mrm=2,qp=7,csg-,vqnz-,fbf-,fqrxn-,mznfx=8,lfs-,fbf=9,lpt=5,rqf-,bdn-,nfhr-,knqx=9,bvh=4,fhzt=1,nn-,smq=7,xmdrvf-,mnd=9,sdmcn=6,pl=5,dz-,rl-,jk-,jk-,cbn-,ccs=9,xfzq-,lnmd=6,mpqhhb=3,qtx=9,tf-,vb-,sn-,nlgm-,vtd=1,njq=4,mb-,kzflf=2,dh=1,ph=7,kjjx-,hnnzfl=3,vtd=9,jrntg-,dk=3,dg=5,knz-,jgmf=3,lfr-,dg=1,zfm-,nzv-,tprxc=3,gck=1,dls=5,rqc-,lfs-,nll=2,pkzb-,nfz-,gts=1,ntg-,rt=7,vrpkv-,rj-,kzflf-,rqc=2,lzs-,nbr-,xhx-,jql=9,dd-,dfhm-,dh-,jz=2,zr=2,zlcl-,vfg=7,ksd-,vxb=5,lkmb-,fp-,nfhr-,nzpz-,qhs=1,gx-,rpz=4,tg=2,mtlb-,rl=9,zmqb=9,qhb=2,ssth-,smbhcp-,tdhhdm=1,nnr=5,vtxl=4,zvm-,llgdz-,zmqb=2,qmvldj-,nfz-,jndgm=2,tkdcp=2,dns-,lr-,njq-,smq=2,tdhhdm-,gshmhm=1,nbxl-,dx=5,lfr-,st-,djmbm=3,zp=8,qtx=1,jmlf=9,zz-,pxr=7,hzjfvb=6,vtd-,zhp=9,hpgc=5,dgb=7,gbn=6,jgmf-,pb-,tlv=5,jm-,drrd=1,js-,qbz=1,pg=8,jlvr=7,pjvd-,pld-,rph=2,nbr=1,xpr-,sx=5,xgp-,bcgmq-,cq=7,ndb-,gth-,bgj-,zzg-,nbv-,sg=9,kl=9,lvb=3,gksxp=9,cl=8,hjbb=2,jjdk-,phk-,nvbrb=5,vl=5,ljp-,nfhr-,hk-,gqxp=5,zzng-,vl=6,gx-,mhnt-,jtb-,ntg=6,bfzt-,krfvf=5,rrk=3,ljxl-,gl-,rdm-,qhs-,xtv-,qp=5,lnmf=9,rkh-,cqf=1,zh=1,ljsz-,fj-,nct=7,nfz=1,qb-,rpz=3,hqp=7,dnl=3,gns-,hc=9,xn-,hfx=6,vqnz-,td=1,kl-,sg=4,gk=3,mjz-,trd=7,mrbb=7,gvx-,qh-,vq-,qb-,vspvtn=5,hl=1,tklcc=1,qk=6,kfz=2,pg-,sf-,lvv-,xhj=6,rqtr=4,zkxcbl=8,pv-,vh-,phj=2,frd-,gns=8,rqc=7,qzq=1,tsq-,hzjfvb-,pd-,sc=1,hr=1,ft=8,bdz-,lvb=3,hkz=2,zz=5,jqjdcz=9,jlvr=3,mbd=4,pb-,hdj-,dbfr=5,njq=3,mrh-,zv=8,zkxcbl=2,hdj-,vrl=8,ls=9,kv=9,qh-,gldqg-,qp=8,mfgts-,dm=7,grp=5,gfmd=5,mmrgd=2,vtxl=2,kfz-,jcb=3,krfvf=8,bdz=7,zfm-,hsg-,rb-,mznfx=9,pcdtdc=2,bdn=2,pk-,dnd=4,ggk=1,mrbb-,xsm-,pv-,hr=6,ktz=7,ksd=5,gvg=3,bhmll-,bshh=7,zz=6,dm-,zsvv-,bhmll-,kmbz-,gbn-,ntg-,vdxmxq-,dxt-,pkjz-,khk-,rj-,phk=9,dg=3,szt-,mlvtf-,xkqv-,kdg=5,nlgm=8,tdh=7,ssth=2,fnck=1,gnhn-,hrh=7,sm-,qzq=4,cm=7,bzf-,lbs=3,jndgm-,mtm-,sqf-,rssgn-,bxnjc=9,cd-,hdls=7,rpz-,jm-,rlp=4,kmbz-,gnhn-,vtxl-,kl=4,smv-,sdpdm-,zp=3,phjx-,cmdz=7,qfhcx-,szl-,qg=8,hdf=6,nvk-,ftd=4,pkzb=2,jk-,nmj=6,kdg=1,lrs-,ftd=8,pjvd-,ggk-,kmbz=8,gshmhm=2,qn-,hfx-,jqjdcz-,knqx=2,pklmf-,hqp-,gfmd=4,gfmd-,vtd=6,zqb=9,tj=4,xm-,tsq=1,vdxmxq-,mrbb=4,cj-,tjb=5,vrf-,qhb=6,cs=5,pkjz-,zf=7,zbzx-,bhl-,sg=5,tz-,hsnx-,btp=1,bkn=1,zzng-,ckbn-,rmp-,gj=8,mtlb-,xdx-,fb-,dk=4,cqf=4,fjnl=7,dxcgx-,bcrd-,dxcgx-,cs=5,ljsz=3,nbxl=8,hdj=8,pklmf-,hp=8,qf=8,gj=7,prp-,nbr=9,zp-,fh=4,fbl-,kfnxf-,shm-,npvgh=5,nvbrb=2,khk=1,rvl-,lnqk=9,fhzt-,sfcng-,zz=5,qb-,dk=6,hrq=4,xt-,xsm=7,xb-,sz-,qbz-,xhj=1,rqtr-,cq-,jfs=1,znpfn-,jklm-,pxr=2,gkp-,frr=1,gshmhm-,gnhn=9,xpr-,mbd-,zzg-,qnqh-,bthp=9,hc-,cbn-,vvt-,ccs=4,zj-,jqvfmd-,jfs-,ps=1,rlzd-,gmzkng=4,ft-,lvrg-,kc=9,pklmf-,msqcmb=2,ljsz-,mfxld=1,fnck=8,npvgh-,vxb=2,ps-,rrk-,rbc=1,msqcmb=7,st-,gnhn=5,kg-,npvgh=6,nhb-,prp=5,pk-,lh-,nt=7,bzf=9,ggk=4,tlkms=6,nt=3,kmbz=9,jgz-,znpfn-,xrph=7,qf-,hdf=5,ktz-,hprr-,bzf-,qq-,cj-,cbk-,qhs-,hmsc-,nvbrb=8,qfhcx=5,vfg-,rlp-,sx=4,btjrgc=6,nn=8,ps=7,fzq=5,scsq=5,cdf=7,mr=9,pl=2,hzjfvb=9,dls-,zzng-,dz=7,sn=5,qllfk=7,sgkh=6,nnk=9,qz-,vrl=2,cvf-,xp-,gsxt-,hsnx=9,fh=5,hj=1,pkjz=8,mfxld=1,nfhr=6,hqp-,btp=3,njq-,fb-,rxmm=4,lvrg=8,zkxcbl=8,zvm-,nbxl=2,mmrgd-,hdl-,ct=8,vvt=1,bzf=2,drrd=6,zh-,pgvs=1,gns=1,hsnx-,vl-,bdz-,grb-,sf-,qn-,sdmcn-,rj-,sc=2,bfzt=8,tnlk=4,rlzd-,grb-,mnd=7,tz=8,qnqh-,qg=6,zlcl-,ljxl=2,bvh=5,lvb=7,hdf=9,dns-,pcdtdc-,ghvx=7,rj-,fnj-,psk-,zlcl=4,bd-,tr=9,gvg-,tr=9,hdl=1,dx=5,hb=9,xq-,gpg-,fh=3,qmvldj-,hbh=4,lvklr-,sx-,pkjz=8,pjvd=2,scsq=7,tjb=7,tklcc=8,rkh=7,tlv=6,sl=3,scsq=3,vh-,gvg=9,glj-,xmdrvf=2,zk-,sdmcn=2,hsg=9,scsq=9,ccs=9,md=8,zh-,knz-,nsp-,phjx-,qb-,sx-,qc=4,fbf=5,nx=6,nlgm=7,pjvd-,mfxld-,lpjt=8,hzjfvb=7,qnmljg=4,nn-,nlgm-,nzpz=6,mrh=2,hb-,gmb-,llgdz-,kzflf-,hsnx=6,rl=3,sgkh=6,cn=3,xhx=8,dp=6,cv=2,dsb=6,ckvt=8,zz-,nsp=2,cbn-,ggc-,glj-,rvdn=6,xgttg-,qmvldj-,qf=2,hk-,rllmg-,lk=3,xtk=7,vrl=6,js-,gldqg-,xbf-,jv=5,ltpm-,gbn-,fzq-,nct=4,cl=3,dm=5,rqc=8,kfz-,vftk=5,nsp-,ndb-,rs-,prd=4,hjbb=4,tg-,kfnxf=9,xpr=3,rmp-,qf=3,zf=8,gkcc-,rl-,cvf=9,nbxl=8,rmfq=6,ft-,pjvd=6,knz-,fhzt-,cj-,nzpz-,tr=4,tklcc-,gns-,hmsc-,dxcgx-,zp-,rmfq-,vftk-,gkcc=9,rpz=6,cd=2,btp-,bgj-,zkxcbl-,mtlb-,jrs=7,hl=4,rqc=2,drrd=9,dp-,sg=2,xtv-,vspvtn=3,xpr=3,hdls=6,lnmf-,kl-,jfs=9,js-,nvk=2,gldqg=4,lvklr-,nct-,mtm=5,lvklr-,ccs-,bhl-,vfg=7,ljxl-,qtbjb-,lh-,nsp=1,fnck=5,tdh-,tdhhdm-,kdg=4,db-,smzrlj-,zlh=5,zhp=4,bfzt=9,rllmg-,smq-,zf=2,ljsz-,qh-,zp=9,dk=1,jjngp-,jmlf=1,hmsc-,sc=9,jgmf-,xgttg=7,phk=2,jl=6,nnk-,pv=6,hkf-,trd-,qzq-,csg=8,bb-,sl-,dz=9,lpt-,zvm=9,bhl-,xnl=6,rscx-,pv-,cv-,fhbmr-,hsg-,vxb-,vfg-,xnl-,ms-,rkh=8,hm-,tlv-,rt=3,lpn-,gth-,rj=9,zz-,ckbn=8,lpt=3,zhp=6,zlh-,ggk-,nnr=2,qhs-,cfm-,gt=9,zz=9,fp-,lrs-,ng-,xkqv-,dfhm=6,lpjt=2,lnmf-,qf=5,rg=2,rs-,hqp-,ghvx=3,trd-,shm=1,qtbjb=5,xk-,ftl-,knqx=4,pcbp-,ms=2,vbxn=1,tj=8,dz-,pck=7,qz=8,qms-,frd=5,zvm-,bhmll=6,hdl=8,ggrh=4,kfz-,dgb-,pd-,rlzd=1,sfcng-,pr-,mznfx-,cs=1,grp=3,vl-,kc=7,sc-,tdhhdm-,nn-,rlp=2,vbxn-,dnl=7,xb=4,mr=2,rmhqkf-,ljp=6,nfhr-,phk=9,gl=7,lfr-,dgk-,smbhcp=8,bq=6,csh-,ksd=3,ld=2,tr-,xnl-,cmdz-,npvgh=2,kv=4,tnlk=6,cq=7,rssgn-,xrph=6,gck=7,nbv=1,mtm-,nlgm-,pcdtdc-,gqxp=7,shm-,grp-,dfft=2,tsqsl-,xq-,zbzx=5,xgp-,ltpm=4,js=9,xrph=6,nct=9,jndgm=1,dxt=8,ssth-,dmg-,jb-,khk=1,smt-,rb-,nct=8,qnqh=4,frd=5,smbhcp-,vh=3,dgj-,bvh=1,szl=1,tsqsl=9,pxr=9,hprr-,smzrlj=4,bxnjc-,bp-,fgf=8,kdg-,gk=3,tt=6,npvgh=7,dbfr=9,zp=6,sn-,grb=7,bhl-,xp-,phk=5,gnsb=4,vftk-,vvt-,tnfbr=8,zfx=4,dls=9,tsqsl-,rscx=1,jjngp=5,pv-,cv-,jmlf-,zvm=3,gshmhm-,jrntg=1,gmhk=8,bvh-,td-,tszgh-,zv-,lvklr=3,vxb-,qbp-,rnz-,dfq-,vh-,prd=8,cv=1,nbxl-,sqq-,pljrqd=5,jlq=3,vv=4,krfvf=9,gj-,hprr=9,xm-,smbhcp=7,dfq-,pg=4,ct=2,tsq-,rmhqkf-,bbpdm-,hjmhxj=7,nmj=5,hsnx-,sksss-,fp=3,lpt=4,cq=4,lvrg-,xk-,lnmd-,hfl=7,bhmll=7,lfr-,dmg=8,xt=3,vm-,sc=9,qb=9,xsm=6,jszt=6,xt-,zmqb=4,cdf=4,hs-,nvbrb=4,rvl=7,zbzx=1,rpz-,gqxp=3,fhzt=2,cgsb-,nmj=7,sg-,xm-,nt-,npvgh-,qhb=2,ct=1,dgb=8,xhx-,fnj=9,cd=3,mk-,nfz-,xv-,tg=9,jql=3,djmbm=5,pkjz-,mmrgd=3,rlp=4,tjb=5,lvv-,ssth-,gshmhm-,sf=4,plvs=2,sg=2,cj-,hdf=1,mrbb-,rllmg-,ftl=4,hdf=1,mnd-,xpr-,rpz=7,znpfn=7,zn=5,gldqg=4,lnmd=1,rllmg=6,crfp-,vqnz=9,hlhc-,xgp-,hkf=4,bhl-,mznfx=1,tj=1,dd-,jszt-,hkf-,lpjt=4,tjb-,xfzq=2,qmvldj-,jz-,jgmk=3,pk-,hc=3,gqxp=1,bp=1,qnmljg-,tr=4,nd-,rmzbrv- diff --git a/2023/day15/main.go b/2023/day15/main.go new file mode 100644 index 0000000..95b352b --- /dev/null +++ b/2023/day15/main.go @@ -0,0 +1,128 @@ +package main + +import ( + "fmt" + "strings" + + h "git.bullercodeworks.com/brian/adventofcode/helpers" +) + +func main() { + inp := h.StdinToString() + part1(inp) + fmt.Println() + part2(inp) +} + +func part1(input string) { + var res int + pts := strings.Split(input, ",") + for i := range pts { + res += hash(pts[i]) + } + fmt.Println("# Part 1") + fmt.Println(res) +} + +func part2(input string) { + var boxes []*Box + for i := 1; i <= 256; i++ { + boxes = append(boxes, &Box{num: i}) + } + for _, v := range strings.Split(input, ",") { + l := NewLens(v) + if l.focalLength == -1 { + // Remove + boxes[l.box].Remove(l) + } else { + // Add/Replace + boxes[l.box].Add(l) + } + } + var res int + for i := range boxes { + res += boxes[i].FocusingPower() + } + fmt.Println("# Part 2") + fmt.Println(res) +} + +type Box struct { + num int + lenses []*Lens +} + +func (b *Box) Add(l *Lens) { + for i := range b.lenses { + if b.lenses[i].label == l.label { + b.lenses[i] = l + return + } + } + b.lenses = append(b.lenses, l) +} +func (b *Box) Remove(l *Lens) { + for i := range b.lenses { + if b.lenses[i].label == l.label { + b.lenses = append(b.lenses[:i], b.lenses[i+1:]...) + return + } + } +} +func (b *Box) FocusingPower() int { + var res int + for i := range b.lenses { + var lensRes int + lensRes = b.num + lensRes *= i + 1 + lensRes *= b.lenses[i].focalLength + res += lensRes + } + return res +} + +type Lens struct { + label string + focalLength int + box int +} + +func NewLens(inp string) *Lens { + if strings.Contains(inp, "=") { + pts := strings.Split(inp, "=") + return &Lens{ + label: pts[0], + focalLength: h.Atoi(pts[1]), + box: hash(pts[0]), + } + } else { + lbl := strings.TrimSuffix(inp, "-") + return &Lens{ + label: lbl, + focalLength: -1, + box: hash(lbl), + } + } +} + +func hash(inp string) int { + var res int + for _, i := range inp { + res += int(i) + res *= 17 + res = res % 256 + } + return res +} + +func focusingPower(lens string, boxNum int, boxes [][]string) int { + res := boxNum + 1 + for i := 1; i <= len(boxes[boxNum]); i++ { + if boxes[boxNum][i-1] == lens { + res *= i + break + } + } + + return res +} diff --git a/2023/day15/problem b/2023/day15/problem new file mode 100644 index 0000000..018f9ad --- /dev/null +++ b/2023/day15/problem @@ -0,0 +1,296 @@ + [1]Advent of Code + + • [2][About] + • [3][Events] + • [4][Shop] + • [5][Settings] + • [6][Log Out] + + br0xen [7](AoC++) 30* + +   0.0.0.0:[8]2023 + + • [9][Calendar] + • [10][AoC++] + • [11][Sponsors] + • [12][Leaderboard] + • [13][Stats] + + Our [14]sponsors help make Advent of Code possible: + [15]Honeycomb - On call for the holidays? Honeycomb adopters are happier + and less burned out because we make your complex systems easy to + understand. + +--- Day 15: Lens Library --- + + The newly-focused parabolic reflector dish is sending all of the collected + light to a point on the side of yet another mountain - the largest + mountain on Lava Island. As you approach the mountain, you find that the + light is being collected by the wall of a large facility embedded in the + mountainside. + + You find a door under a large sign that says "Lava Production Facility" + and next to a smaller sign that says "Danger - Personal Protective + Equipment required beyond this point". + + As you step inside, you are immediately greeted by a somewhat panicked + reindeer wearing goggles and a loose-fitting [16]hard hat. The reindeer + leads you to a shelf of goggles and hard hats (you quickly find some that + fit) and then further into the facility. At one point, you pass a button + with a faint snout mark and the label "PUSH FOR HELP". No wonder you were + loaded into that [17]trebuchet so quickly! + + You pass through a final set of doors surrounded with even more warning + signs and into what must be the room that collects all of the light from + outside. As you admire the large assortment of lenses available to further + focus the light, the reindeer brings you a book titled "Initialization + Manual". + + "Hello!", the book cheerfully begins, apparently unaware of the concerned + reindeer reading over your shoulder. "This procedure will let you bring + the Lava Production Facility online - all without burning or melting + anything unintended!" + + "Before you begin, please be prepared to use the Holiday ASCII String + Helper algorithm (appendix 1A)." You turn to appendix 1A. The reindeer + leans closer with interest. + + The HASH algorithm is a way to turn any [18]string of characters into a + single number in the range 0 to 255. To run the HASH algorithm on a + string, start with a current value of 0. Then, for each character in the + string starting from the beginning: + + • Determine the [19]ASCII code for the current character of the string. + • Increase the current value by the ASCII code you just determined. + • Set the current value to itself multiplied by 17. + • Set the current value to the [20]remainder of dividing itself by 256. + + After following these steps for each character in the string in order, the + current value is the output of the HASH algorithm. + + So, to find the result of running the HASH algorithm on the string HASH: + + • The current value starts at 0. + • The first character is H; its ASCII code is 72. + • The current value increases to 72. + • The current value is multiplied by 17 to become 1224. + • The current value becomes 200 (the remainder of 1224 divided by 256). + • The next character is A; its ASCII code is 65. + • The current value increases to 265. + • The current value is multiplied by 17 to become 4505. + • The current value becomes 153 (the remainder of 4505 divided by 256). + • The next character is S; its ASCII code is 83. + • The current value increases to 236. + • The current value is multiplied by 17 to become 4012. + • The current value becomes 172 (the remainder of 4012 divided by 256). + • The next character is H; its ASCII code is 72. + • The current value increases to 244. + • The current value is multiplied by 17 to become 4148. + • The current value becomes 52 (the remainder of 4148 divided by 256). + + So, the result of running the HASH algorithm on the string HASH is 52. + + The initialization sequence (your puzzle input) is a comma-separated list + of steps to start the Lava Production Facility. Ignore newline characters + when parsing the initialization sequence. To verify that your HASH + algorithm is working, the book offers the sum of the result of running the + HASH algorithm on each step in the initialization sequence. + + For example: + + rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7 + + This initialization sequence specifies 11 individual steps; the result of + running the HASH algorithm on each of the steps is as follows: + + • rn=1 becomes 30. + • cm- becomes 253. + • qp=3 becomes 97. + • cm=2 becomes 47. + • qp- becomes 14. + • pc=4 becomes 180. + • ot=9 becomes 9. + • ab=5 becomes 197. + • pc- becomes 48. + • pc=6 becomes 214. + • ot=7 becomes 231. + + In this example, the sum of these results is 1320. Unfortunately, the + reindeer has stolen the page containing the expected verification number + and is currently running around the facility with it excitedly. + + Run the HASH algorithm on each step in the initialization sequence. What + is the sum of the results? (The initialization sequence is one long line; + be careful when copy-pasting it.) + + Your puzzle answer was 515495. + +--- Part Two --- + + You convince the reindeer to bring you the page; the page confirms that + your HASH algorithm is working. + + The book goes on to describe a series of 256 boxes numbered 0 through 255. + The boxes are arranged in a line starting from the point where light + enters the facility. The boxes have holes that allow light to pass from + one box to the next all the way down the line. + + +-----+ +-----+ +-----+ + Light | Box | | Box | ... | Box | + -----------------------------------------> + | 0 | | 1 | ... | 255 | + +-----+ +-----+ +-----+ + + Inside each box, there are several lens slots that will keep a lens + correctly positioned to focus light passing through the box. The side of + each box has a panel that opens to allow you to insert or remove lenses as + necessary. + + Along the wall running parallel to the boxes is a large library containing + lenses organized by focal length ranging from 1 through 9. The reindeer + also brings you a small handheld [21]label printer. + + The book goes on to explain how to perform each step in the initialization + sequence, a process it calls the Holiday ASCII String Helper Manual + Arrangement Procedure, or HASHMAP for short. + + Each step begins with a sequence of letters that indicate the label of the + lens on which the step operates. The result of running the HASH algorithm + on the label indicates the correct box for that step. + + The label will be immediately followed by a character that indicates the + operation to perform: either an equals sign (=) or a dash (-). + + If the operation character is a dash (-), go to the relevant box and + remove the lens with the given label if it is present in the box. Then, + move any remaining lenses as far forward in the box as they can go without + changing their order, filling any space made by removing the indicated + lens. (If no lens in that box has the given label, nothing happens.) + + If the operation character is an equals sign (=), it will be followed by a + number indicating the focal length of the lens that needs to go into the + relevant box; be sure to use the label maker to mark the lens with the + label given in the beginning of the step so you can find it later. There + are two possible situations: + + • If there is already a lens in the box with the same label, replace the + old lens with the new lens: remove the old lens and put the new lens + in its place, not moving any other lenses in the box. + • If there is not already a lens in the box with the same label, add the + lens to the box immediately behind any lenses already in the box. + Don't move any of the other lenses when you do this. If there aren't + any lenses in the box, the new lens goes all the way to the front of + the box. + + Here is the contents of every box after each step in the example + initialization sequence above: + + After "rn=1": + Box 0: [rn 1] + + After "cm-": + Box 0: [rn 1] + + After "qp=3": + Box 0: [rn 1] + Box 1: [qp 3] + + After "cm=2": + Box 0: [rn 1] [cm 2] + Box 1: [qp 3] + + After "qp-": + Box 0: [rn 1] [cm 2] + + After "pc=4": + Box 0: [rn 1] [cm 2] + Box 3: [pc 4] + + After "ot=9": + Box 0: [rn 1] [cm 2] + Box 3: [pc 4] [ot 9] + + After "ab=5": + Box 0: [rn 1] [cm 2] + Box 3: [pc 4] [ot 9] [ab 5] + + After "pc-": + Box 0: [rn 1] [cm 2] + Box 3: [ot 9] [ab 5] + + After "pc=6": + Box 0: [rn 1] [cm 2] + Box 3: [ot 9] [ab 5] [pc 6] + + After "ot=7": + Box 0: [rn 1] [cm 2] + Box 3: [ot 7] [ab 5] [pc 6] + + All 256 boxes are always present; only the boxes that contain any lenses + are shown here. Within each box, lenses are listed from front to back; + each lens is shown as its label and focal length in square brackets. + + To confirm that all of the lenses are installed correctly, add up the + focusing power of all of the lenses. The focusing power of a single lens + is the result of multiplying together: + + • One plus the box number of the lens in question. + • The slot number of the lens within the box: 1 for the first lens, 2 + for the second lens, and so on. + • The focal length of the lens. + + At the end of the above example, the focusing power of each lens is as + follows: + + • rn: 1 (box 0) * 1 (first slot) * 1 (focal length) = 1 + • cm: 1 (box 0) * 2 (second slot) * 2 (focal length) = 4 + • ot: 4 (box 3) * 1 (first slot) * 7 (focal length) = 28 + • ab: 4 (box 3) * 2 (second slot) * 5 (focal length) = 40 + • pc: 4 (box 3) * 3 (third slot) * 6 (focal length) = 72 + + So, the above example ends up with a total focusing power of 145. + + With the help of an over-enthusiastic reindeer in a hard hat, follow the + initialization sequence. What is the focusing power of the resulting lens + configuration? + + Your puzzle answer was 229349. + + Both parts of this puzzle are complete! They provide two gold stars: ** + + At this point, you should [22]return to your Advent calendar and try + another puzzle. + + If you still want to see it, you can [23]get your puzzle input. + + You can also [Shareon [24]Twitter [25]Mastodon] this puzzle. + +References + + Visible links + 1. https://adventofcode.com/ + 2. https://adventofcode.com/2023/about + 3. https://adventofcode.com/2023/events + 4. https://teespring.com/stores/advent-of-code + 5. https://adventofcode.com/2023/settings + 6. https://adventofcode.com/2023/auth/logout + 7. Advent of Code Supporter + https://adventofcode.com/2023/support + 8. https://adventofcode.com/2023 + 9. https://adventofcode.com/2023 + 10. https://adventofcode.com/2023/support + 11. https://adventofcode.com/2023/sponsors + 12. https://adventofcode.com/2023/leaderboard + 13. https://adventofcode.com/2023/stats + 14. https://adventofcode.com/2023/sponsors + 15. https://www.honeycomb.io/product-overview + 16. https://en.wikipedia.org/wiki/Hard_hat + 17. https://adventofcode.com/2023/day/1 + 18. https://en.wikipedia.org/wiki/String_(computer_science) + 19. https://en.wikipedia.org/wiki/ASCII#Printable_characters + 20. https://en.wikipedia.org/wiki/Modulo + 21. https://en.wikipedia.org/wiki/Label_printer + 22. https://adventofcode.com/2023 + 23. https://adventofcode.com/2023/day/15/input + 24. https://twitter.com/intent/tweet?text=I%27ve+completed+%22Lens+Library%22+%2D+Day+15+%2D+Advent+of+Code+2023&url=https%3A%2F%2Fadventofcode%2Ecom%2F2023%2Fday%2F15&related=ericwastl&hashtags=AdventOfCode + 25. javascript:void(0); diff --git a/2023/day15/testinput b/2023/day15/testinput new file mode 100644 index 0000000..4f58f74 --- /dev/null +++ b/2023/day15/testinput @@ -0,0 +1 @@ +rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7