From d6c8e382d09fb681068e1671e612340cdb413931 Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Tue, 2 Dec 2025 11:44:29 +0000 Subject: [PATCH] 2025 day 2 part 1 --- 2025/2.txt | 1 + 2025/aoc | Bin 197280 -> 201424 bytes 2025/aoc.cpp | 1 + 2025/aoc.hpp | 5 +++ 2025/day2.hpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 2025/2.txt create mode 100644 2025/day2.hpp diff --git a/2025/2.txt b/2025/2.txt new file mode 100644 index 0000000..a3f22ef --- /dev/null +++ b/2025/2.txt @@ -0,0 +1 @@ +11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 diff --git a/2025/aoc b/2025/aoc index 8b02657f7efc19f081059c954b34c0e0c8e1b123..90177514912e2f85d3bfec6ba6569c1cdac407fa 100755 GIT binary patch delta 33952 zcmc(odwfmD_xES-a}p5|A&Fe&CL#!OmynXUDUOzS<^8^L*Bsl{&)j`Tg^}UQb@;%)HmES#zJ+d!Ic= z!7_)ktqyq?)xC86f7xyBk!_SY!jopH_-0dEDSpNxgyGtrVY|k zzLXFBwSXgzcQA-NTP^K;TdmaAT`ls_Zu_)VquOYfY`Y9x8(&@io2X6`Vz2++PUcjD z$VckE{!XsutG|ot>EQC;;$^&dj5!&6_4oMdN${`zlu&Z?c#Gl!gL2N2epif^-k_&( zuYYljwzEN7`+QD!B1ZeE!C=#k2-x~uDS>^L%Fh!@3XwJ&%^^?*OZvXCW*5ruCs9p0 zNYgf8ikD_Fv1D2z1^h8&&P=`s1fSZ$Bpqau~XYCqcr zqo{XcwI&Ut++2|d=|5JUn9ka$hB2nS{>bdODisP^s^?aQi+qeEWa?2>X;5|)_V6es zc@E?-@Tf4koy`UmrnG)x3Obu>VDE`S9_noV8}e+Uh<;R<$z0=;oz0sOS^hb<#OEx( z+1b3F7a#EebwGEAeJZ;e-;i_;c#3-`!5>eEsn4CkFg=tqB zEwQf~cU8}5FF1G%xgQ3zZ?oCA*=$Hxvx@8}WuakMl~CeK3g0!H%ZFu)tcT%T0XU83 zOiWkH{2)2WJ_*ylb?8Jh%o01GtNCXIIp~~&j?rx}o@)R0*3Il{zDT;OSiUNr zW(3VjZB*lhraF_^UCnz*?KM_=Ex!6{ryeEmP(_xoYzdph7~Tq9D%@j(d`nmJMzUdI zeG_a%^eD+C8}nH<|B($C$k&n`{nY2fw0Vv}>Yy-fv*Y4s9iTo^5iW^v1!(O(p;~m4 zCI1%mWLI+xW%2?Wd?CKN^0kC&1+5uK8BJvQL`z0_{%G|OE-dL$t5^1DWIh62szBwt zjm+g>v}+!<`eN=OlHCl2y(RYMtI*M6oZ53Q=lKuls?Bh6?Kpz+OX2)dI6t(vO642H z@=@{B-g(sCMNVxM3>T-44Jo0UQXLnjHE-InJ5eL0I#q}}ynyBTqd&0E<(Cg-GefCA zx|bZKA`N2MAkNaMoAz4M!ET!=t{ca7bnKMb>i}k(adOU_~yRpoT zZ6|dzXOOP5MXq@{_v#o=dJR~w!J{(tCp`np4e@nl&{jFOQtd;v{mwzE2-U7QFIIo* zsEu>!Y8>1VV=jAepmx$F$G#X)4r?VHwUMr!)wyl8fzd%)xtD{Q(Mmhzx=?lOs6E?! zvs&0uyWKq67;H)F5v(P;wHX$hP;GbYXiT9hHwR0j#w1i5P*CjBk^eSyQuk`A;4ln{ ztEix$O)4?Ue669zr$u-+P^z$XWiUP&pgF)TtamvG#|5^49jSu&Scs7Ny}w* zmXY={!vB^C>3SfIC08n4BT>C6LY(UZS*1bj(8jy>Qj)bD?q2b7!OZiY+s*vvKehU% z9x27YbP)MzG@LJXGv9%XtWLtXwR^sMb>R}5Tf}6`D(X1 zHz=Cw9jvG+?X@*6QWOvEuNM6qmL*hI92Mq{?X_opB3wPtZc02{!{1T2Br4gU4n?bd zqK)d@kfKuo%@n)ekkvUjT)emxRkggJsG~!)vy)pINap7qSmYjbK`~xvXCXi1Nebj; zco&5RXEjj22`<{!@tUfB*SctVxV@tG57yR1OfkOP8cN9 z_{bbpt!}N|j_$3dw$`FMjSIYscpArNf@Gc1lzaWl;;YBO?;a9gtp+1~;sFnB+PX$s zd8fI`QSCpiS}H~ObS}z^2{x#gTWJToM5{+zX?MG9Q@6Cz*2Q&Km$uTb#LZL3wJI9< zjE_NW-AbDmf7>{}6^!|L`>8Wp6|GEoRZ%kni<Ek>(G0GsWAZHe^pUVcS!eby@KCjsb*AT3_E(Ug8(Y8PO?u4+Jl zHn!gk^vBtL&#FUU_t_Q^Wx_$2uNn;I1Pm$ahRWjxb9p*gh%)~`VZQfYIdICc3S32; zdw@3OS>MK|E$xukJutqyKT7ay@9_8lX@C+xQx`TE%$+%0`BnGWLLs+!GUne>bL=0k zwhqv`_Yd#<09rId%CVPKzN?t8+?Cl@8dP&UiXz6Nn2_J#1*;sh=qlnq_t$p!_ibfW zocpkpjEc}=PgiM`2SiDEx@vyluifq6JLtMU7Zb*Q<#6T3ghxe#;WKEc0Slu`5#5w5 zwN%W95iU;;~t>8jiQ(veuMfN>~{3SoNV)rc4bg=TTAeJ?fxK7^?{$(Jn>cavY)mg z(YN(CSTFsB`Jx~9QWGp9n{3TFT!V5fR|$yI%G$dYRVTJoRCj;PXGpuI7vigr+0tSm z^;<(4MBGXvyV;Q1>nqTrs^|X(6BYA_mz*k%T{19~xj6B~}o#>Qm%7rbx9Z zh_C+0TXS6GtNkZsr#iodwjtG1eW`_ZFm;N0$6NDxx4Y5T8>I=|n>sGW=-2`f?-i(>9+$29coz*!pP;H=cxn4H1~$Nm$`i$+sL=!urEL>f zqJ3%8l9VcRw=5Le%Q6EJyH{iBFYE3dU){o68#uAKQzNKb%8e!P9Z%%3*V|9a8S1LN zv)fH8b+vOm3?c1QeUZ-Ym!fYcc2?B8o?5fX2aV&XfSBdR;g*2Ei?%DNp;i*@wK~tJ zg-!`IP9%B3VRtPtFSp3PH#JH>a@US8*%AO*-;nM z5ZUB`b-}HuWZHaH?dUs#Z8+&I7rLPDlo2aXPYJpBxa4)k|#T9 zTV6~yCf3FDq(G{xcTxPD1qSuq=0!(d9;mb((p)w{fniLQyPL=_M9VeAa^7aqSX?PL zT=65vySQo5^L>Kifz`FOZUu%G^1kV~cX0zGqgEtGX5Mx!nm2!k(tNk8$j1$>ORbkE zv9$8L!o1y8>-@?Z#YUSsv1QS{S57F#-(66w@(CW=`+Zs#Rhe9{;<;kDysA!f)z&PE zRvWr#XBYYUU{Ca?W$c15@2sfRueOUXc^fGqqx%W1(PDo!!By+9*hh_Z)dnu^Z2Zm{ zc5$<;ZCMH~5nG~{QG2*JR$b(*bz0J)!7&%JU4k%cd)s5=EeY+QA;op-Y}@Q1 z!3_m&jD3m=4JlQH2A`?|!`P~K5Kq?>6xN-!D@!J*Q(Uy(OT*PE&f2`C6FT%E0~kvG zlYzmAFIdvTVywTj=D2Kv>f@r#S=L+ia4tHsthu7bITwBV>TpG!-mIuY&RA9bwyCyq z`AbSO&345E)uWjxqUd7;L;B*6GAO3b5e#;NFr*`O#++U?a|__Wui zsLwiSbF}Wp6-}T>)3Zz)t$I6Y9rDK+hmovqdS*ERFg=UB-yCgFZJTKG)(&john}H% z`PJHCiu$&r7PM}^(T7se&e*JproO#KO>orKy*=IdQe%iSrwrD{tpBfirg71bckU`` zV&kIT8}F*B=Ad=nJW~CSgJt2k<$#4_xMugRi#p%IvUqH2gv4_3u+y^NO;Vq8zyji_ z-FdgK@db+GQo>NthAkab^?D=i?6z;!qDI=b_YSHi`=W7$4^*ut&>2^tb^%ep*Xot% zLtK*K5-q;^AMBY|F&(er5{;(jorc=-p#hGTae?bDp=6&gx2J*HeL+K95F&+T>%&60 z@A~tmpw*v zb9LxtZNlOJW_L}+b+iMKA=7J?YRhuxl3o)Q8aYs?`vp7e09GFyj{z;12h*Fm0 z4&!Re_-b$DOf?~$6$l?Scv;4=0{dRzf+e0+1xrR&9Z>1+UxrVp!h{HqDoes8%DGMN zD(Aj}f}h)?=M3M0ucC43=?l%S@4=OH#ZK#=P4*B~WS_r=+ZPvPLh`G)-nb6^?LFLz zNoR8py}0nWdM@&Bd6iLsFbZ|PyOKSmvY`o$Deq@+Pph6ALq^ayg-e=O6(U12P}pNc zaYGx?w9?RUhw@6iR(V`CBh%G>Y_J?$XYc~jmp9@29?1KVJ?!6wOI)f7mkh6}93kT> zN5ofeUy@X1XTnu+p`*MiE{CwPhibNyo$gYO@J^~NYBPx+n4Cm&R<05yBQ0yGH?Of? z#nkK_klFlt^6~YUDj5j9u`D-P9&R1?DyCZaAi{Dvg^cO;BbPI$ao!J2X4mkGb(Jeb z$+Z>PC3N9Nwf+eU3w2*PGc~IQJOADlLT(4Hq;0E*sJ=>RagjxpLo1qAe^qAy!n$T$ zLIyCwEQTSkvZGdjfd~O3=-&u=KXFx+Eq5I)S7;bjg?o$@g&25rC0Ag0)HepOsdsM44(6u}| z#Q6F84i7pE?(S&KzO*$$eg<+Xq@RgaK|Je$u{-{w74w~oxSvB!sC1iZYs=^%Z4G2p zJGy?XnV-D<;fxX6F;y*7w!kpDDgwIor*2`odXA>7NI)w-BdYD5LF-}aTBdMoOUvG& zDQt569&;G;_iF3->h>^1wIZeU2v=fm`?i7+Bu3W^X~#0m3QWKF>d$b2Ogf^4{wloKE1eL!-KG?EHx|)>C>4 z_&N$n(>hoY)sIhW)06W$q;5bSe>AVl$*9%59!5qnuc`LiF}LXk_ldcUsomH0@u}^M zflVz;<77Wo+Jw1H^SQR88e99C9B|iPi!Zr>!DfdhZ==}1Q0XR0PVt>{WykKZc8VB6 zGRpvTi!TXw;yW#j>NkGF_Js766WP|pdbXS&w`H;zgV18k83`Svv8xlaOQ@8z94n$U zmZnS-)Y?*dgkPi5Q{mG^3C#>DG^XDRl_{bmm=>uSN^I>2wmSmxDJV#Kd`X+er#wk- zc>_z!m|Uo|n7=ae6??CSO2bBVOYOCES%{yJ;ZYO>T_6kE1O+w9saT7Q=ql1O5ZepO zePAILG#bP=8;E>7vU(y8kEd8>vPytKgjFlQ=f9DU;%IgJ9&yh+Ee?e{k2q?rGWe0u zv9u;Cg|(q6#zjdf=6&UigxE=nY~4z<#&xuYovHB`o>(4d?&SWpG#$nQzC)8n(0>*q z=+Bk3z#y{&$i$KXH92K~ag#+E$gyGhUV%pZ4J=NqlP>m)F+j2`8g@b8YQjJOePFK!Uo&G^eQ` zmJG(o$EmcxQ^71Pa(qK^2Ssy?@zQ<_YJ}&iMy+(4gJTMk(I!XN>cNV3X&avCZENUe z6JI^ZDu$*Qjd*Q=M~E7xXuEUTX_JTgs!<9(12j(f8MkeI{_dLJK^wy&+>1JO4t%Zv zGlNRs7m=164A>!Y5jzk}mtEA)2^6N5!~mvQM6%wbkJ4O2!GA_~R#54*s~cRjWiL6e zo@8gLKmzJ#dgz6w{e3$xO4x{2(?jF{u63ahA6dEvx+M38oNjn%N2F&06eb%A!q>3v z($-7&y#}zW<@N>npdj0!w*z|Eo81m8Z*=# zbp@-t`--K4Ap^?DqKDQYdsGZ#3&FM33<)Y-eMSsb=u4`W{nF zySSzWp2Rnbq9)1VzB!8O;Ozrh5?E7|(%5T=$6E^jUYk=13$>;(ZpKe=6{uy83p5_Z z)Lh-$&+i&qsunF!I6EbVT7t&hRbQAul3mcz?!;nHwsFu3m%C~u2`-w=d#g0RP7Yf6 zd%d*S*3MdXcN^_LZ+hAGx1s#B+dTp_r`Mevdg8*Dvb7U-E40*J9@>waowd-;cKz#? zd#W9-E9AgMA6)@DLOpHNIs~@V z-YMy)ZQkXhZn&y_va7Q)Osm;7KRn;Eyy8h1s*{T_-QQbMqePQXqJkyfxa%EVwdpr; z?&xgq7|-9d9q&hX7=Q}>J9AOVA;hSVB`GSIf~1yW{w&PXjoR4d&6P=7tKGiJHEmII zXDzjlotkk~8@GFLK%+WKNPQLayaAXl%V^c1S<(2aX1iyk+P^{@waAwxGz}Xiu7{(eB#bqEMp|_0vLMch#n~ zc3Z8xsAp7dU~Z6>-P%SQysw?IQ+s7!7q#&(+QEIEK4<@~)&2OgsT|F^$uPER$}i|x zgj0Ue?(Q2qup7`aO=;}ZEqZ9yf+b_BR%5&Pw`r+PbQy`q1(xqP@Fi94Q4#CM=E(Gc zYubj7JQ|dVa>YF8H|@wr3zZn{nf*U2^ECeh&T5k%wCDp})y3ax16PgHE*=<ifrj+lA&n5v|Gh51h`TG zF(5753v4=qtp}xt%EK|;b{E5$>Botl zH-Dr;P-9~QpfEas!gqeuZht(y@hB=3hV-V{S7QF74L;OP4gFbLc&NE|TeMIC_v@zg zD>3C5>p!53R9-E0xr-}a0m}~r(278-7b$$DeSfH>@|jk1$gST-Jc+ZOM4OShbx()g zK+bjdY)E^URz3`xn)!XU*BVrLHG+plvD%o!Z=0~&-@$ua=D0Jpdd>V}g{62NRx|%7 zE=h&i5@*DhQ%{MzQ(LS51y`5G33i+u@jip<`>iD$Z58fq6@Jz#JTSrZD8Ue`h~ZY@ zkyhccR^f40;R#mZDOO<>8*^QOY^}ofbzu{gx(*O-W)*I37520W2UvyMT7{=uWjxC& zJjW_L&nmnSVN+e{7F$JxTN!=TO1|7GywWNhZKdDYD!kfCXN^_3>mwbLQ};*U)Y~fj ztW|iRRd|S1c(_$~q*ZvVRd}3Lc!E`UiY084gJrr^#4M}u9INm=tMEdr@M5d*t5)IV zR^gRa;dNFmvB6{oo2|mztin62!n>`)A6kX?TZIo=g^yT;Kd}mb#$h}MyW@1qD&nkF z_*<*+C9CiitME0e@UK?k8&=`lR^hu=;lC29P5(}h`&JSEScTQ@R#V6-Y;P4_ZPmPv zR`Ly2@@-b(9sh<+cbs#RXE%#98F;puU4I{ zB0jV#(0;4%L91|AEB)?P;oer^XRX3VtkQmB6*hfl1p}=ToU)RSvyxA+3Qw^LPqzx+ zuu9v^sw;0>$?wXr$+A}eWfgJXD*TUCShX@_YZY#8751?T2UvxJtio-r!W|Nv9}TW> z8Bukv=AzWp2xnm=8ZSazmv==Mz(5t8Mp^fNU2zz%F zyS29Bq2huo{UN2Q1E5TGIcX~j3>0zMn4?tKiVB-Dyy+|rv^=EP;i>LP#o?YJ4yi_j zPpA$#$lO5ky@q(wd%Lk>jI$fB<(+gZ8hY}S>K`JKCS~}gO`rWz#w@?_GcsmRZ=K~g zVRDw=S`y%{&d=pR!e*tb~tKbj7O_tsFLd18#``hp<@%$weer{*92Yh-LED62~ zUe*}@J-#idKp+!>eS?I!0RQArA@0Es9U+AAk`NWiP=;?e3I^airNIFFweZKoKZ(bY zbK%EL6e0)y%_)e3?><$CLil#mg(!wEGNB7UbS4T8KX^6@cL}TH=s74k1SemHGOm|y z;v1hh_^H{*2>zBu$OwMitH=oc&DZf<1pb8;LY#nKnujp_VlxU0KUG5o;8(&oUPjH= zqA>8|-bSYICv89&{`dm4mI(o;O(+C>yUjvOCI4MCC;UA4x$rOIQDy=B{P)pH@cVuM z!?>1v_z_x!uIUaT9sGi$NC&^76fFTi>$ni>;fH*V0>fVqzZ8D(S$t~=|K?Xhm@Xqg zgU&&WRuLRTPVfwgIfqCz6F{e{%QCwK0*ohL2JUF1Yh_H#oHH!^%Ev#iyvy~FI2n%r6gkz zWy8M!e{G;p_F|%z2MR-GE1?v$LT!VDGCD{Ya)VGPgyUMH=BVY={QNMJPzuA)|6#%qjFDOpE(|x}Pl|wn z2q8{KU}oU)b8)0l%HRjbqGque6P;1h&giNxFxUm-qKhyT!VirT>d81X=rd^IXHd(o zLhR}$l+tcU8!wc;@#yXZq)9*;`1?!>-SYdZYRJpwxZP?0tnY zzApwLOPx#-N(EK`r{Pc@j=mZp44IgE`6GmK2fj-(N{In+6TWy} z*w{Uf%$`RJz&{B;aimZ$!tEV}(L7oh){aI2Mhm49zFmq?C#9gDQ-rbw{^(SpWTgt5 z1*t+UPes?IqyHDA3voGJ7~IEWFpU>#;dmj883u=T@srW)lZA45GBTZlX2%+kIYp@Z;7@%)D7i0Syuh!3k99$rG!+9IzHyof z%{C2#WE!T&43ugH23{um7K_E`nL^2*iQ2%w3BO{NQ0!(4^=1}Y>qQjsMWM#OglYB? zGJt;ve(+rA&lQGy@MB&^b7M^@cv-0T;D^jZ!RKKt!LOKyZkdniXj&kYss(5wTrRC& z1f|6&-D1qw#lqmQ1eq)m>O=U!OVJg}FwK@>e7uH{{~B~&$6$RO-LhP$3znlxmSeiX zuL5VTKr7}7#XT1V$Q5ev8+cl~5|vyj4CU~1R|#d;D$M`WW}$|x#%i=$D0AU2z+>IH zZwkY{H_^Xuq6^lb&(>f)*D*eHVJOs5avjb37W(uppZ%MpzAgWLmpPYdmCVLBMMP~{x2v%-xLVt9{jnRP%5m3#w|ig-GV^~ z|0I0(ttjL+G}kta{B6RRvqKo;_CWRlmf#Q3?;qk@R6|-}{&lb|-|g^n?(3pP~|fgXmZLn3;J`)MxR)G>?RgJpMCU= zh0!+_AAMr+*RoIjLg~>b79V|qKfi2?hYxof1)ol0%My|}iDLFEmjX=?tS2c9yipE; zos&QZTKH9FJBtB7M9M$OP68c_Kd0=+{YM#RbH>@&&d4NfYvj|mMn2`!1TOo{axgN6 z;i9zjTic^~*3d_^Z(~2iB*L9mh1jS!%~pDv&<;wBA{1P{DMnQ&c#TC_3HJ%yJ-8hP zp4jR?mV2@3^NAq4xG0$48wf}_Yd4y7px(0 z2jMQm*}Dp*H{4!0PwcvV;kLn@hqHCVvH&*_ZXVngxU+89$ZjHF>n_xAxFK-U;a0;H z!<~S;09OHb56;#@)HH|d4VMFV7S7XC)C`2%4VUaCYL>%&0#^ZN?=5PITZo#2zM|$; zKT)Fwh?>Hdq9!{?)I_%tHEm7pM9s+%7;7(T#&r-iBRe8dsHnLBw=U5hUDRBI+uTFc zjP8lT_7XLh;XdgtYBux{HKyXeqULlzQFG;4QFFV$s5v!2)XaKL)Wi)GH4ov=4-z%& z6JdO?sF^YZ1sN)8l9EKtq+!q-E@~V{pf<^(X2SELCUm5zX*NpKbcI_0cLdIMG+GR< zC)^Nha0}s1!}*O7A|+*{{^oqOt6k)T$aAxkR}R@m&CZ%Jb*jGiHMO~(xJhZP+pbU?^^g_HEnUr3nkg?IaLrX3srHj*iIiy> z)6%D9>VB=&7J8?Z%IJVT!$%J6AK82I)Qqr*q!}+{OrPC*#;gI8r)Tt<+$$<$T4vVE z`l^-6ASa7Tr=gisCuenkxz~{X`rsC-hi+J^gy=mVD85bVr9Ng~(J4v#rW0zP16^Fzu{L_dZe_UN|5}9KTB+Ui6T6l14oZr^u)sB@ zF|VT@wMX%{t;)8+{f6H0gwp&u&;O+^BE)Dsl&cD(u|iYu`S5p4ctcn?*Q?+3@fmY_ zO%_ul2h2ztuP1g;0~}^Otxa z-Lo+m^M_Kqy`-Q0Q1P_AVG}N@ZS=2HwQIm>yO@-eSs9bkW>4xjU|bmbY0flp&dz8o zTWdfG%ghFSV387_o@%JSVpKz%%NiPuCvo$L7R;m1ibV$fgCfOKecxU`VxtDy71^U5 z#J3Ig>LMl1?mhcxQDXmZeZIA`)W=2Kw>KJ3{6-y-{UNo)!|kfRXTRd65Bf-Hs_fR4 z{YrDa!#bsjy05XmXd__NI>p=RU}J-EeIKgI4182fqcqL+@{bfh^|+&+*+_NO55J8> zCmr>$^-5OLGmb{%={=N9-WmGbrN6&lX{&B^lDfC|LwBc>KGR-}G=AVj#k5nS4dT3` zo?x$rx`+c#M&tUcl(O_~D&`jSl%<#sjnt;%iWqLUznM_O#G$78qW2Vc zy=H^b*g+g>W;9+{L>BJpGl~^AyVAx3ho*?5&U#uuHA!FVfb_SV^+g3ru>F6XjmBli z(EUc;f3TXbpDj^*Z7a}OpET0b3TVHnc8=ALX^OLJFHzzOlW$QMWN)C)%kLQUZU@m2 zAG_&k2NmDO$J|i%MHH2TK0=hIZDRj)@wz)jdw5cKl{*^dZBlu-jz077DGYkvLB&h` zTIyNSeDAK~(1&l!pRnF1M5LrArl(uRN|<=lJu!VKB#ghf>tjDwhO3{u=?R+^PbYE0 z17jT{$zXigo`$vG7G(=eQbX5PMqc=knDa25~k} z?|4jU<@v4uz@efl&}b~c8>eF0pTA3)s%{I?6Beo+^bYSUA&xtP zF!N7gMZ<9ZAV>~p6e!C0K`;`Ha#v#$3W8`D9|*>(is2`0!o*S6$dr@`v%^9sU`v_( z^6adPX=1r=^qh?JtQoWViF>VL)22?Hk)CFu+%|egPj%vmui6NsT+9wmi^g$|jK zm6ny!b8^~LtjDjZ{l!-{a!dIMPlS!#efJ$QpvR86}>TF&+=JW=|Fku{(=} z+N6|>xf$s%W@V&I%19fZF-vR>F^IK}h)xmPL#Cxoo-U5lE>+q%y*I-7A%E;n4Zv429?ZvnKQyQkYzR6t0>=BK- zc*-yYO-=?{M@vp--p0I?ISK0y>0f3(&g|4erf(D@nau8 z{iMM)%srVKb(8U#%=CPUT4W3JhM7$dGUqYhWUgg)51;~>Fmrp!1U)SRAr|$POwXkiA;i)?k|SG6 z4#xvEs&OiFLp+8ip3D3q^9kl}nDNTD#a_s>QlGv{P>{dq$pR-5fVVS8GI#7R6HH<* zW?sPjfH{}>nE_Ito`I6Rxy%=sKVq%~n@B-X$Mv zX1>g<4wCV9K{EYp<`8Co+<;Sy;ejk}K2d-REZEBm(+9JG*3y9E5Xtn^mh^WrCo=aM zD&xm9f5E(#`IRIY|B%^jnB?GKv_Bc#%mVrjf_UO^sUX@&jv67^ow;$ck7ce&-E#pH&r2bsyzRZ2c$oN#|Pnowc z_Z%zZFETesk!&*JGL357h6UctNz4P7b!I#ux9ES(oX^}eRT?a0&SO4V7oR5ME16Ry zn*?1aQUOk|LI`#_V&8ExK`}NB;_=KC%-fhlu_sV`cDmH>%RF+t}XOqd2v*kmZf z`y>D-GXFkVaxQb~6v?NV?=S~r6QcCXUy$+f%(s~LF?&yy@s-Rv*s}j8VOJsp4_ILm z^ZaQtK|b>@%*D*<)7c<%(hSLXGGnoKojH|xVWy1V#r#_)@Bfu7NSrAZg0ag{fr^>w zD?s9)Su(zi`7E;oc0G!pGh4^Wb?-(xlnWDM+#i@MQ?|0_MM&%a~g&lKK_QioYXfglktUM z%ly$yOS7ib`5Vi1p=1I)Am=`c7yv7A!Ucp?!{0+0yAm0DG;BBF&l@V{mH-|EC?AQ zIcS*Co$(SXET4!oNr=*#~acBy~98SdVzUClH{+L z4>7l2DfP>kS2C9~pJetPCesJ3lKR=q%a~0kSnwGO?l9vZoMoE050?hw^CTxT=P>6m z7cu8CH!w^6eaxZEmCREmn}pp6nZdWLKyPnQ3k+K=4HPqMxxIx=*`kaEGgyIM8=(T+W2VU9|HNF#Ja~hQPaH4x zKW5Hn9=K7)ug{S2`ok7R0f@ev?!f&m6|Qk2!_;B=cHk?}^gj zU(AurVVk8rddEpY0aBR@m`%%AaDfFonB6DI1TODN1DBakFndpy@%~$6{8Z+R%=AJ9 zW$3?E#^dD*3%|h}BH1Ktws8qrL1SLeJmftYf06lfW_nwTGH72Y<0s*2mv|F%9<%>; z8GnNLE#{jRM*p|iAri5_sWFfU-f#azzZ?tQ6G zua_yvUzk`hfCS)5=4|GHyJZ673>klbIgq)@9vMHC`9c=YQ>IU4rWfYO-n-0M%nz6gXY&4^SR@UE%#sNT znFlcc!JNdtElR2!IYsmZwv%?%|Ahtxt$1rbV zrdJZFLJbbe_yXp|%omvNGn$%Q=Q77JUt&&TZhu(n z=P+k8?_&N#GR``%VD=H2!0%<5fzwgRnapFDw=nNurk5|N#;&DOf7g7;y_n0G-(aSf zG)ceFG150>3$aiNCR+sAB9b|ec>wcS=Do}wpU4c$nB$o%nRA!}d5m3TPGxR;9O-HQ z&tX9#3Bdc93z(~z&oDcn%nEAI=7iKwWqyr$AM<(Uo6N4CN_~e#GW{5^W&aOk!75hh z%lv?OF7w3Cq=7BWuQL}fmIl`{S1>pET^oEgw z8sh~hOAFDPM#PJm59LVyjrk^X{7I>Ad|k#bWe#S(a1u>RO@5jMc(cmF^rkLluz>l{ za>>`2E16rJlKL(yWc+OAc;+vd3z>tzl=}1rFxg*fVnJlC6x?L)%lzzVnIM<>OXmDH zq<*V2GQNWOCFY0B-!PZ1l=?59mHJ|pWYZ}YB(fmxE2&V*{2}vA=4NFw-YHKS$Y;)E z?sHDY?_%D;Oz%2Vjg9AJe4N?BCNY%-N{{}J`$ifFeN!4-!#tY#9&;IU<8P(DagEduVjjSp%{-O)D`pp6 z>No#RrcWkD{^C^@q^^|;Uog|_-&A9li!#AY<`f69EBIp`OuPbUK?{Z{5lTO_;uD&tKTSzuy;ajR6g&792~`I}6z zk9i)m%QmV13v(oMuS%(ZnRx@V_j^)by>5v&iBuMhmI9H_yq|d=bK@J*;63J9%rS-1 z;92HG=C;2}{W9kD%xiZ@{nVQjZ^{-YSa9AV$QE~)cixf)>~_io3vNsHV^;o9-2G3? zf2#3Z7A*Wzavt+q=8Md~G5Z~r27CM^^>dkrFw=n=s*qk6|B2+=%;n78O@B)RbmE2* z>|u^PA-P$Vj4xz{Kh`ji)5%G52J?!F-arKXRcizieTX5bv|#AuHG`QlaOU(qJd%eC7qr0+(V` z;7^%Dm~lYflEK9@GX5~m$5DoMxY8nhe}iN?Ol8^s*Rx>hS5l#^Q7YVI&SwriC*!X% zFJKPEYw?b-T*};s`7(1Va~1PkVk2IIzsURlau(33JSyQk%yc@BcrP=Z(jz|3OsDmT zzh$OVd&D=G>GU4)Kg@KBkGPqwEC5dP$?yMzSb$@F7KP5tbh?ic3}mKLe#GOL>9im5 z9A-N8N4%VwPX7^aV5U=m#2+#z(J4L>e8vJg7D#-Fc`oy9<{W0Vfvmw==H|?W%x#&A znY%KdWFEqN(ZqrYEU09j$6Up{l9`SfQUNzJ({V%M{meu@GC3O!Aj!$U?1CT z@oKqbTYJfGFgr89$?QwqFk969r%LUZ>39v(V z@j;d{UzZ%meDi?hWaiu)$&;B!GcN#}$iP&-`WuR}5sU3IL6SkT1Mj;BnMJ&epNoDW z{lI4=_qUNuhmv7i9I%y4hn0z&*-54!(I$3ih^37T-h<2v*3pjoOb496)zsh`Kw&d;(QeV6!d9wqCHW_%BF9lAGC9iKOxsW-pljJZ* z8D9}C*}jS7(<3CWWX_u)xv7(k-!)G17UuPtlD$n$r9$Z&QlK$!*&^A!nT)>>FZpBU ztQ5(P&WN|o7R$;dcO*uI?r{rdG7H`&A2MIYV4^NCEq9R#)^n3pGUqVk2SH^QoskK) zGB02@Hka{E%o)s6xd0cLAHt^$d%H>fBx&CyzGi_PXE?^4GvpHf${frYO!tuSTfC&f z%gh&7OQzRgsRihqIA!=IGo2SF{*(FiVPf=uDhyGA?9Ec)Q)W6RP6@hrbAgz5F%Ni8 z#?x!8ls+d_@+M|FNl)q9`N()WQBS;=x!_GO@)!TGpl@fXaKKk4NKTjB)=zTcR>`ZF z=_wQ$6#j^}&lVzHt~kETq0I5jsm$Yv6^umuWhnTVYZ2hgVgqS#AsBMiqJfWCx4z9uwe|&U)OUwRHlV4z9;<)Zb*J*5d%VQvcf}BkFN(JwB$-yoa84ZTomRg6i>{dc3k8|5T4{ z+C6U1s~#sk&Z@}N6aGXw4m~axU)SRs_4q+OZW{7hLyx=j$h+FcQK!~^Magk(|XSO(2FaAP3{-qv2sK-tntSUr{TPte; zIJO@5t;fUa@e7jwE#NElIIkYBvEqJIs|{8H;%)VKcRfB(kIy6PSM^1IE53TneZ|55 zYw!iQZ{WU#!_WPTi*WdvfAIs{k9xv=#jC|n2(E*}2|0oP3Q?59;n&~AJ8&EHrd3MI z#y1e81D7}9Zs~)o6|Yt}NiF__`wMO(TmjrBxXp0y!fk=usy|nS!emw{F|PQZ8S(2i zxC(}Q2#5c{QT(GTf8)$dErP;;-hexa@E34&dg)6z6*2>y5suDy+rW2%YYNv44*x}> z!2fzFT;ZC-xxu-^dBAzXdBe4U^M&(=3xI107YK*{rcneLLdZq z^hNh^(Hs*Im77S(W6?FVrGRvlsMdRy0%>ev9z4z3}b104R#N8t$9 z1di(aKh(9OrLsOypus?mLKXLedwS({`}@lDrcdp+jls4^b_Qn7!hHo-zujq!`r*j4 zK6s_#s`p>1^!@*PDES>5|B?Uef#h#I)v5olPG@HYsvp)rogJ^AIHJ1QhWF|b)@zO) z-$r%U<2+Rt-7gr2ycZr<><(;gtqv{Kue_l~>+Nz?2fh5iY7;odrTc?9aRsf@J@+ov$B$2n$c^B<)ohOUxu73%GDtK4`&?m9(GOj z(renNjhzzvhlSI5^4_!3CQi$ko~6H!C?!VkT8cC0-~XTnxI7+@(hcc9R1cf4_R!1z zRDJYL$5bc%$R)L{-ff;5)!A|ezI)8{jPTIVu+UIaj!KzksSlrj4oyj!oi!_k&dNX1 z>xWbGN{-^vf55b`n8?WJPLYwJogzAg#zsYjMTbS+C;NU^qx z6VbCX(q^SkN}2uQIM~POLYx{6K>d&=>d`;FJV*6%uU|?WterMwXn2Yxc5tWk8PhV; zW@S7oUN0yh!^i4@9Mfk^#{tB-nX@b>^(W1Gl%QY#^z>f65-sIT3e~$6s{Pc-b9Hk$ z4zi*LTIyY|s-9|CiXL(dJ+b_IwS^kNaO$+`Z9r!F-A4KHF=7@ zX{nN+`y5l9^}}ZMnbuFK(zI!ozOf!^;d;|Q)zAZ8mFlua`q+GBum0XW_2z-fKh^C@ z^OW?tb5kZxoiQ$LYRa6nSt*mJPtNKPrmy^4ZPPze^y$$9r!3PmGP6>$(#GNU2|}L` z;Rhh!*%THY{)9qURP>XwPBBl&!b4-9l;QM!{W64yM?EQv zu%sRPSe3$~o}w82WYxo?pQ0E06q$atT6KOVBDB*J`A393S;vU*C+icThuudrMMOT? zjuBB$_CUl_nl9ogrHzPrO4_H?AR^Y%?9q=kQ)Jkag^3J%vVS7=1XRCGWWGdS~)#d)u^y2y~zW$^)pY_IO-`Q zH!A8Wc|~>7Qy!>6rl=>&8`bG4c4M9#NKvs*c2`vFlLIsQDKjFPd#kVYF#vL*yQh6N#PF@i@JG#VXNJ&j47Y_!QT@fI_9i=b@gxeJ;#mz zI%VO3nJ=tQKX7YKgQ+LKPRxxym+0wuDC(P-D*p|BueNpS{@$l;e>f9&XmgKs?i2eC z{3f+=tIb~>onbrjR_Vse_CAXOvqR3!Idx~ix`mzYk91DBu=d!8=YPJpX>FfI=Kc#B z?|yMW%3J-S_w1b9{k0KZ_V;#u?Pw}*Z{Nk`g|5dpFAd%C)z|r-4P7%T|2dQWxflC> z^yB82Gq1XhI`-Kg-c@ers!ML(NC|XL>Ns}sy{S3VSD!zBu+imjJU<)o-&5%~LQtKN|_d++jazu2+w&nNH2 zeV^Cuk3OcYIrAoe6IA`|HnzB{2Y@a z|9*SQw0Bc7FE!nCX5jVVUrd|obYWv(uZHPOPfcGkSug!ZEjP88vhDo=zq+oC^!%x| zfACMaZTdg#z37e4$CQpN9Tz=dYxdZj*LT14$_Mv)4l3;Q$FYZBt=||X*0y8YcrWv-v^{=c+1*Kv?r$Zqt68IqmF~Ro6Nwy9-acd|@}|%l)Iq zpZN3AVcY$|frqo&CNIm(Soi#}i3v9v|8Q)W>tCgtKPaj-{?Y3Xeb2<_CT71LFfgQS zqT+Mn+{|PBS`B@3#IQEEYu|gd|Lo=wv!0(7^<2&mpNyN(_HIq%v(cNgJM@_I-fN>{ zE`B%Vl`a{7n}T{a8sWa@Y|B=YvsN97Ql)CtiHw)eK(T-%5O<(Pr|JO%BS)G*5KOBu*|LeJqZ{F!vRO?{==$rdX zR(W6f-Fth?)rM=foV}v$UpS=mqQEx}--=HA{+L(u30J<%joMb6=WxZQ?VT?6J7cai zxcAJkS$E$V@}d6TVbh`6b}QRI_s7wdb7%jwuKjB-b?Ns@{|_5BZ*ait)P|M)!(LzB zyQ}*TV|KbU>A7dvfN=?L&HkoY#%*m}#q2RruH7L)|M-s0RxXU1K3S{r-rqYfW^*CxB-&i-~wqpF4-x%yVn wbHBd2IRB$nu}7P)`g2RS8$APCzp`f7e~Vw*_@?hq^LpO%S~F_OybG`VA3szJX#fBK delta 26716 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 BgtY(w diff --git a/2025/aoc.cpp b/2025/aoc.cpp index 99f2cd4..31fee50 100644 --- a/2025/aoc.cpp +++ b/2025/aoc.cpp @@ -3,6 +3,7 @@ #include "aoc.hpp" #include "day1.hpp" +#include "day2.hpp" int main(int argc, char** argv) { diff --git a/2025/aoc.hpp b/2025/aoc.hpp index eca63d2..7c339eb 100644 --- a/2025/aoc.hpp +++ b/2025/aoc.hpp @@ -12,6 +12,11 @@ struct FileFragment std::string Data; }; +inline std::pair SplitToken(std::string del) +{ + +} + class File { public: diff --git a/2025/day2.hpp b/2025/day2.hpp new file mode 100644 index 0000000..bfd0e00 --- /dev/null +++ b/2025/day2.hpp @@ -0,0 +1,116 @@ +#include "aoc.hpp" + +#include +#include + +class Day02 : public AOCDay +{ +public: + Day02() {} + ~Day02() {} + int Day() override {return 2;} + + int PartOne(File& f) override + { + f.SplitBy(","); + + uint64_t res = 0; + + // Range of ID's (11-22) + for (auto range : f.TokensForLine(0)) + { + int dash = range.Data.find('-', 0); + + uint64_t a = std::stoll(range.Data.substr(0, dash)); + uint64_t b = std::stoll(range.Data.substr(dash + 1)); + + for (uint64_t i = a; i <= b; i++) + { + // Convert number back into string + std::string current = std::to_string(i); + // import 'is-odd' lol + if (current.length() & 1) continue; + + int mid = current.length() / 2; + + uint64_t l = std::stoll(current.substr(0, mid)); + uint64_t r = std::stoll(current.substr(mid)); + + if (l == r) + { + res += i; + } + } + } + + std::cout << "The answer doesn't fit in int : "<< res << std::endl; + return res; + } + + int PartTwo(File& f) override + { + f.SplitBy(","); + + uint64_t res = 0; + + for (auto range : f.TokensForLine(0)) + { + int dash = range.Data.find('-', 0); + + uint64_t a = std::stoll(range.Data.substr(0, dash)); + uint64_t b = std::stoll(range.Data.substr(dash + 1)); + + for (uint64_t i = a; i <= b; i++) + { + std::string current = std::to_string(i); + int n = current.length(); + + bool invalid = false; + + // Try every possible substring start (i) + for (int start = 0; start < n && !invalid; start++) + { + std::string accum; + + // Build accum char-by-char + for (int end = start; end < n && !invalid; end++) + { + accum.push_back(current[end]); + + int len = accum.length(); + int remaining = n - start; + + // Now check if repeats match + bool matches = true; + + for (int rep = 0; rep < remaining / len; rep++) + { + if (current.compare(start + rep * len, len, accum) != 0) + { + matches = false; + break; + } + } + + // Must be at least two repeats + if (matches && remaining / len >= 2) + { + invalid = true; + break; + } + } + } + + if (invalid) + res += i; + } + } + + + std::cout << "The answer doesn't fit in int : "<< res << std::endl; + return res; + } +}; + +ADD_AOC_DAY(Day02); +