From 3e599160d8b463df18e92af55f58bc146041d175 Mon Sep 17 00:00:00 2001 From: LucasCodeur Date: Sun, 29 Mar 2026 15:42:32 +0200 Subject: [PATCH] FEAT: add vector, fix standard input --- .cache/clangd/index/ai.c.A50E4BCF59F9D441.idx | Bin 0 -> 636 bytes .../clangd/index/alcu.h.FC2EE915F1165072.idx | Bin 596 -> 732 bytes .../index/check_input.c.D27AA41095D26EB5.idx | Bin 614 -> 614 bytes .../index/fill_array.c.990BCC54FAB801D3.idx | Bin 544 -> 544 bytes .../index/ft_atoi.c.AAC0C85CD5A3334A.idx | Bin 0 -> 616 bytes .../index/ft_bzero.c.DAC107111976FAAB.idx | Bin 0 -> 428 bytes .../index/ft_calloc.c.10157C071BB8E972.idx | Bin 0 -> 552 bytes .../index/ft_isalnum.c.9726620C3AA51CF7.idx | Bin 0 -> 434 bytes .../index/ft_isalpha.c.28007DD25B0D54C8.idx | Bin 0 -> 342 bytes .../index/ft_isascii.c.691DFC1D9219DD8D.idx | Bin 0 -> 342 bytes .../index/ft_isdigit.c.FDF926DEC463B471.idx | Bin 0 -> 342 bytes .../index/ft_isprint.c.A68CFCA5D89065F6.idx | Bin 0 -> 342 bytes .../index/ft_itoa.c.AD9367D7015DA61A.idx | Bin 0 -> 650 bytes .../index/ft_memchr.c.047CCF6FB621D6AD.idx | Bin 0 -> 468 bytes .../index/ft_memcmp.c.E6FD67EFD6E31D86.idx | Bin 0 -> 454 bytes .../index/ft_memcpy.c.E00A74572EBFD6A6.idx | Bin 0 -> 460 bytes .../index/ft_memmove.c.A35DCCA87F6B72AB.idx | Bin 0 -> 558 bytes .../index/ft_memset.c.C2402FA78CA3CDA0.idx | Bin 0 -> 454 bytes .../ft_putchar_fd.c.DCAE755DD8CFF5C2.idx | Bin 0 -> 428 bytes .../ft_putendl_fd.c.EA696FEC111A6733.idx | Bin 0 -> 478 bytes .../index/ft_putnbr_fd.c.0577D1D6EEFA2E6C.idx | Bin 0 -> 556 bytes .../index/ft_putstr_fd.c.452F9FEE2DC8D0E4.idx | Bin 0 -> 454 bytes .../index/ft_split.c.0A611BF6D5EE9DD3.idx | Bin 0 -> 800 bytes .../index/ft_strchr.c.0AEC7670B61A66CC.idx | Bin 0 -> 430 bytes .../index/ft_strdup.c.6EC5C92AC323DA06.idx | Bin 0 -> 464 bytes .../index/ft_striteri.c.28BBB5646AC16566.idx | Bin 0 -> 342 bytes .../index/ft_strjoin.c.81CF224EB2B0C0DE.idx | Bin 0 -> 490 bytes .../index/ft_strlcat.c.8FB584B2E6F00754.idx | Bin 0 -> 554 bytes .../index/ft_strlcpy.c.D41441F6B29B55DE.idx | Bin 0 -> 498 bytes .../index/ft_strlen.c.A0CCD4D07FD631AB.idx | Bin 0 -> 394 bytes .../index/ft_strmapi.c.73DD60A0D4B77283.idx | Bin 0 -> 506 bytes .../index/ft_strncmp.c.130BC97847229322.idx | Bin 0 -> 456 bytes .../index/ft_strnstr.c.36ECF862C023E04A.idx | Bin 0 -> 576 bytes .../index/ft_strrchr.c.E1F60C7C5D981483.idx | Bin 0 -> 430 bytes .../index/ft_strtrim.c.5C1F726DF93A8E5D.idx | Bin 0 -> 938 bytes .../index/ft_substr.c.0C3EC6A520E9C29F.idx | Bin 0 -> 566 bytes .../index/ft_tolower.c.BA903ED2E7E6EFAE.idx | Bin 0 -> 342 bytes .../index/ft_toupper.c.750646D88D5B3BF3.idx | Bin 0 -> 342 bytes .../clangd/index/game.c.B03695838049B596.idx | Bin 0 -> 1088 bytes .../get_next_line.c.3CE3D9DE0FCBE423.idx | Bin 0 -> 1500 bytes .../clangd/index/main.c.449FC24725B4900F.idx | Bin 802 -> 704 bytes .../index/print_board.c.12D2F1C84CA68F4B.idx | Bin 0 -> 696 bytes .../index/vector.c.CCEA61708CF10975.idx | Bin 0 -> 2902 bytes Makefile | 18 +- alum1 | Bin 28832 -> 0 bytes compile_commands.json | 675 +++++++++++++++++- .../clangd/index/alcu.h.FC2EE915F1165072.idx | Bin 0 -> 822 bytes .../get_next_line.h.01BAFD108BBB5F61.idx | Bin 0 -> 612 bytes .../index/vector.h.9C0A9CF7FEC6535B.idx | Bin 0 -> 1386 bytes inc/alcu.h | 18 +- inc/compile_commands.json | 1 + inc/vector.h | 46 ++ src/check_input.c | 21 +- src/{fill_array.c => fill_vector.c} | 42 +- src/game.c | 2 + src/main.c | 35 +- src/vector.c | 159 +++++ 57 files changed, 961 insertions(+), 56 deletions(-) create mode 100644 .cache/clangd/index/ai.c.A50E4BCF59F9D441.idx create mode 100644 .cache/clangd/index/ft_atoi.c.AAC0C85CD5A3334A.idx create mode 100644 .cache/clangd/index/ft_bzero.c.DAC107111976FAAB.idx create mode 100644 .cache/clangd/index/ft_calloc.c.10157C071BB8E972.idx create mode 100644 .cache/clangd/index/ft_isalnum.c.9726620C3AA51CF7.idx create mode 100644 .cache/clangd/index/ft_isalpha.c.28007DD25B0D54C8.idx create mode 100644 .cache/clangd/index/ft_isascii.c.691DFC1D9219DD8D.idx create mode 100644 .cache/clangd/index/ft_isdigit.c.FDF926DEC463B471.idx create mode 100644 .cache/clangd/index/ft_isprint.c.A68CFCA5D89065F6.idx create mode 100644 .cache/clangd/index/ft_itoa.c.AD9367D7015DA61A.idx create mode 100644 .cache/clangd/index/ft_memchr.c.047CCF6FB621D6AD.idx create mode 100644 .cache/clangd/index/ft_memcmp.c.E6FD67EFD6E31D86.idx create mode 100644 .cache/clangd/index/ft_memcpy.c.E00A74572EBFD6A6.idx create mode 100644 .cache/clangd/index/ft_memmove.c.A35DCCA87F6B72AB.idx create mode 100644 .cache/clangd/index/ft_memset.c.C2402FA78CA3CDA0.idx create mode 100644 .cache/clangd/index/ft_putchar_fd.c.DCAE755DD8CFF5C2.idx create mode 100644 .cache/clangd/index/ft_putendl_fd.c.EA696FEC111A6733.idx create mode 100644 .cache/clangd/index/ft_putnbr_fd.c.0577D1D6EEFA2E6C.idx create mode 100644 .cache/clangd/index/ft_putstr_fd.c.452F9FEE2DC8D0E4.idx create mode 100644 .cache/clangd/index/ft_split.c.0A611BF6D5EE9DD3.idx create mode 100644 .cache/clangd/index/ft_strchr.c.0AEC7670B61A66CC.idx create mode 100644 .cache/clangd/index/ft_strdup.c.6EC5C92AC323DA06.idx create mode 100644 .cache/clangd/index/ft_striteri.c.28BBB5646AC16566.idx create mode 100644 .cache/clangd/index/ft_strjoin.c.81CF224EB2B0C0DE.idx create mode 100644 .cache/clangd/index/ft_strlcat.c.8FB584B2E6F00754.idx create mode 100644 .cache/clangd/index/ft_strlcpy.c.D41441F6B29B55DE.idx create mode 100644 .cache/clangd/index/ft_strlen.c.A0CCD4D07FD631AB.idx create mode 100644 .cache/clangd/index/ft_strmapi.c.73DD60A0D4B77283.idx create mode 100644 .cache/clangd/index/ft_strncmp.c.130BC97847229322.idx create mode 100644 .cache/clangd/index/ft_strnstr.c.36ECF862C023E04A.idx create mode 100644 .cache/clangd/index/ft_strrchr.c.E1F60C7C5D981483.idx create mode 100644 .cache/clangd/index/ft_strtrim.c.5C1F726DF93A8E5D.idx create mode 100644 .cache/clangd/index/ft_substr.c.0C3EC6A520E9C29F.idx create mode 100644 .cache/clangd/index/ft_tolower.c.BA903ED2E7E6EFAE.idx create mode 100644 .cache/clangd/index/ft_toupper.c.750646D88D5B3BF3.idx create mode 100644 .cache/clangd/index/game.c.B03695838049B596.idx create mode 100644 .cache/clangd/index/get_next_line.c.3CE3D9DE0FCBE423.idx create mode 100644 .cache/clangd/index/print_board.c.12D2F1C84CA68F4B.idx create mode 100644 .cache/clangd/index/vector.c.CCEA61708CF10975.idx delete mode 100755 alum1 create mode 100644 inc/.cache/clangd/index/alcu.h.FC2EE915F1165072.idx create mode 100644 inc/.cache/clangd/index/get_next_line.h.01BAFD108BBB5F61.idx create mode 100644 inc/.cache/clangd/index/vector.h.9C0A9CF7FEC6535B.idx create mode 100644 inc/compile_commands.json create mode 100644 inc/vector.h rename src/{fill_array.c => fill_vector.c} (66%) create mode 100644 src/vector.c diff --git a/.cache/clangd/index/ai.c.A50E4BCF59F9D441.idx b/.cache/clangd/index/ai.c.A50E4BCF59F9D441.idx new file mode 100644 index 0000000000000000000000000000000000000000..f2761ff616e31b09b78ef7abaef63e22e9e3ef1b GIT binary patch literal 636 zcmWIYbaN|VVqkDi@vO*AElFfyU|Br6U)_z};9-+6+H$7(6yuOrDpDAB* zV|CZPom=9pf9&OLu4((ruU+l`$Tfv&t7+fHh8Yhhcx}F&>+sfdNr-F{zwy4M4htlv zu#1*_vD^^0m{Z@Pa&_RR6&WhsTPxHKS_EErp?7T2(igJxI{izo2u7ZeJ+A-a_OiTJ z={ncu^K9e2Qdi+>w6)#-mh}0XS<{u;WR@Qf?rBUHWIJPchu1|f%v6`}n4?o zq&i@@e38HMpiW}3JP(671B0jzw~jcN0Lp;D<%}*-4)zz(JPblWX+CZ~aWDasRwy$& z*|9Bn0uO@(P+FE-RtQYMq|LglI(XKc|INc72$VKsF=G>vVwGZN;ACQC5EEt;VJ%8c zD{cd-hPi@C3dMFAQCBfnC73BNw*VD^90IdMMpThQQ3U1^7!6beat=a~Gq{)Cpg13|06QlK8w)EJ KH!lw}KLY><-Nj1) literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/alcu.h.FC2EE915F1165072.idx b/.cache/clangd/index/alcu.h.FC2EE915F1165072.idx index f020cd55666e674e77359e660e7309ee4903a623..275706893752753d4b686b82d0b4295b75b8ddeb 100644 GIT binary patch literal 732 zcmWIYbaT7H#K7R3;#rZKT9U}Zz`!5^#Kk2=nQV*<4BSAuiaDhd4(1(J;AyLzB2#r^ zkzQQUnbN&)G$%0oHF+s831zPS^{!cMcE)zu4G+Jke`c<>ig^__Ghhm{-;vq_4%d?l zcbKdVpMS(T(Q4h)g|Cfwrx%-a))#tykeuxH%t2q?Z~sO1{Ns=Ah55a4NPD)s>hs3X zpx=7mKc!E;9$?q2cQngl^ZoaAiSH$77C~36p+h{dvA@vgm0S zwTgmn`C#z{VyBN~_nmvl?*0GJquV#$%HMdC^lYxH`b_01Hoa-9LnqZTPLx`!P+Xat zbPO0Om$@%IpRx5W8xMmhkOu<7Vyt4E44fRy3{w1z!mK?Dg65VT7nJ2;kc7xH2n(_a z@-uL9vM>nn02R32KfHg_U$-zG20@qtAyy#)umUkYpn`i3wyx7VR$Rx!AOTY#%qk32 z0E`W=6=q#l9XxB!|K?%fhA9wb6=i4OWM^Ukn{am7g`9oP`~UEOBNC)WScFXkXaW~2 zgE%kHilWrC;vGO?m~R**A-;ebXJUJV>qcdi2qTZMu#&I_%t0`(0ab&&1XT_55KtKG z5vVXs7f=}Ne5kMz|EW)FvjdheatZTt^72DP8DM?_ss{T7Dh~4rP#Ek3sBlqgP9lg| bT$Efa4q^y_2nZ0qw(V8db+y+ej6w_mV3Ofk literal 596 zcmWIYbaV4zVqkDi@vO*AElFfyU|Ab@V0#AZ1o?M7n zxBc72>(4H&cgT*otzn~cVA?E=|8grXd-Psmwzl4F+}yBNc3tlJ*hg1ern&gccoFvb z@YdIh_f7D)!+R*heY2ysikvz zPf9YcH=1C>{dSt^#z5&;j0xYS9a!^9Rx~Q3XL^Q0nr-9lEv(%ats?^F6)xhqv|#oX zW|!+`xt|%`_FO=@;5MdPon!v`)Ajkn!P?VZh+y#^}u|2|dqcTc_k%v!M zNmv7BFwBXJk`Sjs4S_ifC=7NGR2ZfUC=7N6RQN~n{1@qu9zJ5^;^XDu<%5bcz}yB@ n4R#Y$yeKs%5yUJmN-h=$F?c})7%=fIv0weX@61MBMqUO0W8uOR diff --git a/.cache/clangd/index/check_input.c.D27AA41095D26EB5.idx b/.cache/clangd/index/check_input.c.D27AA41095D26EB5.idx index 47f685c7e16087e300b236bc7870a0c72435b666..1710bd224379fe499bd44c32d456116e0303dbca 100644 GIT binary patch delta 211 zcmaFH@{DDJ5+jEYix9sckeIB+C|fVdAt~y5|M31zf8D}l1XVdz#bCVKXNx{?IDZRe zk`Yv7Q{;sS19{SlN-!RbW|RV%$j<-;#hDYFXj3ki!%7Gnwk E01RM6nE(I) delta 211 zcmaFH@{DDJ5+jE&i!i?+keIB+C|fVVDIw;1|M31zf8D}l1eLj!C1AYUXNx{?IDZRe zk`a{WkmrX919`IYDli_5W|RV%$j<-;#X;(#pt+CyjfQ`L5|-UzY5-b4|sjT~)rz z7u}bRurHE!V7bFuFVQ`d;rs7gUHOLjW-U>3SG~}W>xyz<6LBbwOiOKVzFs~{#fs~5 zL)nIjJ_6esi%JWooU;qs5-BuSr~c;R(?t_g;;mW)O4w}TO8$K5Ctlb7nPR<6EOV@MX71U z8-P5RJxo$4=F140aGD6g41w9kCgMS!38!E o0uJf##2JMcgkUaXU`WnQ$>9fbd3pI+*|TBt<=bESb98Mq`_Zy12%QIZCzKf0y!^P5!1OcSd>3R*|4Rm)`sj zUKn*q{%Gu_z44MWCNO6!n)JsrzNi!ywGSAjrqc$19}Bs>sX0 z$;8MYD!?ej%21S=R;&k9X<~bX>qcdi2qTXmpE#c^Oe2hDlmhDpDg=X~)SN^Rqqr!! wSR6<*3TEAOuzdCX#bga`=HPUS57yHf|9vc1{i!9%eoU08h%5-~a#s literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_calloc.c.10157C071BB8E972.idx b/.cache/clangd/index/ft_calloc.c.10157C071BB8E972.idx new file mode 100644 index 0000000000000000000000000000000000000000..0c6e35d165a08227c7b808453e3a4afc8296f4d3 GIT binary patch literal 552 zcmWIYbaPW+VqkDi@vO*AElFfyU|2}(IG;QZ;$sg@9#T5`t5$W zBU7yXn~~MQLe|sO$CmAkUdJH#;pnWyGdWCm-fr8vhiM;YcJ@`nwu(dNWmp%m@H7N2 z4_I_%g-^{gO$*;`8X{g6NoF32n!ZX|pEeghap9V0*HR;1J=Y`Z;rCbKzor?Vo44ZL z|Cs@&AND^sJMn1C`OYLy;kk?dwL2%j%bqf;-E+aDM?br^Zg#$RDZ$2*b5rzr1F6;4 zi`;GHC&d1%o_gO(EP>C>H2Vje)~&f*48@hXNs2&!TN*K(5c&6I4-bPd1A`zR8y~-r zKAS#211A$BgQx(b5GzAbYFhC!pvss>^V{D)yTrgKBPhZxA_&uHVta(^MrD);6OSOD z0G}947|4_3Q-Se36!n)JsrzLM)GN*?&IuEitvy%pWY*a&K)u3T!hAqWz<@_kj7tp8 zvw!?+m0QO8t&BW^LZU*lFhwvk7^T3jh6xv?<|KmH#YM@*;y{{F@a*}EAMQu7qlEV+=^78VtvT=)Wv2${;@G$c+003omzDNK7 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_isalnum.c.9726620C3AA51CF7.idx b/.cache/clangd/index/ft_isalnum.c.9726620C3AA51CF7.idx new file mode 100644 index 0000000000000000000000000000000000000000..88b194fa044e0f63ffc9dd036e819a2bbadc803c GIT binary patch literal 434 zcmWIYbaPw9$iU#7;#rZKT9U}Zz`!5^#Kk2=nKyy-0-#*QoT-5u{g@4TzAiT~*wUQ* z?%3oTyGm9ZITo>VUyS}C&k2)5JUZ&1TR14F?b?$bS@%BDEGI91x8jm2<^1RyYmSNu zFn*Wv3obQ&@Nh%)1I7;%L&d+O-L(6$REn7^fz2eo$oQiL+wSF-?*6yjo=jA>JbTD1 zHSO~hJ;k6WlZ0(I+kCt!F7&iSZvTrL+sYTk-xu|6@JxZo8{a*G~DoUiE+G z!j*E)iN3m4j9EvoNnG_lvTk{>hYFL?n?$Zx?2A_0uD?(#|HJ+N>JrIm=?APYW%tH0 z6j$aZDFS_1pLpDD%IDZsJPg7N41#Qbr*LA+U*HA~`oDhabq|<>hB(;}+p!=j34FVdi5108t2=e*gdg literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_isalpha.c.28007DD25B0D54C8.idx b/.cache/clangd/index/ft_isalpha.c.28007DD25B0D54C8.idx new file mode 100644 index 0000000000000000000000000000000000000000..2960b9359d59d88f45d40579c86086a3622d1228 GIT binary patch literal 342 zcmWIYbaV4#WMFVk@vO*AElFfyU|~%mwH^=Cq;d#cYx1oO^F(yM3KjDN*RfdhhZa zlbpu-@3r0X%U6G4`17ggL2+enl047{Z(_wGO$)!T;$h%tVBq6n;o$=lKp6-qN=+*k z2Qp#m7^TqVa}q%+i;I$rxq&nzACF>*-oiAtZww5{xhXk7QyI8?fK(ji=30UgNJbIfZ4lR@=4?_bJtag&bnl>bV19#KZeO==WTj+EMW?r zHTkIegZs7jA03y}+ROZJbJ3gP%G@M*pbzx-*KV3}=$kta13v=;9}f!;AD95jKtNGy zTCq5g2~)=?g)X0y2vS*Glw8aWq#5}HgYU9(?w@JPz>u7qk^?lAft#0?nT1n;gO#0) JiHnhk0RZO`dnW(@ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_isdigit.c.FDF926DEC463B471.idx b/.cache/clangd/index/ft_isdigit.c.FDF926DEC463B471.idx new file mode 100644 index 0000000000000000000000000000000000000000..40941b73cab57384392aacea02ff99add5f55d01 GIT binary patch literal 342 zcmWIYbaV4#WMFVk@vO*AElFfyU|2uD-H*4L#PO6+$=*N2R z@+1>GrvLALi`n~yzvN;rD&{G!%uSL9`hex*uXV?tUOdjjz|X+I$HT(I2PS|r5Kxqw zRxA!=!qhQJq08qaf>ah4B^Pr8X-2+iO+T)*Su1TB7?N{Sa)72XaP#sqvv3MKz~r|fQO-(^ZmzP^e#nsM9k+Ulcs=BR(kS}%Du`cdK$&9n;t z;wu|i|K0trTQ_Ij1!mE0#Wls1xk>UsAAE1-3&@xuwVa26pMimohlPg^OaNsdpeQx1 zSRBZNsbiEvm(NKAsVpu^F6IW(jC_}6OXJe||LHI=BQ(Y?ZsCr(@%y|8d8Cr}>>Na+j&t!<_j0!_^YKX}*8%9W0YA zYvB0t=x(M?8k>zAKldJ{eH*`XM_pYa{!iyr1JewKtItA0b@=?|XZRhQw4V9XfyN&H zL-RhJ$#u~$=O@#I&KF9pyRyAE^Nh0Y&;49mdH?LJ@Ca(|Rh@jz=5o|m zdux+v_og0kYsk80diZzofn`f4cdIa6dOP27+N#;M9;-HfX`UT((!eU;deQHocLsO= z)tcVFp;BNNt^0SW$R7qq*GY?uD|3_Lfj+*{)^l#{-^yGb25|-kVObtoaWDat0RyMx zv{z^T_b%aK5CTf`@$pH437B*k|HP8!81wTy45C13H8wR~5mPo(UItDkMg~CvMiEwq zqSUnF3qa*DkLI_(e|Cw1QAXH+-GCRS(Zu!$*Nw_35f&a{K6XA{xOKt;i~{Tko~)^? zHQc4bT8vukFauzsOj0QBmJzmMvVz+JGYF^%1HX(=Bu&9@9jF0S(k2YHqzI@kGi6F7yEqiY) zD^?9#zHF-^chr~K*>85g+{E#mcTN4qsSz8zVmf&}I6qyyd3eHAj-vhd&pzaQvbij; zug&sPdfn+YjzT9mCi!-?o;-2y6La51>5`?>cU_m8+Py?}S>Wb_29f=7%OyU9UhcM= z)$*jo;#>U6?5xn$)^nc6Yu&i=;dr6=$_n8kC%w!gsaO9SSUfo=?XRrOq|-TF^PF$o zHD0+K2c-pN)&~>jW(wwi-Lvp*)&2M1tS-z{K_l*Nw_35k?+C zJ~cian0d0b=L(+8I=clZEX66s3sVg=EhiDgDK1Jb76;Odf?HpOI!!+i;>ak(AOu&& cker*6!w=;0^76B?af@)Vb8@ioF!M100EF{NFz=*$@|-;%xZj(6J2D>Jy)$ zHeOvCH|eX7o$1Yev$t(1xO<@L<*FN(0yfSrW1ho&-?I8e*NevY-*0E`VWWkL#hICi;QWMFO zD+{jNzi=(c<6}qgfAQw6E%u$aJ(|rIruaC&E42G+FZIUjb+3B87>mUdlkFDfReISr zHyT_V&hlBk_Gzxjec6I%m{j)m~oE!PMt}XpoT$!7s2=xELhgt`kKDC+fFbFd+ z2=cM;@d|0PYV$F0GBGlU3NQ+>G8Cnz725z+n%ExUx=|S=!o(xUr^jak*C;5!D8LTm z!DvP)uvtKDU{I8rlL%rI7bO>q18GLV8Qb(lCh+du!6?Ka1Xcnjl5z literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_memcpy.c.E00A74572EBFD6A6.idx b/.cache/clangd/index/ft_memcpy.c.E00A74572EBFD6A6.idx new file mode 100644 index 0000000000000000000000000000000000000000..44e38fb3c8b9089ca4dec8964787afced521163f GIT binary patch literal 460 zcmWIYbaOkx$iU#7;#rZKT9U}Zz`!5^#Kk2=ng4+FE1+D(oT-7f`G*Vy_RfFQ$QbY@ z`;u;u`7}O{99iY!vW`~!32$Atbo{?(qUoBXb$a*Z%hm7w$~VNsoT}n*+qm_TW<2+{ z9U-Qy^NnV|6v<4Af1R?gWb(}Y>k=xri@b4+-7vd=bq;g=_O$zH7a8y8nJd3(sQ1Wr zzhc<-Blx_f*8>(ChJLG7yGhSZ9Wj5?bUCB?=+a4it-LC_%lzDW>kRnj`W$@hc_~n? z#A(wd`78OEtAeIHVm(v9bDxclyR`u=jI1AoMSuvyGp`m?w)H%So~3Ia|$?an@Z zH=l<=n1Ml%kByICNQq5}pMjH!kwH{|QHYhHC^fCv2B^}+_6XOF$|w;g9zi}`K4Z8> zK>2_P;f1JJ4k`q^SYGmH^v2eb=x^o5F`q??R3w);A zM9)3lwWnJ%`hi4-+x*ol_V4tYxjQGJcJh;(vexI<9pU9*e024N^XwG%r2Y4MAMzgA zZIsp{)5IVA&&RP*K|s#s!HeGxI#RN68$M6F_@y_Xcaui1da6O0mccH^=q*}R?dq=b zuTBV_)F{uX3yu}rG{N8ET)cn|_m1K_m9KPnix_^{c)0TF|AGy^TT`?D9+<@NTjH7F zF`h6HRkjSWj19222LhM z1~CCfA=aYQwBib&QWM)FTsJDCM3{I4`7HSC;KmBd=*gJCOc8L}X?OPNyZMYVg7RGQ z!Z2Z&VkT6(Wds#C6~thQU^Jr?*cnjwF%+fdB!bw*MajkDK$=l7`rZn|8Lo1B7=;*w fV5%4xl5wrUVc_KZV@haP7W3xW)H>Uii7>RM)P-_J~ZEa!@f;g8wIoqU*|Fiez-a7@PwxvJMO=K_JQfgsx@;L_Zc2} z|7YT2rj!E=5~Wo&QeacyXW(RFWDpf#6k=s4N=+-a0je~yJ;HUPGD?JrN03i}PYte7P=HZ@ z9ma#vj8b5;fZD*IC^aV$#3(LGE*1yUjDk6t{xjq*+?Qt*Vh{o=0Tao&DLMQ=7B4S9 RD;u{67ds~h3lB3N0|2~or78db literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_putchar_fd.c.DCAE755DD8CFF5C2.idx b/.cache/clangd/index/ft_putchar_fd.c.DCAE755DD8CFF5C2.idx new file mode 100644 index 0000000000000000000000000000000000000000..09b5458a7b4446c5b7bf2b50a01b9287cf86326f GIT binary patch literal 428 zcmWIYbaPw6$iU#7;#rZKT9U}Zz`!5^#Kk2=nXiHL5ujYfoVfwJ^9~#EJXv0GVgkcL ziE5Jzy58*!cdewjRF67+<@jR2#q#sJMWOYQ;M-66Y$lYeB<|g{#kSwbwC1kaYVYf} z1EdzOlaA2;v@LQ9uL9FPt7;S1o`&|rb#3Mc%3t2;v06Ig-Ji%wEGY*#W|Z`qZgfk% z%-wr2yC`&F$fd~z6PGTwS)Rc)`RkL^zQ%Kt?4Nk1C#fIyti5<)>mpI>S)avQcZtEm2c<%TothsD^u|DU& z!LPs1)VrU1xy)D;TEM(PeC9re;>z44MWCM#yxqJwXUdviJPg7N41#>Dd_qDNtQJBH zoJ@=iq5_OUtPDk|X~lY=&=Fqw>!r(OcSadO0Y(8fm_``QCwaB_lEV*V@$&MsvT=)Wv2${;@G$c+005*2p>zNM literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_putendl_fd.c.EA696FEC111A6733.idx b/.cache/clangd/index/ft_putendl_fd.c.EA696FEC111A6733.idx new file mode 100644 index 0000000000000000000000000000000000000000..e18d38f57cdb14f39b1df41548eb0afa5d0f38ed GIT binary patch literal 478 zcmWIYbaT7L$iU#7;#rZKT9U}Zz`!5^#Kk2=nZJPaW1w8coVfuz^9~#EJY8OKVuHxT zh-#Ayy54OJcdewjRF6ApYFw% zx%Pb3_35HI@;`R%a@H1LIx_9;zVk&48*k?>`^5Li+0g&$5s624{4KQvSd#nv ze~rItK2J7c-!xBc(!oc$r>f%WuKu?>$&kE3YF+EIC1u5xxk-w^5ZIgNG@H+sn~Mh& zE`t25{6a!jtX4t{oJ@=iVgigptPDk|X~nKcDjB7~%77wZ@ZXK2Mc!L_KBJ7FAfq5J z%)A3{H!seavgQ|1Scp-G4<-yWEhiDAued0=SQ*3+1`%MuD9GvR)HYAdbpn%+FoO_G en1LZVHzkK3$mQkbXJz9SfGKC6Jz^r%eC2#6IIi)Wt6As89J^rMiC# zY*a#lOmi46J?YFTLZP9;lSI?i*u%|`Nb?FD9j|xk1$D!Ns1q) zM@CSVNfypyC`!#q1nDm>N-h=$(u{&;Po*WTId-!$3NZ-5OlDw6&P~bT2Xc9N`B~Yx OMYz~GIaqj@`4|A!)x2*2 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_putstr_fd.c.452F9FEE2DC8D0E4.idx b/.cache/clangd/index/ft_putstr_fd.c.452F9FEE2DC8D0E4.idx new file mode 100644 index 0000000000000000000000000000000000000000..c41961e737c458258de993b2862395716e7db74f GIT binary patch literal 454 zcmWIYbaUIs$iU#7;#rZKT9U}Zz`!5^#Kk2=nQwvgA)s8voVfwJ^9~#EJXv0GVuHxR zh-#Ayy54OJcdgjCRF6A-<Ycgv3&Pgp7Ra*w|+~m^_aw8r@e?#(txq+>`Ja^ z6Tf*GJ_jeQXWM$Qaf<&M+ozVtg6705SWw(ma_P^iely`}+5TsKzt@GXty*IFe_6ow zL;S~mA4%ot%v|zp;=0iK&Cbp@=VzUC{ni}F6S6s`dCz>NZL+d4DrpbunhsXp7XEwq zEC2NQ{{LQm$PM6J_Jn5-v+;|Waty_lxk-vZU;lUGXp#4pp3lP|%)lVX$I2%tWXWnN z$iT_O$RH}fD8$N8l$uuT3RHPSc;&B`E|=XIWdsEn1=wI3VKk!@ST|517<~E5e($(y z{z;H(J^^utRO-?nKul#@WpxySOlgFiC%0+*4ecn^Xr3kG+jr z?=0fe)p-~s7#M{4`1r)Z1W*PHc1Ep~G`iZR&%+=Dl-A(U5Cao1=`1x4t-C_*sXPqg zKxsK{IZ-eHldgW)>}RbTp2ou<3Y0cwH{};GVK?Dt;ACQC5ENh(VJ%8cD>ekigo*7D zt{at6B1}BOeC&L@a7PJiF>0~H+yE10l0tE!jIgbetv1Xmm|~zJkZWNskrDP}@#KRk zf;k(g2;^pjA~!`hxJfX@j8b5i!xS0I?)&^h$Z-pkjIchFJ{!zF8DS$vBUTtsw)R}X zlUZlCF!Ko8aM|#|^zsPXbJ-*Dym-6>U~-m53@1eXec8hZ^bd!vAk23EDN7t$59L1r z3cK;TiNS;!ic)hDL0XH8l8b?1&%h`w#_4zLb={EyMiFpAhnkz5o07v1Wb^X!v$AoE Oaj|o9u<$VRF#rIrG3>nn literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strchr.c.0AEC7670B61A66CC.idx b/.cache/clangd/index/ft_strchr.c.0AEC7670B61A66CC.idx new file mode 100644 index 0000000000000000000000000000000000000000..ad84d12d7324ecffec9fbb6715eb6cade84077aa GIT binary patch literal 430 zcmWIYbaPwA$iU#7;#rZKT9U}Zz`!5^#Kk2=nQwvgVW3>aoT&l3^9~#EJXv0GVgk#; zh-#AyD3sMU748G%u}wCSGeY^Tz868N1B;TUUjahkRbo zRjT`^@Q&KNrcTw#J~uDbysA&j(D@zHvQ~p_)}}L>_vSNgla-B8NqbQDm*M*K126Wx z?9AJ`FY)c`v-e-yPxbo1H?48{cZTB1+$2SyuO08-&YkA7<|hv*EQI*j`1pl2*fjVV zIGGq31O*s{Ss98_(~9+gDrIZW6+D@Bb_*kqkTj<>FHi&wU{)CAeWbypOuYUl#88{gN28gj{yJ!6P&^T literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strdup.c.6EC5C92AC323DA06.idx b/.cache/clangd/index/ft_strdup.c.6EC5C92AC323DA06.idx new file mode 100644 index 0000000000000000000000000000000000000000..b63e5744811fcb8512dfba4a6558bd5f73a46d3d GIT binary patch literal 464 zcmWIYbaOkw$iU#7;#rZKT9U}Zz`!5^#Kk2=nGb>V2B2KUoT&l3{g@qjzARs|z(c9> zY+R*~Xr_kJ#XvXd_i^uz*eO+;J30Nac0c4CFfr}eCL7~x2R=Q!`YmSDHP(JVvFzID zgP*P^v34}@7vAE(+S73RZCacA0d?`mJ&sFGu=FhFSl) z-7ackWfM!b@lWv&Ui4&3ij`GeS^I(`7oRr&UlN<%Yr5U!dA!+`$RCe)Xx<4r5$ZXs zucYp)y}8MixnUpQW=O19IVU*DMs;oJ|2&_< zwTF49*Q9KQ;>z44MW9d9bmVt%ZC+>31MghaVS`C!6d{<7aY zu9|-mWQd%wI!tp>YEB|ZNpVqfu{e-s6k?b7s0RWcvpWXlf literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_striteri.c.28BBB5646AC16566.idx b/.cache/clangd/index/ft_striteri.c.28BBB5646AC16566.idx new file mode 100644 index 0000000000000000000000000000000000000000..0101813cfd18a3cc476f3061b86b97f9d94d3cf0 GIT binary patch literal 342 zcmWIYbaV4#WMFVk@vO*AElFfyU|YUOYZgG?B6IWXvI(BH2huel#Ng1;%Ty`$&(OE0Dr+eQ?RkIbIJ9X?! zW-T{pWqI#an-eKOwpA1<2RiTmr#mTkZF-AZ?VN6y7RbC187RXMBBk9E}+ zweJ1{|GD2^`75hc%k;&e)S$RBH%T7o10fHwkk`)~H}Wv>GcfS+u<{6i37`xF6s4vW zivyW3b&OKz@;QkhmBmHL#oR!ek&k1Sk@T(wD-9SJl5O9 IG4e0~0NKoSoB#j- literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strjoin.c.81CF224EB2B0C0DE.idx b/.cache/clangd/index/ft_strjoin.c.81CF224EB2B0C0DE.idx new file mode 100644 index 0000000000000000000000000000000000000000..b135197646002d329471a7a76b515ab6465afbed GIT binary patch literal 490 zcmWIYbaQ*e$iU#7;#rZKT9U}Zz`!5^#Kk2=neTw~ZJ=DmoT&k}`G*{MzWSd$z`!xT zT2i@G%bQ(gTi=TUy(hPRJM80L)$-%L@50d8eyNq)=G|*gopJu$u7@JUD|eU&>2BV) zX4TD|^Co>wW&FG{C)8Jz+kvI#Ti$)qtIT<3uLZX?=pXwnxYlFR`JZt|7>p8_L}p)B z$k|x>$)lEQ+Mf%HGJO@E3QPM}p4l$quNPoo>1riaXUsmkb8lz+x9m4rYqwM_*!cfg zz}koYkE}il?|F^$w*QV31ag)2d8ryWPOTG7JEcLAx@08pTX?O6g^aaa& z=|#IYzyDBc|Lgew>`+cShP|Q-42vsslN5oz=5I4w)pdTA0S_oFg!tI_1cZ&)j06}s znHU)a1sH`{8H!TVinD+!V;;?KfB)ao-f`9ZlT1KE{)CAeWbypOuYUl#88{gN28gj{yL0Os;1D literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strlcat.c.8FB584B2E6F00754.idx b/.cache/clangd/index/ft_strlcat.c.8FB584B2E6F00754.idx new file mode 100644 index 0000000000000000000000000000000000000000..236e5acb392f60329960934e42ccb0a1c509a77e GIT binary patch literal 554 zcmWIYbaPW;VqkDi@vO*AElFfyU|CrstwM^}gAqi{n>ozvSA&w)gAbeP@?3@4cOS>=V~ zN#pmMu&1~Ene?ko2CbDx4C~W2=sZY!q;^pt=1h}~NBiYf|1T!Y&OZ6(WSVnB^9PZ~ ze+^$OI#Me?kz>Uzr`y%xiuY_k^W8t+`2SD%T2F)hEc+OwTUXXF6j$aZDFQ=b`WE5N zr|+$#c^HHl7zFv)`2>Yj*;NG@IGGq3L7CBniZ$j89P z2G=Oar^jc4;0Z7aup@YajDm0;Oq5XyY!A>#F!=J9{oZla{F5v)f+DOUd@xlqf?`}^ z!U&!Omjn_|o>yKBCI@t3P9n&t;-chYaUjho81Q~i(%t(B%#1<|LSRe4L~?FQ4nL5^ U%gfKo#x26d&dI^T!_3D301*1k4*&oF literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strlcpy.c.D41441F6B29B55DE.idx b/.cache/clangd/index/ft_strlcpy.c.D41441F6B29B55DE.idx new file mode 100644 index 0000000000000000000000000000000000000000..b6878654643e36bec640e7eb649cf52dda10e583 GIT binary patch literal 498 zcmWIYbaQ*f$iU#7;#rZKT9U}Zz`!5^#Kk2=nSX)wN1$BAoT-7k^9~#EJXxM`VuHxD zh~2Xr^CFE{UR=8vkYOpd%3a}<<86iiamU{&pSYr9^QhpsvPXoTU#jn3zefw7*61C1 z6mnIBIo)vcoQ$OTS=;6>JNby|xu{OPZ|jbW;*Y#`F=;yH&AD3|`Bh>2?XMAW4*Rm6 zAIl2rdfD{eGIIipQIk*G;|V8DTw9j@X0iE;wy;-W)ggM5%1$KDI#{qpZtpXR4+~!U zzUNi8l>PSB+$40R*Vm5Ze`gXx51l%;QM)%?eCu-sQN`XxV8UhAi{<7aYu9|<6QASXPQ$`4;3TRUf$RdW~qU2(6 vAk8RfX)ks1{=@Q}j6w`TV69*xIX5MTAIRe6KI51g|oKSR^=GZF~ZZ0_-pzjAoQVF{CIpClO>?aZz%yIFM%M qW3^3t#cS~LJtIE@KS%}wl5=c*>wBAhYdBbSQN8oMBFocfmr6uxd{}+Ex~<~2 zAANSI>~zRA=g>6yvoA{HCFXDAUcD4%JhFLH z*}7SlAFTJOg(+~jFdVdMJF~r{w>P?b{~y?m28(e>dUw0sZ5#3*Kz;7qmRiIX(FQ;e(2@NlDB7+=LSP_8f_* zE?boOF~dfPvGgnRn*B`&Bkn5RdsEx|?(@a?U-@f!KCqcIu5@Q8uFOqR1ct(6jyGo* zV}e%kfWk(IkBv`2*o@6gfPs^VkwH*^QJ9sXC^fA(3#c;Y(fs!J&n_`A$_RwLLyuud@x}iAqg%CIPc3}_It-w^G|||loL~j8C8^; zlL*pKT$Efa4x|}{>Wb~Qy!~q`&nV0w3^R&>AvrfChabr0<>hB(;}+#&=j34FVdi51 E0EO?l;s5{u literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strncmp.c.130BC97847229322.idx b/.cache/clangd/index/ft_strncmp.c.130BC97847229322.idx new file mode 100644 index 0000000000000000000000000000000000000000..db1efb6a9dca2c59ac7a3513de4938406e479bee GIT binary patch literal 456 zcmWIYbaOkv$iU#7;#rZKT9U}Zz`!5^#Kk2=nLmN_2cTTVoT&k}{)Y_&_RfE_(7C(H zPG*}&POMc(QgY9o?#mHh-BYba7rm-iXVKyij(sZj^~I<5OWU0bi}JRrzf{V0ugozLId^UHbxSs@OuJXjCy)5G zJOAeOUAkmazsa|H!w}6MlXrC5R0w-5GkG#^S@8eG3)h+KTyo%_ie$!#%vFW&-UNnj z+1@y#@wINrwVAVCygOrEvz`6_kNUMnO}wmj4E`IIA7m)5%uP}RhQPh&ovRz?bk*=M z2s1DU^0Dyo32Cuv@iTBTF*1k>Fbc6U6s4vW+W=LX*dF1!Q5hw|#3RV3&u0qPC@8=v zzz*ZVXhtcpSwL-IP?VaJ2x1f$B^QeWX-2^;jc5Fm1a;mq3NZ+Qm4J!l+>{)CAd8om SpOuYUgo~Y%gN28gj{yJ{`K&|$ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strnstr.c.36ECF862C023E04A.idx b/.cache/clangd/index/ft_strnstr.c.36ECF862C023E04A.idx new file mode 100644 index 0000000000000000000000000000000000000000..567076cd789ab9958d159b8f2996ee0b01c9b95a GIT binary patch literal 576 zcmWIYbaS&{VqkDi@vO*AElFfyU|m)3WY>VpX?ESy1_{#fvgb5@&tUX>0!cqO^-K ze(TNGbA2;B+GD>zowX`t>8`_`|K}WB)v~&Cc7|KNv)_qise-t#_O>^ktEJ9cm!8US z{K#gWiw93{I&_WIgw1DfUCZb41?4H(M`owrKTvD`>(GCW&=!8N4eQGoiYs%I6oDb) zVsh?BXp}%J4=8+u_}KUagmu|;1sFJ)7#Rcw7=>9Gic-^xR|8d=*dF1!Q5hw|!Xw0I z#%BZ9C?vorz>eSvG72K`gcyb3ynD|(S2xb-s$rB7l4h3{glU1%j8b6hfi{7GZ0)&% zC$r9OVdN2#=alD#34i&^e($(y{z)boAyGb2ahPTqAu(<-5f~5X=A1;3j^d)^VsRkN tD72u;le2GG&@V<|24R?43=GM+DLMQ=E-x=XD;u{c7ds~h3lB3N0|3}1%V7Wj literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strrchr.c.E1F60C7C5D981483.idx b/.cache/clangd/index/ft_strrchr.c.E1F60C7C5D981483.idx new file mode 100644 index 0000000000000000000000000000000000000000..b9ef1a2e30711ddb3c8059fed012d462e14e24bb GIT binary patch literal 430 zcmWIYbaPwA$iU#7;#rZKT9U}Zz`!5^#Kk2=neTw~aiCnqoT&l3^9~#EJXv0GVgk#; zh-#AyD3sMU748G%u}wCSGeY^Tz868N1B;TUUjahkRbo zRjT`^@Q&KNrcTw#J~uDbysA&j(D@zXa-%D0f#zwM$A2{wZeKj;n#A_*I)A}m&Yp9# z=eq v18GK~gC!4lWjnJzV-#i(hN)s;NX|{k;RkYgdHGq{xJ9|xIXPH(nE4n0;o6xC literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_strtrim.c.5C1F726DF93A8E5D.idx b/.cache/clangd/index/ft_strtrim.c.5C1F726DF93A8E5D.idx new file mode 100644 index 0000000000000000000000000000000000000000..54c499c25119906e41d0216e416a2d620948e403 GIT binary patch literal 938 zcmWIYbaPw8%)sEB;#rZKT9U}Zz`!5^#Kk2=ne2=V4D3t{3>9;x2HNHya^U&ufARoB zhqbw+a;cU#`;t7_#gB_72!C(PVc+WX=eydHQ10N!KRT~%_p3`k+gu!Zdrkz`ZAqzr>-^ASIn;Ro$u>a}WF6&cFQ<%O={V7x5#k}?An)Xj@ukN-Ogt$-1Ji@QYe5&cx zf)j=BPFh{9sye3U-o7w@YNoG?>?TvjN`rzKes)PFbA;u3ZD;IF-g0nB?QdS+&{skB z4G87mvUeGI>6ZQRRH zT$!6R7Z@(VR;Q)poT9>b7=#!YgvI&9#lQqm1`O;y!N*^C7kIGGq31O*sHSQ&~^(~2hpV=d;<{Py?HE-^652>Y=6@WM2j*dF1! zQ5hw|&Lb?&F3t=0i?ABI8ZX>(VGTwNb_CCe(TE-HZea&T2X>foJi?BQjz~NwMkhEA zW;T-)O8CeKd$W7WsQ!FiTO3@1eXec1yH zKTj@CVVHYi)&ea6MGj1_jIbA{7hDlcF{2bXieQR>ag&n>;uIGp7XxFTfl>H~o61>D lZlisSBH%0sRhgWdlEV*V^YZeuvT=)Xv2${;@G$c+008+kA6fta literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ft_substr.c.0C3EC6A520E9C29F.idx b/.cache/clangd/index/ft_substr.c.0C3EC6A520E9C29F.idx new file mode 100644 index 0000000000000000000000000000000000000000..4ab18e2b86c4b3a454e2ed50a352025237d9b910 GIT binary patch literal 566 zcmWIYbaT^VVqkDi@vO*AElFfyU|s_N^8O{co+vs+F*?JNIVYz3WD6!jG@IXjmXr6{NDQ zM(fC{2y@E~vdu4Bc|8k)rc67Sd-&VgEuI#_e$o;D9k@SE*E+&_qhX4I{G7LKA$|(q zf8UjnbF|ZZ{w$+IsrJcr7p^62l8%!e&hV7J8NKVUW>vG^_n@z*l3y+gk^KJy{0y8-j0}PTjKZu8MX71UbAc*j9?frm|LhV2 zql}O=x3nNkqlxVit{at6BFsEOe8zm1Fkv1c0Y(9K1W$-j2+otOJy-B#*4ZsgJVK&e zqI^KJ!GK3dmP;1S`|_9l-f`9ZlR)dlIK_luCc$V%DX?Q!Y z(^^Yrt_6%$Yp%sA`JF7^64AG$)@hzaaDZ^wD(>nfMV>Q_!nMB~{B-Vlgy)pgmA{rf zwrEkz$+-K!C`0Cf|Kod0o<~HfzAs&PeD(j67w+_(y|V6NGsD+c{gPL`k0mY%)>2_A zzO+NNYS(-BKUU2LWhK;$JBllFljMOu@Cx#&3UZuuf`@^hfq{>Qg@+GJ0A(PcC^fBE z9LR*JW0XRd&q)NSEG|ke<_6M?d~JTCsKcO*dA$&3=>b*Ppn{OuAO4+?qlxnhq>BQG3ql>NG6BoY)+Gz})P1z}@cp zPu0b2A_tgWM0uA7&RMkoLeQj1UpXruxg6};5Ey%7>L*(@uNd!TQ=c9SU#oKLr&aCc zN|{3fWn13XTbl5FSpG3!iTc^KlfLh|@c8Qgl#IORVZU~*VrP7HRo*!5d&^;u=`%c8 zo@MM(uiEwA{g0J%BfnHk@s#4q+$4FR4-)rt&+`?V=)uFl&%nUP!@|P{CV(;!P?VZh zEDmJC)G}*V2 Hj64hgB1v){ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/game.c.B03695838049B596.idx b/.cache/clangd/index/game.c.B03695838049B596.idx new file mode 100644 index 0000000000000000000000000000000000000000..4c41481dc928d22bd0c8c9fef014e72b6840dec8 GIT binary patch literal 1088 zcmWIYbaS&{VPJ4h@vO*AElC728AO1%xTGjknvsFQg^7WoVoqFJ_v9slonFUY#exbcVW?dQ)o^R9ln^Ny6g&b&1rW%Oqs z{SI~6i#Gr0T<@qEu>P2E+JXw+_g^bt@-Q{c(%`GhkCScMJ z&XndYdA{p94}%m?T8~Fh98AEZKgAcce3GpA&ch%ClosF?kOUJjX@;WIwBoc%He_OY2XPk6n9wa$|xgd#%U%7bJ6XyMIShvzl8#Y?Re~j zVZuL|ZtZ8uIi3s@j%JSLhuHx0CeS93A7KuV5wmBv7lP@%_h9Qfy<^37Ofq6Y%t3rG zy)t6q%;9j}e>aX6d2i|YTry&c%!>RlgJr}tnKbzjJX0o9KA5>OV$RIY{0N>ulRw-z z8L0A+FrU=&kp@Oo}>!09!!sIUlwFif0*K@`DE a&P~bT2Xgs%1=u+`*jQM(xOsV)`56FlRBoIA literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/get_next_line.c.3CE3D9DE0FCBE423.idx b/.cache/clangd/index/get_next_line.c.3CE3D9DE0FCBE423.idx new file mode 100644 index 0000000000000000000000000000000000000000..06f5ad9914cb488eed39f460c59d4d8b25192918 GIT binary patch literal 1500 zcmWIYbaT7H%D~{9;#rZKT9U}Zz`!5^#Kk2=nNExh4D*>77%JxU1|G~iWWe)v`IiHU z3PJ1d@@6hCyxI7PGS;{`RF+d9`87 zyeUU#%s=qr+p@!cuJ1ntUu?fs=(6e5+b^moc4@8tB)IwOl!LpPE}6gI@mM9cZ0a=& zJ=;4s*4TcP-7RAHW#iuXqkE=E+cLdLmdIUuw|vp6jfQ-k3tskKO%}e8^^xhao?~&6 zln7sPX130Hf%muhviEMw{qH`WP z&79J^WgZWM6i`~5M_Uw3z@%eizk0SP#_!}|5Ccj}vrCJD37E8r_V$ehDN|nZFh~QX z`Puo!!30eDAG`A7_sNI9@i52&r4xA*CBXztnxQB)t=OI!;Y(&Iuoq$SGLku*Il?eQ zWF#v%E8sj6+ap{zDx*ZWc_jH6_}SnNkrZSUWJmC%8Kl|Zevp)9lx0Wov>mkF;NF+i zWz=Oy@bnnMb7~PO~DU2!XFbBh;hEWO}FEC%hB7{i_B_d=b ziV{BU#B*3FrCjT>d~+ zTyzB!k7T4yq%q8P9?4Y3R1TPR#Qgtg~AG3PR##a%A!#NN3w;H ztA!ECoOVX8b_9Q-@ZpD37b)#zl#z_)i57r)3KqA(bOcJOFwR4U;-m?$t6fHDuv78%J_MvhjX zL!fydn2&N2L6XHq$;HYbhB$}-14hZO&IQ(?s?Sz3Nr*E@z=RnXl5V4MqlriaEUjhIxk#c%HPYT$5ui zIekg7_;|yzlxSU5(J3NdeolQXW?;n>7_*qOSnVs`;Om*?jIS2Pl_E;Zh z`nv6YC?`+z$%HG@?@ZZS=onvk_Tplb^b>(D+A}>jtXU#=S=Xf}r09_TBmbxxM=`JN z->t7LZXDc~(0@K6G~7`M2-u_gqg`Z4dtcZF_fhQFz51%TUV-*`3pzR<4`ez5e>m zgK5n6?q3(&VkoZ6O|k>}^l$j9>W54D+jtm685jiRSmZds1W*PHTBdX#cdfYC!vhK) zK_PA-K`;T6E=o-+<_3n9(wmIbUGg!)j52~^Tw;7MU6zvyCNn(k(q-fkRAf}-f$3Vl zp>g_Ng+P5q7O*hP36|MUvZe@GIRXvQWYpw=37_7+BVNYuQVGxy9VH!InDFBF2TK?I ze^S9Hf?^0vno$a?KbWLY+%F@j%%%*t>AxFCi@dk=e4qo=nAG@SM(vrQo*ub?eJRiZ zViIBsFkk4HcYMwlT(%b|tR<(V4O7ifl$w(WQd3-%Tx<@9U)$ p7c{a6@Cyku@WW*o1Q5*R+>{)U3=c0KD?1wt6Eg=VHy0x>0{|z@=05-c literal 802 zcmWIYbaRtpW?*nm@vO*AElFfyU|7zNtbojgoK&-zm!sP)w8_Fe%d;|MlsND`p@Ni`qpN2NZT@ za~6cDe#m|A{A^do2B5GvlQ%m|7)CQnp*ZQk8%K-0xAc5Y83Az?aRHbr83B0~c_f}X zi#ifdmqizeXU1ZN#IsxG1^U9mEg>5fC5*V=yoar0w1#_+-(g^Q?kG!u)&; j!f+`DJ_M5=!A#Cg$pLY>d3jmbSecnb*g3d38F?50x{4iM diff --git a/.cache/clangd/index/print_board.c.12D2F1C84CA68F4B.idx b/.cache/clangd/index/print_board.c.12D2F1C84CA68F4B.idx new file mode 100644 index 0000000000000000000000000000000000000000..aaf284d83f6b3d2ebf39d0564da2c7c205f1443e GIT binary patch literal 696 zcmWIYbaUIl#K7R3;#rZKT9U}Zz`!5^#Kk2=nJSD73|AJm>tiA7Y3Vz=cD1c>;1KA)<*9S@MdI{RX}j+>R465%I;Hrd zVAXm}0S?YX%^Whde3M!)J!DkRm-G#55{X>XJ3Ym~PekJG8r`U_dk^P5;qH|Qlqy>M zOQ-hs72n!^*I$d9bD6iw&nuMg`d;@zB;@Twx0J`J+uj5nneh0_Z_Q&0>u;ze^gYzc zJd@*k`OyMdFV0P~6PNRrcl@8nby`*2>e!4ak78~AE+|R<_r)Y7<)8My>KmtTXnsEG zT(;|m#vEnw1#;d^CI19Iq>81j7v00`o^f5UxH31%0T^ap*END|yy^vb7{q{qD8MZs z4JLpxU~uoj)^&QvitBh7#DUTZtO^3c608ye44h1i3=)Ej!mLH9X~k!NN@3~84(?39S)eVjEDiV0TR!M#fTFjXU1%XBxlZK4mS>_hEWRaHK?B%ic)hDLG0q9 zu(7amar5#p H^D_Vdcnk8@ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/vector.c.CCEA61708CF10975.idx b/.cache/clangd/index/vector.c.CCEA61708CF10975.idx new file mode 100644 index 0000000000000000000000000000000000000000..cf16e9d6bb5e9094b1321ef3c1804ac40559d5dc GIT binary patch literal 2902 zcmY*b4RDi18vb7Tr73iiFZr_hX}&Liq=_jdZD|Un5TQjat;F=|Pn5Z z$+Pe7`}6FxdH2TJ>gsr|AY9X2n`&$6Y!n4Sz~s}>ncUz8L0C0M5K@nB8#oq!tpxS` z7*dyRtl7Kap~1tu=Z!bYbMha&?-`9eSfXovX>8Z{oj3J#ojSE==XJ0A@zT}zXJ5BF8v4ga zn|+CG4;OCSa(w;w)l=2K-L*$8A_cj}A5@TB;nb9|fqhsS` zUHg9d@HH0>6)*jA*QRfeABg_jHRkx)e@?omU-yo5=Ny!hj^-~a$6|F{Mn;l`#wc)0Ve+wc(B@4o0Si&~ZCQQ1w)CF#A1e;%9<)PzHob4dxcg#-deV`LMs;cz``C_ z#Bd+j`#@zl18N3*JYJrGN{avTS^@0cCyRQ7{T9E%5)Z5jT+dLYQt8(S#4#o2XQ{@^ z;!%b&a7zXnsC$I_p|Bq!6jKRh<^4oBD)!pEUK-B%e{E6j&%XQ{*M3*PX+$_+32@{F z9YGh}gmAPd8euuER91Q!s`u3Avm6sj!pl&z((GkaCxgjCMs+vXyLmEuLFolAtp?#< zSlkQC7*2zd=Iw)^4uX$XjqniIhd`y63WKo0-xC!pc4a;-%sG3JC>M|1_s{J$!Q@ps zgsZGo2;XYGl|wDo77jfC<_Cb>8M<~Sn0GSl`s~BOUFj8tMAA`v)J;iC?En5q zs&!Qu5O(QZGEL|7b9dd|mp)tMBZATUwP~VzeLjZ*`T&oX1gfY5go7w(XQZe4I zL!2KC(+m(^DXnxeR4G+*C?>_6>=0uMV%+VChvE@ttGCpTkgFgmaq=do~B$!e$05w@9Z4tDqsvm=iQBWwzD zwsLbh7k#y5H5a|X*uX_^HMMflQ|1&GeE_5Z(BkiY^9e)4-0)%|akt*B>2-7Chb;$m zhib@lfuVr3gDZp9M{X9J{*%e0 z=X5WS>4KaBM5n0|NC3V&tJvr8<q`&(on?k5O{{bPcap>F7GEV0u`$cl}l;n$w0TLIBt#m zsQy*bH;g5fxsMuw7`Ke3i>;r~+O15llocZ06yrZLd=7)9W zYjyxW^MllP)1R~VWXTq*pgng4!9te^!X0hR8)r`2XfWyL=46YydASCZB? +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/07/18 12:51:21 by lud-adam #+# #+# # -# Updated: 2026/03/28 15:07:38 by lud-adam ### ########.fr # +# Updated: 2026/03/29 14:43:31 by lud-adam ### ########.fr # # # # **************************************************************************** # @@ -22,13 +22,15 @@ P_OBJ = .obj/ P_INC = inc/ P_LIBFT = libft/ -SRC = main.c \ - get_next_line.c \ - fill_array.c \ - check_input.c \ - print_board.c \ - ai.c \ - game.c +SRC = \ + main.c \ + get_next_line.c \ + fill_vector.c \ + check_input.c \ + print_board.c \ + ai.c \ + game.c \ + vector.c SRCS = $(addprefix $(P_SRC), $(SRC)) OBJS = $(patsubst $(P_SRC)%.c,$(P_OBJ)%.o,$(SRCS)) diff --git a/alum1 b/alum1 deleted file mode 100755 index 8cddbd2ffba93d8af18221be0f7e41f8c2c58008..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28832 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/03/28 13:27:29 by lud-adam #+# #+# */ -/* Updated: 2026/03/28 21:41:55 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/03/29 14:58:00 by lud-adam ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef ALCU_H # define ALCU_H -# include +#include "vector.h" -char *read_file(int fd); -int check_input(int fd); -void print_board(int *game_state, size_t nb_line); -int *fill_array(int fd, int size); +#include +#include + +char *read_file(int fd); +bool check_input(t_vector* lines); +void print_board(int *game_state, size_t nb_line); +bool fill_vector(t_vector* lines, int fd); int ai(int *gamestate, int nb_line); -void game(int *lines, int size); +void game(int *lines, int size); +int* fill_array(t_vector* lines, int* size); #endif diff --git a/inc/compile_commands.json b/inc/compile_commands.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/inc/compile_commands.json @@ -0,0 +1 @@ +[] diff --git a/inc/vector.h b/inc/vector.h new file mode 100644 index 0000000..e0118ee --- /dev/null +++ b/inc/vector.h @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* vector.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lud-adam +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/29 14:24:01 by lud-adam #+# #+# */ +/* Updated: 2026/03/29 14:40:21 by lud-adam ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef VECTOR_H +# define VECTOR_H + +#define VECTOR_INIT_CAPACITY 6 +#define UNDEFINE -1 +#define SUCCESS 0 + +#define VECTOR_INIT(vec) t_vector vec;\ + vector_init(&vec) + +typedef struct s_vector_list +{ + void **items; + int capacity; + int total; +} t_vector_list; + +typedef struct s_vector t_vector; + +struct s_vector +{ + t_vector_list vector_list; /**< List to store vector elements */ + int (*pfVectorTotal)(t_vector *); /**< Retrieves the total number of elements in the vector */ + int (*pfVectorResize)(t_vector *, int); /**< Resizes the vector to a new capacity */ + int (*pfVectorAdd)(t_vector *, void *); /**< Adds an element to the vector */ + int (*pfVectorSet)(t_vector *, int, void *); /**< Sets an element at a specific index in the vector */ + void *(*pfVectorGet)(t_vector *, int); /**< Retrieves an element from the vector */ + int (*pfVectorDelete)(t_vector *, int); /**< Deletes an element from the vector */ + int (*pfVectorFree)(t_vector *); /**< Frees the memory allocated for the vector */ +}; + +void vector_init(t_vector* v); + +#endif diff --git a/src/check_input.c b/src/check_input.c index f25aa80..18516cb 100644 --- a/src/check_input.c +++ b/src/check_input.c @@ -12,30 +12,31 @@ #include "../libft/libft.h" #include "get_next_line.h" +#include "vector.h" + #include #include #include +#include -int check_input(int fd) +bool check_input(t_vector* lines) { int i; int j; - char *line; + char* line; - line = NULL; - line = get_next_line(fd); j = 0; - while (line != NULL) + line = NULL; + while (j < lines->pfVectorTotal(lines)) { + line = (char*)lines->pfVectorGet(lines, j); i = -1; while (line[++i]) if (!(line[i] >= '0' && line[i] <= '9') && line[i] != '\n') - return (free(line), -1); + return (false); if (ft_atoi(line) < 1 || ft_atoi(line) > 10000) - return (free(line), -1); - free(line); + return (false); j++; - line = get_next_line(fd); } - return (j); + return (true); } diff --git a/src/fill_array.c b/src/fill_vector.c similarity index 66% rename from src/fill_array.c rename to src/fill_vector.c index 90b2a21..13666f5 100644 --- a/src/fill_array.c +++ b/src/fill_vector.c @@ -1,35 +1,51 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* fill_array.c :+: :+: :+: */ +/* fill_vector.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lud-adam +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/03/28 13:21:46 by lud-adam #+# #+# */ -/* Updated: 2026/03/28 20:53:02 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/03/29 14:58:09 by lud-adam ### ########.fr */ /* */ /* ************************************************************************** */ #include "../libft/libft.h" + #include "get_next_line.h" -int *fill_array(int fd, int size) -{ - int *res; - char *line; - int i; +#include "alcu.h" + +bool fill_vector(t_vector* lines, int fd) +{ + char *line; - res = malloc(sizeof(int) * size); - if (res == NULL) - return (NULL); line = get_next_line(fd); - i = 0; while (line != NULL) { + lines->pfVectorAdd(lines, line); + line = get_next_line(fd); + } + return (true); +} + +int* fill_array(t_vector* lines, int* size) +{ + int* res; + int i; + char* line; + + i = 0; + line = NULL; + *size = lines->pfVectorTotal(lines); + res = malloc(sizeof(int) * *size); + if (!res) + return (NULL); + while (i < *size) + { + line = (char*)lines->pfVectorGet(lines, i); res[i] = ft_atoi(line); i++; - free(line); - line = get_next_line(fd); } return (res); } diff --git a/src/game.c b/src/game.c index 9ef9f52..b517dbf 100644 --- a/src/game.c +++ b/src/game.c @@ -69,6 +69,8 @@ static void player_turn(int *line) if (temp) free(temp); } + if (temp) + free(temp); } static void play_turns(int *lines, int i, int *ai_turn, int size) diff --git a/src/main.c b/src/main.c index fc17d34..3ff6c79 100644 --- a/src/main.c +++ b/src/main.c @@ -6,14 +6,14 @@ /* By: lud-adam +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/03/28 12:30:29 by lud-adam #+# #+# */ -/* Updated: 2026/03/28 21:41:29 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/03/29 14:58:10 by lud-adam ### ########.fr */ /* */ /* ************************************************************************** */ #include "../libft/libft.h" #include "alcu.h" + #include -#include #include static int get_fd(int argc, char **argv) @@ -32,27 +32,38 @@ int main(int argc, char *argv[]) { int fd; int size; - int *lines; + int* lines_int; + VECTOR_INIT(lines); fd = get_fd(argc, argv); + lines_int = NULL; + size = 0; if (fd < 0) { ft_putstr_fd("ERROR", 2); return (1); } - size = check_input(fd); - if (size < 0) + fill_vector(&lines, fd); + if (check_input(&lines) == false) { + lines.pfVectorFree(&lines); + ft_putstr_fd("ERROR", 2); + return (1); + + } + if (argc == 1) + fd = open("/dev/tty", O_RDONLY); + // // fd = get_fd(argc, argv); + lines_int = fill_array(&lines, &size); + if (!lines_int) + { + lines.pfVectorFree(&lines); ft_putstr_fd("ERROR", 2); return (1); } + game(lines_int, size); close(fd); - fd = open(argv[1], O_RDONLY); - lines = fill_array(fd, size); - if (!lines) - return (1); - game(lines, size); - close(fd); - free(lines); + free(lines_int); + lines.pfVectorFree(&lines); return (0); } diff --git a/src/vector.c b/src/vector.c new file mode 100644 index 0000000..ef4bc91 --- /dev/null +++ b/src/vector.c @@ -0,0 +1,159 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* vector.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lud-adam +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/03/29 14:23:01 by lud-adam #+# #+# */ +/* Updated: 2026/03/29 14:50:19 by lud-adam ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "vector.h" +#include "libft.h" +#include + +int vectorResize(t_vector *v, int capacity); +int vectorPushBack(t_vector *v, void *item); +int vectorSet(t_vector *v, int index, void *item); +void *vectorGet(t_vector *v, int index); +int vectorDelete(t_vector *v, int index); +int vectorFree(t_vector *v); +int vectorTotal(t_vector *v); + +void vector_init(t_vector *v) +{ + // Initialize function pointers + v->pfVectorTotal = vectorTotal; + v->pfVectorResize = vectorResize; + v->pfVectorAdd = vectorPushBack; + v->pfVectorSet = vectorSet; + v->pfVectorGet = vectorGet; + v->pfVectorFree = vectorFree; + v->pfVectorDelete = vectorDelete; + // Allocate memory and check for failure + v->vector_list.capacity = VECTOR_INIT_CAPACITY; + v->vector_list.total = 0; + v->vector_list.items = malloc(sizeof(void *) * v->vector_list.capacity); + if (!v->vector_list.items) + { + ft_putstr_fd("Memory allocation failed in vector_init\n", 2); + exit(EXIT_FAILURE); + } +} + +int vectorTotal(t_vector *v) +{ + int totalCount = UNDEFINE; + if(v) + { + totalCount = v->vector_list.total; + } + return totalCount; +} + +int vectorResize(t_vector *v, int capacity) +{ + int status = UNDEFINE; + if(v) + { + void **items = realloc(v->vector_list.items, sizeof(void *) * capacity); + if (items) + { + v->vector_list.items = items; + v->vector_list.capacity = capacity; + status = SUCCESS; + } + } + return status; +} + +int vectorPushBack(t_vector *v, void *item) +{ + int status = UNDEFINE; + if(v) + { + if (v->vector_list.capacity == v->vector_list.total) + { + status = vectorResize(v, v->vector_list.capacity * 2); + if(status != UNDEFINE) + { + v->vector_list.items[v->vector_list.total++] = item; + } + } + else + { + v->vector_list.items[v->vector_list.total++] = item; + status = SUCCESS; + } + } + return status; +} + +int vectorSet(t_vector *v, int index, void *item) +{ + int status = UNDEFINE; + if(v) + { + if ((index >= 0) && (index < v->vector_list.total)) + { + v->vector_list.items[index] = item; + status = SUCCESS; + } + } + return status; +} + +void *vectorGet(t_vector *v, int index) +{ + void *readData = NULL; + if(v) + { + if ((index >= 0) && (index < v->vector_list.total)) + { + readData = v->vector_list.items[index]; + } + } + return readData; +} + +int vectorDelete(t_vector *v, int index) +{ + int status = UNDEFINE; + int i = 0; + if(v) + { + if ((index < 0) || (index >= v->vector_list.total)) + return status; + v->vector_list.items[index] = NULL; + for (i = index; (i < v->vector_list.total - 1); ++i) + { + v->vector_list.items[i] = v->vector_list.items[i + 1]; + v->vector_list.items[i + 1] = NULL; + } + v->vector_list.total--; + if ((v->vector_list.total > 0) && ((v->vector_list.total) == (v->vector_list.capacity / 4))) + { + vectorResize(v, v->vector_list.capacity / 2); + } + status = SUCCESS; + } + return status; +} + +int vectorFree(t_vector *v) +{ + int status = UNDEFINE; + int total = v->pfVectorTotal(v); + if(v) + { + for (int i = 0; i < total; i++) + { + void * temp = v->pfVectorGet(v, i); + free (temp); + } + free(v->vector_list.items); + } + return status; +}