From d3086d1c20bd9222c4d664b929034511b2d640ad Mon Sep 17 00:00:00 2001 From: Keenan Tims Date: Tue, 2 Dec 2025 21:35:09 -0800 Subject: [PATCH] clippies --- .aoc_tiles/tiles/2025/01.png | Bin 6725 -> 4892 bytes .aoc_tiles/tiles/2025/02.png | Bin 7369 -> 5469 bytes .aoc_tiles/tiles/2025/03.png | Bin 0 -> 5818 bytes README.md | 5 ++++- src/day2.rs | 10 +++++----- src/day3.rs | 9 ++------- src/lib.rs | 2 +- 7 files changed, 12 insertions(+), 14 deletions(-) create mode 100644 .aoc_tiles/tiles/2025/03.png diff --git a/.aoc_tiles/tiles/2025/01.png b/.aoc_tiles/tiles/2025/01.png index ec38deb523daf8129f85f08bd6da0ed2705c4c05..7266f8641f06d03e32f799fabc98cad2dd20d9de 100644 GIT binary patch literal 4892 zcmV+%6XWcOP)Nkl zd2rj-oyUJTd5V`vi8?LGvK85~<2Z?rI!;tO>ojqWwi!2R+Dv!bw6n9_e|Bc~ul%vI zGtKPm%>J95J+e*OOp+#>G&|YEsgw9jQXlaxJH91Z2PIJ?MN%Y4kOZ)Qz=lAO1ObR5 z36kGGG{VCJzIYEGK0G|U0~vkmH=tD%MQJ|PY&JK1YuFd9h-ZTObW zR|{DBO>M)sY`(ZSv~~D7b9=uygku?oT1-XeW8;^o$!i?T=sL9x-?I7QGVuTaK{4Fw zz^x8*$C^~wKXLFK&}v)_sa>Y;`j=k0{MyUHrep2qj)$L>9KvSOY$`#A=hH!7Y-}VQ zTgW{vVQX%F;4zc87XTtxPKM5XA@8e7Rg%wz!QwcM$siaG2*L-Dj+Wjhe|hV}SJScZ zGF??kU%8Cp1d0>5*#_;a9YYUAuYVIdcaURQ05G<$BJCb?d%vlDb;*5sRZl(_1S>H+ zHhcITKoC<~pJ)5in86GHn8DmRyl?E||5~Q2a_KRbmxLg;fi1YjK6mVW0BC*aS=3-! zIp3aj*a=ib~u(-@fzv2y*8Y(%R9V4EPLochBCJaB~wM zXmWRS|HV&3S57H$RU$p+^6bGkIVOV{%%1N&V`}RY!mYgQ<@i=!r*M_-t!`H_W`F_ddy{sgwkES znV1~|0FKR+(6>6N0+|wvVHn|m%wWbuwa#=bY;<{r&1BFQy!184GRfe~{JA5N^Kiha zx?(-%vP78C;=FfQ9FhwA3q{Uk(wdE`mMTzE#{vNH0}cRUlh>`C{dr^NKK(c*>j#RU zcTh$NL+;^vr>f)emjFOgc?W>#&9fyrzgX2w6%?&wAt-8Jz0tjCSO|&xM(MCW5ttT2 zjLq%M8+ITlW^{Qy_kCA-3XaQA(WT4kx(5KPeH&5ID2b?dssMnnH50aG3009RClbC} zrLy2vxX^sx^BfSSFXn4dCvI{9$#)+fAM9?w%=0RTY4 zceAN~GylJH!^4ij?Fdd}#b8-IQbm%ad;~U4hey7QTs^7TBCpDmUdd+$wZ2&;mbhMp zASjBHVyfr`|JcW`3C-?PhyIY&1dkv9kn~UFdW0{1&C-dbh&aJ!Qpvg7LI@QN=N_d{ z)%M%vm`o-fP0Wl2&wM`h(ZA`JD&em--=z{OuPetgnRt{A`y;n5M#e6QD@>`yge)1G>sg0eY?*i@dhK*39yYdgOHPuZqQ1|6=i0Q(*xCaK(1GdDxr5CQeou%%hv!sX zw4iFEYW&@Qk<=-3#j)z%W|a6Uky@$%Kq#>^_~K&Mi37h^budFyvnTgQM~;XC$KHM= zH)c8-oICbEfFQte2!=PU-eh#&d5k9Jr!tAS+UthuqpCK1OF|X!V3jSk&W(@Q2e%6^ zhP>v_A6aQ%i7It>TZW%UNh4`t%S{OYVF}elJk?X@k@cLXS80h($tbJuV?FC z(&^3J6&W3wI`oGX^3ALA{EB*Ccv}P>Hn0^XiZnV)Wb||yJzcI% zy8;)#3SRn(O{Y{Ht|YaX(c;*!)7HPa&<6kw(gjtJ%~mx~1*(RBwG3_RdivLnp`B`} zS~4RHE%)zU^W5Lt`|nkLRMFJpW}EB2M?0VX8{3-u>xwE6wHoq-RS8v~5G;%|_U!qo zXWLUnyKE~FZnSg`|EOblU)~N563L_%!3j&(J*^M#>wM<9%IXwE~w%qVM~ct znkrE8C?uO)y?cLwTOFE>^UBe`$>iz0z5loAc%)FAtkfb1ij$bhN;J7hm)Gd&GPZO} z`Vo{$I--i#*xRr0RONm-&Q%$xf}&s<9G>32zrajQ^3k-(V0ZUE^{esy|DCsaP?FmA zJwG!vcdW!^$or~N1>bouzxJ~5w5IZS>vS|RB822zQ!Ll^jn(yDE*;unW9(tyPtx(EUV^s0VEw{=^7397Zn$2eW;5N053mlV)ja{7o z_Eaho1mFw~k8|Jwd;ca?%>ksN#n!($dPDnX9}TKWs(1iEE^{n7cELVJ@z-`uGK-fd4PKcRi?gVf};+;BQL!%#6Mm0(jzmQFCKB+=YqU%gS) z)e5Q;sw(Jfxm;e3>WV6mRNm#M zFqDW*(~A>VmBftPx}d72CC|4WbGZ(Ev%oUA+LRw0o4TP87dA~(Gvmt7Og0z1jOC;j z$Fz5a(COW+pzjh`C~3ls7UjpsXU3FAj;WaygRnRdEKj$K3Xa^;d~AJE1!AyBhg;Pt z=IGiq7woby+w84XX6)y95@;sAy_Z*li)p6;(0RY?-S;El0I!HtOcj=2mOr|E2w@19fD(P%(f9$U$%`^tP+pysw$G`(q2j7WJ-&~Hb5|y)z zTzV8z6ty_1sDG6p_lBKHT-A1Wj!j-y6l-pSJo2tacc-~M|B6m|#n6d_e^N*~y9-{-%RSz$GF{ahxMn!j+AUklT-c~{Hk z-Ai#g*UX*zlQv&@Rpc!JmAD2keXZ(vgR9NGWpCbAbp*v)cKm>_sp{s%1;0IBG*YE< zS)uZ-uu4%>Z0d&ZtN#^NSdH8~pB2X+o|#Q`UkD zM3c+A`zLBgXT&D2ry@c5IJ(GX$uEtAJfm>&?D?Sz&C9Bb^yd2J=>hCN^M$ozHRQ{S zLNc}Wbw2smiMiY9Xnz@b^Pf3bXeVKHpg3VPE_E71jp|a)p_swp z$u{It5k<|ys&YAZg;hEG-4TMAygepw zkLC+nxOQ5+zNSQ7yPh|-bZI_009d;Q`nv|iA#5gf<&A$TdZ6-LF0{gG=;|p+OoOw< zv39dKBsz9Uvu~~{-ujxqP?Dd$e=T1uB z_1eDkl+oQTY;sIy`pEm@Mv7{nO8Fejd3_5O1F`9w{%_W5rI~8A{I)yGDpE>>sK>nVn`l5=L%-ywit?d}zC%kUQXU3+FzAyg#Tr*UGk_7}7 zFC9ZOv~$xgL`|plqT*O~{_H`S7k zMOuansS2qAd9cK;bZBP!)7Kn>+imx3QL+Y3A+ecM=<@OT^G9XAcGn(NE2rwD3S_{_ z&1Ei=UKlwRx&Dn~aJ#i{qpBH10Dz&X@QrhU3&%1Exe+)Gs+6m0se(da$>cIiCqm~B zg)SU6d3!CZ))_rrvd>2@6k{PwOHpb$ zE-^Ejm>C5ClpslGD`sj!Nh1Ro0I;bflS*W$#bj_sW{8+7U*CZ@WcF4=TXUs+m8|$x z$ajUPg1qy*D?CyVn@%PDld4>ErT4pADPJWkeiiavIjSIco_FO(F2_}(hOcJdqAPwC z@?BA?Aa|a3ZK{%7u1{ZuY?YHL5WuRLT&_>wqHL9!D&WDYv0ScCUm3Q_PZdb!c~`5d z&E*yHU5?6--n?v8gep+Dihapl^+=U2d?jpEiYl{Yo_FQaMK0H;Z{BjN%v6Dr-VMC0 zeH)!aJ10MSm2`RS>vx)3yIDFhf8p4|-QL_ple1;>ZcAG)X0)WD0c!SkaO5k=uuQ0% zyIWabVWq;}7hWEF`<3!j1*#r}2tgX$9j(L9r{j^ilblqL zl-SRz4$Lg$(NBLY; zN!NF`vc5b|<);dimslw}1px7a6AW?VpZ?al_I_LMQ1klj01%%U3tTwLueVbrxm=&V z6`=|gf<;jjSu766WI|U?hOV4MFx=wpac_Kh)e}D-`{+NAcu4)FF8OLcwyN%K9r|WH z3SIZ@?tb>~ti2o5x}rFV8BF~D9FvJn-<&$~9)h5@_8yJbTU)tYhrXf`3qfpa?niK< zY4v@vu@P0SuEDLI&EE}OIhF8FrlKK~Ae)DFuxUD}X6ZSxYAl!Q&^K!i(#W-Mn))^@ z-aM<;H8ApJA~@|Fc)+@OH)(S*G?fbaX1;h+JOih4)m|>wp>I|lYvID-g$sxCx`uC@ z4c|B`bE3F!H0~Q!=qjU{%;h@t&EMQmtEp}Hmd!U0ST&s5hHu$?rC`-|Y8$>~^F>DA z`c3&=C2IKAo^RGX?`3lptKnOdzFG6Um(5jB!?#v_(Tce8YWUW$@BahcFXh3Tb$UDi O00001S#I6?pwAj-={3ciR0L5oY+azBu(37o9%9!X7(YoGyAYJo$15Q&a}I; z4?D9DO^?}bo1<-xwz=!Xc6`Kk9N(5L+p=VxmPAp!Pmll!U>_huAV`7$b&}HWiTLmb ze)#_Q@xyojp`kzi3=|8JB#XY5Acz&-GUkOBg>|`kc^UE+DXbFB?F#RL@fIVj(#`D( z?}G87;?&B$-z93=#3>xhFl3Ytdt)Ov$+13;WlB1?E4&NFi^|vm03aAa4QA9}CTdsF zAaDeVo|9a{rc*4PphDi1-xV9~NyUQMx5bP$ z+x7#xs%8K{xc5Tf+86S?s<1@-oL^WR$1!OLK>-Bu3AowW{N#@ZKX@$_3(b;M6-vv? zFp9w_h7v|l(`sJ-V5I+2;M#GHWdQ)%%0}GeAZprlHLY{b%VX*IIj^u1?qT=Iw*ds{ zs#_epzKLiE005#P>h?ZA{OSMBl2tiM(aSS{AY*$csy9uY{tE!0^1_vf4pFcsR|Sp762qkCI-4|9{LspO*bJ8wQWhCOJlM(9eNohD)>a5y|&>S z-w*U&RKltRrRZh%@wYf8jc5qR15fL!TZD8&^M-=LQqD^_8*CePYwfkDmY~AEVDCk0 zEaPvfvDcc`?9^DRVGWUr`lENRMhCl9@!HnyGOgNz8*NGdr0>S**jT^B0M+U%I}hlq zTM&(o4o*b|u1boA0^JQfE5|ZvGAblu1~ULq-ToH^RRI71#{mekc615}(EZ9;5hz7f z31BEPc;icP3TCtc06brP;5zdAR5V9*UOBJ6rlsl0ml-PIxpc&J<^ww9t9j@dQ^!uh zKv&sR{pjDbbTZI=!guj+sfgdc^N`q}AaCW4$0|D?j|}#V9sd&*a5p^mlCf!>*Z?=# zTAzJYU)dPGbKZOY6DsJo?|1?;Sj0ARC6<^KMseXc$FlmG7Ok~XNO7M(9Jqa6V{tY- z_7Zmg16MRkT2(xR(p`L*a1R3jI5s^S-neUM;Lra0-)~^WM{gq8v3_>X8-2RQo$ZY^P-llT<0hUTk z9($8b(*OW+ygzi~H2+&b-V%#p7~wafArMimGZhPItyRKd((m%${EB0lq<_+T?Udv` z-2JCfh%!(WqSaeA?G>lcAx}QzbULN>{(`Fb{6YxIr7~V>IYE zQ}e1V;&fB%Mvi4d1KmPOp!b5t?9e&u_(P4wX>48>>^UP=l0;QNNgWFSApXDs0AgeP zhPt+#mf2rFj>-6gLh!VdVN8>Kd8w$Qm z_MCk`+XB|;@)?jM2_VSY(FLQJrG0zo?ls{QZnRM$FUO=|OhZ&Q#$5wczzqP0S6CCC zF#v$2u>){i!ZiT+w+SO$uKz~C4pP|IyxzWfuaFXV4N)NvqMa$gw6+@ChTVZ%=QU=B zW6LAbTX0;OjG%;(KO*Ya&>^p(Wh0DhC5EN0DsaCpB|*6Ne8M$2R}?&)Yj-#vcp3nZ ziufkKcrzUjOAHK6>+=~*=a=IGx6YYYZ3*1TXm4S9V>%H7091A!uy*Wpoqj*qe`CE@gI5td4;8~ZSDAne}fQITwP!&a^mz~ z0RW_XG~pfBIi`!ps+|X`I-kf38TJoZSA2~eCI!vv^w({i1Ryj>FCs@qmr9*EDNCs z03hj|NH<23ArAlmf?$qirbm}i9LBZIJ$Ps)=jeJW zF*U+c3BfFh#9LR2*Z0D}Ejg8f$j01%8I8XcTU@&@Tdlw+C6V{b6YH~@g9 z6TS<7BkEQY_3h!_^TK^*gq73F9LuER5h~;f58en5-xODv=xA{8gV!9J_ZpklqIzRG z9**=~PRB#p!b+17*ReOOoA+ren*anT-$dZraodi^1p_KHRWQRjvD8#G^6r00>Xg~w zSaq$Lg1qEJziI6*-0VzFjpn?HH{i4;0169>j`%EVcEA|U-mmZL9JK%dp_e2b4I;Qs zTwCW@hDpQ_ok4t`X<_kRzIWu!g2ZAl6zRTjIMQ=UoH+capJ!X9BL1nH9A}p8*|_s;YA5|-%Y~K+b>`s%Byauax1p6+hBo+KTtwM%M__|M3bsdBeEa985uG*w; zSnE0cXTgA_lY#D&w(SRC6enGSh)!?WxR(x1NqXMVh4eB?7^SMZdLlYnco1!tykg8@ z8&EB;)>h4r<%@yp45-dPM*=d}iu3C|_fevGh^Sj_-MkORb?ImzaQSF-;95QdI_z_Q z{b{i8lJur|T7>`rZ}%yNBF(F}IkrAR1tzCXy(4MyMF*~>$%uLF1I9I-ER`T9`hz!4 zb1WmaQPhuBFt-Z9aV$$EAWXv~k4cPi(kH<`Tg`o;PQ! zkVl~RVsiAR%(V&EpiCbMNs>hht2i(F&VTAFm$$pZE6-buux92p6Gn}rPGhacEmbIC zfH5uK?a8K+ES*dzVsyYw1tux)xKINqCoji_Zp4OeDCfQNR*q&(5xh#U=zdl$EP^0l zTxV!pt8ZGbz28A90fHD1tpPLIb(KwgO42(P8@cJbbEVh^R+?MfTIJYz2)9&ap9&B4 zjGuUCo_KR&(ckVO@~RV-!DKOY>@>FTgs}ph&Jt)H^;$>0b@M*ojkErnXW6VVQF$oI zEuz(%H#}r)+nR3xpa_)u+g(In6~c0^@3L)qwBY1g8Nisvxoy97U6=d(-@*ge6<$>^ zwFl$S0A$} zO5Ru|w-AaE)vbo+4Z7Mk$^56;V>Vu8$J9xX~&%i8M%cZ7{w8t0jsd$)+()|Uh8a-%ubmrsPb|}>!#@7OzF#e zdGzx)mb0orL1Agkj^;x@LUa}KX2n5cvNu2V%E;mW%h^3B$!*PJKhW4}=i@Qtc?-hO zJR>Z@%gMmxeDjL2)KmrJg@spGnxA?lyR&!>ff>xrPyTrD!(R#g5jjUIUu z#&Dvlsr*z0WJ;|1z0c#8%6w<%7KF2*s_W3?xsO5Vs7efZFEdnvO{W+t!7(Wa!8B$E zqS4hp{B8cM7RQtG!z+*ZR&#D)*;j2cWUly`Z&=sv3=iD^k-Uoz<`uK?GD9aJ1T8oX zOF%N<1^~EDzt6FZ-cTVKyH$>*tSXRGSo#X1ZQEl-6Bmuz2cMq!?6-g`ejZ$Ln5CBk zcP=(R^$Hd82751(d8XQlktU;4myR?)`D2bw00{D&eP6jK#k@s5F8~WwpOXrUAP7@O zm)gz+j!DOcZ+LHCq{DsyIE~q1Y2R*Y+pMZP05?00ZCfLEiy!tW0<-sWsQ+rHU%Ciq z@Pl9QKZNOWJmQnX0D#EI?X+iPmb}Gb!Rm7v!XgL)LQrG-4pn?Z!<_V_m zkyH1AeU}?lR{u>MU6FyS3sz{AWvzLM@XoXfc~(QydR0 z>6CwxA!7`kVCf`FB^Wx1*=kL#8&y56fMxP_7m*hgv!Z&FsxAh~@ACFumbVGq`r5i~ z7hYkJHxrbb0qZ)E_Z7{A$-LRJWdRjtrU#$(Ej=MbvAyzXUnOXkZS z;;qqUgr&9`gkTzm&O57CqGic;Zv~3=&Dvk2*TM%=YUw!?W z<`;h|iB6b}jD6lYmI)8_SlX2qFc1XS@B8lL(bxH4+BpnR%-(fK;oW$I2f8_~@QC#i z@v;Q2V{gbrSPk@FOVhOX`j>o^2glZZ&aL}rZ0c4`UHrT_UU}rquS^V8l&H{GHydi( zj4c}@{g;B>CyOA3C9M9NU#YrYW39G#9?IFP4#9|X_cNGL)if{8fBWl#MvJ8?g~%CU zl_bg7_+8i84~5tvVNpy#005>p=DVS){K6WYz4M^3muJrW%EwSOHm$R7+@rPCz`3Sd zDunb(D(Hz#3>a!ve7p=T8xftsfB8r%Ii`A%X6GmK(d?aZVx zSgX?GFrqO#G6^|4tf*U9)!WUEuu28o*=CZ^rb&N}<(WnNi#R6jI`Vtdy4_Weynt6- z^jtb3nTnD#hN`7~yUtlB)NTv%vP`O?b+e&)18%8GMST7%M=9R~e=6@j?+MRXuf77u+r=qtn(lr5-wR%-{O#t8 zu$moKL}PK9S8o-kM24l2Ac`)VIhJ)@I1(7>seSml)@NRw`0}r$=bmu3U<_3yytb|1 zKy-%K$Sp8@!@Tan%7?!*_R%l6bV~RpV>B4qS~6UiV!*jA#h0qh4Io$o;k$iX1=ru9DW-+<@c8 zPrfH37YQsSDD!UiAY{Y3((_A;+XAPW?sPNikRTNRDMl_b5YCxG1JD z$FkE=OT80mGDi$mC5YU)Butv(L#eZ9#?wnXsoMF3scp08$}#`Vb3%H- z7^-S9JvTVBN-fu(^xZg(8O+wTJB#B}h+yAkZ}*q^&X$&{_z0^qZBJ9nhN`Y7ghPf( zjGcHpJ~1|M_&2qvLdzlJM zPJH%TbH^^@nojX*Qng^ybl}$4-tI4DM!U;TRr81Jx0`R=R)TynR1@xzoZ;dH#K-Oo z|LNyqUWQJJr~mWFE39lUbLmvD=XALLlDT7-p=G109Yg>C3`K_SUh`c)&3B?G=Uo_- zhpLogzDLG#3rmKTr4oVe6M^d|bydy!#-rrKmY(Non+`lnv5p>lQK)h zRPnlwye@NgiF0~@#gw-<0uR_3!!pfsOcqP-Sc;xK$ zE|2^w1iGwpJ4;>(w6+@ih6lB_>iYdJ006w#PNd?Id=XYD_mH-#Ie6_v(mSSaTx)FG z$}*``*dMs|MM0uc^mFmEWtI$cNK032uUd_wE2Ps%QLTRQnw#apDXN;J2N!i#VW!=za{!7(WqMlquu z#&wQe-<&?p%Iz^$iuvVvl?uzyveB~sp|Ou&!>v`Obr0z(8(1pgy?#1)e>OK(VR3HV zudi-Kw0b(?Bi*C^p0jk;6rb`_6`P`EBCO&#E;+@|xAdL=lw%nPMr1}KmS%nx@~SAY zAPm>oYn^+ZkB;1qT=)#t8-*RYAqZ|d_(LWUpE&bALnSmuo2hk^bH{=46Yu0?Edoo{ z%Q6vGbMi8YSfKkv^`kE_$+%2})g_x>g}f?+h2T2J?q}{DeJgtjJZdoE6;@aGm;AJ~ zq|YT;8UU6?Zs&tHUxZbjH`1RG9WCj(2LK?)`f`TOQ^lJPOT^D=>R1pob@52fjTKVS z5a}MR>N<#mz~QiwVyd9SOh~Zd<>bO;JfTq36UXGcPYg z-i$p+!+n=3S~f%nuBv7A^_)rgCoJvT4O{o)Mk_;+wBI%P#arSXIF+OPyu1u~GwN8u z>nDTPPv&F|-Mt#RD{WMZ5qAy6T|)|4Wl)x0UWUB6mkO3^ZdZ60j5mj{$~dg9V*_Lm+v}>!@RbI#IY^8Ek9`X`DqDb8oDc&G15+E?Z0GOFPj5Hh$27?)p#6^7% zETYlV-}K)f`tHAxp^twJxq_mooS!90@*!^-^P&Y|U1?TcfxI~it3-4AkT-9dGp4LE5ri;1jTT(9XH#_ zx>bo;@92?FAy?vJ$n7F|*T4J0wGZDHKH67z)jjpPC`QCKn0u;HwZx_j`9;ImIc_4^&%@*8bn?CtD08~HuI;uA=A8%3F zIZIOr92c9s>*@V--BYjKPsQDAaMi~BlK_AlO|D0Jtj+5%gNdH?`Ys&>fX3Z#@i9}e z$gPk6*=)5p{q!G%^u`bTdommVfQFa<8aLVaK<}9^qa)YT$xF`4asMPn=y9_hL9zKa zsb6Di?1+xuSUz4TGF3r#VF6GS6&t)#yWNRe9QlZ2Qkb5seBxzeO{)-YZrPAkSf!X>1>P*v4LmEyGAU|K2-KPF z07(6=eS)e005}d1#M!Y$2tXcm&T>F0T3G-?Q!`gjh(mPN3IOn)`Ev5m?~-#e-T6|? zuQIPvjU{G9aYFc?V_8#etHD_E{cT_d*eoObDfy)`CXk`h6+FkrH<{1V6 zj!i8gZ*i&$6lyGnVTAuNJ&B2Woyo|o!RZ!0#siaqfioP-!~;{l%f}_@aKLGL<5IM; z1en3(c%(-hl9=^oikwO%b0#WURe_p5766DFH~@%@-8R>^%f?J^{Wxa94-`S~OBvPa z(;qK&Rnc8-)&hXJbt6g`BoRwpRREx~R_Lr15>-li^);;bm&&kwR000o19JI7| z@&7wEJZ10LhTysdF<7<~RYeelas)O>&-R}R-R#YoLKgYSuVk4)EAN6DOWdzQ5ER7; zv8w19@9=>Sg=zQkqkmj51&<&A5ciIzbIcB$Vd>a>L|n(F67lH~A%qIgraz?;#rE6f zm{cknj!g{(E*>8L>fcINRl?ugc;{;@Syql^QqeFy>kZw#8X6uDcbF1$Gk3rIP35K@ zYx6qXWKBgw;ae9{(OE-Pqa=|O6`nl&d*`N|hU#WOfc8%WFCVFR{8=FaJv*)Gr3Dn5 zs_yOo7fGKo9UQA|G^2)B4YaBX0E8MV2VPvvI(q02njU6o%F}x=+<#mgIQ+>6=`oYx z!1T%g0R#b#LonRZw#neS-;Bn5w81-sj579mqb;-3oCEAb!_~Rtz(-oFy!I8 za(uaYB`8$sR`tAr5(dKR6bIVcH<2|hk?}j;3x}79H~*>v06d>o#!0JGRhN#=jbvX$ zTO_X-OE?D9%4?{o;n(uTz>Q|yXikKK3eT3DszBvDmMn5$|1^0e>l2d8P3#xvC(y8f$)EGilXV*6W=$gu{)K zW>jb3r#;zZoK3`2u}C85p@UPjZ(NuoEq*Jj=Zy?qjSO8?&wKMDnPE*1ylPNbRY4BI zB1sY@jOM0wrsht=g9%azFwBe@%sQ*fSl!Hr#C>CtdjtNP7ju1K`P`y9y}qJW@2t^T zD{zYgGng^G5y5Z-#n@DmOVLa$ng|D?zHxSZFdmo!jSH8VcvT`lzoM3X?@LDF1y>aS zAOpYsNA*vdZ4O()Q3s+Dy~^ z=}1xGnOhfvH_nT<0BPb)FG2<6O;!9q!iyDysz8&lsye$X9(_9N=Gv@C#iO2cUxxe}&oe0_zukK|+9#jQcg{8Mww!ZWpZno!4tdzLT)$-zd zl9^}$;@nabcb1$T#dQt4-ZZ71#40&e@w|dcl(m%~Re`dw2#cfT#rH6yMIp{2p)=cC zUic+WS|#C<+(zWi@GKq(hBxebQ_NnXs^b62s;#`K3KWEe;<~2YZ>29mEIDw}+VJ$7 z3(iZWjeWnz)#V8`^vx*e}(;#H4=tBQw$w(_YeP!Lu_&tAe&o$1@91zFYT?tcFM z|FXH|I5p?;a)Y^HwW+413{=HKR$F;i6=V{YYt=Jh!f=K$xrt)#nIA-A$8T9*pd zU1>Y2Rimg>#Y3X4{HqFNg=Ml>D<0dOGjYzSd-7$4+0M9sJQWRR`gV~pxLa~-^ovkc zJksl}e5wl4mvl&yv~_fA9R_ktDl&Z4cl~@K6ae7#_DaW^&9?SUl4AwRAnaAv_O9@q zjLSaJ(d)L3ZcQ(y5(t7CYg!}s1~ffYw5sB9?ZfvAr7DmJizG<|!>wx`*Tk2i!qdn1 z&raT(e}m~!YI=0$)`dom-G5t0cX;p;aPlj9(GjVz;=ZxDiM!PFNFo$q;!!r0#EmAh zy2-iz39?$cLs}Vx(+ygLRphGT!D}o3ssgdFcvf?BrzR<|NqXw=AHu#VnOB(}y?5|; ztuOydeZ7U7?PUFGYV4Nmw{&nSIX9!TIGA`eeEVW#_-ZX?mg-gw5@(Tldu3_?#@L( z(eUjHTq>!QTaNSe9yHaqiTwa5BmJCXCX|q>3doC!S#gt1(-Z?8nDpJapd2T7?QBBM z4Mrvysu~qmBttiQL)Xt{Q56r43*A+_&J6&Fy7i*cD%}F|qGDFEZk48oy=k5r(!p`8 zzwe}mL=l9nQF3?(s&ktN2h`JMJ+`$-tSD81WV%7wg`os&lAasAsU~LVZXd@o+2cKc zvcA>lR&sDd87!S8*-|Xs0`e{}y(dfBqk||JAc!t)@UJzu#;OM8t$Y&5dY#CDSB!#}ZUK4cg@u#aJn=M}}l3Cd#063&<-HmX?jb9LuO5=#eDJCTaDF0|4?sSUKbtBMi0MUs4~RO(y2j zX1vOybPLEkFDyjMiLR_iT%@cVr)i=H#dVNtZfmx`tkbfH9=_GfCgS3dvMJpH^3Ds3 zV>C=Psa*bBz^Y|dDd*duoa?vQ+BT|>pNfWOub&l%lvC*zkavDm&!sdRB1Lf>@9at? zD}tgD57o+uM|0VTY^rN>Z`H6a2>|{d4sxQ}SCf_19En*`5Ffgn7nas;5T?^J3tJE| zBwEIdW=)A}eHj4IJE|IX?b9^d9=h2pb~~%}w<~thS%h^)VR^-lYhw!W(xI@=B%M|3 zTm}=@mS>&G*7WS#n3jQU%riW5`Ka)*EK9e5yz|0JhW(mS*W0VqvuZt;p=m-DH=3IE zyrbzxjKs{e_tY00cYhM3TuZlrydq)E1vM=d8!PM7v+7+kku!l!(#dE@Wn@fmYVu?_I_KitySjF_Dsj0v;o?GNR%1=8rtQuuSFHKE%HXP1pE5Om z+xz{Wgkj)vSQ)`^%xEzhEk<{<_=Z)&QC<7YFC^16dYenX;Ys_N&ErQtjZ6$KhF1;p zSx3${g%m~2jj7sSCBU^|hZehGkxmwWmT0F2x48c zrRvGo03bQ*%QT^b5r+C*Z>s4dmWrxC5Ejo$P2JNp&bPL9>g|=vtOi#-Su1~|lPnlI z7W0lN$H7T!%M0(RZvk04Hhp~mOy6-~;%%9%oCtc7;ee#8%HOccacp$_{tqTG7nE$* z#t4IR{kEKWvm*cfxdndSIhF|x^*h$6tzZxYZP@veKY!43?9-)El}gCouu4%>Wc<$L=|2hkb3%hx7Q``0UG4}dIaNXWNoab; z8<`k1*J)_H%&i+Sqd9QlP;zeG3%<_cbalUAsBF;mHj%O0iBQH95Tv`garav)XF;PQ z*8>+1Gw}sWLwU2ZQjOze=p?|1MepyRVRg|osckjjT%yn%bXNycQ*0k2Y@T=JL zNHXl_m=xitHdHrhS{wub;5hHaBbmOmwsh9_?3LZJECEAPGkwS7-cgj$qs08au6R7I zCo=B6X5v&To^gknCM&1kuu2C#>Cx<~9u=lnu5w=Rh9*Azo%aWw3FL#2acOi#MDXj_T~fI$CgPwzLfU#YiprW;m+H_uCA z>K#?~)m`F{@UZlNf9a|UGPyCDK7UB-YTY8i(A4yWZ!>+1Vz_#@+e-^gR+hbC)!%Ry|ilfo9-q28g&b$&7Tvd=sSPV^#AKR}yI$KI`-1xE26r^l0XxlcuR9K9a z0f0@?o^uDMd!=K&nkQZq&+BqbYU23k;z^2PP?dTg%(A>0yFrnOLGKSr7o9C3ycfTV zjAwLTyU5bb8M*QDH>^g+?|9CAeS81ErjN2KI=73v863-u9o;YP0~C*{)N3o9SE(=T zzj{(1t{5ddIlYWB`$f8WWJ;#B~JDqUP$os;ikgcDrWB5dspn0G z1IpPhhPmcK@rwN-Yvo-gRe`LZca={HV3UcscT5v&I!e8C3&ktkJ)u%t`B4=}X5LHP z$}5mp2eeN$^UvRVY=F5NkYbZCk&?Sl!6dF<;-wnFqVMbrwfe*Dg~{3uZ7S!hXs# z66imjev8fuDc!>I3O5zD?0bLslMnK*D$vvvB056vs;lmKBN+`%_kJ^T=aS%&8$rUhhew2O$ z9yi+vi*xeI34SwV+&?Kf8UQP@bPLN{sJe=WmOd7OOrJj_>sTQ)dA zYeUm^3KZPRE0dSkQ~p&2>T9e7odAGnMh8ROy>I@@vHCGGY~vqe?9 zE0A|VQ|NqjSL5q{Z*JM3l@-Ma?7_9D9FvMn42~cF3_(z9ZF7$ATV7UPfxMy`3qh=_ z9z$@QrR~wkaK9#2XUEpct{(?)oR4|O65$}KBPu$#vq?Ixn1}|x4_4l8O1tuJ8Hk-S45mqNdQ;ERj)OR0=J#eZ=`B`}d@-FCO&Ga3c={qLN zI(z5R?43&r2}LJ|qLV`^Srt&0R$hU;^3x6Fn%jrGdE=E4RvG8^A#dJzrNS!j+&<*Z z8!s~S@vrmGD#1hE^5b3L=RI$%Vm#z6OWp;3-t)#P;303h@}dP{vE)@lD;zy;XTgRjTG8 zFIg(7x-Y4jo1`+88_!~mJu~)Pk0aZXwM&*rQ4%SMl1Oo1Kfm?Cnl@ny$1)5RO@+O&saw?S2*)z(+S(_)E5?gU!`;fd{Klr=hpZ+NO)x2?g?bC0FE@3liHkF`5-n8Et zo4lEh1#@q!GTLlUy`Xh813>srU*P&z(!7eWM(Vk+usDumG6;qPg7681xw83{AC7nm6x{j9v*`KgqEy0BEWj36q_yY17uUE;}!ewNuXp zg_Uqkx=tSj1kqNv*!O%BQiU6AM{3Z;~)N2_I`7p{cAen2Y~w5{sPyT_(adePvXEm^5fiV z^(J%ekssoE^W@RL2aXf|R76-jE5|Y!Dyn+W!Kn0R0Hp5l+gVis0B{^2h_!RqqInNq z&Pu>~R8ez>-Oh#_3gfaFVi6}VRhJcJddi$z%}s@p%5=dXrr?uf#FNp6gExgW+O?` zw(|&r<(H6@u!O8APGmoGEUT+&(O9dpDXz=M0=F-#EtL(=zmwHp$ynE_;*ss$gC~04}(o(r7JP4=xG|LG&%%fvYE|*%1IpM*}EMShpR{ z6;>f$Oijk-?#1TrNfd)5NqtinS<@E0an|TB%%^!AW0I}n{7Lf z1g@XV+nIr!cPs!9KHvZ#Han`XYs;H6_vyzmOa7n;dSA+@N}YT8dRJBLksknn=;a*% zB4gK<<^BLb7;SXO%P|?f$)c{POS&f0K@R|^^k&*O4*Z;X4pTQGg)U&R!H(S=yfp-MhX>fFPJ!V`}TE=zbd4>eI1MXne?j<2?J|4?vP6 zf}oXqUr)NHqT_@5mhQaeEIL7o8k;v)^c>8l#GMm#$b)GXJ1~u{#(eMc(f)wgt`ghrHcy{ifyyi17?zH>R@9A7pHoiUS$ktAv9dDggL zhp+Fm==cyrQ`mzV27utu8BC*hJp0{L(9NcjnPe<*{bcsn`}T5NVEAkEhHZhnOU7FW zf<&k9CIbu6*-?&V4D}uMo@dl1``qad;Xyr{w;aHAM%UR7CCXV)Si0KQ&hP&Xg5ko~ z1%{^P&;1qvDA#ntJEyhR@#&7;FFAG{$XHNVg`!(rv0>@T9^$pLpukdsN05tY`Q`cVi>0hyQ zLZX~Y-m!%5RS1HjI3ZLO9rR3o_S5XN``oEtEt!Hx5CBMeW^y?~w=N0`f#51OlS;a$ zvnf<0lzWv-thE^pj>%-=k;KA;|LTdkPyg@ostN#rrZ9~T0HWhVGoSo3?Vm?b3?;M~ zD#HJ6Xx(bww8wekeQI_jc;oEsr$46VMyn6MLzwNQ*&Cg?3jiiZBLJX;#=iIU#QYdT zQ-r08uvGESBDKY#GFXLIE%sP>Svi);#3OXb6CS@2p1dV|VM;}VD=ZW{NJ%=<^O@ILHn-5$+Y1{eYVqJyYB^V5APgPSN{-fxf zG8Y`HY&0X{O-BQUwrwa*u$dH}sJ2!EKstJVQIf3hpq%5`e=^6if$Jv?tv$HC37pe; zZz~N{MF0SsN&&4lL;EJ9G`3Jm-F$%^4o)uX*l| zD-XO88R^f&Be>pd>e`=4#3GZomfW$xsL;~BLs!!p92ub8GaSp<+IQ$0I{jC^;Cn3j zz*n-CandMO)wNU6>EerM56LUUGL8Y2@@j0={93*cxK@vA^}-$^7b1H@!xx!U!qBqS zym>zzSa6^D6+iXLBNcEtkN>B+YoC43YnVotj)&vUiMi7si609EMujscKCpD`w6yOq zZ`^?(NGj-YpZSn-jw!WQ);v~Tl+d~y$Fg(+QK^|^oN`b5hc8jCsTJVOV*Ne=MTp+J z7QI(+ZY&k@crJcYlsE6F5P%Eb?GN7VmuYWo;zn%ZhA5Gus1k)$S}pr7f95Nr)_uY& z!CQ*37WXxiMzy_8ZLKCO4xH4ZDh)sF$)=NRDw#>dQUMnoSfIUg*}-r*)pFiHs|4@e zpXV9Yl)x(ot6tBFg+-DiN@(?sn{-W^H4i38MZhpUrqQd6722vMJ|*d$jZNM1-Mw0B zf%997s?=&*joMnRGTLy11=Hv;wHCo}1jX1)n#<5kBA$x)Wp|RI%?Df{3L%tgq{I@Q!>6D_&Mb@f}6}pBFvbIfa zttm9!kE#ez5t!CMSRMMNuBx3cWT;4RWFT;-KSN2auuAYM!dhtERpeD5tjf*3wr$T9 z-CQdHRHd%maoF0`>$?13;jtl^S7oh5RfN8|+t9j|usEbI$qSq`+P595=ziLF^MY^i z3|nklK^e5}D)Pz_7Dj055B`C!p|fP-C6pRn-N8T9*KJ(5_-Ua{7g_Mu;-t~kv0LBP zBit5N8W0S(_Z&2}cF&&pAQ@PY<}D2=7HNO`ukU^Ie~M~%d3o24szA&e=ZtH1z{eMdD3d~wt^TPLy9lIW0Rap=QYx6h%hoPZEnpX}Cty_g(DT>M@YaLMSIyf%K!0Fj$&jeJ^*icp0J6o10(x;rQ?VB|9I%Lu74i`gV5X%`yVP z@cP4Vjs5nYv+Rm$nXouaox2H3W##^F1AuGb1jcYR`(FnDvbuTX7k>``)=j-+RU=`t z#b!rzHEr%IUr?@TQ){=SV<(qM(;=^`?{lTRBCJ7Gfkcmm;;P2y-+82};(?RK`sdzS za$YLO+N5WONyHunJEqpw9{5%vUTLI)F7Ma>KNF95E_^(7{1?f9o1qi4Cy&maJer9w z{!fyAr~l>!Kv3`X(}wzXmELUY+BI@8LA>kM^pK!3M7P8fACGhQdQ{JC?0EtbGNL%C;yBLfWzU;j;=y`qCkLd2)V!b*B)qx0jGdpZ^NGs!rc zN#j}_S=DIm+Dlf6cSuWvusT4Au+~NEt|ITEuy|H|(`H3dVAJ%%iJwKhd8TbB_srC> z|JU-`pUdyJaJ`wV+sGf`%>^A;NJoPzgM~@PBcoSilQ(jC)A2}n;%0dAmSguzw#|Fx z8$y^WAdTE}j)ky}T6YzBQ6Vd?Gbx&4p#4toodM}Qf#FN3XdbV2 zg`lZykXYvq-|Y+EzEnh2JUA{qE_a<901$cWMeD0|SCJPLvXV=k*A#^($5TTtIF9uV zol|gA1R<-X9NvL!Yf}-weA=SNwjL6Xm8w8A-5~A4Py{wj^G6wrB0N4+$T?G9Nb6g^ zwW5O?(qQQ#w_T5|yNbL^s-8dkC=;={dotz1rfF(nO8%V*Tft%|vR19+u`cacb)B~E zD)KH03njGt*=?ENr(|Rzro=0TN@vbHZK%{*Lqog#%&Efr5!P?(t|ITEun4n)@iqX^ zA+M6m1sz1?0fMM<2LDQ})mGMPlyty(y-t+CE5xd|?ke&w3JWKddE!fj6$wj0W&lv> z%)+lFSX;UMko?T4us5A==(^rpcNKYsk3zWnnc$G)% zt|ITEun;9Dy5w)@zR${WiYAIsTm_|CTfOf!m6ApD$Vi{a<3-uD?ke&w3X5YDOf|_| z{#(MTWLBxuOsayA`ZU0)X$zF;39?DyrqKA1FIAU-l5X&Js9nR`?o(snkqipGhJu zV_LnUn=3600H`gM^@rb9G}|7&+b488tMtDsj0Cm@`;67)6*{h!@>QA(iG3!ytV-uH zn4~hBRXS7Si{HnT3~Upw$>8-<*{@~Ux~s^$D6DkEr|9l#bESM%rROpfO{n5pUE@pd zDvF4a3c5Y#f6HVw|L`S6u|?Ousz9{oJvu*blPxTj-kc3wD9x&^Zc((|S>}p0-&biWYUJOUnj7_e z{k!Zi@KMws1= zM-D&R^-{GwM?KEf);vGKY4f0$G>Alj~t5gKdP zo|1WsV&&iGmiT$+SSCDi)6y=tgFz6q{?K<8j{hge=3iq*a8<>Fv-2_$9vjRK*7AZd zSQ}q@m&l1FSqO=R3Ge047(tx0M_0?v6YonzSPhI`&!ke`p|ku>3j6j$mD>+5=BeA@ z?*Bp#FQ(ONDjT%bE&9f;@JN4f@U$>z_2KVn@*SNG+`cS&Cze1qf@?bH4&AvV3Nj^K z03KpL@BUjCE*>E3HaMR7jwphwbOCsXH)_&BPi%fnU#sBZrElrRw0i%* zm+9!D7krh$TG9K8#$GS~J^&D#9ZiJ`o`4`7O%2b#BXbrsK7HGN^#qe#vNW_}PXy8W z6$g1-2Z;V2h5WMS@}>!@ zxF!)ywIqUTu>wFLKkuHaU+HUGAzxh-g0{M)?v+1JxTn(*AID?}OO>XoQPJWc0075% zuAVIPqp^8&-N85IcsgKcDmZi|>6t+ZHA*b*>q;h*YNFuYYbHr$k_C5|DN8O6WHUSqT{$v6O5dY*MW`(1s@7LH>@ z5nPM%LLp%>G&OhnL+R1ka)RULPJbjJWsOGJw&~@JqW zmt!*XXMQ7`q*xYJp}5N2x;1ofuux9-mE$8H{G-q>I!Tfo%kuwWi3qOJygUlNvc%@c zJXcOs?RufODGv?L)vtuZB@rI7bxTHRyd0BZl2kJ2j?ImR#s+i$Ew;`3gs&MK%gmno zQ1}k8T=P|ARTF~Y^21>9ybKjpSJneSbbN^4u`P<=T9lWE)Vr|n#yOSVY~8e5X30uJ zaAd$cc(%~5>q}L9gjI>Lr>SL&qxVSmD?=w{PaTcVFU}Gz<1DDIriGysGS5e4d5cDH zEy~NI$iQvk>rZ_*&dVuTX$TBoa-RQPp%6FgOI181RHd)qSbOlz>~K52FggCoj~|h$ z06=ZFr=vlM@Ih6(U+nnakIWmk33+4F!vLUfS=`<&ir^|jCY}HEL-Emj^wv2vLtA>P)w)b-E3oz1`|qMq}=ElPo^)Y&;_1VM4F zL2au|(n%Gf674m@NkfJ%d_?cTsL;0KTEKqNtWQX^`@_!*PM(uPqz5N5{l|E~O*5iV9$E+h%UtmRkTRVF_!Q z4lK-n{!?@39%IKY;b~H(U^A(}@FnlyS&7x|@>A6^BH@}6o>`FSBS(+^lk}~k!xy5% z7xMp9ID#u*fTC*{1%;Jc%UmWMym>A>dd1wiN8i$|$b$#~Ff1Z#N@YJOo!u(EU_FnB63bXx0Z)-`U@*y|;qk6bDeq&(A+iCc2q9<7T$BMUyl zs?649(<$Mp9viNwML0H7*@uvB4M14?KZzyN?vC7DzrLq(JR z1&JeK@_Ew{zp($$#Tu{W$B;LVpLeBXY&w%wwj79`!%-e`onJlfcN^TbUach!Yb{W&^Vfd*H0zAv%1Dj z#YOXV+BfR?Ry?Lvt*@wjIBp|d0x4~(zkS5HXoS%^e2SXVd^@dt!iNDgm>s%@WIAb zmBCWE{jjdO8Pn)e5g+B6_TRja8%3x5RK=!K2!#D=%-Z30|36upK&aMpqRvJ z#M-o1Ca;1X3sDj3irUJj-;7S(j`V$w>x@~C+z5g;z4R`Vh|iz@n4uGDqs`R1wQ}bR zbEkflm$d|}*;?i!tkNNG@J_#IcX?i3CJ_q^o~nNC9VQtE1o2$>IIk$zti3XM6$lF> zwDx`9nmPXS+#~R~-b5Iz&cU<%wzZ_sDLNVeYs1<{!CNT8D$mQGzsrITQ$Wp*NQBOl z$y*3(q@I<$Vhu4wY}{dN-fZjI0|4=bN#D>}KHkpSvGxh?it)-47DZ7+u{<1;3Eb%m-04Fw zT<2)2=zhBKrFSPk{Wl~YD0Zn7Z^_rLsak#vd6z6gTelrQBUcP9Te7?B<+J*3o=^DaE$vU~w;v{qR)(fh ze&@nhKNou7l#lYO<;ReB$vakX=yY)CbY9lby=$QYyX$$xofC2AgiKZmlw~bHhP?TY z3YM$2Pk2|1H;=H&*xDz&E5<7pR(V_dgm>k98czK3Z&#jGgeSb^$GgPO`--s&@r1W5 vd6)QkUoqA!p753{FS;tMJf85DG4Fo^N34M|;fhhW00000NkvXXu0mjfb^D<8 diff --git a/.aoc_tiles/tiles/2025/03.png b/.aoc_tiles/tiles/2025/03.png new file mode 100644 index 0000000000000000000000000000000000000000..83eecee56d51dc03988ebb7ae059bd3554e8bd2a GIT binary patch literal 5818 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 Ef}9R|Pyhe` literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 807be67..ba3e2c6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- 2025 - 4 ⭐ - Rust + 2025 - 6 ⭐ - Rust

@@ -8,4 +8,7 @@ + + + diff --git a/src/day2.rs b/src/day2.rs index d5629c6..974fd2f 100644 --- a/src/day2.rs +++ b/src/day2.rs @@ -31,7 +31,7 @@ fn part1(input: &[RangeInclusive]) -> u64 { for r in input { for product in r.clone() { let prod_s = product.to_string(); - if prod_s.len() % 2 != 0 { + if !prod_s.len().is_multiple_of(2) { continue; } let (left, right) = prod_s.split_at(prod_s.len() / 2); @@ -50,7 +50,7 @@ fn part2(input: &[RangeInclusive]) -> u64 { for product in r.clone() { let prod_s = product.to_string(); for n in 1..=prod_s.len() / 2 { - if prod_s.len() % n != 0 { + if !prod_s.len().is_multiple_of(n) { continue; } if prod_s @@ -76,7 +76,7 @@ fn part1_arithmetic_brute(input: &[RangeInclusive]) -> u64 { // println!("Range: {:?}", r); for product in r.clone() { let n_digits = (product.ilog10() + 1) as usize; - if n_digits % 2 != 0 { + if !n_digits.is_multiple_of(2) { continue; } @@ -101,7 +101,7 @@ fn part2_arithmetic_brute(input: &[RangeInclusive]) -> u64 { for n in 1..=n_digits / 2 { let repetitions = n_digits / n; - if n_digits % n != 0 { + if !n_digits.is_multiple_of(n) { continue; } let decade = POW10[n_digits - n]; @@ -127,7 +127,7 @@ fn part1_clever(input: &[RangeInclusive]) -> u64 { for r in input { let n_digits = (r.start().ilog10() + 1) as usize; - let mut lhs = if n_digits % 2 != 0 { + let mut lhs = if !n_digits.is_multiple_of(2) { // If the number of digits is odd, we start our guess at the first possibility in the next decade POW10[n_digits / 2] } else { diff --git a/src/day3.rs b/src/day3.rs index 5cf2ada..2be5275 100644 --- a/src/day3.rs +++ b/src/day3.rs @@ -1,11 +1,6 @@ -use std::collections::HashMap; - use aoc_runner_derive::{aoc, aoc_generator}; -use lazy_static::lazy_static; use memoize::memoize; -type Bank = [u8]; - #[aoc_generator(day3)] fn parse(input: &str) -> Vec> { input @@ -40,12 +35,12 @@ fn max_joltage(bank: Vec, n: usize) -> u64 { } #[aoc(day3, part1)] -fn part1(input: &Vec>) -> u64 { +fn part1(input: &[Vec]) -> u64 { input.iter().map(|bank| max_joltage(bank.clone(), 2)).sum() } #[aoc(day3, part2)] -fn part2(input: &Vec>) -> u64 { +fn part2(input: &[Vec]) -> u64 { input.iter().map(|bank| max_joltage(bank.clone(), 12)).sum() } diff --git a/src/lib.rs b/src/lib.rs index 3a057fc..31454ef 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ -mod day3; mod day1; mod day2; +mod day3; use aoc_runner_derive::aoc_lib;