From 7db184444716a48543488a5790f669c0b7e4ac9e Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Fri, 9 Jan 2026 14:53:52 +0100 Subject: [PATCH 01/12] Fix disorder incrementation --- parsing/disorder.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/parsing/disorder.c b/parsing/disorder.c index 5a4bafd..d76d0c3 100644 --- a/parsing/disorder.c +++ b/parsing/disorder.c @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/01/09 11:05:37 by dgaillet #+# #+# */ -/* Updated: 2026/01/09 11:26:24 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/01/09 14:53:45 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -40,7 +40,9 @@ float compute_disorder(char **strs) total_pairs += 1; if (strs[i] > strs[j]) mistakes += 1; + j++; } + i++; } return (mistakes / total_pairs); } From ad855e59151d1295bcbb1118032bebb067cb9c6a Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Fri, 9 Jan 2026 14:57:05 +0100 Subject: [PATCH 02/12] fixing some issues on the checker error and need to fix a last thing on the bucket range algo --- algorithms/medium/utils_medium.c | 5 +++++ checker/verif_is_digit.c | 2 ++ checker/verif_overflow.c | 9 +++++++++ flags/algorithms_sort.c | 4 +++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/algorithms/medium/utils_medium.c b/algorithms/medium/utils_medium.c index 5b78da6..c9307a6 100644 --- a/algorithms/medium/utils_medium.c +++ b/algorithms/medium/utils_medium.c @@ -43,6 +43,8 @@ int get_next_lower(t_stack *first, int old_lower) if (old_lower < tmp->value && tmp->value <= next_lower) { next_lower = tmp->value; + if (next_lower == -2147483648) + return (next_lower); } tmp = tmp->next; } @@ -53,7 +55,10 @@ int calcul_range(int value, int range) { int max_range; + max_range = 0; + if (value == 2147483647) + return (value); if (value < 0) while (max_range > value) max_range -= range; diff --git a/checker/verif_is_digit.c b/checker/verif_is_digit.c index 65b4e0a..9bbd134 100644 --- a/checker/verif_is_digit.c +++ b/checker/verif_is_digit.c @@ -21,6 +21,8 @@ static int scan_str_is_digit(char *tab) { if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1]))) return (0); + if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) + return (0); i++; } return (1); diff --git a/checker/verif_overflow.c b/checker/verif_overflow.c index d9aa159..c9518c7 100644 --- a/checker/verif_overflow.c +++ b/checker/verif_overflow.c @@ -12,6 +12,13 @@ #include "parsing.h" +// static int calcul_sign(char c) +// { +// if (c == '-') +// return (-1); +// return (1); +// } + static int verif_atoi(const char *nptr) { size_t i; @@ -21,6 +28,8 @@ static int verif_atoi(const char *nptr) i = 0; tmp = 0; before = 0; + if (ft_strncmp("-2147483648", nptr, 12)) + return (1); while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ') i++; if (nptr[i] == '-' || nptr[i] == '+') diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c index c91c614..fbdef72 100644 --- a/flags/algorithms_sort.c +++ b/flags/algorithms_sort.c @@ -48,6 +48,8 @@ void complex(t_stacks *stacks) void adaptive(t_stacks *stacks) { - (void)stacks; + //simple(stacks); + medium(stacks); + //complex(stacks); return ; } From 69dc80e498b3a4b5878d73e0a50ad533553dc3f8 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 11:35:23 +0100 Subject: [PATCH 03/12] fix my medium algo --- algorithms/medium/utils_medium.c | 12 ++++++++---- algorithms/medium/utils_medium_two.c | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/algorithms/medium/utils_medium.c b/algorithms/medium/utils_medium.c index c9307a6..80f68de 100644 --- a/algorithms/medium/utils_medium.c +++ b/algorithms/medium/utils_medium.c @@ -16,11 +16,14 @@ int get_first_lower(t_stack *first) { t_stack *tmp; int lower; + int pass; tmp = first; lower = tmp->value; - while (tmp->next != first) + pass = 1; + while (tmp != first || pass == 1) { + pass = 0; if (lower > tmp->value) lower = tmp->value; tmp = tmp->next; @@ -85,17 +88,18 @@ int get_number_in_range(int max_range, t_stack *a, int range) int nb_in; t_stack *tmp; t_stack *first; + int pass; nb_in = 0; tmp = a; + pass = 1; first = tmp; - while (tmp->next != first) + while (tmp != first || pass == 1) { + pass = 0; if (in_range(tmp->value, max_range, range)) nb_in++; tmp = tmp->next; } - if (in_range(tmp->value, max_range, range)) - nb_in++; return (nb_in); } diff --git a/algorithms/medium/utils_medium_two.c b/algorithms/medium/utils_medium_two.c index 70d91ed..167566a 100644 --- a/algorithms/medium/utils_medium_two.c +++ b/algorithms/medium/utils_medium_two.c @@ -16,12 +16,15 @@ static int get_max_number(t_stack *first) { int max; + int pass; t_stack *a; a = first; max = a->value; - while (a->next != first) + pass = 1; + while (a!= first || pass == 1) { + pass = 0; if (max < a->value) max = a->value; a = a->next; @@ -33,13 +36,17 @@ static int get_min_number(t_stack *first) { int min; t_stack *a; + int pass; a = first; min = a->value; - while (a->next != first) + pass = 1; + while (a != first || pass == 1) { + pass = 0; if (min > a->value) min = a->value; + a = a->next; } return (min); @@ -59,16 +66,16 @@ static int my_sqrt(int nb) int range_bucket(t_stack *first) { - int len; - int diff; - int sqrt; + int len; + long diff; + int sqrt; len = stack_len(first); - diff = get_max_number(first) - get_min_number(first); + diff = (long)get_max_number(first) - (long)get_min_number(first); sqrt = my_sqrt(len); if (diff / sqrt < 2) { return (get_max_number(first)); } - return ((get_max_number(first) - get_min_number(first)) / my_sqrt(len)); + return (diff / my_sqrt(len)); } From ccccc3b64015b8375a97e11bb97571f4e57ac68b Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 12:37:56 +0100 Subject: [PATCH 04/12] finish the disorder --- algorithms/medium/utils_medium.c | 1 - algorithms/medium/utils_medium_two.c | 3 +-- checker/check_error.c | 2 -- checker/verif_flag.c | 5 +++-- flags/algorithms_sort.c | 19 +++++++++++++++---- flags/flag.c | 4 ++-- headers/flags.h | 2 +- headers/parsing.h | 2 +- parsing/disorder.c | 7 ++++--- parsing/ft_strjoin.c | 2 +- 10 files changed, 28 insertions(+), 19 deletions(-) diff --git a/algorithms/medium/utils_medium.c b/algorithms/medium/utils_medium.c index 80f68de..f1d2113 100644 --- a/algorithms/medium/utils_medium.c +++ b/algorithms/medium/utils_medium.c @@ -58,7 +58,6 @@ int calcul_range(int value, int range) { int max_range; - max_range = 0; if (value == 2147483647) return (value); diff --git a/algorithms/medium/utils_medium_two.c b/algorithms/medium/utils_medium_two.c index 167566a..b89824d 100644 --- a/algorithms/medium/utils_medium_two.c +++ b/algorithms/medium/utils_medium_two.c @@ -22,7 +22,7 @@ static int get_max_number(t_stack *first) a = first; max = a->value; pass = 1; - while (a!= first || pass == 1) + while (a != first || pass == 1) { pass = 0; if (max < a->value) @@ -46,7 +46,6 @@ static int get_min_number(t_stack *first) pass = 0; if (min > a->value) min = a->value; - a = a->next; } return (min); diff --git a/checker/check_error.c b/checker/check_error.c index b549333..1f24a07 100644 --- a/checker/check_error.c +++ b/checker/check_error.c @@ -24,5 +24,3 @@ int check_error(char **tab, int mod) return (0); return (1); } - - diff --git a/checker/verif_flag.c b/checker/verif_flag.c index 8ad3d76..52b6794 100644 --- a/checker/verif_flag.c +++ b/checker/verif_flag.c @@ -20,6 +20,7 @@ static int is_exist_flag(char **tab, int pos) if (ft_strncmp(tab[pos], "--bench", 7) || ft_strncmp(tab[pos], "--simple", 8) || ft_strncmp(tab[pos], "--medium", 8) + || ft_strncmp(tab[pos], "--adaptive", 10) || ft_strncmp(tab[pos], "--complex", 9)) verif = 1; return (verif); @@ -40,7 +41,7 @@ static int verif_exist_flag(char **tab, int mod) return (verif); } -static int verif_double_flag(char **tab, int mod) +static int verif_double_flag(char **tab, int mod) { int verif; @@ -57,4 +58,4 @@ int verif_flag(char **tab, int mod) if (verif_double_flag(tab, mod) && verif_exist_flag(tab, mod)) return (1); return (0); -} \ No newline at end of file +} diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c index fbdef72..2fe3c48 100644 --- a/flags/algorithms_sort.c +++ b/flags/algorithms_sort.c @@ -12,6 +12,7 @@ #include "push_swap.h" #include "medium_headers.h" +#include "parsing.h" void simple(t_stacks *stacks) { @@ -46,10 +47,20 @@ void complex(t_stacks *stacks) radix(stacks); } -void adaptive(t_stacks *stacks) +void adaptive(t_stacks *stacks, char **tab) { - //simple(stacks); - medium(stacks); - //complex(stacks); + int i; + float disorder; + + i = 0; + while (!ft_isdigit(tab[i][0]) && tab[i]) + i++; + disorder = compute_disorder(tab, i - 1); + if (disorder < 0.3) + simple(stacks); + else if (disorder < 0.46) + medium(stacks); + else + complex(stacks); return ; } diff --git a/flags/flag.c b/flags/flag.c index 6dcb3dc..e531221 100644 --- a/flags/flag.c +++ b/flags/flag.c @@ -102,9 +102,9 @@ void flags(int pos, int pos_b, char **argv, t_stacks *stacks) else if (ft_strncmp(argv[pos], "--complex", 30) && pos > 0) complex(stacks); else if (ft_strncmp(argv[pos], "--adaptive", 30) && pos > 0) - adaptive(stacks); + adaptive(stacks, argv); else - adaptive(stacks); + adaptive(stacks, argv); if (pos_b > 0) stacks->bench = 1; } diff --git a/headers/flags.h b/headers/flags.h index c92c67e..7e2cc2b 100644 --- a/headers/flags.h +++ b/headers/flags.h @@ -16,7 +16,7 @@ void simple(t_stacks *stacks); void medium(t_stacks *stacks); void complex(t_stacks *stacks); -void adaptive(t_stacks *stacks); +void adaptive(t_stacks *stacks, char **tab); void flags(int pos, int pos_b, char **argv, t_stacks *stacks); int pos_bench(char **argv, int mod); int pos_flag(char **argv, int mod); diff --git a/headers/parsing.h b/headers/parsing.h index eee65d8..9beb240 100644 --- a/headers/parsing.h +++ b/headers/parsing.h @@ -33,6 +33,6 @@ int ft_strlcpy(char *dst, const char *src, int size); int ft_strlcat(char *dst, const char *src, int size); char *join_all(int argc, char **argv); char **split_all(char *tab); -float compute_disorder(char **strs); +float compute_disorder(char **strs, int pos); #endif diff --git a/parsing/disorder.c b/parsing/disorder.c index d76d0c3..3c06b0c 100644 --- a/parsing/disorder.c +++ b/parsing/disorder.c @@ -11,6 +11,7 @@ /* ************************************************************************** */ #include "push_swap.h" +#include "parsing.h" static int strs_len(char **strs) { @@ -22,7 +23,7 @@ static int strs_len(char **strs) return (i); } -float compute_disorder(char **strs) +float compute_disorder(char **strs, int pos) { float mistakes; float total_pairs; @@ -31,14 +32,14 @@ float compute_disorder(char **strs) mistakes = 0; total_pairs = 0; - i = 0; + i = pos; while (i < strs_len(strs)) { j = i + 1; while (j < strs_len(strs)) { total_pairs += 1; - if (strs[i] > strs[j]) + if (ft_atoi(strs[i]) > ft_atoi(strs[j])) mistakes += 1; j++; } diff --git a/parsing/ft_strjoin.c b/parsing/ft_strjoin.c index 1e6a961..2a43733 100644 --- a/parsing/ft_strjoin.c +++ b/parsing/ft_strjoin.c @@ -14,7 +14,7 @@ char *ft_strjoin(char const *s1, char const *s2) { - int total_len; + int total_len; char *tmp; total_len = ft_strlen(s1) + ft_strlen(s2); From 97ce3bf40bba444641b756c8bde5cdd27c5e848c Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 14:00:08 +0100 Subject: [PATCH 05/12] fixing the parsing --- checker/check_error.c | 13 +++++++++++++ checker/verif_flag.c | 10 +++++----- checker/verif_is_digit.c | 6 ++++-- headers/check_error.h | 1 + main.c | 8 ++++++++ test_one.c | 3 +++ 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/checker/check_error.c b/checker/check_error.c index 1f24a07..fbdd341 100644 --- a/checker/check_error.c +++ b/checker/check_error.c @@ -11,6 +11,17 @@ /* ************************************************************************** */ #include "check_error.h" +#include "parsing.h" + +int verif_is_number(char **tab) +{ + int len; + + len = len_split(tab); + if (tab[len - 1][0] == '-') + return (0); + return (1); +} int check_error(char **tab, int mod) { @@ -22,5 +33,7 @@ int check_error(char **tab, int mod) return (0); if (!verif_double(tab, mod)) return (0); + if (!verif_is_number(tab)) + return (0); return (1); } diff --git a/checker/verif_flag.c b/checker/verif_flag.c index 52b6794..f121c95 100644 --- a/checker/verif_flag.c +++ b/checker/verif_flag.c @@ -17,11 +17,11 @@ static int is_exist_flag(char **tab, int pos) int verif; verif = 0; - if (ft_strncmp(tab[pos], "--bench", 7) - || ft_strncmp(tab[pos], "--simple", 8) - || ft_strncmp(tab[pos], "--medium", 8) - || ft_strncmp(tab[pos], "--adaptive", 10) - || ft_strncmp(tab[pos], "--complex", 9)) + if (ft_strncmp(tab[pos], "--bench", 30) + || ft_strncmp(tab[pos], "--simple", 30) + || ft_strncmp(tab[pos], "--medium", 30) + || ft_strncmp(tab[pos], "--adaptive", 30) + || ft_strncmp(tab[pos], "--complex", 30)) verif = 1; return (verif); } diff --git a/checker/verif_is_digit.c b/checker/verif_is_digit.c index 9bbd134..6d6f6d7 100644 --- a/checker/verif_is_digit.c +++ b/checker/verif_is_digit.c @@ -12,7 +12,7 @@ #include "parsing.h" -static int scan_str_is_digit(char *tab) +int scan_str_is_digit(char *tab) { int i; @@ -21,7 +21,9 @@ static int scan_str_is_digit(char *tab) { if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1]))) return (0); - if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) + else if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) + return (0); + else if (!ft_isdigit(tab[i])) return (0); i++; } diff --git a/headers/check_error.h b/headers/check_error.h index a9a506a..b6f64f1 100644 --- a/headers/check_error.h +++ b/headers/check_error.h @@ -18,5 +18,6 @@ int check_error(char **tab, int mod); int verif_is_digit(char **tab, int mod); int verif_overflow(char **tab, int mod); int verif_double(char **tab, int mod); +int scan_str_is_digit(char *tab); #endif diff --git a/main.c b/main.c index 4c8434e..4233fc8 100644 --- a/main.c +++ b/main.c @@ -22,10 +22,18 @@ int main(int argc, char **argv) int mod; int len; + if (argc < 2) + return (0); tab = split_all(join_all(argc, argv)); if (!tab) return (0); len = len_split(tab); + if (!scan_str_is_digit(tab[len - 1])) + { + free_tab(tab); + write(2, "Error\n", 7); + return (0); + } mod = calcul_mod(len, tab); if (check_error(tab, mod)) test1(tab, len, mod); diff --git a/test_one.c b/test_one.c index 88a33bb..3cdb0ee 100644 --- a/test_one.c +++ b/test_one.c @@ -27,7 +27,10 @@ int test1(char **tab, int len, int mod) if (!stacks) return (0); if (check_order(stacks->a)) + { + free_all(stacks); return (0); + } flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks); if (stacks->bench == 1) print_bench(stacks); From 9c3f91dcb9a1d49b46535fa621265a242f1ee70f Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 14:48:14 +0100 Subject: [PATCH 06/12] delete print stacks and looking for the secure malloc if there is a malloc not secure --- Makefile | 2 +- flags/algorithms_sort.c | 2 ++ headers/push_swap.h | 2 -- stack_utils/print_stacks.c | 42 -------------------------------------- 4 files changed, 3 insertions(+), 45 deletions(-) delete mode 100644 stack_utils/print_stacks.c diff --git a/Makefile b/Makefile index 1aeffdf..ada4fd3 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ PARSING = ft_atoi.c parsing.c ft_strncmp.c ft_split.c ft_strlen.c ft_substr.c ch CHECKER_FILES = check_error.c verif_flag.c verif_is_digit.c verif_overflow.c verif_double.c -STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c stacks_len.c swap.c print_stacks.c +STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c stacks_len.c swap.c MEDIUM_ALGO = utils_medium.c utils_struct_tab.c utils_medium_two.c sort_utils.c sort_utils_two.c medium_algo.c diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c index 2fe3c48..3cc4c18 100644 --- a/flags/algorithms_sort.c +++ b/flags/algorithms_sort.c @@ -37,6 +37,8 @@ void medium(t_stacks *stacks) { range = range_bucket(stacks->a); buckets = get_tabs(stacks->a, range); + if (!buckets) + return ; bucket_algo(stacks, buckets, range); } } diff --git a/headers/push_swap.h b/headers/push_swap.h index c039fe4..0631636 100644 --- a/headers/push_swap.h +++ b/headers/push_swap.h @@ -40,8 +40,6 @@ typedef struct s_stacks unsigned int ss; } t_stacks; -/* PRINT STACK FUNCTION*/ -void print_stacks(t_stacks *stacks, int len, t_stack *a, t_stack *b); /*STACK_FUNCTIONS*/ void pa(t_stacks *stacks); void pb(t_stacks *stacks); diff --git a/stack_utils/print_stacks.c b/stack_utils/print_stacks.c deleted file mode 100644 index 261fbd4..0000000 --- a/stack_utils/print_stacks.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* print_stacks.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/09 13:10:00 by dgaillet #+# #+# */ -/* Updated: 2025/12/09 13:36:03 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -void print_stacks(t_stacks *stacks, int len, t_stack *a, t_stack *b) -{ - int a_len; - int b_len; - int i; - - i = 0; - a_len = stack_a_len(stacks); - b_len = stack_b_len(stacks); - while (i < len) - { - if (a_len >= len - i) - { - printf("%d", a->value); - a = a->next; - } - printf("\t"); - if (b_len >= len - i) - { - printf("%d", b->value); - b = b->next; - } - printf("\n"); - i++; - } - printf("_\t_\nA\tB\n\n"); -} From f8f1b43539d7337d0ff70b5fe54836d8b9bde653 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 16:18:17 +0100 Subject: [PATCH 07/12] fix the adaptive --- flags/algorithms_sort.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c index 3cc4c18..4ba0196 100644 --- a/flags/algorithms_sort.c +++ b/flags/algorithms_sort.c @@ -60,7 +60,7 @@ void adaptive(t_stacks *stacks, char **tab) disorder = compute_disorder(tab, i - 1); if (disorder < 0.3) simple(stacks); - else if (disorder < 0.46) + else if (disorder < 0.5) medium(stacks); else complex(stacks); From cfdf913c4b8caa8e795e78f8b0503e12323af2e7 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 08:17:50 +0100 Subject: [PATCH 08/12] refactoring functions parsing main flags --- checker/verif_is_digit.c | 9 ++++---- checker/verif_overflow.c | 2 +- flags/flag.c | 44 +++++----------------------------------- main.c | 6 ------ parsing/parsing.c | 35 ++------------------------------ 5 files changed, 12 insertions(+), 84 deletions(-) diff --git a/checker/verif_is_digit.c b/checker/verif_is_digit.c index 6d6f6d7..d9eacca 100644 --- a/checker/verif_is_digit.c +++ b/checker/verif_is_digit.c @@ -19,11 +19,10 @@ int scan_str_is_digit(char *tab) i = 0; while (tab[i]) { - if (!ft_isdigit(tab[i]) && (tab[i] == '-' && !ft_isdigit(tab[i + 1]))) - return (0); - else if (tab[i] == '+' && !ft_isdigit(tab[i + 1])) - return (0); - else if (!ft_isdigit(tab[i])) + if ((tab[i] == '+' || tab[i] == '-') && ft_isdigit(tab[i + 1]) + && tab[i + 1]) + i++; + if (!ft_isdigit(tab[i])) return (0); i++; } diff --git a/checker/verif_overflow.c b/checker/verif_overflow.c index c9518c7..173680d 100644 --- a/checker/verif_overflow.c +++ b/checker/verif_overflow.c @@ -28,7 +28,7 @@ static int verif_atoi(const char *nptr) i = 0; tmp = 0; before = 0; - if (ft_strncmp("-2147483648", nptr, 12)) + if (ft_strncmp("-2147483648", nptr, 15)) return (1); while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ') i++; diff --git a/flags/flag.c b/flags/flag.c index e531221..8157369 100644 --- a/flags/flag.c +++ b/flags/flag.c @@ -14,48 +14,14 @@ #include "parsing.h" #include "flags.h" -static int verif_arg(char *argv) -{ - int len; - int verif; - char **split; - - split = ft_split(argv, ' '); - if (!split) - return (-1); - len = len_split(split); - if (len > 1) - verif = 1; - else - verif = 0; - free_tab(split); - return (verif); -} - -int calcul_mod(int argc, char **argv) +int calcul_mod(int argc, char **argv) { int mod; - if (verif_arg(argv[argc -1]) == 0) - { - if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) - mod = 2; - else if (ft_strncmp("--", argv[1], 2) && !ft_strncmp("--", argv[2], 2)) - mod = 1; - else - mod = 0; - } - else if (verif_arg(argv[argc -1]) == 1) - { - if (ft_strncmp("--", argv[1], 2) && ft_strncmp("--", argv[2], 2)) - mod = 5; - else if (ft_strncmp("--", argv[1], 2) && !ft_strncmp("--", argv[2], 2)) - mod = 4; - else - mod = 3; - } - else - mod = -1; + mod = 0; + while (argv[mod] && !ft_isdigit(argv[mod][0]) && mod < argc) + mod++; + mod--; return (mod); } diff --git a/main.c b/main.c index 4233fc8..fbbec01 100644 --- a/main.c +++ b/main.c @@ -28,12 +28,6 @@ int main(int argc, char **argv) if (!tab) return (0); len = len_split(tab); - if (!scan_str_is_digit(tab[len - 1])) - { - free_tab(tab); - write(2, "Error\n", 7); - return (0); - } mod = calcul_mod(len, tab); if (check_error(tab, mod)) test1(tab, len, mod); diff --git a/parsing/parsing.c b/parsing/parsing.c index 3a80a9c..232863f 100644 --- a/parsing/parsing.c +++ b/parsing/parsing.c @@ -16,13 +16,7 @@ int wich_mod(int mod) { - if (mod == 0) - return (1); - else if (mod == 1) - return (2); - else if (mod == 2) - return (3); - return (0); + return (mod % 3 + 1); } static t_stack *parsing(int argc, char **argv, int mod) @@ -51,28 +45,6 @@ static t_stack *parsing(int argc, char **argv, int mod) return (first); } -static t_stack *special_parsing(char **argv, int mod) -{ - t_stack *a; - char **split_tab; - int len; - int i; - - i = mod % 3 + 1; - split_tab = ft_split(argv[i], ' '); - if (!split_tab) - return (NULL); - len = len_split(split_tab); - a = parsing(len, split_tab, mod); - if (!a) - { - free_tab(split_tab); - return (NULL); - } - free_tab(split_tab); - return (a); -} - static void set_t_stacks(t_stacks *stacks) { stacks->a = NULL; @@ -102,10 +74,7 @@ t_stacks *init_stacks(int argc, char **argv, int mod) if (!stacks) return (NULL); set_t_stacks(stacks); - if (mod == 0 || mod == 1 || mod == 2) - a = parsing(argc, argv, mod); - else - a = special_parsing(argv, mod); + a = parsing(argc, argv, mod); if (!a) { free(stacks); From 696f1ca2d552c52dee632fb2148b517a3032fb35 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 08:19:15 +0100 Subject: [PATCH 09/12] doing the norm --- flags/flag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flags/flag.c b/flags/flag.c index 8157369..2d1f71c 100644 --- a/flags/flag.c +++ b/flags/flag.c @@ -14,7 +14,7 @@ #include "parsing.h" #include "flags.h" -int calcul_mod(int argc, char **argv) +int calcul_mod(int argc, char **argv) { int mod; From 7d2fed6e76a3daf51eaae3bae232264a4e4e5739 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 09:40:15 +0100 Subject: [PATCH 10/12] starting the bonus and modify the name folder headers -> includes --- Makefile | 2 +- bonus/Makefile | 0 bonus/check/check_error.c | 0 bonus/end_check/end_check.c | 0 bonus/main.c | 0 bonus/parsing/parsing.c | 0 bonus/utils/push.c | 51 ++++++++++++++++++++ bonus/utils/rev_rotate.c | 34 ++++++++++++++ bonus/utils/rotate.c | 34 ++++++++++++++ bonus/utils/stack_add.c | 54 ++++++++++++++++++++++ bonus/utils/stack_remove.c | 32 +++++++++++++ bonus/utils/stacks_len.c | 63 +++++++++++++++++++++++++ bonus/utils/swap.c | 64 ++++++++++++++++++++++++++ {headers => includes}/check_error.h | 0 {headers => includes}/flags.h | 0 {headers => includes}/medium_headers.h | 0 {headers => includes}/parsing.h | 0 {headers => includes}/push_swap.h | 0 18 files changed, 333 insertions(+), 1 deletion(-) create mode 100644 bonus/Makefile create mode 100644 bonus/check/check_error.c create mode 100644 bonus/end_check/end_check.c create mode 100644 bonus/main.c create mode 100644 bonus/parsing/parsing.c create mode 100644 bonus/utils/push.c create mode 100644 bonus/utils/rev_rotate.c create mode 100644 bonus/utils/rotate.c create mode 100644 bonus/utils/stack_add.c create mode 100644 bonus/utils/stack_remove.c create mode 100644 bonus/utils/stacks_len.c create mode 100644 bonus/utils/swap.c rename {headers => includes}/check_error.h (100%) rename {headers => includes}/flags.h (100%) rename {headers => includes}/medium_headers.h (100%) rename {headers => includes}/parsing.h (100%) rename {headers => includes}/push_swap.h (100%) diff --git a/Makefile b/Makefile index ada4fd3..4929b90 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ FLAGS_DIR = flags CHECKER_DIR = checker -INCLUDES = headers +INCLUDES = includes #============================ # ALL FILES WITHOUT PATH diff --git a/bonus/Makefile b/bonus/Makefile new file mode 100644 index 0000000..e69de29 diff --git a/bonus/check/check_error.c b/bonus/check/check_error.c new file mode 100644 index 0000000..e69de29 diff --git a/bonus/end_check/end_check.c b/bonus/end_check/end_check.c new file mode 100644 index 0000000..e69de29 diff --git a/bonus/main.c b/bonus/main.c new file mode 100644 index 0000000..e69de29 diff --git a/bonus/parsing/parsing.c b/bonus/parsing/parsing.c new file mode 100644 index 0000000..e69de29 diff --git a/bonus/utils/push.c b/bonus/utils/push.c new file mode 100644 index 0000000..2bca761 --- /dev/null +++ b/bonus/utils/push.c @@ -0,0 +1,51 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 15:09:40 by mteriier #+# #+# */ +/* Updated: 2026/01/08 13:57:56 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include +#include + +void pa(t_stacks *stacks) +{ + t_stack *b_push; + + if (!stacks || !stacks->b) + return ; + b_push = stacks->b; + if (stacks->b->next == stacks->b) + stacks->b = NULL; + else + { + stacks->b->next->previous = stacks->b->previous; + stacks->b->previous->next = stacks->b->next; + stacks->b = stacks->b->next; + } + stack_add_front(&(stacks->a), b_push); +} + +void pb(t_stacks *stacks) +{ + t_stack *a_push; + + if (!stacks || !stacks->a) + return ; + a_push = stacks->a; + if (stacks->a->next == stacks->a) + stacks->a = NULL; + else + { + stacks->a->next->previous = stacks->a->previous; + stacks->a->previous->next = stacks->a->next; + stacks->a = stacks->a->next; + } + stack_add_front(&(stacks->b), a_push); +} diff --git a/bonus/utils/rev_rotate.c b/bonus/utils/rev_rotate.c new file mode 100644 index 0000000..7e1ccce --- /dev/null +++ b/bonus/utils/rev_rotate.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rev_rotate.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 14:43:45 by dgaillet #+# #+# */ +/* Updated: 2026/01/08 13:57:27 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include + +void rra(t_stacks *stacks) +{ + if (stacks && stacks->a && stacks->a->previous) + stacks->a = stacks->a->previous; +} + +void rrb(t_stacks *stacks) +{ + if (stacks && stacks->b && stacks->b->previous) + stacks->b = stacks->b->previous; +} + +void rrr(t_stacks *stacks) +{ + if (stacks && stacks->b && stacks->b->previous) + stacks->b = stacks->b->previous; + if (stacks && stacks->a && stacks->a->previous) + stacks->a = stacks->a->previous; +} diff --git a/bonus/utils/rotate.c b/bonus/utils/rotate.c new file mode 100644 index 0000000..fee4efa --- /dev/null +++ b/bonus/utils/rotate.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* rotate.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 14:32:10 by dgaillet #+# #+# */ +/* Updated: 2026/01/08 13:57:47 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include + +void ra(t_stacks *stacks) +{ + if (stacks && stacks->a && stacks->a->next) + stacks->a = stacks->a->next; +} + +void rb(t_stacks *stacks) +{ + if (stacks && stacks->b && stacks->b->next) + stacks->b = stacks->b->next; +} + +void rr(t_stacks *stacks) +{ + if (stacks && stacks->a && stacks->a->next) + stacks->a = stacks->a->next; + if (stacks && stacks->b && stacks->b->next) + stacks->b = stacks->b->next; +} diff --git a/bonus/utils/stack_add.c b/bonus/utils/stack_add.c new file mode 100644 index 0000000..5effe0f --- /dev/null +++ b/bonus/utils/stack_add.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* stack_add.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 15:52:40 by dgaillet #+# #+# */ +/* Updated: 2025/12/12 11:39:09 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include + +t_stack *new_stack(int value) +{ + t_stack *new; + + new = malloc(sizeof(t_stack)); + if (!new) + return (NULL); + new->value = value; + new->next = NULL; + new->previous = NULL; + return (new); +} + +void stack_add_back(t_stack **stack, t_stack *new) +{ + if (!stack || !new) + return ; + if (*stack == NULL) + { + (*stack) = new; + new->next = new; + new->previous = new; + } + else + { + (*stack)->previous->next = new; + new->previous = (*stack)->previous; + (*stack)->previous = new; + new->next = *stack; + } +} + +void stack_add_front(t_stack **stack, t_stack *new) +{ + if (!stack || !new) + return ; + stack_add_back(stack, new); + *stack = new; +} diff --git a/bonus/utils/stack_remove.c b/bonus/utils/stack_remove.c new file mode 100644 index 0000000..cf19002 --- /dev/null +++ b/bonus/utils/stack_remove.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* stack_remove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 16:05:27 by dgaillet #+# #+# */ +/* Updated: 2025/12/12 11:39:02 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include + +void stack_clear_all(t_stack *stack, t_stack *first) +{ + if (!stack) + return ; + if (stack->next != first) + stack_clear_all(stack->next, first); + free(stack); +} + +void free_all(t_stacks *stacks) +{ + if (stacks->a) + stack_clear_all(stacks->a, stacks->a); + if (stacks->b) + stack_clear_all(stacks->b, stacks->b); + free(stacks); +} diff --git a/bonus/utils/stacks_len.c b/bonus/utils/stacks_len.c new file mode 100644 index 0000000..6aa44f9 --- /dev/null +++ b/bonus/utils/stacks_len.c @@ -0,0 +1,63 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* stacks_len.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/09 13:11:50 by dgaillet #+# #+# */ +/* Updated: 2025/12/09 13:19:21 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int stack_a_len(t_stacks *stacks) +{ + t_stack *first; + t_stack *a_stack; + int len; + + a_stack = stacks->a; + first = a_stack; + if (!a_stack) + return (0); + len = 1; + while (a_stack->next != first) + { + a_stack = a_stack->next; + len++; + } + return (len); +} + +int stack_b_len(t_stacks *stacks) +{ + t_stack *first; + t_stack *b_stack; + int len; + + b_stack = stacks->b; + first = b_stack; + if (!b_stack) + return (0); + len = 1; + while (b_stack->next != first) + { + b_stack = b_stack->next; + len++; + } + return (len); +} + +int highest_stack_len(t_stacks *stacks) +{ + int a_len; + int b_len; + + a_len = stack_a_len(stacks); + b_len = stack_b_len(stacks); + if (a_len > b_len) + return (a_len); + return (b_len); +} diff --git a/bonus/utils/swap.c b/bonus/utils/swap.c new file mode 100644 index 0000000..2d2588b --- /dev/null +++ b/bonus/utils/swap.c @@ -0,0 +1,64 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* swap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/08 14:48:44 by mteriier #+# #+# */ +/* Updated: 2026/01/08 13:58:13 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include + +void sa(t_stacks *stacks) +{ + t_stack *a; + int stock; + + if (!stacks || !stacks->a || !stacks->a->next) + return ; + a = stacks->a; + stock = a->value; + a->value = a->next->value; + a->next->value = stock; +} + +void sb(t_stacks *stacks) +{ + t_stack *b; + int stock; + + if (!stacks || !stacks->b || !stacks->b->next) + return ; + b = stacks->b; + stock = b->value; + b->value = b->next->value; + b->next->value = stock; +} + +void ss(t_stacks *stacks) +{ + t_stack *b; + t_stack *a; + int stock; + + if (!stacks) + return ; + if (stacks->b && stacks->b->next) + { + b = stacks->b; + stock = b->value; + b->value = b->next->value; + b->next->value = stock; + } + if (stacks->a && stacks->a->next) + { + a = stacks->a; + stock = a->value; + a->value = a->next->value; + a->next->value = stock; + } +} diff --git a/headers/check_error.h b/includes/check_error.h similarity index 100% rename from headers/check_error.h rename to includes/check_error.h diff --git a/headers/flags.h b/includes/flags.h similarity index 100% rename from headers/flags.h rename to includes/flags.h diff --git a/headers/medium_headers.h b/includes/medium_headers.h similarity index 100% rename from headers/medium_headers.h rename to includes/medium_headers.h diff --git a/headers/parsing.h b/includes/parsing.h similarity index 100% rename from headers/parsing.h rename to includes/parsing.h diff --git a/headers/push_swap.h b/includes/push_swap.h similarity index 100% rename from headers/push_swap.h rename to includes/push_swap.h From b2f9912963474da5790a87d8f2c2cc23fe07fdfc Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 12:21:15 +0100 Subject: [PATCH 11/12] fix my mistakes --- bonus/Makefile | 0 bonus/check/check_error.c | 0 bonus/end_check/end_check.c | 0 bonus/main.c | 0 bonus/parsing/parsing.c | 0 bonus/utils/push.c | 51 ----------------------------- bonus/utils/rev_rotate.c | 34 -------------------- bonus/utils/rotate.c | 34 -------------------- bonus/utils/stack_add.c | 54 ------------------------------- bonus/utils/stack_remove.c | 32 ------------------- bonus/utils/stacks_len.c | 63 ------------------------------------ bonus/utils/swap.c | 64 ------------------------------------- checker/check_error.c | 2 +- checker/verif_overflow.c | 2 +- 14 files changed, 2 insertions(+), 334 deletions(-) delete mode 100644 bonus/Makefile delete mode 100644 bonus/check/check_error.c delete mode 100644 bonus/end_check/end_check.c delete mode 100644 bonus/main.c delete mode 100644 bonus/parsing/parsing.c delete mode 100644 bonus/utils/push.c delete mode 100644 bonus/utils/rev_rotate.c delete mode 100644 bonus/utils/rotate.c delete mode 100644 bonus/utils/stack_add.c delete mode 100644 bonus/utils/stack_remove.c delete mode 100644 bonus/utils/stacks_len.c delete mode 100644 bonus/utils/swap.c diff --git a/bonus/Makefile b/bonus/Makefile deleted file mode 100644 index e69de29..0000000 diff --git a/bonus/check/check_error.c b/bonus/check/check_error.c deleted file mode 100644 index e69de29..0000000 diff --git a/bonus/end_check/end_check.c b/bonus/end_check/end_check.c deleted file mode 100644 index e69de29..0000000 diff --git a/bonus/main.c b/bonus/main.c deleted file mode 100644 index e69de29..0000000 diff --git a/bonus/parsing/parsing.c b/bonus/parsing/parsing.c deleted file mode 100644 index e69de29..0000000 diff --git a/bonus/utils/push.c b/bonus/utils/push.c deleted file mode 100644 index 2bca761..0000000 --- a/bonus/utils/push.c +++ /dev/null @@ -1,51 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* push.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mteriier +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 15:09:40 by mteriier #+# #+# */ -/* Updated: 2026/01/08 13:57:56 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include -#include - -void pa(t_stacks *stacks) -{ - t_stack *b_push; - - if (!stacks || !stacks->b) - return ; - b_push = stacks->b; - if (stacks->b->next == stacks->b) - stacks->b = NULL; - else - { - stacks->b->next->previous = stacks->b->previous; - stacks->b->previous->next = stacks->b->next; - stacks->b = stacks->b->next; - } - stack_add_front(&(stacks->a), b_push); -} - -void pb(t_stacks *stacks) -{ - t_stack *a_push; - - if (!stacks || !stacks->a) - return ; - a_push = stacks->a; - if (stacks->a->next == stacks->a) - stacks->a = NULL; - else - { - stacks->a->next->previous = stacks->a->previous; - stacks->a->previous->next = stacks->a->next; - stacks->a = stacks->a->next; - } - stack_add_front(&(stacks->b), a_push); -} diff --git a/bonus/utils/rev_rotate.c b/bonus/utils/rev_rotate.c deleted file mode 100644 index 7e1ccce..0000000 --- a/bonus/utils/rev_rotate.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* rev_rotate.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 14:43:45 by dgaillet #+# #+# */ -/* Updated: 2026/01/08 13:57:27 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -void rra(t_stacks *stacks) -{ - if (stacks && stacks->a && stacks->a->previous) - stacks->a = stacks->a->previous; -} - -void rrb(t_stacks *stacks) -{ - if (stacks && stacks->b && stacks->b->previous) - stacks->b = stacks->b->previous; -} - -void rrr(t_stacks *stacks) -{ - if (stacks && stacks->b && stacks->b->previous) - stacks->b = stacks->b->previous; - if (stacks && stacks->a && stacks->a->previous) - stacks->a = stacks->a->previous; -} diff --git a/bonus/utils/rotate.c b/bonus/utils/rotate.c deleted file mode 100644 index fee4efa..0000000 --- a/bonus/utils/rotate.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* rotate.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 14:32:10 by dgaillet #+# #+# */ -/* Updated: 2026/01/08 13:57:47 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -void ra(t_stacks *stacks) -{ - if (stacks && stacks->a && stacks->a->next) - stacks->a = stacks->a->next; -} - -void rb(t_stacks *stacks) -{ - if (stacks && stacks->b && stacks->b->next) - stacks->b = stacks->b->next; -} - -void rr(t_stacks *stacks) -{ - if (stacks && stacks->a && stacks->a->next) - stacks->a = stacks->a->next; - if (stacks && stacks->b && stacks->b->next) - stacks->b = stacks->b->next; -} diff --git a/bonus/utils/stack_add.c b/bonus/utils/stack_add.c deleted file mode 100644 index 5effe0f..0000000 --- a/bonus/utils/stack_add.c +++ /dev/null @@ -1,54 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* stack_add.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 15:52:40 by dgaillet #+# #+# */ -/* Updated: 2025/12/12 11:39:09 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -t_stack *new_stack(int value) -{ - t_stack *new; - - new = malloc(sizeof(t_stack)); - if (!new) - return (NULL); - new->value = value; - new->next = NULL; - new->previous = NULL; - return (new); -} - -void stack_add_back(t_stack **stack, t_stack *new) -{ - if (!stack || !new) - return ; - if (*stack == NULL) - { - (*stack) = new; - new->next = new; - new->previous = new; - } - else - { - (*stack)->previous->next = new; - new->previous = (*stack)->previous; - (*stack)->previous = new; - new->next = *stack; - } -} - -void stack_add_front(t_stack **stack, t_stack *new) -{ - if (!stack || !new) - return ; - stack_add_back(stack, new); - *stack = new; -} diff --git a/bonus/utils/stack_remove.c b/bonus/utils/stack_remove.c deleted file mode 100644 index cf19002..0000000 --- a/bonus/utils/stack_remove.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* stack_remove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 16:05:27 by dgaillet #+# #+# */ -/* Updated: 2025/12/12 11:39:02 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -void stack_clear_all(t_stack *stack, t_stack *first) -{ - if (!stack) - return ; - if (stack->next != first) - stack_clear_all(stack->next, first); - free(stack); -} - -void free_all(t_stacks *stacks) -{ - if (stacks->a) - stack_clear_all(stacks->a, stacks->a); - if (stacks->b) - stack_clear_all(stacks->b, stacks->b); - free(stacks); -} diff --git a/bonus/utils/stacks_len.c b/bonus/utils/stacks_len.c deleted file mode 100644 index 6aa44f9..0000000 --- a/bonus/utils/stacks_len.c +++ /dev/null @@ -1,63 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* stacks_len.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: dgaillet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/09 13:11:50 by dgaillet #+# #+# */ -/* Updated: 2025/12/09 13:19:21 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" - -int stack_a_len(t_stacks *stacks) -{ - t_stack *first; - t_stack *a_stack; - int len; - - a_stack = stacks->a; - first = a_stack; - if (!a_stack) - return (0); - len = 1; - while (a_stack->next != first) - { - a_stack = a_stack->next; - len++; - } - return (len); -} - -int stack_b_len(t_stacks *stacks) -{ - t_stack *first; - t_stack *b_stack; - int len; - - b_stack = stacks->b; - first = b_stack; - if (!b_stack) - return (0); - len = 1; - while (b_stack->next != first) - { - b_stack = b_stack->next; - len++; - } - return (len); -} - -int highest_stack_len(t_stacks *stacks) -{ - int a_len; - int b_len; - - a_len = stack_a_len(stacks); - b_len = stack_b_len(stacks); - if (a_len > b_len) - return (a_len); - return (b_len); -} diff --git a/bonus/utils/swap.c b/bonus/utils/swap.c deleted file mode 100644 index 2d2588b..0000000 --- a/bonus/utils/swap.c +++ /dev/null @@ -1,64 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* swap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mteriier +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/12/08 14:48:44 by mteriier #+# #+# */ -/* Updated: 2026/01/08 13:58:13 by dgaillet ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include "push_swap.h" -#include - -void sa(t_stacks *stacks) -{ - t_stack *a; - int stock; - - if (!stacks || !stacks->a || !stacks->a->next) - return ; - a = stacks->a; - stock = a->value; - a->value = a->next->value; - a->next->value = stock; -} - -void sb(t_stacks *stacks) -{ - t_stack *b; - int stock; - - if (!stacks || !stacks->b || !stacks->b->next) - return ; - b = stacks->b; - stock = b->value; - b->value = b->next->value; - b->next->value = stock; -} - -void ss(t_stacks *stacks) -{ - t_stack *b; - t_stack *a; - int stock; - - if (!stacks) - return ; - if (stacks->b && stacks->b->next) - { - b = stacks->b; - stock = b->value; - b->value = b->next->value; - b->next->value = stock; - } - if (stacks->a && stacks->a->next) - { - a = stacks->a; - stock = a->value; - a->value = a->next->value; - a->next->value = stock; - } -} diff --git a/checker/check_error.c b/checker/check_error.c index fbdd341..c936923 100644 --- a/checker/check_error.c +++ b/checker/check_error.c @@ -18,7 +18,7 @@ int verif_is_number(char **tab) int len; len = len_split(tab); - if (tab[len - 1][0] == '-') + if (tab[len - 1][0] == '-' && !ft_isdigit(tab[len - 1][1])) return (0); return (1); } diff --git a/checker/verif_overflow.c b/checker/verif_overflow.c index 173680d..e0944b6 100644 --- a/checker/verif_overflow.c +++ b/checker/verif_overflow.c @@ -28,7 +28,7 @@ static int verif_atoi(const char *nptr) i = 0; tmp = 0; before = 0; - if (ft_strncmp("-2147483648", nptr, 15)) + if (ft_strncmp(nptr, "-2147483648", 15)) return (1); while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == ' ') i++; From 02993cded2d25e170a1c3e5e267bec01dec68c1f Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 13 Jan 2026 12:30:33 +0100 Subject: [PATCH 12/12] clean the include not used --- checker/verif_overflow.c | 7 ------- flags/algorithms_sort.c | 2 +- flags/bench.c | 1 - parsing/ft_split.c | 1 - parsing/ft_substr.c | 1 - parsing/parsing.c | 1 - test_one.c | 2 +- 7 files changed, 2 insertions(+), 13 deletions(-) diff --git a/checker/verif_overflow.c b/checker/verif_overflow.c index e0944b6..55905d2 100644 --- a/checker/verif_overflow.c +++ b/checker/verif_overflow.c @@ -12,13 +12,6 @@ #include "parsing.h" -// static int calcul_sign(char c) -// { -// if (c == '-') -// return (-1); -// return (1); -// } - static int verif_atoi(const char *nptr) { size_t i; diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c index 4ba0196..e78c48e 100644 --- a/flags/algorithms_sort.c +++ b/flags/algorithms_sort.c @@ -57,7 +57,7 @@ void adaptive(t_stacks *stacks, char **tab) i = 0; while (!ft_isdigit(tab[i][0]) && tab[i]) i++; - disorder = compute_disorder(tab, i - 1); + disorder = stacks->disorder; if (disorder < 0.3) simple(stacks); else if (disorder < 0.5) diff --git a/flags/bench.c b/flags/bench.c index 08a4691..31b5d2a 100644 --- a/flags/bench.c +++ b/flags/bench.c @@ -13,7 +13,6 @@ #include "push_swap.h" #include "parsing.h" #include -#include static void print_disorder(t_stacks *stacks) { diff --git a/parsing/ft_split.c b/parsing/ft_split.c index db67aca..aae2c0c 100644 --- a/parsing/ft_split.c +++ b/parsing/ft_split.c @@ -10,7 +10,6 @@ /* */ /* ************************************************************************** */ -#include #include "parsing.h" static size_t count_words(char const *s, char c) diff --git a/parsing/ft_substr.c b/parsing/ft_substr.c index b234dc7..7d42712 100644 --- a/parsing/ft_substr.c +++ b/parsing/ft_substr.c @@ -10,7 +10,6 @@ /* */ /* ************************************************************************** */ -#include #include "parsing.h" char *ft_substr(char const *s, unsigned int start, size_t len) diff --git a/parsing/parsing.c b/parsing/parsing.c index 232863f..64f2edd 100644 --- a/parsing/parsing.c +++ b/parsing/parsing.c @@ -12,7 +12,6 @@ #include "push_swap.h" #include "parsing.h" -#include int wich_mod(int mod) { diff --git a/test_one.c b/test_one.c index 3cdb0ee..d909127 100644 --- a/test_one.c +++ b/test_one.c @@ -14,7 +14,6 @@ #include "flags.h" #include "parsing.h" #include "medium_headers.h" -#include int test1(char **tab, int len, int mod) { @@ -31,6 +30,7 @@ int test1(char **tab, int len, int mod) free_all(stacks); return (0); } + stacks->disorder = compute_disorder(tab, wich_mod(mod)); flags(pos_flag(tab, mod), pos_bench(tab, mod), tab, stacks); if (stacks->bench == 1) print_bench(stacks);