From dd914622ed0df95b5d73feb99dbb17923fd1a291 Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Wed, 7 Dec 2022 20:13:22 +0100 Subject: [PATCH] =?UTF-8?q?Presque=20fini,=20il=20reste=20plus=20qu'a=20g?= =?UTF-8?q?=C3=A9r=C3=A9=20les=20doubles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + .push_swap.c.swm | Bin 0 -> 20480 bytes Makefile | 2 +- libft | 1 + operations.c | 60 ++++++++++++ parsing.c | 59 +++++++++++ push_swap | Bin 18289 -> 0 bytes push_swap.c | 248 +++++++++++++++++------------------------------ push_swap.h | 25 ++++- push_swap.o | Bin 4752 -> 0 bytes tools.c | 86 ++++++++++++++++ 11 files changed, 322 insertions(+), 162 deletions(-) create mode 100644 .gitignore create mode 100644 .push_swap.c.swm create mode 160000 libft create mode 100644 operations.c create mode 100644 parsing.c delete mode 100755 push_swap delete mode 100644 push_swap.o create mode 100644 tools.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bdf12b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +checker_linux +*.swp diff --git a/.push_swap.c.swm b/.push_swap.c.swm new file mode 100644 index 0000000000000000000000000000000000000000..fcb725596e9dbcb363bc1f73e849f40810e18c38 GIT binary patch literal 20480 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 YD(Y7bk?z9@&Ha1OO�%cpq^44_!J9aR2}S literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index ecf0fda..14a6e09 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ # # # **************************************************************************** # -SRCS = push_swap.c +SRCS = push_swap.c operations.c tools.c parsing.c OBJS = ${SRCS:.c=.o} CC = clang CFLAGS = -g -Wall -Wextra -Werror diff --git a/libft b/libft new file mode 160000 index 0000000..ca53e94 --- /dev/null +++ b/libft @@ -0,0 +1 @@ +Subproject commit ca53e947c847ec3b893d5df34bc8051eaf30bf73 diff --git a/operations.c b/operations.c new file mode 100644 index 0000000..6ad3b03 --- /dev/null +++ b/operations.c @@ -0,0 +1,60 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* operations.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/07 18:36:09 by erey-bet #+# #+# */ +/* Updated: 2022/12/07 18:36:10 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void swap(t_stack *s, char *message) +{ + long c; + + c = (*s).list[0]; + (*s).list[0] = (*s).list[1]; + (*s).list[1] = c; + write(1, "s", 1); + write(1, message, 1); + write(1, "\n", 1); +} + +void push(t_stack *s_push, t_stack *s_receive, char *message) +{ + int i; + long push; + + i = 0; + push = (*s_push).list[0]; + while (++i < (*s_push).len) + (*s_push).list[i - 1] = (*s_push).list[i]; + i = (*s_receive).len; + while (i-- > 0) + (*s_receive).list[i + 1] = (*s_receive).list[i]; + (*s_receive).list[0] = push; + (*s_receive).len += 1; + (*s_push).len -= 1; + write(1, "p", 1); + write(1, message, 1); + write(1, "\n", 1); +} + +void rotate(t_stack *s, char *message) +{ + int i; + long rotate; + + i = 0; + rotate = (*s).list[0]; + while (++i < (*s).len) + (*s).list[i - 1] = (*s).list[i]; + (*s).list[(*s).len - 1] = rotate; + write(1, "r", 1); + write(1, message, 1); + write(1, "\n", 1); +} diff --git a/parsing.c b/parsing.c new file mode 100644 index 0000000..c79c609 --- /dev/null +++ b/parsing.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parsing.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/07 19:23:59 by erey-bet #+# #+# */ +/* Updated: 2022/12/07 19:24:04 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void choice(long *tab, int y) +{ + if (y == 4 || y > 5) + pre_push_swap(tab, y); + else if (y == 5) + push_swap_5(tab, y); + else if (y == 3) + push_swap_3(tab, y); + else if (y == 2) + if (tab[0] > tab[1]) + write(1, "ra\n", 3); +} + +int parsing(int argc, char *argv[], long *tab) +{ + int i; + int y; + int x; + char **tmp; + + i = 0; + y = 0; + while (++i < argc) + { + x = 0; + while (argv[i][x]) + if (ft_strchr("\a\b\t\n\v\f\r", argv[i][x++]) != NULL) + argv[i][x - 1] = ' '; + x = 0; + tmp = ft_split(argv[i], ' '); + while (tmp[x] != NULL) + { + if (ft_atoi_check(tmp[x])) + tab[y++] = ft_atoi(tmp[x]); + else + { + write(1, "Error\n", 6); + return (1); + } + x++; + } + } + choice(tab, y); + return (0); +} diff --git a/push_swap b/push_swap deleted file mode 100755 index 0b9d24f4aadcd433489ae9ee1c3bb24f10145152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18289 zcmeHP4{Te$QIsr`v@FL;oK{R~H%d}blC8RmE!&T>Xg_(f`5+war3$UHLE zwu7@m*2z{djorum%mqmmej3*hHFJ^J?r0s3whYG;*|CVUWm3XTqtBF%pg^*i)%^ zCdPL6^>*(xHU>5ZJ`S6~kz_*H7*w2-x73L?(%;f)ki92fL)wSP2x(!5#wqo!j137E zi{unHnHn{XXX*4IzcTrYR6P>Db#0+k39W@646awHniBt};$$j@84@niO!irpf-=K)~BH$%~tQ zr4t(meH$G!t6w1*RjKA1Bq+=dOkW#VGN$@m=Jua?hm+ibe)XLl`qf26cf6**@j+&l z<)K=5u;Z!x@og=r3(KxPr03quKaEzrrmlm;arD|9<&ph=d~T@@1krP+7IWEKGob~l z?@VZ($W&-y;)){|TG$%8GfnQIG6h(5I@d>r;D?KQymzt$M@zJZ-jMp9{^; z{S8W=3e6wA=4~2>lyUzP^ZunWU{K($rWgQIp<5_Mk1Xm}-*)B`A3&E2&6XCv34Zjc zQ;SpCTlqeq0TXqZzXa8|o@=;1bqMte&7ywuxrVcIe_<9fi-F)jTHHUj`bf8j$UYa! zFKa&&dXJieNa?xk!c6EUaWkP=B8ZFC1||PT@0+eBPAxjT&;1tkbEeTv9?zRwLyO+? zX^2qY1=RPZKGk(S-{E9zVv%_#sV7S`pCUoz24wlEy|cN0n0U>R%c7xwOU<6!0PQzu z^y-(Z{2C}@m#91Pt5FS9nh)$o2YJ_uO6JCQjXi zvJN>klggPpTw)_Mkg>TgI#5nO9?I8ZWH0EsztboF8coEY@?Ngd9oO}Vd>f6AxnpLX z^StA{U%i?Oy=O&`&Sx55+S$dkp?AHPL+?&3`n{7uxHg$O?_`I?)Osf$u$YzJ$$KoO z#yh#vVpdqq;9Y5kj*mr@d-Ph-c((d$?3cX1&~`TWB^;Lew79?MO8c|+*TQ%w&aGlE z+sVHevv~&%)5+B~(Zg2gp&%6KWdLI0>zVq7@45r}W-rPS2 z5B2752M-2w?;X<5x7_+DW1sAM@O_#i^Z&Sr6YlE!N~Wp(U&ZygFZYAK+&ewFw}XX- zf7d6jIrK;VE&Dy1KOa9Dd?I)>_+-#1o^$wohd>bJ^R6}1Qj9985`jttDiNqepb~*f z1S%2u|BrwJPx(TrR5DeI{q8zt>nMt(#dE_#q3|+j59m424Cn>Wj{hnYz6JUsD6OK` z|DaH~7whGNpk1InKP(iU0G+&5D0~|97U=H~|D!_TFNp{J7HIUp3x)OAv(a-~N{*)w zFvpnBv97M#Jqs(mDD!|!#-__KWE*OLmrBao4fd3?J(jeEQ+ zo^p?~9rtW~Xw&-pNldvr=Sr9JAWAg#)Xr(>&y?uLE&W$Wj&{?Y z(ZV0&YVQAah<(t1uUPMV)56a~J_~&p+GpXFPdLbc>Q_f{#BUVD(mRh^_>V!qANt7> z{4*B55ArLBcR4)8Xc&6m?Lr|&{&#tN&pUfPjn63|kN(V`)6VDb# z0+k5-@&Tt)(Kv|r%X?2C^ZT_ z?RzLm{p}A5NzN-85%ZmG&NsiZ_k3LFCKq!-XZL;-Q@gRLNCNW zHzMCFw->ls^zSY~?fTt2cW&`FAL`F0GFg9nTVPY5t))H7+4kSq*cNE(cu|iQ}F0;shnS z!QeRjSvq!-9r^hEVs7*z=YAVHv~h?>V+;8Q7v=5WD(m;BWZ6X=b4}o&R#l$`<9ZtT z>Zh)|oSe=8g!L}1QSoe9v311* zclWN|fop=IGN%yru0}OFN?6qnB8Y1}Q#{*OtiTyv?PY{w`%rcjqo?5xhvQw(N+J-^ z#mT`&v*{rt{Zx1~5P=A(#u_0?y+f_4{hI2|sx?`4rE6MscB$2_L3NeulIl6FR_{^k zz}33CRHti;TKhOim&#l(0yRe{mn)+_;M%4>4Dm<1)b(AedyncmqSm;6MY>z%8dC3a z?NMvs`G~5(xXyK2^|)R@zDun;4VRs2?UNvT;Mskb+EDwpdN-I_I6I;`;EB1{pg{N0 ztlE@S*8}z8F7;kn)Cw55V6LE?S`_V>R+TPw4Y+F8rPFF7>hD8q)YEG19##E{>giI| zJ+8;y6RM(|yriyFYLBS(gr_z>p*ph88iem>IyZ|W+?p6jw+mX#|kUshhl+)6n= zsx|)<7oy0x2r)zjxm~SDSaKka(*oPyEHPh?3at%Yp`)(9QNF=Ay=Bp z`Tr+wQh&!dd=qj9R)zL)_>Qo*k7qs~l{qgOP*DfFb9_Doc|GDxZ%9&7`H`_LLavE^ zd`!qc3%MVwQu}!B7WNl}{TX3T&jjj4zL*%0``|~82dV2Id*_|kfq`ZGoDqKP_4z#H ze(AJ`ei`yr&b6$~cHaF7$=T9%##{q3_E(ToeCX9tN-=(9?C-f;Fhyh*c^}5PX7m4T zvUjdzCqMT1s7|v!$BLF>1gRBrwnpO~_%j;h8X>3l+WpM% z`rLWlre|W*-ut!lIao2jl5XEM;Uyj0on^SQ?)K zMw7(cxGo77etOw=f3ciMSC?rNSqTSR#`;$p%v4k(d$9 zj*OfHq=>_W9?z7RTJt_CH2_s688>tBbb2%#iAkXm8Hz=YLuDAd4g~jxjL^Ow!vI&} zG0Kdd$MyyH_UbV%l~`iiASSs;G)`xp%u zjF;=)ym083hJxDhJ&@xOeo~e%*T-(f1jzc!>#N)5Zy$JE^{o0gD;l?G7WgsFVfP10 zZI^g?KjkoFWGc(QAn+FiJ_KEHvd51$-E~5zE1?YO&H4Z?d_iw_-N_7mhtCd@6l#2>LFW=7&ARgjVSV$*5i z@Fknl#xn0R_-z|aZ==Odk+ +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/23 16:48:12 by erey-bet #+# #+# */ -/* Updated: 2022/12/05 22:58:30 by erey-bet ### ########.fr */ +/* Updated: 2022/12/07 18:35:18 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft/libft.h" #include "push_swap.h" -#include - -void ft_putchar(char c) +/*void ft_putchar(char c) { write(1, &c, 1); -} +}*/ -void print_stack(t_stack sa, t_stack sb) +/*void print_stack(t_stack sa, t_stack sb) { write(1, "A: ", 3); for (int i = 0; i < sa.len; i++) @@ -39,182 +36,115 @@ void print_stack(t_stack sa, t_stack sb) } ft_putchar('\n'); } -} - -int get_min(long *tab, int len) -{ - int i; - int index; - - i = 0; - index = 0; - while (++i < len) - if (tab[i] <= tab[index]) - index = i; - return (index); -} - -unsigned int *get_index(long *tab, int len) -{ - int i; - int min; - unsigned int *new; - - i = -1; - min = tab[0]; - new = malloc(sizeof(unsigned int) * (len + 1)); - while (++i < len) - { - min = get_min(tab, len); - tab[min] = 2147483648; - new[min] = i; - } - return (new); -} - -void swap(t_stack *s, char *message) -{ - unsigned int c; - - c = (*s).list[0]; - (*s).list[0] = (*s).list[1]; - (*s).list[1] = c; - write(1, "s", 1); - write(1, message, 1); - write(1, "\n", 1); -} - -void push(t_stack *s_push, t_stack *s_receive, char *message) -{ - int i; - unsigned int push; - - i = 0; - push = (*s_push).list[0]; - while (++i < (*s_push).len) - (*s_push).list[i - 1] = (*s_push).list[i]; - i = (*s_receive).len; - while (i-- > 0) - (*s_receive).list[i + 1] = (*s_receive).list[i]; - (*s_receive).list[0] = push; - (*s_receive).len += 1; - (*s_push).len -= 1; - write(1, "p", 1); - write(1, message, 1); - write(1, "\n", 1); -} - -void rotate(t_stack *s, char *message) -{ - int i; - unsigned int push; - - i = 0; - push = (*s).list[0]; - while (++i < (*s).len) - (*s).list[i - 1] = (*s).list[i]; - (*s).list[(*s).len - 1] = push; - write(1, "r", 1); - write(1, message, 1); - write(1, "\n", 1); -} - -/*void push_number(t_stack *sa, int i) -{ - }*/ -int max_len_binary(t_stack s) +/*void print_one_stack(t_stack s) { - unsigned int i; - int x; - int y; - int max; - - y = -1; - max = 1; - while (++y < s.len) + write(1, "A: ", 3); + for (int i = 0; i < s.len; i++) { - i = 1; - x = 1; - while (i < s.list[y]) - { - i *= 2; - x++; - } - if (x > max) - max = x; + ft_putchar(s.list[i] + '0'); + write(1, ", ", 2); + } + ft_putchar('\n'); +}*/ + +void post_push_swap(t_stack sa, t_stack sb, int x, int sa_len) +{ + int i; + int y; + + y = 0; + while (x-- > 0 && !check_sa(sa)) + { + i = 0; + while (i < sa_len && !(check_sa(sa) && sb.len == 0)) + { + if (((sa.list[0] >> y) & 1) == 0) + push(&sa, &sb, "b"); + else + rotate(&sa, "a"); + i++; + } + while (sb.len > 0) + push(&sb, &sa, "a"); + y++; } - return (max); } - -void push_swap(long *tab, int len) +void pre_push_swap(long *tab, int len) { - int i; - int y; int x; - int len_sa; + int sa_len; + t_stack sa; + t_stack sb; + + sa.list = get_index(tab, len); + if (sa.list == NULL) + return ; + sa.len = len; + sa_len = len; + sb.list = malloc(sizeof(long) * (len + 1)); + if (sb.list == NULL) + return ; + sb.len = 0; + x = max_len_binary(sa); + post_push_swap(sa, sb, x, sa_len); + free(sa.list); + free(sb.list); +} + +void push_swap_3(long *tab, int len) +{ + t_stack sa; + + sa.list = get_index(tab, len); + sa.len = len; + while (!check_sa(sa)) + { + if (sa.list[0] > sa.list[1]) + { + rotate(&sa, "a"); + if (sa.list[0] > sa.list[1]) + swap(&sa, "a"); + } + else + swap(&sa, "a"); + } +} + +void push_swap_5(long *tab, int len) +{ t_stack sa; t_stack sb; sa.list = get_index(tab, len); sa.len = len; - sb.list = malloc(sizeof(unsigned int) * (len + 1)); + sb.list = malloc(sizeof(long) * (len + 1)); + if (sb.list == NULL) + return ; sb.len = 0; - print_stack(sa, sb); - x = max_len_binary(sa); - y = 0; - while (x-- > 0) + while (sb.len != 2) { - i = 0; - len_sa = sa.len; - while (i < len_sa) - { - if (((sa.list[0] >> y) & 1) == 0) - { - push(&sa, &sb, "b"); - print_stack(sa, sb); - } - else - { - rotate(&sa, "a"); - print_stack(sa, sb); - } - i++; - } - while (sb.len > 0) - { - push(&sb, &sa, "a"); - print_stack(sa, sb); - } - y++; + while (get_min(sa.list, sa.len) != 0) + rotate(&sa, "a"); + push(&sa, &sb, "b"); } + push_swap_3(sa.list, sa.len); + while (sb.len > 0) + push(&sb, &sa, "a"); } int main(int argc, char *argv[]) { long *tab; - int i; - int y; - i = 0; - y = 0; tab = malloc(sizeof(long) * (argc + 1)); + if (tab == NULL) + return (1); if (argc > 1) - { - while (++i < argc) - { - if(ft_atoi_check(argv[i])) - tab[y++] = ft_atoi(argv[i]); - else - { - write(1, "Error\n", 6); - return (1); - } - } - push_swap(tab, y); - } - + if (parsing(argc, argv, tab) == 1) + return (1); + free(tab); return (0); } diff --git a/push_swap.h b/push_swap.h index b21b619..8bfa827 100644 --- a/push_swap.h +++ b/push_swap.h @@ -15,11 +15,32 @@ # include # include +# include "libft/libft.h" typedef struct s_stack { - unsigned int *list; - int len; + long *list; + int len; } t_stack; +// Push Swap +void post_push_swap(t_stack sa, t_stack sb, int x, int sa_len); +void pre_push_swap(long *tab, int len); +void push_swap_5(long *tab, int len); +void push_swap_3(long *tab, int len); + +// Operations +void swap(t_stack *s, char *message); +void push(t_stack *s_push, t_stack *s_receive, char *message); +void rotate(t_stack *s, char *message); + +// Tools +int get_min(long *tab, int len); +long *get_index(long *tab, int len); +int max_len_binary(t_stack s); +int check_sa(t_stack s); + +// Parsing +int parsing(int argc, char *argv[], long *tab); + #endif diff --git a/push_swap.o b/push_swap.o deleted file mode 100644 index ff1edb81d0c099319d0b597d219f88179ce6ce89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4752 zcmbuCeP|rj7QpZ9?48|glFdic+WM9FtcsLOnzj#Wvuaevj?s!wjpR{lGTBVBi~Eu8 z&ZMat4T*}&qP9>UJ_UU|c<&)96doc((3Yy{^9%h$&_5pJkBZ4Ne?+Jfun^C=bIHKL5&7q9mFMYo@|f#slC`pzuPte4#L zi^dubEE=oWl#R9dQ%cEL>od-`Jbxn)vuv!J$pdR!S?jhS3GPk$d;Mh~-OEY&98jkG+o zUUtt53viRQtS-RNtXb+fTONeEj3uaVwbb$4%6ndtC3F76u0voe9{ zo-YD|de@-db7nblR(Q>?vzDiO>W!GmFTr}bd|;{c#r(%g$%Tpj2dBMq9hiTB58Qko zZbBCDafpCWG!Ct7#oOazNoJPI?h*~6dD*z&P1-0F@`V^v+LY_!o46Wpz3hs3o6-)! zLOQ^9t$(W;-`CjJc*C~4Hr=|7F_p8BM0agsEWD>is$=2M@kya|pe1M-p>0O3 z8u1xWWW>&Sf5gt3h@CQq7x9{!h<}jUh=_kJMqwQLDEO3Q{N75ny*06WrGE zGUNYM{r93>B?f6;MSEX`F_@zlV;{x`ZA?V$tEn%68pDmkcsTMLD54(;M@~?mMYAv2@N6{d8{3 zo@Q>Yn4ZYlV_k@=##sw29cz?j@=z6yWo&Q-XLQ0aIr|8+3KL1ZO|fLkDzKw)H2s#z zbl_5fD39IGl<8LGil#{P7_7{d!0}%Xqge|*2o~O00yzlovg-J3W&B~} zAh=5^<0E2N#C`%f2=0Q)c<4J}a4*ylX4k@iqA0(_o3R0e?*OH`M(_lLG*ot!+OF_$ z>?Du6yuszo+A$tV@Q60S+q4B9pW~4M-UM1qOYo4kkH-!|li*A{0bVQUrD+boLA#mn z0DOIdZ%^>(0M~|igLXHCYtvGEi#EU;Ao37b!MI7A<8kdc^b@>k4npqbu}7d8fXLA; zyd(BK-v&wyf(>y6BC+UZNEkij@=lj;2d}FW{7OpI2nHIMtB@xKspH4En&6v3i)agT zd@I!73bWyJJT}1jTRfiNd_X%Go#(20bb&Xku_4}${y4{nx#ETzVEMe2y43wN420Q_ z8}-K3>VZ--tjYtf27;ni4~Uu}mBGfTBPwgYh&~CV^&-mH$R#*VuN~^daTKv9p?v@@ zsh4F-dBv+7*k1#j>Y@B(Px?Cnd#dM5fd5Qv=E3D(&b;IuwhNltm`_qQWp|B}piQ-HrG`ThVu zCHY{0Q=Q2Gr*%6V;Gf7iGXXv+c`3m0oI-giz+dw)`)7cEBzc!?aWDJ#bAN!3NS#`; zr{^^*$BEN=?vxzU`{TzNnxc`o@8d%svq#;DVQX}>U{5iLfotO z%60g?&F2une{NE|N1DCfDgoKb$6ld$ej)RpbvW3MHxT?I;Fngv0{v}p`OjM#J|$nN z-$;Od7>eGs_!kKUfA5%o7b-p(ka;6MhFz+k+D0GqoBm1qPx@gU+x>MIx}28&Z&M77;`6Fe#yz8pZOv5DL=K_B@6oRlP^2{|M=&8 zG5w|~>F;OQr@X{ZdTdfI7hy*JFIR}yq4^WW^RC|dEy)-6h&06Y!)HzYw0~X)7OY9Q z$PG>3DT39p#dEk`{(kxUp*)x$Q853rz|?y-^3cq}Rgod-ProblM+w&YHL&2?q1}+& N_$ldt4WeNFUjdWRbnO5D diff --git a/tools.c b/tools.c new file mode 100644 index 0000000..0ad4d53 --- /dev/null +++ b/tools.c @@ -0,0 +1,86 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* tools.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/07 18:37:38 by erey-bet #+# #+# */ +/* Updated: 2022/12/07 18:37:39 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int get_min(long *tab, int len) +{ + int i; + int index; + + i = 0; + index = 0; + while (++i < len) + if (tab[i] <= tab[index]) + index = i; + return (index); +} + +long *get_index(long *tab, int len) +{ + int i; + int min; + long *new; + + i = -1; + min = tab[0]; + new = malloc(sizeof(long) * (len + 1)); + if (new == NULL) + return (NULL); + while (++i < len) + { + min = get_min(tab, len); + tab[min] = 2147483648; + new[min] = i; + } + return (new); +} + +int max_len_binary(t_stack s) +{ + long i; + int x; + int y; + int max; + + y = -1; + max = 1; + while (++y < s.len) + { + i = 1; + x = 1; + while (i < s.list[y]) + { + i *= 2; + x++; + } + if (x > max) + max = x; + } + return (max); +} + +int check_sa(t_stack s) +{ + int i; + + i = 0; + while (i < s.len - 1) + { + if (s.list[i] > s.list[i + 1]) + { + return (0); + } + i++; + } + return (1); +}