From 977a4a4b1a715934ba2c853a1f8e184dac8f0474 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Wed, 10 Dec 2025 16:20:49 +0100 Subject: [PATCH 01/13] adding all my files for my setup utils_struct_tab compare_value medium_algo utils_medium --- algorithms/medium_algo.c | 37 +++++++++ algorithms/medium_utils/utils_medium.c | 89 ++++++++++++++++++++++ algorithms/medium_utils/utils_struct_tab.c | 69 +++++++++++++++++ algorithms/utils/compare_value.c | 20 +++++ main.c | 24 +----- push_swap.h | 7 ++ 6 files changed, 226 insertions(+), 20 deletions(-) create mode 100644 algorithms/medium_algo.c create mode 100644 algorithms/medium_utils/utils_medium.c create mode 100644 algorithms/medium_utils/utils_struct_tab.c create mode 100644 algorithms/utils/compare_value.c diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c new file mode 100644 index 0000000..e2d4e03 --- /dev/null +++ b/algorithms/medium_algo.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* medium_algo.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 07:14:45 by mteriier #+# #+# */ +/* Updated: 2025/12/10 07:14:51 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +t_tab *get_tabs(t_stack *first) +{ + t_tab *tmp; + t_tab *first_tab; + int len_stack; + int scan_nb_in_tab; + + len_stack = stack_len(first); + first_tab = first_tab(first); + if (!first_tab) + return (NULL); + scan_nb_in_tab = tab->nb_in; + tmp = first_tab; + while (scan_nb_in_tab < len_stack) + { + tmp->next = get_next_tab(first, tmp); + if (!(tmp->next)) + return (free_tab(first_tab)); + tmp = tmp->next; + scan_nb_in_tab += tmp->nb_in; + } + return (first_tab); +} diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c new file mode 100644 index 0000000..6e6e185 --- /dev/null +++ b/algorithms/medium_utils/utils_medium.c @@ -0,0 +1,89 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils_medium.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 13:58:40 by mteriier #+# #+# */ +/* Updated: 2025/12/10 13:58:42 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int get_first_lower(t_stack *first) +{ + t_stack *tmp; + int lower; + + tmp = first; + lower = tmp->value; + while (tmp->next != first) + { + if (lower < tmp->value) + lower = tmp->value; + tmp = tmp->next; + } + return (lower); +} + +int get_next_lower(t_stack *first, int old_lower) +{ + t_stack *tmp; + int next_lower; + + tmp = first; + lower = tmp->value; + while (tmp->next != first) + { + if (tmp->value != old_lower && lower < tmp->value) + lower = tmp->value; + tmp = tmp->next; + } + return (lower); +} + +int calcul_range(int value, int range) +{ + int max_range; + + max_range = 0; + if (value < 0) + while (max_range > value) + max_range -= range; + else + while (max_range <= value) + max_range += range; + if (max_range < 0) + return (max_range + range - 1); + return (max_range - 1); +} + +int in_range(int value, int max_range) +{ + int min_range; + + min_range = max_range - 9; + if (value <= max_range && value >= min_range) + return (1); + return (0); +} + +int get_number_in_range(int range, t_stacks *piles) +{ + int nb_in; + t_stack *tmp; + t_stack *first; + + nb_in = 0; + tmp = piles->a; + first = tmp; + while (tmp->next != first) + { + if (in_range(tmp->value, range)) + nb_in++; + tmp = tmp->next; + } + return (nb_in); +} diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c new file mode 100644 index 0000000..5a12df9 --- /dev/null +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -0,0 +1,69 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils_struct_tab.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 13:36:43 by mteriier #+# #+# */ +/* Updated: 2025/12/10 13:36:48 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +t_tab *allocate_tab(int range_max, int nb) +{ + t_tab tab; + + tab = malloc(sizeof(t_tab)); + if (!tab) + return (NULL); + tab->range_max = range_max; + tab->nb_in = nb; + return (tab); +} + +void link_tab(t_tab *previous, t_tab *new) +{ + previous->next = new; +} + +t_tab *first_tab(t_stack *first) +{ + t_tab *tab; + int lower; + int range_max; + + lower = get_first_lower(first); + range_max = calcul_range(lower, 10); + tab = allocate_tab(range_max, get_number_in_range(range_max, first)); + if (!tab) + return (NULL); + return (tab); +} + +t_tab *get_next_tab(t_stack *first, t_tab tab) +{ + int lower; + int range_max; + t_tab *next_tab; + + lower = get_next_lower(first, tab->max_range); + range_max = calcul_range(lower, 10); + next_tab = allocate_tab(range_max, get_number_in_range(range_max, first)); + return (next_tab); +} + +t_tab *free_tab(t_tab *first) +{ + t_tab *tmp; + + while (first) + { + tmp = first->next; + free(first); + first = tmp; + } + return (NULL); +} diff --git a/algorithms/utils/compare_value.c b/algorithms/utils/compare_value.c new file mode 100644 index 0000000..47f2dcf --- /dev/null +++ b/algorithms/utils/compare_value.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* compare_value.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 11:08:35 by mteriier #+# #+# */ +/* Updated: 2025/12/10 11:28:58 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int is_upper_compare(t_stack t1, t_stack t2) +{ + if (t1->value > t2->value) + return (1); + return (0); +} diff --git a/main.c b/main.c index c5cf6e9..9d3f5de 100644 --- a/main.c +++ b/main.c @@ -43,28 +43,12 @@ int main(int argc, char **argv) stacks = init_big_stacks(argc, argv); print_all_stack(stacks->a, stacks->a, 'A'); print_all_stack(stacks->b, stacks->b, 'B'); - sa(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - pb(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - pa(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); rra(stacks); print_all_stack(stacks->a, stacks->a, 'A'); print_all_stack(stacks->b, stacks->b, 'B'); - pb(stacks); - pb(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - rrb(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - rrr(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); } - stack_clear_all(stacks->a, stacks->a); + if (stacks->a) + stack_clear_all(stacks->a, stacks->a); + if (stacks->b) + stack_clear_all(stacks->b, stacks->b); } diff --git a/push_swap.h b/push_swap.h index 6f0b3f4..9a5ee7b 100644 --- a/push_swap.h +++ b/push_swap.h @@ -26,6 +26,13 @@ typedef struct s_stacks t_stack *b; } t_stacks; +typedef struct s_tab +{ + int range_max; + int nb_in; + struct s_tab *next; +} t_tab; + /*STACK_FUNCTIONS*/ void pa(t_stacks *stacks); void pb(t_stacks *stacks); From b6c1dc73a8f679ae4eda6e62ceae6ef6d3c5f1cb Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Wed, 10 Dec 2025 16:30:26 +0100 Subject: [PATCH 02/13] adding prototype in push_swap.h and norming some files --- algorithms/medium_algo.c | 23 ++-------------------- algorithms/medium_utils/utils_struct_tab.c | 23 ++++++++++++++++++++-- push_swap.h | 14 ++++++++++++- stack_utils/push.c | 3 --- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index e2d4e03..0c405e0 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -12,26 +12,7 @@ #include "push_swap.h" -t_tab *get_tabs(t_stack *first) +void bucket_algo(void) { - t_tab *tmp; - t_tab *first_tab; - int len_stack; - int scan_nb_in_tab; - - len_stack = stack_len(first); - first_tab = first_tab(first); - if (!first_tab) - return (NULL); - scan_nb_in_tab = tab->nb_in; - tmp = first_tab; - while (scan_nb_in_tab < len_stack) - { - tmp->next = get_next_tab(first, tmp); - if (!(tmp->next)) - return (free_tab(first_tab)); - tmp = tmp->next; - scan_nb_in_tab += tmp->nb_in; - } - return (first_tab); + return ; } diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index 5a12df9..d3b0af8 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -24,9 +24,28 @@ t_tab *allocate_tab(int range_max, int nb) return (tab); } -void link_tab(t_tab *previous, t_tab *new) +t_tab *get_tabs(t_stack *first) { - previous->next = new; + t_tab *tmp; + t_tab *first_tab; + int len_stack; + int scan_nb_in_tab; + + len_stack = stack_len(first); + first_tab = first_tab(first); + if (!first_tab) + return (NULL); + scan_nb_in_tab = tab->nb_in; + tmp = first_tab; + while (scan_nb_in_tab < len_stack) + { + tmp->next = get_next_tab(first, tmp); + if (!(tmp->next)) + return (free_tab(first_tab)); + tmp = tmp->next; + scan_nb_in_tab += tmp->nb_in; + } + return (first_tab); } t_tab *first_tab(t_stack *first) diff --git a/push_swap.h b/push_swap.h index 9a5ee7b..b4cb81b 100644 --- a/push_swap.h +++ b/push_swap.h @@ -28,7 +28,7 @@ typedef struct s_stacks typedef struct s_tab { - int range_max; + int range_max; int nb_in; struct s_tab *next; } t_tab; @@ -53,5 +53,17 @@ void stack_clear_all(t_stack *stack, t_stack *first); t_stack *parsing(int argc, char **argv); t_stacks *init_big_stacks(int argc, char **argv); int ft_atoi(const char *nptr); +/*FUNCTION FOR MEDIUM ALGO*/ +t_tab *get_tabs(t_stack *first); +int get_number_in_range(int range, t_stacks *piles); +int in_range(int value, int max_range); +int calcul_range(int value, int range); +int get_next_lower(t_stack *first, int old_lower); +int get_first_lower(t_stack *first); +int is_upper_compare(t_stack t1, t_stack t2); +t_tab *free_tab(t_tab *first); +t_tab *get_next_tab(t_stack *first, t_tab tab); +t_tab *first_tab(t_stack *first); +t_tab *allocate_tab(int range_max, int nb); #endif diff --git a/stack_utils/push.c b/stack_utils/push.c index 126ff89..1c43f79 100644 --- a/stack_utils/push.c +++ b/stack_utils/push.c @@ -29,11 +29,8 @@ void pa(t_stacks *stacks) stacks->b = stacks->b->next; } stack_add_front(&(stacks->a), b_push); - } -#include - void pb(t_stacks *stacks) { t_stack *a_push; From 5372b944a4bb83bc9ea0dd91d6d4834100a2cbba Mon Sep 17 00:00:00 2001 From: Maoake Date: Wed, 10 Dec 2025 21:02:33 +0000 Subject: [PATCH 03/13] adding makefile and debugging to try new test for the preset to test the program --- Makefile | 50 ++++++++++++++++++++++ algorithms/medium_utils/utils_medium.c | 12 +++--- algorithms/medium_utils/utils_struct_tab.c | 13 +++--- algorithms/utils/compare_value.c | 2 +- push_swap.h | 13 +++--- stack_utils/push.c | 2 +- stack_utils/rev_rotate.c | 2 +- stack_utils/rotate.c | 2 +- stack_utils/stack_add.c | 2 +- stack_utils/stack_remove.c | 2 +- stack_utils/swap.c | 2 +- 11 files changed, 78 insertions(+), 24 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..eeaafd6 --- /dev/null +++ b/Makefile @@ -0,0 +1,50 @@ +SRC = main.c ft_atoi.c parsing.c + +STACK_UTILS = stack_utils/push.c stack_utils/rev_rotate.c stack_utils/rotate.c \ + stack_utils/stack_add.c stack_utils/stack_remove.c stack_utils/swap.c + +MEDIUM_ALGO = algorithms/medium_algo.c algorithms/medium_utils/utils_medium.c \ + algorithms/medium_utils/utils_struct_tab.c + +ALGO_UTILS = algorithms/utils/check_order.c algorithms/utils/compare_value.c \ + algorithms/utils/stack_len.c + +ALL_FILES = $(SRC) $(STACK_UTILS) $(MEDIUM_ALGO) $(ALGO_UTILS) + +OBJ_DIR = obj + +CC = cc + +CFLAGS = -Wall -Werror -Wextra -I. + +NAME = push_swap + +OBJ = $(addprefix $(OBJ_DIR)/, $(notdir $(ALL_FILES:.c=.o))) + +DEP = $(OBJ:.o=.d) + +.PHONY: all clean fclean re + +all: $(NAME) + +$(NAME): $(OBJ) + $(CC) $(CFLAGS) $(OBJ) -o $(NAME) + +$(OBJ_DIR)/%.o: %.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + +$(OBJ_DIR): + @mkdir -p $(OBJ_DIR) + +clean: + @rm -rf $(OBJ_DIR) + @echo "====================================" + @echo "= ALL OBJECT AND DEPENDENCES CLEAN =" + @echo "====================================" + +fclean: clean + rm -f $(NAME) + +re: fclean all + +-include $(DEP) \ No newline at end of file diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 6e6e185..7156c01 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -34,14 +34,14 @@ int get_next_lower(t_stack *first, int old_lower) int next_lower; tmp = first; - lower = tmp->value; + next_lower = tmp->value; while (tmp->next != first) { - if (tmp->value != old_lower && lower < tmp->value) - lower = tmp->value; + if (tmp->value != old_lower && next_lower < tmp->value) + next_lower = tmp->value; tmp = tmp->next; } - return (lower); + return (next_lower); } int calcul_range(int value, int range) @@ -70,14 +70,14 @@ int in_range(int value, int max_range) return (0); } -int get_number_in_range(int range, t_stacks *piles) +int get_number_in_range(int range, t_stack *a) { int nb_in; t_stack *tmp; t_stack *first; nb_in = 0; - tmp = piles->a; + tmp = a; first = tmp; while (tmp->next != first) { diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index d3b0af8..7d5caa0 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -11,15 +11,16 @@ /* ************************************************************************** */ #include "push_swap.h" +#include t_tab *allocate_tab(int range_max, int nb) { - t_tab tab; + t_tab *tab; tab = malloc(sizeof(t_tab)); if (!tab) return (NULL); - tab->range_max = range_max; + tab->max_range = range_max; tab->nb_in = nb; return (tab); } @@ -32,10 +33,10 @@ t_tab *get_tabs(t_stack *first) int scan_nb_in_tab; len_stack = stack_len(first); - first_tab = first_tab(first); + first_tab = init_first_tab(first); if (!first_tab) return (NULL); - scan_nb_in_tab = tab->nb_in; + scan_nb_in_tab = first_tab->nb_in; tmp = first_tab; while (scan_nb_in_tab < len_stack) { @@ -48,7 +49,7 @@ t_tab *get_tabs(t_stack *first) return (first_tab); } -t_tab *first_tab(t_stack *first) +t_tab *init_first_tab(t_stack *first) { t_tab *tab; int lower; @@ -62,7 +63,7 @@ t_tab *first_tab(t_stack *first) return (tab); } -t_tab *get_next_tab(t_stack *first, t_tab tab) +t_tab *get_next_tab(t_stack *first, t_tab *tab) { int lower; int range_max; diff --git a/algorithms/utils/compare_value.c b/algorithms/utils/compare_value.c index 47f2dcf..38d8db0 100644 --- a/algorithms/utils/compare_value.c +++ b/algorithms/utils/compare_value.c @@ -12,7 +12,7 @@ #include "push_swap.h" -int is_upper_compare(t_stack t1, t_stack t2) +int is_upper_compare(t_stack *t1, t_stack *t2) { if (t1->value > t2->value) return (1); diff --git a/push_swap.h b/push_swap.h index b4cb81b..fa6482a 100644 --- a/push_swap.h +++ b/push_swap.h @@ -28,7 +28,7 @@ typedef struct s_stacks typedef struct s_tab { - int range_max; + int max_range; int nb_in; struct s_tab *next; } t_tab; @@ -53,17 +53,20 @@ void stack_clear_all(t_stack *stack, t_stack *first); t_stack *parsing(int argc, char **argv); t_stacks *init_big_stacks(int argc, char **argv); int ft_atoi(const char *nptr); +/*FUNCTION UTILS ALGO*/ +int check_order(t_stack *stack); +int is_upper_compare(t_stack *t1, t_stack *t2); +int stack_len(t_stack *stack); /*FUNCTION FOR MEDIUM ALGO*/ t_tab *get_tabs(t_stack *first); -int get_number_in_range(int range, t_stacks *piles); +int get_number_in_range(int range, t_stack *a); int in_range(int value, int max_range); int calcul_range(int value, int range); int get_next_lower(t_stack *first, int old_lower); int get_first_lower(t_stack *first); -int is_upper_compare(t_stack t1, t_stack t2); t_tab *free_tab(t_tab *first); -t_tab *get_next_tab(t_stack *first, t_tab tab); -t_tab *first_tab(t_stack *first); +t_tab *get_next_tab(t_stack *first, t_tab *tab); +t_tab *init_first_tab(t_stack *first); t_tab *allocate_tab(int range_max, int nb); #endif diff --git a/stack_utils/push.c b/stack_utils/push.c index 1c43f79..1c8d42a 100644 --- a/stack_utils/push.c +++ b/stack_utils/push.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" #include void pa(t_stacks *stacks) diff --git a/stack_utils/rev_rotate.c b/stack_utils/rev_rotate.c index a8aca03..659ca4c 100644 --- a/stack_utils/rev_rotate.c +++ b/stack_utils/rev_rotate.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" void rra(t_stacks *stacks) { diff --git a/stack_utils/rotate.c b/stack_utils/rotate.c index d2ce509..8830823 100644 --- a/stack_utils/rotate.c +++ b/stack_utils/rotate.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" void ra(t_stacks *stacks) { diff --git a/stack_utils/stack_add.c b/stack_utils/stack_add.c index 761143a..fd945d2 100644 --- a/stack_utils/stack_add.c +++ b/stack_utils/stack_add.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" #include t_stack *new_stack(int value) diff --git a/stack_utils/stack_remove.c b/stack_utils/stack_remove.c index 2c53bf8..16a7dce 100644 --- a/stack_utils/stack_remove.c +++ b/stack_utils/stack_remove.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" #include void stack_clear_all(t_stack *stack, t_stack *first) diff --git a/stack_utils/swap.c b/stack_utils/swap.c index 61fbb6b..e8a31a3 100644 --- a/stack_utils/swap.c +++ b/stack_utils/swap.c @@ -10,7 +10,7 @@ /* */ /* ************************************************************************** */ -#include "../push_swap.h" +#include "push_swap.h" void sa(t_stacks *stacks) { From 48c13b8ef81cedb2597de9ead5e218ee6343d912 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Thu, 11 Dec 2025 09:40:21 +0100 Subject: [PATCH 04/13] finish the makefile i can do all the test i want --- Makefile | 44 ++++++++++++++++++++++++++++++++++---------- push_swap | Bin 0 -> 21752 bytes 2 files changed, 34 insertions(+), 10 deletions(-) create mode 100755 push_swap diff --git a/Makefile b/Makefile index eeaafd6..290233c 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,23 @@ +STACK_UTILS_DIR = stack_utils + +ALGO_UTILS_DIR = algorithms/utils + +ALGO_DIR = algorithms + +MEDIUM_DIR = medium_utils + SRC = main.c ft_atoi.c parsing.c -STACK_UTILS = stack_utils/push.c stack_utils/rev_rotate.c stack_utils/rotate.c \ - stack_utils/stack_add.c stack_utils/stack_remove.c stack_utils/swap.c +STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c swap.c -MEDIUM_ALGO = algorithms/medium_algo.c algorithms/medium_utils/utils_medium.c \ - algorithms/medium_utils/utils_struct_tab.c +ALGO_SORT = medium_algo.c -ALGO_UTILS = algorithms/utils/check_order.c algorithms/utils/compare_value.c \ - algorithms/utils/stack_len.c +MEDIUM_ALGO = utils_medium.c utils_struct_tab.c -ALL_FILES = $(SRC) $(STACK_UTILS) $(MEDIUM_ALGO) $(ALGO_UTILS) +ALGO_UTILS = check_order.c compare_value.c stack_len.c + +ALL_FILES = $(SRC) $(STACK_UTILS_DIR)/$(STACK_UTILS) $(ALGO_DIR)/$(ALGO_SORT) \ + $(ALGO_DIR)/$(MEDIUM_DIR)/$(MEDIUM_ALGO) $(ALGO_UTILS_DIR)/$(ALGO_UTILS) OBJ_DIR = obj @@ -20,7 +28,6 @@ CFLAGS = -Wall -Werror -Wextra -I. NAME = push_swap OBJ = $(addprefix $(OBJ_DIR)/, $(notdir $(ALL_FILES:.c=.o))) - DEP = $(OBJ:.o=.d) .PHONY: all clean fclean re @@ -28,11 +35,26 @@ DEP = $(OBJ:.o=.d) all: $(NAME) $(NAME): $(OBJ) - $(CC) $(CFLAGS) $(OBJ) -o $(NAME) + @$(CC) $(CFLAGS) $(OBJ) -o $(NAME) + @echo "====================================" + @echo "======= PUSH SWAP COMPILED =========" + @echo "====================================" $(OBJ_DIR)/%.o: %.c | $(OBJ_DIR) $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ +$(OBJ_DIR)/%.o: $(STACK_UTILS_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + +$(OBJ_DIR)/%.o: $(ALGO_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + +$(OBJ_DIR)/%.o: $(ALGO_DIR)/$(MEDIUM_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + +$(OBJ_DIR)/%.o: $(ALGO_UTILS_DIR)/%.c | $(OBJ_DIR) + $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ + $(OBJ_DIR): @mkdir -p $(OBJ_DIR) @@ -43,7 +65,9 @@ clean: @echo "====================================" fclean: clean - rm -f $(NAME) + @rm -f $(NAME) + @echo "========== EXEC DELETED ============" + @echo "====================================" re: fclean all diff --git a/push_swap b/push_swap new file mode 100755 index 0000000000000000000000000000000000000000..f0b02390bfc7cb2aef0a523ba10a1c15fbe3fa80 GIT binary patch literal 21752 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 literal 0 HcmV?d00001 From a7cbd18db6253c32fdb5bd8cad21444b7cbdb883 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Thu, 11 Dec 2025 18:33:09 +0100 Subject: [PATCH 05/13] deleting push swap --- push_swap | Bin 21752 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 push_swap diff --git a/push_swap b/push_swap deleted file mode 100755 index f0b02390bfc7cb2aef0a523ba10a1c15fbe3fa80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21752 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 From e563d663eccd1950062fde0857bf331a6dd8c006 Mon Sep 17 00:00:00 2001 From: Maoake Date: Mon, 22 Dec 2025 11:06:34 +0000 Subject: [PATCH 06/13] modifying some preset for the tabs and adding some functions in the main for do the test --- Makefile | 2 +- algorithms/medium_algo.c | 7 ++- algorithms/medium_utils/utils_medium.c | 8 +-- algorithms/medium_utils/utils_medium_two.c | 65 ++++++++++++++++++++++ algorithms/medium_utils/utils_struct_tab.c | 19 ++++--- main.c | 46 +++++++++++++++ push_swap.h | 14 +++-- 7 files changed, 141 insertions(+), 20 deletions(-) create mode 100644 algorithms/medium_utils/utils_medium_two.c diff --git a/Makefile b/Makefile index 290233c..24f94e2 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c swap.c ALGO_SORT = medium_algo.c -MEDIUM_ALGO = utils_medium.c utils_struct_tab.c +MEDIUM_ALGO = utils_medium.c utils_struct_tab.c utils_medium_two.c ALGO_UTILS = check_order.c compare_value.c stack_len.c diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 0c405e0..b8bd74d 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -12,7 +12,12 @@ #include "push_swap.h" -void bucket_algo(void) +void bucket_algo(t_stacks *piles) { + int range; + t_tab *preset; + + range = range_bucket(piles->a); + preset = get_tabs(piles->a, range); return ; } diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 7156c01..098af07 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -60,17 +60,17 @@ int calcul_range(int value, int range) return (max_range - 1); } -int in_range(int value, int max_range) +int in_range(int value, int max_range, int range) { int min_range; - min_range = max_range - 9; + min_range = max_range - (range - 1); if (value <= max_range && value >= min_range) return (1); return (0); } -int get_number_in_range(int range, t_stack *a) +int get_number_in_range(int max_range, t_stack *a, int range) { int nb_in; t_stack *tmp; @@ -81,7 +81,7 @@ int get_number_in_range(int range, t_stack *a) first = tmp; while (tmp->next != first) { - if (in_range(tmp->value, range)) + if (in_range(tmp->value, max_range, range)) nb_in++; tmp = tmp->next; } diff --git a/algorithms/medium_utils/utils_medium_two.c b/algorithms/medium_utils/utils_medium_two.c new file mode 100644 index 0000000..020c9bd --- /dev/null +++ b/algorithms/medium_utils/utils_medium_two.c @@ -0,0 +1,65 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils_medium_two.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/22 09:36:56 by mteriier #+# #+# */ +/* Updated: 2025/12/22 09:38:19 by mteriier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +int get_max_number(t_stack *first) +{ + int max; + t_stack *a; + + a = first; + max = a->value; + while (a->next != first) + { + if (max < a->value) + max = a->value; + a = a->next; + } + return (max); +} + +int get_min_number(t_stack *first) +{ + int min; + t_stack *a; + + a = first; + min = a->value; + while (a->next != first) + { + if (min > a->value) + min = a->value; + a = a->next; + } + return (min); +} + +int my_sqrt(int nb) +{ + int i; + + if (nb < 1) + return (0); + i = 0; + while (i * i <= nb) + i++; + return (i); +} + +int range_bucket(t_stack *first) +{ + int len; + + len = stack_len(first); + return ((get_max_number(first) - get_min_number(first)) / my_sqrt(len)); +} diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index 7d5caa0..e67a6cc 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -25,7 +25,7 @@ t_tab *allocate_tab(int range_max, int nb) return (tab); } -t_tab *get_tabs(t_stack *first) +t_tab *get_tabs(t_stack *first, int range) { t_tab *tmp; t_tab *first_tab; @@ -33,14 +33,14 @@ t_tab *get_tabs(t_stack *first) int scan_nb_in_tab; len_stack = stack_len(first); - first_tab = init_first_tab(first); + first_tab = init_first_tab(first, range); if (!first_tab) return (NULL); scan_nb_in_tab = first_tab->nb_in; tmp = first_tab; while (scan_nb_in_tab < len_stack) { - tmp->next = get_next_tab(first, tmp); + tmp->next = get_next_tab(first, tmp, range); if (!(tmp->next)) return (free_tab(first_tab)); tmp = tmp->next; @@ -49,29 +49,30 @@ t_tab *get_tabs(t_stack *first) return (first_tab); } -t_tab *init_first_tab(t_stack *first) +t_tab *init_first_tab(t_stack *first, int range) { t_tab *tab; int lower; int range_max; lower = get_first_lower(first); - range_max = calcul_range(lower, 10); - tab = allocate_tab(range_max, get_number_in_range(range_max, first)); + range_max = calcul_range(lower, range); + tab = allocate_tab(range_max, get_number_in_range(range_max, first, range)); if (!tab) return (NULL); return (tab); } -t_tab *get_next_tab(t_stack *first, t_tab *tab) +t_tab *get_next_tab(t_stack *first, t_tab *tab, int range) { int lower; int range_max; t_tab *next_tab; lower = get_next_lower(first, tab->max_range); - range_max = calcul_range(lower, 10); - next_tab = allocate_tab(range_max, get_number_in_range(range_max, first)); + range_max = calcul_range(lower, range); + next_tab = allocate_tab(range_max, + get_number_in_range(range_max, first, range)); return (next_tab); } diff --git a/main.c b/main.c index 9d3f5de..a364247 100644 --- a/main.c +++ b/main.c @@ -33,6 +33,52 @@ void print_all_stack(t_stack *stack, t_stack *first, char pile) printf("[%d] \n", tmp->value); } +int verif_no_double(int *tab, int len, int value) +{ + int i; + + i = 0; + while (i < len) + { + if (value == tab[i]) + return (0); + i++; + } + return (1); +} + +int adding_number(int *tab, int len) +{ + int stock; + + stock = tab[0]; + while (!verif_no_double(tab, len, stock)) + { + stock = rand(); + } + return stock; +} + +int *auto_shuffle(int len_tab) +{ + int *tab; + int i; + int len_added; + + i = 1; + tab = malloc(len_tab * sizeof(int)); + if (!tab) + return (NULL); + tab[0] = rand(); + while (i < len_tab) + { + tab[i] = adding_number(tab, i); + i++; + } + return (tab); +} + + int main(int argc, char **argv) { t_stacks *stacks; diff --git a/push_swap.h b/push_swap.h index fa6482a..e63820e 100644 --- a/push_swap.h +++ b/push_swap.h @@ -58,15 +58,19 @@ int check_order(t_stack *stack); int is_upper_compare(t_stack *t1, t_stack *t2); int stack_len(t_stack *stack); /*FUNCTION FOR MEDIUM ALGO*/ -t_tab *get_tabs(t_stack *first); -int get_number_in_range(int range, t_stack *a); -int in_range(int value, int max_range); +t_tab *get_tabs(t_stack *first, int range); +int get_number_in_range(int max_range, t_stack *a, int range); +int in_range(int value, int max_range, int range); int calcul_range(int value, int range); int get_next_lower(t_stack *first, int old_lower); int get_first_lower(t_stack *first); +int my_sqrt(int nb); +int get_max_number(t_stack *first); +int get_min_number(t_stack *first); +int range_bucket(t_stack *first); t_tab *free_tab(t_tab *first); -t_tab *get_next_tab(t_stack *first, t_tab *tab); -t_tab *init_first_tab(t_stack *first); +t_tab *get_next_tab(t_stack *first, t_tab *tab, int range); +t_tab *init_first_tab(t_stack *first, int range); t_tab *allocate_tab(int range_max, int nb); #endif From 96a0a6d8f03439105f3efda3d8e811f756ae80ee Mon Sep 17 00:00:00 2001 From: Maoake Date: Mon, 22 Dec 2025 20:37:12 +0000 Subject: [PATCH 07/13] setting up my preset but i need to valgrind --- Makefile | 2 +- algorithms/medium_algo.c | 6 +- algorithms/medium_utils/utils_medium.c | 11 +++- algorithms/medium_utils/utils_struct_tab.c | 2 + main.c | 26 +++----- parsing_2.c | 67 +++++++++++++++++++++ push_swap | Bin 0 -> 22000 bytes push_swap.h | 12 ++++ test_one.c | 66 ++++++++++++++++++++ 9 files changed, 168 insertions(+), 24 deletions(-) create mode 100644 parsing_2.c create mode 100755 push_swap create mode 100644 test_one.c diff --git a/Makefile b/Makefile index 24f94e2..6adb9ad 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ ALGO_DIR = algorithms MEDIUM_DIR = medium_utils -SRC = main.c ft_atoi.c parsing.c +SRC = main.c ft_atoi.c parsing.c parsing_2.c test_one.c STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c swap.c diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index b8bd74d..99807a8 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -12,12 +12,12 @@ #include "push_swap.h" -void bucket_algo(t_stacks *piles) +void bucket_algo(void) { - int range; + /*int range; t_tab *preset; range = range_bucket(piles->a); - preset = get_tabs(piles->a, range); + preset = get_tabs(piles->a, range);*/ return ; } diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 098af07..1f715b7 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -21,7 +21,7 @@ int get_first_lower(t_stack *first) lower = tmp->value; while (tmp->next != first) { - if (lower < tmp->value) + if (lower > tmp->value) lower = tmp->value; tmp = tmp->next; } @@ -34,11 +34,14 @@ int get_next_lower(t_stack *first, int old_lower) int next_lower; tmp = first; - next_lower = tmp->value; + next_lower = 2147483646; + while (tmp->next != first) { - if (tmp->value != old_lower && next_lower < tmp->value) + if (old_lower < tmp->value && tmp->value <= next_lower) + { next_lower = tmp->value; + } tmp = tmp->next; } return (next_lower); @@ -85,5 +88,7 @@ int get_number_in_range(int max_range, t_stack *a, int 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/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index e67a6cc..8096765 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -25,6 +25,8 @@ t_tab *allocate_tab(int range_max, int nb) return (tab); } +#include + t_tab *get_tabs(t_stack *first, int range) { t_tab *tmp; diff --git a/main.c b/main.c index a364247..b5721c3 100644 --- a/main.c +++ b/main.c @@ -13,6 +13,7 @@ #include "push_swap.h" #include #include +#include void print_all_stack(t_stack *stack, t_stack *first, char pile) { @@ -47,14 +48,14 @@ int verif_no_double(int *tab, int len, int value) return (1); } -int adding_number(int *tab, int len) +int adding_number(int *tab, int len) { int stock; stock = tab[0]; while (!verif_no_double(tab, len, stock)) { - stock = rand(); + stock = 0 + rand() % (250 - 0 + 1); } return stock; } @@ -63,13 +64,12 @@ int *auto_shuffle(int len_tab) { int *tab; int i; - int len_added; i = 1; tab = malloc(len_tab * sizeof(int)); if (!tab) return (NULL); - tab[0] = rand(); + tab[0] = 0 + rand() % (250 - 0 + 1); while (i < len_tab) { tab[i] = adding_number(tab, i); @@ -81,20 +81,12 @@ int *auto_shuffle(int len_tab) int main(int argc, char **argv) { - t_stacks *stacks; - - stacks = NULL; if (argc > 1) { - stacks = init_big_stacks(argc, argv); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - rra(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); + if (strcmp(argv[1], "-t1") == 0) + test1(argc, argv++); + else if (strcmp(argv[1], "-t2") == 0) + test2(argv++); } - if (stacks->a) - stack_clear_all(stacks->a, stacks->a); - if (stacks->b) - stack_clear_all(stacks->b, stacks->b); + return (0); } diff --git a/parsing_2.c b/parsing_2.c new file mode 100644 index 0000000..8ca0abe --- /dev/null +++ b/parsing_2.c @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parsing_2.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/22 13:10:58 by mteriier #+# #+# */ +/* Updated: 2025/12/22 13:11:21 by mteriier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include +#include + +void print_tabs(t_tab *preset) +{ + t_tab *tab; + + tab = preset; + while (tab) + { + printf("MAX RANGE : [%d]\n", tab->max_range); + printf("NUMBER IN : [%d]\n", tab->nb_in); + tab = tab->next; + } +} + +t_stack *parsing2(int *tab, int len) +{ + int i; + int stock; + t_stack *first; + t_stack *new; + + i = 0; + first = NULL; + while (i < len) + { + stock = tab[i]; + new = new_stack(stock); + if (!new && !first) + return (NULL); + else if (!new) + { + stack_clear_all(first, first); + return (NULL); + } + stack_add_back(&first, new); + i++; + } + return (first); +} + +t_stacks *init_big_stacks2(int *tab, int len) +{ + t_stacks *stacks; + t_stack *a; + + stacks = malloc(sizeof(t_stacks)); + if (!stacks) + return (NULL); + a = parsing2(tab, len); + stacks->a = a; + return (stacks); +} diff --git a/push_swap b/push_swap new file mode 100755 index 0000000000000000000000000000000000000000..4d299d9c7cb188b110187eb82374d404568d4684 GIT binary patch literal 22000 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/22 12:33:58 by mteriier #+# #+# */ +/* Updated: 2025/12/22 12:34:35 by mteriier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +#include +#include + +int test1(int argc, char **argv) +{ + t_stacks *stacks; + + stacks = NULL; + if (argc > 1) + { + stacks = init_big_stacks(argc, argv); + print_all_stack(stacks->a, stacks->a, 'A'); + print_all_stack(stacks->b, stacks->b, 'B'); + rra(stacks); + print_all_stack(stacks->a, stacks->a, 'A'); + print_all_stack(stacks->b, stacks->b, 'B'); + } + if (stacks->a) + stack_clear_all(stacks->a, stacks->a); + if (stacks->b) + stack_clear_all(stacks->b, stacks->b); + return (0); +} + +int test2(char **argv){ + + int *tab; + int len; + t_tab *preset; + t_stacks *piles; + int i; + + i = 0; + len = ft_atoi(argv[2]); + if (len < 1) + { + printf("WRONG LEN PLS BE SMART.\n"); + return (0); + } + tab = auto_shuffle(len); + while (i < len) + { + printf("tab(%d) [%d]\n", i, tab[i]); + i++; + } + piles = init_big_stacks2(tab, len); + printf("RANGE BUCKET %d\n", range_bucket(piles->a)); + preset = get_tabs(piles->a, range_bucket(piles->a)); + print_tabs(preset); + free(tab); + free_tab(preset); + return (0); +} \ No newline at end of file From 85b83f3cc7c2cc617226a2d509e0e2b8be8963c6 Mon Sep 17 00:00:00 2001 From: Maoake Date: Tue, 23 Dec 2025 09:21:17 +0000 Subject: [PATCH 08/13] fixing the leak valgrind and conditionnal jump on some functions cause i forget to initialize the var to NULL i just need to remember this --- algorithms/medium_algo.c | 5 ----- algorithms/medium_utils/utils_medium.c | 3 +-- algorithms/medium_utils/utils_struct_tab.c | 20 +++++++---------- main.c | 13 ++++++----- parsing.c | 2 ++ parsing_2.c | 4 +++- push_swap | Bin 22000 -> 22000 bytes push_swap.h | 2 +- test_one.c | 24 ++++++++++----------- 9 files changed, 32 insertions(+), 41 deletions(-) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 99807a8..0c405e0 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -14,10 +14,5 @@ void bucket_algo(void) { - /*int range; - t_tab *preset; - - range = range_bucket(piles->a); - preset = get_tabs(piles->a, range);*/ return ; } diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 1f715b7..0e09104 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -34,8 +34,7 @@ int get_next_lower(t_stack *first, int old_lower) int next_lower; tmp = first; - next_lower = 2147483646; - + next_lower = 2147483647; while (tmp->next != first) { if (old_lower < tmp->value && tmp->value <= next_lower) diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index 8096765..e9ec8ab 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -20,13 +20,12 @@ t_tab *allocate_tab(int range_max, int nb) tab = malloc(sizeof(t_tab)); if (!tab) return (NULL); + tab->next = NULL; tab->max_range = range_max; tab->nb_in = nb; return (tab); } -#include - t_tab *get_tabs(t_stack *first, int range) { t_tab *tmp; @@ -44,7 +43,7 @@ t_tab *get_tabs(t_stack *first, int range) { tmp->next = get_next_tab(first, tmp, range); if (!(tmp->next)) - return (free_tab(first_tab)); + return (free_tab(&first_tab)); tmp = tmp->next; scan_nb_in_tab += tmp->nb_in; } @@ -78,15 +77,12 @@ t_tab *get_next_tab(t_stack *first, t_tab *tab, int range) return (next_tab); } -t_tab *free_tab(t_tab *first) +t_tab *free_tab(t_tab **first) { - t_tab *tmp; - - while (first) - { - tmp = first->next; - free(first); - first = tmp; - } + if (!(*first)) + return (NULL); + if ((*first)->next) + free_tab(&(*first)->next); + free(*first); return (NULL); } diff --git a/main.c b/main.c index b5721c3..16a59a2 100644 --- a/main.c +++ b/main.c @@ -50,14 +50,14 @@ int verif_no_double(int *tab, int len, int value) int adding_number(int *tab, int len) { - int stock; + int stock; stock = tab[0]; while (!verif_no_double(tab, len, stock)) { stock = 0 + rand() % (250 - 0 + 1); } - return stock; + return (stock); } int *auto_shuffle(int len_tab) @@ -72,21 +72,20 @@ int *auto_shuffle(int len_tab) tab[0] = 0 + rand() % (250 - 0 + 1); while (i < len_tab) { - tab[i] = adding_number(tab, i); + tab[i] = adding_number(tab, i - 1); i++; } return (tab); } - int main(int argc, char **argv) { if (argc > 1) { - if (strcmp(argv[1], "-t1") == 0) - test1(argc, argv++); - else if (strcmp(argv[1], "-t2") == 0) + if (strcmp(argv[1], "-t2") == 0) test2(argv++); + else + test1(argc, argv); } return (0); } diff --git a/parsing.c b/parsing.c index abf65e6..786cfb3 100644 --- a/parsing.c +++ b/parsing.c @@ -45,6 +45,8 @@ t_stacks *init_big_stacks(int argc, char **argv) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing(argc, argv); diff --git a/parsing_2.c b/parsing_2.c index 8ca0abe..1eeeeb0 100644 --- a/parsing_2.c +++ b/parsing_2.c @@ -17,7 +17,7 @@ void print_tabs(t_tab *preset) { t_tab *tab; - + tab = preset; while (tab) { @@ -59,6 +59,8 @@ t_stacks *init_big_stacks2(int *tab, int len) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing2(tab, len); diff --git a/push_swap b/push_swap index 4d299d9c7cb188b110187eb82374d404568d4684..2a0c1e774ed3f73de9cf0da471ccda7fec259ce7 100755 GIT binary patch delta 3144 zcmaJ^4Nz3q6~1=?mnHsyEId|_WdQ*vHV6`-HKF`Hcx2KV5Jo$3!eG&un*K~n>SUr_ zDU#;R4i!Cg8q>stnIuie{5i`^W9mdOB!p(tsKdmzA#o+Et`W&nnPmN`x8Hs5?KazK zyEA*g`_B2!x#!;V-Q^KJ%)^KI>&ZN&GlLnQ&J0@0?{I8RHXk=rGyf{>t}62>hSXx~ zNZY*H;zW@~ZD*ZFe?Fc3oAR=qqQWG`E~ja}_OMUA2`)@m6a2Z($GGi) zot7&(^v4W^@1YMfTzo%W$|&YrC@pi@x}DdB&~z*&7aTYCYffv71JZhThuI_cH>Bfo zA<_qY>WrEGZ?rzM@*6L>7}MX?^fLw}^wBk>^QjSEO(N=kD&BdN{F&SNHOf&c_(f__ zTs%TMlmh+%?NgSyrz8Kj5;~$}^9xurkFF?1{1iE}JbV-F$#SPwS&PbZXiQ*?va^=) z#nQ!R>A9>zzM0<1D)v_3h-7V&w(2V(jEX1TZrAklTJKDartf~QOY?QI*+r`)v4ayQ_Snq`jc*CO5%9vi!ZHYm)=LHPo08oK-Q$IAz%9xvdC_G zVZH6v*Y;>8^{3zfPk@6KFtf*}?M49s7y~l@OX#^wBIn&$OY1l78yv=lWT4hJ((N*n zpjsoBC75p~S|rU^lPqc3rXSKVcrco)Dp4X(t<`KNvaxV^@w@A!yFys!IN+>~PrE9>m!gm*|jTnTJL5eJA8o=QaH=sCp?H zsh_~3L3)Df@~gc8w8;pbiUyZNgQ0=11wSp#v0#}>$_<4@Vroo<8V!rt+vo{YN|H2L zy-bfj&Q9fPqU$0DSgyBmi!_j0C{n0-X@$$G{4p4V!5L z)&aYLj{^sRuKqP=g98l{ZFcmlqd;mBJ zd;>TSObH{w0>k5v z#=H=_FzEq44Ll4yW~a>ZeAmFILKLAZtihftp%C8+d?VCSUd)^6(Q-FGO$RaFqNC;R zW))p~NfK)pr#^10U$j8&O|TtWXqUgZ#~Zpgp1xhZJhg$){JxfP421dK$p(d zDf|JtR#(b%Xk~qq%f3Rc!q`0~utCUTDO`{-1CDgQh12F2xAZc@H$F{RKX za}|{}D4sSekL6_7E$#l5wrQ)e$ag?;GSg2zrr``tfO~`H8WjE} zIaK#j~8UY}O)erL@LUeu!!t6+TVhYiz>%%TS}@ z2wShF+iA41*!xVn8D@wL(`txI7Sm@HZrn52*IV{Sb4`Ay39Qw!--eej`7!PlaFb=P zb{l3^Yy!LAvR^e1fgWs1b1f+}okqtoebC~3Li?MP<{HauNEO~b%bQ(bMj6_|^w*ZX zQr;1KqAMP-?0%YSD&=pHM^hXH)={sgTCLc%EzbyG-!y@JY(;FO9<7OArU|XomFqN} zw=7NtE{Hs*yZmX*$CLRHI@MB|5>-Ll3QB2hgy>pYOC7QIdeU1fQ^M9J!)5g6*0qab S{{mDYFC9rt_vdXmY5NxnDi4SN delta 2987 zcmZ{m4Nz3q702IQFbg!x00M89mHhzB#z`s&@}-Fdmbd$CBLpfPsj)U0QZ=2a<5a4o z;=-V{Z+1vWk4cq|on*#N+9c+~O(x*<15K3Lsb5W^I5CsOE_Ka6_X6yYJj{&OP^>^Y*>?t1SL1dozt?Oy&yOHJM8}Y+?G2H2ro5EoZl~J8Ja1B&o%; zHoK=xmnKO^O`qmA*(#nGKV&&{z1g+*UF(-0k!7+c^mdBb!affDG3zHLwt*g+TNZdY zC`IIba)0hl?nDksQMrGfDcBa_Q{}v@j70BORaHsplOhbdOQlQO{;sJ7*CbB9*Cs3D za^FOj(tSr(I^%uaci8q#SdPnm!)bC*ko)si&x2px)4@Bcx^uYGt||0Co+c}eZSi0m zOiw5mqIXgRAyzrtxcHv&dfhnpo^e~8hj$@0l$iT-X7ZaUQ=CV;^F(_kvNp)i6Z6PH zX!YY%dIUatFVDjsp;%r)Ny}|jl@%UpcUjot-2nVGJ=)-rM>hi0=!g{Ni9o!gC`lGC37mMoL`kJcUw1?Z*yR2>c9GX;B>Ih8s;V9G>UkKU+>pJ- zH&>)+tRg6dzt$@3Y%q&U`z?VR`FfJh=t;W#g{t;RVYEzmsTA3Ed{#$IePv{xH;NvS zD+A`o5X!sU5AQqO&j9>r71!0K(ls^RPA_S@naBQ+l;AbthuDZl!5k$Yi9W2GYw~xd zyCSrtAZ%j0LiWNo#>PUM9BUc78#?Fw5zBw(x)xaiJ&{QEgh=h~2ivt2!euSmRFNiv zZ69)p9z!2bv4ZVqnr-9(p-GTCKI5$xYu3zG;MAyxa+-(u7RB7QbR+hJK$arg526Tv zsWh?e58NZl5;3BnM|0pW@=AF?Xe%^nU`2xezQ)T8GD4D~478X;Lc&KYbM0i3*(; zwZeur6_2sd%K5Kl(6D*)o-zkpME0`!z~(2PdT@Tn0@v#K9cwa#*7_#DWL{R)GO!bT94z>!s%{2f z2KRyQgM;9)h^mf)FN~`JHG#>MaaFaV%q#w-sx@Hl6;)jYJ`HXKw?yFp{Pk5h0KfMc z9DtcIRZW0Rpfyzx_JB3u5V#7Q0=I&XPQV`Q00+Ut;3(*u48Q>7@Y4;%pp!929>D7XQ+Bz?&eDQ%4|7vXxs$y@ zn=qcI-Q~{Zg{af-xNd!B)-Oz6%Y9N`is?7^oB2D=g|7js^$X(K|C6+w~Ok6GYHm^;kbVbKP_(nXOcG&j+8;?J5T=BwMw!=xOxq zBQuq^+;i3e<=z;5zuIAXBSy~xpTuYYxE7-$)eo>d8mo3PFR>aYTM=^C?3zPoAFVNk zOF|jTUN zBf4|mQuYq9M$s1GC&SgGL*QlPnr2$mD7wRjA7fFtZLE&trN^%v+R*4>jCMo!IlC^a z(;+NGLAj@Tw=OtLC!u?uZZwMQc}ka@Ia)(waf6}xxto?qKIW%hX^ZW;Q#Wfh++8!2 z>L}Y+iYBP{iR@3*?(?JKFZsmue7yYl)j~&op1{Cd{Z4xxFkObf79PxABXF&YA#XP1 zD;>K2lRAV}Lw?Ju3$(7qbd@2u8PRzR{ndv2w4MZ7=g+nsDApJG|1H1P89G0v-F|WT zX=AlnUlev4tH+CUfz~*fK4-{tj6zNCxW|yMp&R~Ec8c7xn10u#+j^;9_Sou;yINf+ zd~8^hQ?Kl2C+MVHYHKvUneQ4pi_zmePhu#0`CroTeRQs+G-J98!X=c^>SF #include -int test1(int argc, char **argv) +int test1(int argc, char **argv) { t_stacks *stacks; @@ -32,18 +32,17 @@ int test1(int argc, char **argv) stack_clear_all(stacks->a, stacks->a); if (stacks->b) stack_clear_all(stacks->b, stacks->b); + free(stacks); return (0); } -int test2(char **argv){ - +int test2(char **argv) +{ int *tab; int len; t_tab *preset; t_stacks *piles; - int i; - i = 0; len = ft_atoi(argv[2]); if (len < 1) { @@ -51,16 +50,15 @@ int test2(char **argv){ return (0); } tab = auto_shuffle(len); - while (i < len) - { - printf("tab(%d) [%d]\n", i, tab[i]); - i++; - } piles = init_big_stacks2(tab, len); - printf("RANGE BUCKET %d\n", range_bucket(piles->a)); preset = get_tabs(piles->a, range_bucket(piles->a)); print_tabs(preset); free(tab); - free_tab(preset); + free_tab(&preset); + if (piles->a) + stack_clear_all(piles->a, piles->a); + if (piles->b) + stack_clear_all(piles->b, piles->b); + free(piles); return (0); -} \ No newline at end of file +} From e06a51e03459f0549036581a901783e0d6db981e Mon Sep 17 00:00:00 2001 From: Maoake Date: Tue, 23 Dec 2025 09:22:45 +0000 Subject: [PATCH 09/13] deleting the obj and push_swap exec --- push_swap | Bin 22000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 push_swap diff --git a/push_swap b/push_swap deleted file mode 100755 index 2a0c1e774ed3f73de9cf0da471ccda7fec259ce7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22000 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 Date: Tue, 23 Dec 2025 10:08:33 +0000 Subject: [PATCH 10/13] setting up the searching path if i start from the top or from the bot need to be testing out --- algorithms/medium_algo.c | 53 ++++++++++++++++++++++++++++++++++++++++ push_swap.h | 3 +++ test_one.c | 1 - 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 0c405e0..44e9bcc 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -12,6 +12,59 @@ #include "push_swap.h" +int path_to_end(t_stacks *piles, int max_range, int range) +{ + t_stack *tmp; + int i; + int first_pass; + + tmp = piles->a; + tmp = tmp->previous; + i = 0; + first_pass = 1 + while (first_pass || tmp != piles->a->previous) + { + first_pass = 0; + if (in_range(tmp->value, max_range, range)) + tmp = piles->a->previous; + tmp = tmp->previous; + i++; + } + return (i); +} + +int path_to_start(t_stacks *piles, int max_range, int range) +{ + t_stack *tmp; + int i; + int first_pass; + + tmp = piles ->a; + i = 0; + first_pass = 1; + while (first_pass || tmp != piles->a) + { + first_pass = 0; + if (in_range(tmp->value, max_range, range)) + tmp = piles->a; + tmp = tmp->next; + i++; + } + return (i); +} + +int wich_path(t_stacks *piles, int max_range, int range) +{ + int path_start; + int path_end; + + path_start = path_to_start(piles, max_range, range); + path_end = path_to_end(piles, max_range, range); + if (path_start < path_end) + return (1); + return (0); +} + void bucket_algo(void) { return ; diff --git a/push_swap.h b/push_swap.h index 12a2193..9a7f795 100644 --- a/push_swap.h +++ b/push_swap.h @@ -72,6 +72,9 @@ t_tab *free_tab(t_tab **first); t_tab *get_next_tab(t_stack *first, t_tab *tab, int range); t_tab *init_first_tab(t_stack *first, int range); t_tab *allocate_tab(int range_max, int nb); +int wich_path(t_stacks *piles, int max_range, int range); +int path_to_start(t_stacks *piles, int max_range, int range); +int path_to_end(t_stacks *piles, int max_range, int range); /*FUNCTION IN MAIN*/ void print_all_stack(t_stack *stack, t_stack *first, char pile); int verif_no_double(int *tab, int len, int value); diff --git a/test_one.c b/test_one.c index 8dd2e0f..e56d78c 100644 --- a/test_one.c +++ b/test_one.c @@ -52,7 +52,6 @@ int test2(char **argv) tab = auto_shuffle(len); piles = init_big_stacks2(tab, len); preset = get_tabs(piles->a, range_bucket(piles->a)); - print_tabs(preset); free(tab); free_tab(&preset); if (piles->a) From ae4740c479621e90828aaa470da09113297e5f22 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Mon, 5 Jan 2026 16:13:46 +0100 Subject: [PATCH 11/13] im in the bucket algo adding some files like sort_utils the purpose is to sort just for the range --- algorithms/medium_utils/sort_utils.c | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 algorithms/medium_utils/sort_utils.c diff --git a/algorithms/medium_utils/sort_utils.c b/algorithms/medium_utils/sort_utils.c new file mode 100644 index 0000000..91b1ab1 --- /dev/null +++ b/algorithms/medium_utils/sort_utils.c @@ -0,0 +1,93 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sort_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/05 14:11:49 by mteriier #+# #+# */ +/* Updated: 2026/01/05 14:11:52 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void push_range_to_b(t_stacks *piles, t_tab *one_preset, int range) +{ + t_stack *a; + t_stack *b; + + a = piles->a; + b = piles->b; + while (one_preset->nb_in > 0) + { + if (wich_path(piles, one_preset->max_range, range, 'a')) + { + while (!in_range(a->value)) + ra(piles); + } + else + while (!in_range(a->value)) + rra(piles); + pb(piles); + } +} + +int sort_path(t_stacks *piles, int value) +{ + int start_path; + int end_path; + + start_path = number_move_reverse(piles, value, 's'); + end_path = number_move_reverse(piles, value, 'e'); + if (start_path < end_path) + return (1); + return (0); +} + +int number_move_reverse(t_stacks *piles, int value, char start_end) +{ + int i; + t_stack *tmp; + + i = 0; + tmp = piles->b; + if (start_end == 's') + { + while(tmp->value > value) + { + tmp = tmp->next; + i++; + } + } + else + { + tmp = tmp->previous; + while(tmp->value < value) + { + tmp = tmp->previous; + i++; + } + } + return (i); +} + +void sort_little_pile(t_stacks *piles) +{ + int i; + + i = 0; + if (!piles->b) + { + pb(piles); + return ; + } + if (piles->b->previous->value < piles->a->value) + { + pb(piles); + rb(piles); + return ; + } + if (sort_path(piles, piles->a->value)) + //you stop here +} From f98dce6f610f25b0ea0041af5e3e1ff873fe2648 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 6 Jan 2026 12:41:36 +0100 Subject: [PATCH 12/13] finish the medium need to modify and sort in a just need to do the reverse --- Makefile | 4 +- algorithms/medium_algo.c | 64 +++++++++++++++++++---- algorithms/medium_utils/sort_utils.c | 31 ++++++----- algorithms/medium_utils/sort_utils_two.c | 49 +++++++++++++++++ push_swap | Bin 0 -> 26928 bytes push_swap.h | 13 +++-- test_one.c | 26 +++++---- 7 files changed, 143 insertions(+), 44 deletions(-) create mode 100644 algorithms/medium_utils/sort_utils_two.c create mode 100755 push_swap diff --git a/Makefile b/Makefile index 6adb9ad..7dba4a3 100644 --- a/Makefile +++ b/Makefile @@ -12,9 +12,9 @@ STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c swap.c ALGO_SORT = medium_algo.c -MEDIUM_ALGO = utils_medium.c utils_struct_tab.c utils_medium_two.c +MEDIUM_ALGO = utils_medium.c utils_struct_tab.c utils_medium_two.c sort_utils.c sort_utils_two.c -ALGO_UTILS = check_order.c compare_value.c stack_len.c +ALGO_UTILS = check_order.c compare_value.c ALL_FILES = $(SRC) $(STACK_UTILS_DIR)/$(STACK_UTILS) $(ALGO_DIR)/$(ALGO_SORT) \ $(ALGO_DIR)/$(MEDIUM_DIR)/$(MEDIUM_ALGO) $(ALGO_UTILS_DIR)/$(ALGO_UTILS) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 44e9bcc..3b1484f 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -11,61 +11,103 @@ /* ************************************************************************** */ #include "push_swap.h" +#include -int path_to_end(t_stacks *piles, int max_range, int range) +int path_to_end(t_stacks *piles, int max_range, int range, char c) { t_stack *tmp; int i; int first_pass; - tmp = piles->a; + if (c == 'a') + tmp = piles->a; + else + tmp = piles->b; tmp = tmp->previous; i = 0; - first_pass = 1 + first_pass = 1; while (first_pass || tmp != piles->a->previous) { first_pass = 0; if (in_range(tmp->value, max_range, range)) - tmp = piles->a->previous; + tmp = piles->a; tmp = tmp->previous; i++; } return (i); } -int path_to_start(t_stacks *piles, int max_range, int range) +int path_to_start(t_stacks *piles, int max_range, int range, char c) { t_stack *tmp; int i; int first_pass; - tmp = piles ->a; + if (c == 'a') + tmp = piles->a; + else + tmp = piles->b; i = 0; first_pass = 1; while (first_pass || tmp != piles->a) { first_pass = 0; if (in_range(tmp->value, max_range, range)) - tmp = piles->a; + { + tmp = piles->a->previous; + } tmp = tmp->next; i++; } return (i); } -int wich_path(t_stacks *piles, int max_range, int range) +int wich_path(t_stacks *piles, int max_range, int range, char c) { int path_start; int path_end; - path_start = path_to_start(piles, max_range, range); - path_end = path_to_end(piles, max_range, range); + path_start = path_to_start(piles, max_range, range, c); + path_end = path_to_end(piles, max_range, range, c); if (path_start < path_end) return (1); return (0); } -void bucket_algo(void) +int stack_len(t_stack *stack) { + t_stack *first; + int i; + + first = stack; + i = 1; + while (first->next != stack) + { + first = first->next; + i++; + } + return (i); +} + +void bucket_algo(t_stacks *piles, t_tab *preset, int range) +{ + t_tab *tmp; + + tmp = preset; + while (preset) + { + push_range_to_b(piles, preset, range); + if (preset->next) + tmp = preset->next; + else + tmp = NULL; + if (preset) + free(preset); + preset = tmp; + } + while (piles->b) + pa(piles); + print_all_stack(piles->a, piles->a, 'A'); + print_all_stack(piles->b, piles->b, 'B'); return ; } diff --git a/algorithms/medium_utils/sort_utils.c b/algorithms/medium_utils/sort_utils.c index 91b1ab1..5dafb47 100644 --- a/algorithms/medium_utils/sort_utils.c +++ b/algorithms/medium_utils/sort_utils.c @@ -14,23 +14,25 @@ void push_range_to_b(t_stacks *piles, t_tab *one_preset, int range) { - t_stack *a; - t_stack *b; - - a = piles->a; - b = piles->b; while (one_preset->nb_in > 0) { if (wich_path(piles, one_preset->max_range, range, 'a')) { - while (!in_range(a->value)) + while (!in_range(piles->a->value, one_preset->max_range, range)) ra(piles); } else - while (!in_range(a->value)) + { + while (!in_range(piles->a->value, one_preset->max_range, range)) + { rra(piles); - pb(piles); + } + } + sort_little_pile(piles); + one_preset->nb_in--; } + print_all_stack(piles->a, piles->a, 'A'); + print_all_stack(piles->b, piles->b, 'B'); } int sort_path(t_stacks *piles, int value) @@ -39,6 +41,8 @@ int sort_path(t_stacks *piles, int value) int end_path; start_path = number_move_reverse(piles, value, 's'); + if (start_path == 0) + return (1); end_path = number_move_reverse(piles, value, 'e'); if (start_path < end_path) return (1); @@ -54,7 +58,7 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) tmp = piles->b; if (start_end == 's') { - while(tmp->value > value) + while(tmp->value < value) { tmp = tmp->next; i++; @@ -63,7 +67,7 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) else { tmp = tmp->previous; - while(tmp->value < value) + while(tmp->value > value) { tmp = tmp->previous; i++; @@ -74,9 +78,6 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) void sort_little_pile(t_stacks *piles) { - int i; - - i = 0; if (!piles->b) { pb(piles); @@ -89,5 +90,7 @@ void sort_little_pile(t_stacks *piles) return ; } if (sort_path(piles, piles->a->value)) - //you stop here + sort_from_left(piles); + else + sort_from_right(piles); } diff --git a/algorithms/medium_utils/sort_utils_two.c b/algorithms/medium_utils/sort_utils_two.c new file mode 100644 index 0000000..f21df33 --- /dev/null +++ b/algorithms/medium_utils/sort_utils_two.c @@ -0,0 +1,49 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* sort_utils_two.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mteriier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/06 07:52:36 by mteriier #+# #+# */ +/* Updated: 2026/01/06 07:52:38 by mteriier ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void sort_from_left(t_stacks *piles) +{ + int i; + + i = 0; + while (piles->a->value > piles->b->value) + { + rb(piles); + i++; + } + pb(piles); + while (i > 0) + { + rrb(piles); + i--; + } +} + +void sort_from_right(t_stacks *piles) +{ + int i; + + i = 0; + while (piles->a->value < piles->b->previous->value) + { + rrb(piles); + i++; + } + pb(piles); + while (i >= 0) + { + rb(piles); + i--; + } +} diff --git a/push_swap b/push_swap new file mode 100755 index 0000000000000000000000000000000000000000..a863f9dadbe50a8e90dca5c39fe8052b8e59c251 GIT binary patch literal 26928 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 U{0Ezes?=MJp}NYxmLh}y2B5$HTmS$7 literal 0 HcmV?d00001 diff --git a/push_swap.h b/push_swap.h index f636297..75c7d55 100644 --- a/push_swap.h +++ b/push_swap.h @@ -73,9 +73,16 @@ t_tab *free_tab(t_tab **first); t_tab *get_next_tab(t_stack *first, t_tab *tab, int range); t_tab *init_first_tab(t_stack *first, int range); t_tab *allocate_tab(int range_max, int nb); -int wich_path(t_stacks *piles, int max_range, int range); -int path_to_start(t_stacks *piles, int max_range, int range); -int path_to_end(t_stacks *piles, int max_range, int range); +int wich_path(t_stacks *piles, int max_range, int range, char c); +int path_to_start(t_stacks *piles, int max_range, int range, char c); +int path_to_end(t_stacks *piles, int max_range, int range, char c); +void bucket_algo(t_stacks *piles, t_tab *preset, int range); +void push_range_to_b(t_stacks *piles, t_tab *one_preset, int range); +int sort_path(t_stacks *piles, int value); +int number_move_reverse(t_stacks *piles, int value, char start_end); +void sort_little_pile(t_stacks *piles); +void sort_from_left(t_stacks *piles); +void sort_from_right(t_stacks *piles); /*FUNCTION IN MAIN*/ void print_all_stack(t_stack *stack, t_stack *first, char pile); int verif_no_double(int *tab, int len, int value); diff --git a/test_one.c b/test_one.c index e56d78c..da1dac3 100644 --- a/test_one.c +++ b/test_one.c @@ -16,23 +16,21 @@ int test1(int argc, char **argv) { - t_stacks *stacks; + t_stacks *piles; + t_tab *preset; - stacks = NULL; + piles = NULL; if (argc > 1) { - stacks = init_big_stacks(argc, argv); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); - rra(stacks); - print_all_stack(stacks->a, stacks->a, 'A'); - print_all_stack(stacks->b, stacks->b, 'B'); + piles = init_big_stacks(argc, argv); + preset = get_tabs(piles->a, range_bucket(piles->a)); + bucket_algo(piles, preset, range_bucket(piles->a)); } - if (stacks->a) - stack_clear_all(stacks->a, stacks->a); - if (stacks->b) - stack_clear_all(stacks->b, stacks->b); - free(stacks); + if (piles->a) + stack_clear_all(piles->a, piles->a); + if (piles->b) + stack_clear_all(piles->b, piles->b); + free(piles); return (0); } @@ -52,8 +50,8 @@ int test2(char **argv) tab = auto_shuffle(len); piles = init_big_stacks2(tab, len); preset = get_tabs(piles->a, range_bucket(piles->a)); + bucket_algo(piles, preset, range_bucket(piles->a)); free(tab); - free_tab(&preset); if (piles->a) stack_clear_all(piles->a, piles->a); if (piles->b) From 80179a52899cb522d5b27479f58046ff490da484 Mon Sep 17 00:00:00 2001 From: Maoake Teriierooiterai Date: Tue, 6 Jan 2026 13:52:29 +0100 Subject: [PATCH 13/13] finally finish the medium algo --- algorithms/medium_algo.c | 14 +++++----- algorithms/medium_utils/sort_utils.c | 32 +++++++++++------------ algorithms/medium_utils/sort_utils_two.c | 30 ++++++++++----------- algorithms/utils/compare.c | 2 -- push_swap | Bin 26928 -> 26928 bytes 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 3b1484f..9ee3379 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -15,7 +15,7 @@ int path_to_end(t_stacks *piles, int max_range, int range, char c) { - t_stack *tmp; + t_stack *tmp; int i; int first_pass; @@ -26,11 +26,11 @@ int path_to_end(t_stacks *piles, int max_range, int range, char c) tmp = tmp->previous; i = 0; first_pass = 1; - while (first_pass || tmp != piles->a->previous) + while (first_pass || tmp != piles->b->previous) { first_pass = 0; if (in_range(tmp->value, max_range, range)) - tmp = piles->a; + tmp = piles->b; tmp = tmp->previous; i++; } @@ -39,7 +39,7 @@ int path_to_end(t_stacks *piles, int max_range, int range, char c) int path_to_start(t_stacks *piles, int max_range, int range, char c) { - t_stack *tmp; + t_stack *tmp; int i; int first_pass; @@ -49,12 +49,12 @@ int path_to_start(t_stacks *piles, int max_range, int range, char c) tmp = piles->b; i = 0; first_pass = 1; - while (first_pass || tmp != piles->a) + while (first_pass || tmp != piles->b) { first_pass = 0; if (in_range(tmp->value, max_range, range)) { - tmp = piles->a->previous; + tmp = piles->b->previous; } tmp = tmp->next; i++; @@ -94,6 +94,8 @@ void bucket_algo(t_stacks *piles, t_tab *preset, int range) t_tab *tmp; tmp = preset; + while (piles->a) + pb(piles); while (preset) { push_range_to_b(piles, preset, range); diff --git a/algorithms/medium_utils/sort_utils.c b/algorithms/medium_utils/sort_utils.c index 5dafb47..b17daf0 100644 --- a/algorithms/medium_utils/sort_utils.c +++ b/algorithms/medium_utils/sort_utils.c @@ -16,16 +16,16 @@ void push_range_to_b(t_stacks *piles, t_tab *one_preset, int range) { while (one_preset->nb_in > 0) { - if (wich_path(piles, one_preset->max_range, range, 'a')) + if (wich_path(piles, one_preset->max_range, range, 'b')) { - while (!in_range(piles->a->value, one_preset->max_range, range)) - ra(piles); + while (!in_range(piles->b->value, one_preset->max_range, range)) + rb(piles); } else { - while (!in_range(piles->a->value, one_preset->max_range, range)) + while (!in_range(piles->b->value, one_preset->max_range, range)) { - rra(piles); + rrb(piles); } } sort_little_pile(piles); @@ -37,7 +37,7 @@ void push_range_to_b(t_stacks *piles, t_tab *one_preset, int range) int sort_path(t_stacks *piles, int value) { - int start_path; + int start_path; int end_path; start_path = number_move_reverse(piles, value, 's'); @@ -55,10 +55,10 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) t_stack *tmp; i = 0; - tmp = piles->b; - if (start_end == 's') + tmp = piles->a; + if (start_end == 's') { - while(tmp->value < value) + while (tmp->value < value) { tmp = tmp->next; i++; @@ -67,7 +67,7 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) else { tmp = tmp->previous; - while(tmp->value > value) + while (tmp->value > value) { tmp = tmp->previous; i++; @@ -78,18 +78,18 @@ int number_move_reverse(t_stacks *piles, int value, char start_end) void sort_little_pile(t_stacks *piles) { - if (!piles->b) + if (!piles->a) { - pb(piles); + pa(piles); return ; } - if (piles->b->previous->value < piles->a->value) + if (piles->a->previous->value < piles->b->value) { - pb(piles); - rb(piles); + pa(piles); + ra(piles); return ; } - if (sort_path(piles, piles->a->value)) + if (sort_path(piles, piles->b->value)) sort_from_left(piles); else sort_from_right(piles); diff --git a/algorithms/medium_utils/sort_utils_two.c b/algorithms/medium_utils/sort_utils_two.c index f21df33..1a79332 100644 --- a/algorithms/medium_utils/sort_utils_two.c +++ b/algorithms/medium_utils/sort_utils_two.c @@ -16,18 +16,18 @@ void sort_from_left(t_stacks *piles) { int i; - i = 0; - while (piles->a->value > piles->b->value) + i = 0; + while (piles->b->value > piles->a->value) { - rb(piles); + ra(piles); i++; } - pb(piles); + pa(piles); while (i > 0) - { - rrb(piles); - i--; - } + { + rra(piles); + i--; + } } void sort_from_right(t_stacks *piles) @@ -35,15 +35,15 @@ void sort_from_right(t_stacks *piles) int i; i = 0; - while (piles->a->value < piles->b->previous->value) + while (piles->b->value < piles->a->previous->value) { - rrb(piles); + rra(piles); i++; } - pb(piles); + pa(piles); while (i >= 0) - { - rb(piles); - i--; - } + { + ra(piles); + i--; + } } diff --git a/algorithms/utils/compare.c b/algorithms/utils/compare.c index 69b2427..db824cd 100644 --- a/algorithms/utils/compare.c +++ b/algorithms/utils/compare.c @@ -41,5 +41,3 @@ int is_highest(t_stack *stack, t_stack *node, int len) } return (1); } - - diff --git a/push_swap b/push_swap index a863f9dadbe50a8e90dca5c39fe8052b8e59c251..b8d3856e7ad341083ea5296c3449aac2eb7b0421 100755 GIT binary patch delta 2384 zcmaKudrVVz6vyu^2rVjHg$Z?N!68Bh_Bvf`Loy3exQ){_8;=!ZMvS0aOx6Y6U>T3B z>ST4J@x)BBmn>PrvMnj;{%HM2oR8t=w&Dx$F^ZzJ6J3*G24>6M_jh}(n8h`6KEL1Z zJb&k&d!zRp@5MhYuRE2?DZf*+fH&&Kb+O&J&&C`11s+Rm>#@WZ9_rMLW;|mW88cTr z`|g=5tDW6RKlMzVZTs8zPQuGi%o|SUILX~Q(0MxiDTT5O{I>`7*XRAXP&xJEw2SWQ z4gBZ6)Wsj^DioSvbyrV@BlPF;68;()^9z&Gr(k=7ju&SZ-1=RX(H^91*2d`69xa1! z_$<@7PUdVm(U@i^_kEV%sL@Chv?P5omZ|l?R0Q#b6^K%pNoYtsY zMApDo7HQxwSyq~8#V%H(lF_1dn~*bR8vdTzikGxsh@!Mp>@GF`XWV)}7V=R48ae(D z4Ql$Zd>5r3>rm&(%Z1ynBj9)O4!O~^&CK}NzK1q-u#r+(IZ~qQxZEivM&_~>wb$Qx zT#G80Mrl#C)Ok~KO$t(HD_W^Op}p}ZR6L3N+m-TIt1%}QfyvlNmhfpGWIm`}15-@* zblCO>d{%SZeAuZ$*;wpYd6DO6ow1Al$xERj&akDJPZd0F_N#){lX;v`2Ey5$Ey?1+dz_SkmdLwGU1M$>%CVhQkTG~NN zNBgdZrd=riFUvu&1B`;f3$iTWCE_m1vIqu2J7~Wox64i}`Y#~>*fE3vAUBKvUT4IfZ|mY03HE7p#2*BnH~%>{crFGL!f{UiG39Q?1K`5Kih}e5daG>4m_Y` z3<1C(7-Z)dx+v(uBne5lAzot<41sn~ya|8CTkr=xpcmvO;LrA86bykvGA^?OC@8Am_YA0MXIXaP^v|-Kj}2FzEU<5!h`)?qWEmG%etD4P_^YSBvK9Pc z8YwgICYph4CjEK??hW|q={M}2dEn|ivp0nGy;kE%89;$)nKkLXr`}FUB%L6 ze$2)wyGCiMuurpoev;<$ykvAF8%IT$jpl1~w0!ZL=dmGyBBx+ z2DXPuU&*qXA#oGP!_)$a${-~QC?_MzdIqwW^b)&+84{g>Y^D}SKXohT0m+b?g{iXO z-HVr+P{OmMtkeUTBJ^DG(A!{(N$Yu}zE9%yO~SU995#bSJ3(*TmZGKIHl*?eY-BUD&pOEpi`H$qW4=lw zVezG^4U)dDQZE$7v<<3nx_aFlYN@N_ExzM*T`8LUTzau#rOv-9X6vWU2G*v*2BYrb Ue}Z(4Yjw?KF^guOt#Ly0FS&At2mk;8 delta 2290 zcmaKuZ){Ul7{<@J8?0B5-oeOLgmp8ctO3@Gm~3W2FN1Ek{7a)NV;JN7u(=TpGX@>T z*@iN*Qjo$MB403rXtEhUl=RE^Vul!8Bhe0r3>{LCKP?QrnkDv=*XQ1LWsAmT_xYW3 z-uFD`z2}^}EP91U@oV8?UnMht`ly(@#Bnj(8;^Ooix&r!Y&W1}8vzOlH%mer3Xl5^ ztlyP!{CUt(cjQyc^!kq2hXuQqE*xIMm>TXK4P8q0QnJj>kDjpIUiiggb95M^d+D*w z&i%1P%RUkPOJS~t-AOgPJ)?$2wSJ>yJvq|vzINDsZIE00<{_SLgna9sfSS4Cy70c~ zuun@ZD`YH~Vb+5SvJp5iHDs6>k0KfEuzNB%!b9%K^dVi>(Nlxp$gf?r+L=!c-KDB3 z-}d61uUSJq|M&V^knmsYZz;&FZ+)^pjaHQ}n6(t?t}-fGd9^gytD(|XGqV?!?$g4) zsni21an$p_$?I_P=jj8-a-rxUmDiM6A3e}@lv-hw8elB;m7_xtI`7kpCCf;0HuFsE zq;rb%?_vj5zXZ_NYhK-OF>mhH!ZPg7zk!id>Mvb4w`ntaX*|X*8haJ4LnE7+x<~_S zOK9&}aaEtD>*-6_tn~lo`)BeU=N`}GXRUiPsU6uhw6Izjyr75F!nBM0j#B;^t*Ej2 z5C8V$)fDp>)Zi2j%h(mv73{GvYu_T%0$$r5!M-D3v|=$%7U!J3FgUKGr8B9ONX6C5 zq%yx_&U3lpnU|GQ>o5|`(7Bq+f?}bMT*v6eN|8$C#hciSp~nKpkMoXO@or)Fw0VQ3 z(+O;f>EHYiJK8(VW@R2HO)jH@@=A4 zl6SsxLJ9c!GX?c`IAisAg@GS*y;@*QLOl#rz!H#+>ADvj0lUG9E4m&517OtX|ETK; zFal~|a$MIXTw&>|uFGH&^nz_aVLq4uBVgp3?$@JeNE0vsHBdA9Kf?gupa#ld;ujcz z$|MZHC>R0TZlC}o4knEFub2;NpoA~H?Iz}fQWEoxKG+S8fDzDp%MSxIlDA-B1a89s z9KcPI=Hm_TzyQ=hFR0vw0a$Sl21Xo=8gVdT^zUOnm;j|B#=29O4<jh0p8(rH4IBX_3o6IC%3vGl1p~N=-CzaoPXrtQqo5ZTGXW+*&FJG>lkoR; zgx+pg?X-Na>kcf!HWx_}AmgdR7~a(Use*3C(@hr|R`EefH`uvK;wC%qCnt22JW!Ro zprFN2x#KIzM z!Ey|(!DZ;jVo!D2s%td z&^n5nBWbfOsz#wsD7FJyOIIrW{+*EfaS9_sSgg^7D~*i(*jhKz}^xTm&|Mg-}^jym2Gdtrxv9#7Eu zSDJW$c=MaZ=H9^5f-iS5vobI3Z?5Gx=v?z&A-S5K^)(6!nfCbJ!@=G1m5LQE#i)Rt zCBAbNJe)gSyp39SHgQI0(3WWo?E$j2xS*bv*LgP$wb=RfSiI#Jw<&9~)3=)@jBUlX z8p|s5PHU;nD`%tc=b~@rq7gcSXd<`tySZq8E-KMjtIL+mIh&h_jL&n?DA{&5*|h4c zb9-*?lHBVu+P@p6$1dzX_LOk1f?jT~5qs8Ub9*S%Zfw(7yGwlXZ;IGaD|R+yGdg3Q Hj{Cwtd(KI7