From 694254810893b94134f510a1438539ea755b94e5 Mon Sep 17 00:00:00 2001 From: David Gailleton Date: Wed, 7 Jan 2026 14:50:04 +0000 Subject: [PATCH] Not working radix --- Makefile | 11 ++++- algorithms/radix/radix.c | 92 +++++++++++++++++++++++++++++++++++++++ headers/push_swap.h | 5 ++- push_swap | Bin 0 -> 27016 bytes test_one.c | 9 ++-- 5 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 algorithms/radix/radix.c create mode 100755 push_swap diff --git a/Makefile b/Makefile index 4d233cf..b7f2ab5 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,8 @@ PARS_DIR = parsing MEDIUM_DIR = medium +COMPLEX_DIR = radix + INCLUDES = headers #============================ @@ -30,6 +32,8 @@ STACK_UTILS = push.c rev_rotate.c rotate.c stack_add.c stack_remove.c stacks_len MEDIUM_ALGO = utils_medium.c utils_struct_tab.c utils_medium_two.c sort_utils.c sort_utils_two.c medium_algo.c +COMPLEX_ALGO = radix.c + ALGO_UTILS = check_order.c compare.c iterate.c pre_sort.c #============================ @@ -38,7 +42,7 @@ ALGO_UTILS = check_order.c compare.c iterate.c pre_sort.c ALL_FILES = $(SRC) $(STACK_UTILS_DIR)/$(STACK_UTILS) $(PARS_DIR)/$(PARSING) \ $(ALGO_DIR)/$(MEDIUM_DIR)/$(MEDIUM_ALGO) $(ALGO_UTILS_DIR)/$(ALGO_UTILS) \ - $(INSERT_DIR)/$(INSERTION) + $(INSERT_DIR)/$(INSERTION) $(ALGO_DIR)/$(COMPLEX_DIR)/$(COMPLEX_ALGO) OBJ_DIR = obj @@ -79,6 +83,9 @@ $(OBJ_DIR)/%.o: $(ALGO_DIR)/%.c | $(OBJ_DIR) $(OBJ_DIR)/%.o: $(ALGO_DIR)/$(MEDIUM_DIR)/%.c | $(OBJ_DIR) $(CC) $(CFLAGS) -MMD -MP -c $< -o $@ +$(OBJ_DIR)/%.o: $(ALGO_DIR)/$(COMPLEX_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 $@ @@ -98,4 +105,4 @@ fclean: clean re: fclean all --include $(DEP) \ No newline at end of file +-include $(DEP) diff --git a/algorithms/radix/radix.c b/algorithms/radix/radix.c new file mode 100644 index 0000000..aece43f --- /dev/null +++ b/algorithms/radix/radix.c @@ -0,0 +1,92 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* radix.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dgaillet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2026/01/06 12:47:06 by dgaillet #+# #+# */ +/* Updated: 2026/01/07 11:45:50 by dgaillet ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" +/* +static int one_higher_than_unit(t_stack *stack, int unit) +{ + t_stack *temp; + + temp = stack; + if (stack->value > unit) + return (1); + stack = stack->next; + while (stack != temp) + { + if (stack->value > unit) + return (1); + stack = stack->next; + } + return (0); +} +*/ +static int to_insert(t_stacks *stacks, int value) +{ + int i; + int s_len; + t_stack *temp; + + temp = stacks->a; + if (!stacks->a) + return (0); + i = 0; + s_len = stack_a_len(stacks); + while (temp->value < value + && temp->previous->value > value && s_len >= i) + { + if (s_len == i) + return (r_to_lowest(stacks->a, s_len) + 1); + i++; + temp = temp->next; + } + return (i); +} + +static int is_contain_lower_unit(t_stack *stack, int unit, int s_len) +{ + int i; + + i = 0; + while (i < s_len) + { + if (stack->value < unit) + return (1); + i++; + stack = stack->next; + } + return (0); +} + +static void rec_sort(t_stacks *stacks, int unit) +{ + if (!stacks->b) + return ; + while (is_contain_lower_unit(stacks->b, unit, stack_b_len(stacks))) + { + if (stacks->b->value < unit) + { + optimal_rotate(stacks, to_insert(stacks, stacks->b->value) + , stack_a_len(stacks), 'a'); + pa(stacks); + } + else + rb(stacks); + } + rec_sort(stacks, unit * 10); +} + +void radix(t_stacks *stacks) +{ + while (stacks->a) + pb(stacks); + rec_sort(stacks, 10); +} diff --git a/headers/push_swap.h b/headers/push_swap.h index f38f1b3..f47f445 100644 --- a/headers/push_swap.h +++ b/headers/push_swap.h @@ -6,7 +6,7 @@ /* By: dgaillet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/08 14:18:06 by dgaillet #+# #+# */ -/* Updated: 2025/12/15 14:34:45 by dgaillet ### ########lyon.fr */ +/* Updated: 2026/01/07 10:30:42 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -65,4 +65,7 @@ int test2(char **argv); /* TEST FILE */ int test1(int argc, char **argv); +/* RADIX */ +void radix(t_stacks *stacks); + #endif diff --git a/push_swap b/push_swap new file mode 100755 index 0000000000000000000000000000000000000000..b4e90117e1b757cec56274e895b75ae163e77087 GIT binary patch literal 27016 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 literal 0 HcmV?d00001 diff --git a/test_one.c b/test_one.c index c710be1..21ffbeb 100644 --- a/test_one.c +++ b/test_one.c @@ -6,7 +6,7 @@ /* By: mteriier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/22 12:33:58 by mteriier #+# #+# */ -/* Updated: 2025/12/22 12:34:35 by mteriier ### ########.fr */ +/* Updated: 2026/01/07 10:49:03 by dgaillet ### ########lyon.fr */ /* */ /* ************************************************************************** */ @@ -19,14 +19,15 @@ int test1(int argc, char **argv) { t_stacks *piles; - t_tab *preset; + //t_tab *preset; piles = NULL; if (argc > 1) { piles = init_big_stacks(argc, argv); - preset = get_tabs(piles->a, range_bucket(piles->a)); - bucket_algo(piles, preset, range_bucket(piles->a)); + //preset = get_tabs(piles->a, range_bucket(piles->a)); + //bucket_algo(piles, preset, range_bucket(piles->a)); + radix(piles); } if (piles->a) stack_clear_all(piles->a, piles->a);