From 93e8c10b27c9703626a44bc8026f72a6d893a55f Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Wed, 7 Jan 2026 13:13:30 +0100 Subject: [PATCH] adding the flags --- Makefile | 6 +++++- flags/algorithms_sort.c | 42 ++++++++++++++++++++++++++++++++++++++ flags/flag.c | 29 ++++++++++++++++++++++++++ headers/flags.h | 22 ++++++++++++++++++++ headers/parsing.h | 1 + headers/push_swap.h | 1 + parsing/ft_strncmp.c | 25 +++++++++++++++++++++++ stack_utils/stack_remove.c | 9 ++++++++ 8 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 flags/algorithms_sort.c create mode 100644 flags/flag.c create mode 100644 headers/flags.h create mode 100644 parsing/ft_strncmp.c diff --git a/Makefile b/Makefile index 4d233cf..9d20870 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,8 @@ PARS_DIR = parsing MEDIUM_DIR = medium +FLAGS_DIR = flags + INCLUDES = headers #============================ @@ -24,7 +26,9 @@ SRC = main.c test_one.c INSERTION = insertion.c -PARSING = ft_atoi.c parsing.c parsing_2.c +FLAGS_FILES = algorithms_sort.c flag.c + +PARSING = ft_atoi.c parsing.c parsing_2.c ft_strncmp.c STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c stacks_len.c swap.c print_stacks.c diff --git a/flags/algorithms_sort.c b/flags/algorithms_sort.c new file mode 100644 index 0000000..a0f9b28 --- /dev/null +++ b/flags/algorithms_sort.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* algorithms_sort.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/07 12:15:02 by mteriier #+# #+# */ +/* Updated: 2026/01/07 12:15:05 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include "medium_algo.h" + +void simple(t_stacks *piles) +{ + int len; + + len = stack_a_len(piles); + insertion(piles, len); +} + +void medium(t_stacks *piles) +{ + t_tab *buckets; + int range; + + range = range_bucket(piles->a); + buckets = get_tabs(piles->a, range); + bucket_algo(piles, buckets, range); +} + +void complex(t_stacks *piles) +{ + return ; +} + +void adaptive(t_stacks *piles) +{ + return ; +} diff --git a/flags/flag.c b/flags/flag.c new file mode 100644 index 0000000..55c20eb --- /dev/null +++ b/flags/flag.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* flag.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/07 12:39:29 by mteriier #+# #+# */ +/* Updated: 2026/01/07 12:39:31 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include "parsing.h" + +void flags(int pos, char **argv, t_stacks *piles) +{ + if (ft_strncmp(argv[pos], "--simple", 30) && pos > 0) + simple(piles); + else if (ft_strncmp(argv[pos], "--medium", 30) && pos > 0) + medium(piles); + else if (ft_strncmp(argv[pos], "--complex", 30) && pos > 0) + complex(piles); + else if (ft_strncmp(argv[pos], "--adaptive", 30) && pos > 0) + adaptive(piles); + else + adaptive(piles); + +} diff --git a/headers/flags.h b/headers/flags.h new file mode 100644 index 0000000..b7b82a7 --- /dev/null +++ b/headers/flags.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* flags.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/07 13:05:52 by mteriier #+# #+# */ +/* Updated: 2026/01/07 13:05:53 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FLAGS_H +# define FLAGS_H + +void simple(t_stacks *piles); +void medium(t_stacks *piles); +void complex(t_stacks *piles); +void adaptive(t_stacks *piles); +void flags(int pos, char **argv, t_stacks *piles); + +#endif diff --git a/headers/parsing.h b/headers/parsing.h index a42d78e..d5f4358 100644 --- a/headers/parsing.h +++ b/headers/parsing.h @@ -16,5 +16,6 @@ int ft_atoi(const char *nptr); t_stacks *init_big_stacks2(int *tab, int len); t_stacks *init_big_stacks(int argc, char **argv); +int ft_strncmp(const char *s1, const char *s2, int n); #endif diff --git a/headers/push_swap.h b/headers/push_swap.h index f38f1b3..b358062 100644 --- a/headers/push_swap.h +++ b/headers/push_swap.h @@ -45,6 +45,7 @@ t_stack *new_stack(int value); void stack_add_back(t_stack **stack, t_stack *new); void stack_add_front(t_stack **stack, t_stack *new); void stack_clear_all(t_stack *stack, t_stack *first); +void free_all(t_stacks *piles); /* STACKS LEN FILES */ int stack_a_len(t_stacks *stacks); int stack_b_len(t_stacks *stacks); diff --git a/parsing/ft_strncmp.c b/parsing/ft_strncmp.c new file mode 100644 index 0000000..67f36b5 --- /dev/null +++ b/parsing/ft_strncmp.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/07 12:36:38 by mteriier #+# #+# */ +/* Updated: 2026/01/07 12:36:40 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strncmp(const char *s1, const char *s2, int n) +{ + int i; + + i = 0; + if (n == 0) + return (0); + while (i < n - 1 && s1[i] && s1[i] == s2[i]) + { + i++; + } + return ((unsigned char)s1[i] - (unsigned char)s2[i]); +} diff --git a/stack_utils/stack_remove.c b/stack_utils/stack_remove.c index cf23ef8..d53c3a8 100644 --- a/stack_utils/stack_remove.c +++ b/stack_utils/stack_remove.c @@ -21,3 +21,12 @@ void stack_clear_all(t_stack *stack, t_stack *first) stack_clear_all(stack->next, first); free(stack); } + +void free_all(t_stacks *piles) +{ + if (piles->a) + stack_clear_all(piles->a, piles->a); + if (piles->b) + stack_clear_all(piles->b, piles->b); + free(piles); +}