From a44b87862580829dfc48854d55f8bcd59a0dc86e Mon Sep 17 00:00:00 2001 From: Maoake Date: Tue, 23 Dec 2025 10:08:33 +0000 Subject: [PATCH] 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)