From 97ce3bf40bba444641b756c8bde5cdd27c5e848c Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 12 Jan 2026 14:00:08 +0100 Subject: [PATCH 1/7] 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 2/7] 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 3/7] 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 4/7] 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 5/7] 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 6/7] 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 7/7] 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++;