From 115c03b8ca9e1e8f8e236651b2d02fcacacedc68 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sat, 25 Sep 2021 17:19:07 +0200 Subject: [PATCH] algo recursive fonctionne manque le tris des mini listes --- README.md | 127 ++++++++++++++++++++++++------------------- builds/algo.o | Bin 103192 -> 104824 bytes builds/print.o | Bin 103312 -> 104240 bytes builds/push_swap.o | Bin 102920 -> 102944 bytes includes/push_swap.h | 2 +- push_swap | Bin 190112 -> 192736 bytes srcs/algo.c | 70 ++++++++++++++++++------ srcs/print.c | 38 +++++++++---- srcs/push_swap.c | 3 +- 9 files changed, 154 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 61c5d3a..9ededa4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,74 @@ +## description du programme : + +**sa** : swap a - intervertit les 2 premiers éléments au sommet de la pile a. Ne fait rien s’il n’y en a qu’un ou aucun. +**sb** : swap b - intervertit les 2 premiers éléments au sommet de la pile b. Ne fait rien s’il n’y en a qu’un ou aucun. +**ss** : sa et sb en même temps. +**pa** : push a - prend le premier élément au sommet de b et le met sur a. Ne fait rien si b est vide. +**pb** : push b - prend le premier élément au sommet de a et le met sur b. Ne fait rien si a est vide. +**ra** : rotate a - décale d’une position vers le haut tous les élements de la pile a. Le premier élément devient le dernier. +**rb** : rotate b - décale d’une position vers le haut tous les élements de la pile b. Le premier élément devient le dernier. +**rr** : ra et rb en même temps. +**rra** : reverse rotate a - décale d’une position vers le bas tous les élements de la pile a. Le dernier élément devient le premier. +**rrb** : reverse rotate b - décale d’une position vers le bas tous les élements de la pile b. Le dernier élément devient le premier. +**rrr** : rra et rrb en même temps. + +## pour utiliser l'algorithme de tris de ce programme dans votre propre programme, il faut : + +1. copier le fichier algo.c + +2. mettre son prototype dans votre header.h : `void hugo_sort(t_stack **a, t_stack **b, t_list **solution)` + +3. mettre le fichier dans vos srcs dans Makefile (`algo.c`) + +4. et verifier que vos functions d'actions (push, swap, rotate) ont bien les memes prototypes : + - `t_list *sa(t_stack **a, t_list **lst);` + - `t_list *ss(t_stack **a, t_stack **b, t_list **lst);` + - `t_list *pa(t_stack **dst, t_stack **src, t_list **lst);` + - `t_list *pb(t_stack **dst, t_stack **src, t_list **lst);` + - `t_list *ra(t_stack **stack, t_list **lst);` + - `t_list *rb(t_stack **stack, t_list **lst);` + - `t_list *rr(t_stack **a, t_stack **b, t_list **lst);` + - `t_list *rra(t_stack **stack, t_list **lst);` + - `t_list *rrb(t_stack **stack, t_list **lst);` + - `t_list *rrr(t_stack **a, t_stack **b, t_list **lst);` + +## points particuliers : + +- les fonctions d'actions (puches, swapes, rotates) recoivent une ou les deux piles a et b, et la liste chainee *solution* qui doit accueillir les noms des actions successives +- mais pour pouvoir imprimer l'état des deux piles a et b a chaque etape il faudrait que chaques fonctions recoivent les deux piles, ce qui n'est pas le cas : sa() par exemple ne recoit pas la pile b +- donc j'ai stocké les deux piles dans les deux premiers maillons de la chaine solution, car toutes les fonctions d'actions la recoivent + +## ce programme push_swap.c s'organise de la facon suivante : + +1. des fonctions pour faire fonctionner l'algorithme de tris (principalement parsing des donnees, et les actions utilisees par l'algorithme de tris : push, swap, rotate et reverse rotate) : + +- **push_swap.c** : contient la fonction main et 4 autres fonctions : + - **is_valid** : verification d'erreur dans les arguments données, si aucun argument affiche l'usage + - **check_flag** : regarde la presence des flags, pour l'instant uniquement -p pour print les etapes du tri + - **init_stack** : parse la pile a trier dans une liste chainee + - **launch_algo** : lance l'algorithme de tri, en lui envoyant ce qui est necessaire (les deux piles a et b et la liste de solutions) + +- **stop.c** : qui gere les erreurs, l'usage, mais aussi qui free avant de fermer le programme + - **ps_stop** : recoit toutes les listes chainees du programme, envoyer NULL si on ne veut pas free la liste, et le dernier int permet de savoir si on veut juste free sans arreter le programme (= -1), et si on veut signaler une erreur (>= 1) + - **ps_error** : la gestion des erreurs + - **ps_usage** : en cas d'erreur = 1, affiche l'usage du programme + +- **print.c** : contient les fonctions necessaires pour afficher le resultat + - **print_result** : affiche le resultat, et si presence du flag -p affiche aussi les etapes de tris + - **fill_solution** : remplit la liste chainee solution au fur et a mesure de l'appel des fonctions push swap et rotate (pas optimisé pour raison de compatibilité avec l'appel des fonctions du programme de luke : les actions (push, swap, etc) ne recoivent pas de flag en argument, donc fill_solution remplis toutes les infos necessaires pour le flag, meme s'il n'y a pas de flag) + +- toutes les fonctions d'action (push, swap, rotate, et reverse rotate) + + +2. les fonctions d'algorithme, qui sont appellees par launch_solution() + +- **algo.c** : le fichier qui contient les fonctions d'algorithme de tri + - **hugo_sort** : pour l'instant une fonction test qui utilise toutes les actions (push, swap, rotate) + + + + +## comparaison des algorithmes de tris : source des comparaisons ci-dessous : [https://www.youtube.com/watch?v=xoR-1KwQh2k](https://www.youtube.com/watch?v=xoR-1KwQh2k) @@ -67,59 +138,3 @@ push_swap_visalizer : [https://github.com/o-reo/push_swap_visualizer](https://gi --- -## pour utiliser l'algorithme de tris de ce programme dans votre propre programme, il faut : - -1. copier le fichier algo.c - -2. mettre son prototype dans votre header.h : `void hugo_sort(t_stack **a, t_stack **b, t_list **solution)` - -3. mettre le fichier dans vos srcs dans Makefile (`algo.c`) - -4. et verifier que vos functions d'actions (push, swap, rotate) ont bien les memes prototypes : - - `t_list *sa(t_stack **stack, t_list **lst);` - - `t_list *ss(t_stack **a, t_stack **b, t_list **lst);` - - `t_list *pa(t_stack **dst, t_stack **src, t_list **lst);` - - `t_list *pb(t_stack **dst, t_stack **src, t_list **lst);` - - `t_list *ra(t_stack **stack, t_list **lst);` - - `t_list *rb(t_stack **stack, t_list **lst);` - - `t_list *rr(t_stack **a, t_stack **b, t_list **lst);` - - `t_list *rra(t_stack **stack, t_list **lst);` - - `t_list *rrb(t_stack **stack, t_list **lst);` - - `t_list *rrr(t_stack **a, t_stack **b, t_list **lst);` - -## points particuliers : - -- les fonctions d'actions (puches, swapes, rotates) recoivent une ou les deux piles a et b, et la liste chainee *solution* qui doit accueillir les noms des actions successives -- mais pour pouvoir imprimer l'état des deux piles a et b a chaque etape il faudrait que chaques fonctions recoivent les deux piles, ce qui n'est pas le cas : sa() par exemple ne recoit pas la pile b -- donc j'ai stocké les deux piles dans les deux premiers maillons de la chaine solution, car toutes les fonctions d'actions la recoivent - -## ce programme push_swap.c s'organise de la facon suivante : - -1. des fonctions pour faire fonctionner l'algorithme de tris (principalement parsing des donnees, et les actions utilisees par l'algorithme de tris : push, swap, rotate et reverse rotate) : - -- **push_swap.c** : contient la fonction main et 4 autres fonctions : - - **is_valid** : verification d'erreur dans les arguments données, si aucun argument affiche l'usage - - **check_flag** : regarde la presence des flags, pour l'instant uniquement -p pour print les etapes du tri - - **init_stack** : parse la pile a trier dans une liste chainee - - **launch_algo** : lance l'algorithme de tri, en lui envoyant ce qui est necessaire (les deux piles a et b et la liste de solutions) - -- **stop.c** : qui gere les erreurs, l'usage, mais aussi qui free avant de fermer le programme - - **ps_stop** : recoit toutes les listes chainees du programme, envoyer NULL si on ne veut pas free la liste, et le dernier int permet de savoir si on veut juste free sans arreter le programme (= -1), et si on veut signaler une erreur (>= 1) - - **ps_error** : la gestion des erreurs - - **ps_usage** : en cas d'erreur = 1, affiche l'usage du programme - -- **print.c** : contient les fonctions necessaires pour afficher le resultat - - **print_result** : affiche le resultat, et si presence du flag -p affiche aussi les etapes de tris - - **fill_solution** : remplit la liste chainee solution au fur et a mesure de l'appel des fonctions push swap et rotate (pas optimisé pour raison de compatibilité avec l'appel des fonctions du programme de luke : les actions (push, swap, etc) ne recoivent pas de flag en argument, donc fill_solution remplis toutes les infos necessaires pour le flag, meme s'il n'y a pas de flag) - -- toutes les fonctions d'action (push, swap, rotate, et reverse rotate) - - -2. les fonctions d'algorithme, qui sont appellees par launch_solution() - -- **algo.c** : le fichier qui contient les fonctions d'algorithme de tri - - **hugo_sort** : pour l'instant une fonction test qui utilise toutes les actions (push, swap, rotate) - - - - diff --git a/builds/algo.o b/builds/algo.o index abfa52279ca839b598a31824ab357de4ef7c99b6..1633b725876b4f9ae9d85a0d74fb0a5172c0c421 100644 GIT binary patch delta 31839 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 delta 30422 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 J6E!R1{{b_CZAbtB diff --git a/builds/print.o b/builds/print.o index e6dba2ab85bba5a91b91ee9f854db8a4df9a7fb8..4e517700c856a175415453662ae20a96e76c8d20 100644 GIT binary patch delta 22689 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 ZCh--2M)Tm6jYh4cgW`Jx!gGxV{};5L|1kgn diff --git a/builds/push_swap.o b/builds/push_swap.o index 0fd39daec64fdfe484e02be0f960f315134f2c83..69d98a8f7503559e95fec26215841f41964d28be 100644 GIT binary patch delta 1443 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 TCHDLul?>(NkM?;#DhdA&MgNsS delta 16677 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 YaZb4x1gno}X){Ylimit = 0; while (list_size-- > 0) { if ((*a)->n >= pivot) + { + if (!first_rotate) + first_rotate = *a; ra(a, &solution); + } else pb(b, a, &solution); } - mark_step(solution); + while (*a != first_rotate) + rra(a, &solution); + (*a)->limit = 1; + (*b)->limit = 1; + mark_step(solution, "divide_a"); return (0); } int divide_b(t_stack **a, t_stack **b, t_list *solution) { - (void)a; - (void)b; - (void)solution; + int list_size; + int pivot; + t_stack *first_rotate; + + first_rotate = NULL; + list_size = sublist_size(*b); + pivot = find_pivot(*b, list_size); + (*b)->limit = 0; + while (list_size-- > 0) + { + if ((*b)->n >= pivot) + pa(a, b, &solution); + else + { + if (!first_rotate) + first_rotate = *b; + rb(b, &solution); + } + } + while (*b != first_rotate) + rrb(b, &solution); + (*a)->limit = 1; + (*b)->limit = 1; + mark_step(solution, "divide_b"); return (0); } void send_sublist_to_a(t_stack **a, t_stack **b, t_list *solution) { - (void)a; - (void)b; - (void)solution; + int list_size; + + list_size = sublist_size(*b); + (*b)->limit = 0; + while (list_size-- > 0) + pa(a, b, &solution); + (*a)->limit = 1; + if (*b) + (*b)->limit = 1; + mark_step(solution, "send_sublist_to_a"); } void mini_sort(t_stack **a, t_stack **b, t_list *solution) @@ -98,19 +135,18 @@ void mini_sort(t_stack **a, t_stack **b, t_list *solution) void hugo_sort(t_stack **a, t_stack **b, t_list *solution) { + if (sublist_size(*a) > 5) divide_a(a, b, solution); -/* - if (sublist_size(*a) > 3) - divide_a(a, b, solution); - else if (sublist_size(*b) > 3) + else if (sublist_size(*b) > 5) { mini_sort(a, b, solution); divide_b(a, b, solution); } - else + else if (sublist_size(*b) > 0) send_sublist_to_a(a, b, solution); + else + return ; hugo_sort(a, b, solution); -*/ } // /* diff --git a/srcs/print.c b/srcs/print.c index 8d0a4c9..89fbb39 100644 --- a/srcs/print.c +++ b/srcs/print.c @@ -7,22 +7,21 @@ char *fill_line(t_stack *list, char *stack) if (list->limit == 1) stack = ft_strjoinfree(ft_strdup("]"), stack); stack = ft_strjoinfree(ft_itoa(list->n), stack); - if (list->limit == 1) - stack = ft_strjoinfree(ft_strdup("["), stack); stack = ft_strjoinfree(ft_strdup(" "), stack); list = list->next; } return (stack); } -void mark_step(t_list *solution) +void mark_step(t_list *solution, char *step) { char *line; while (solution->next != NULL) solution = solution->next; line = solution->content; - line = ft_strjoinfree(line, ft_strdup("!1")); + line = ft_strjoinfree(line, ft_strdup("!")); + line = ft_strjoinfree(line, ft_strdup(step)); solution->content = line; } @@ -62,6 +61,28 @@ void fill_solution(t_list *solution, char *sp) ft_lstadd_back(&solution, ft_lstnew(stack)); } +// some drafty code to print sublist with flag +void print_flags(char **part, int flag) +{ + int last_a; + int last_b; + + + last_a = part[1][ft_strlen(part[1]) - 1]; + last_b = part[0][ft_strlen(part[0]) - 1]; + if (flag && part[3] != NULL) + ft_printf(" ( %s )", part[3]); + if (flag == 1 || (flag == 2 && part[3] != NULL)) + { + ft_printf("\n %s", part[1]); + if (part[3] != NULL && last_a != ']') + ft_putchar(']'); + ft_printf("\n %s", part[0]); + if (part[3] != NULL && last_b != ']' && last_b != ':') + ft_putchar(']'); + } +} + void print_result(t_list *result, int flag) { int i; @@ -73,12 +94,9 @@ void print_result(t_list *result, int flag) { i++; part = ft_split(result->content, '!'); - ft_printf("%s\n", part[2]); - if (flag == 1 || (flag == 2 && part[3] != NULL)) - { - ft_printf(" %s\n", part[1]); - ft_printf(" %s\n", part[0]); - } + ft_printf("%s", part[2]); + print_flags(part, flag); + ft_putchar('\n'); result = result->next; free(part[0]); free(part[1]); diff --git a/srcs/push_swap.c b/srcs/push_swap.c index e2a85d4..4cdeaef 100644 --- a/srcs/push_swap.c +++ b/srcs/push_swap.c @@ -41,7 +41,6 @@ t_stack *init_stack(int ac, char **av) start->next = tmp; tmp = start; } - start->limit = 1; return (start); } @@ -58,7 +57,7 @@ t_list *launch_algo(t_stack **a, t_stack **b, int flag) if (flag) { fill_solution(solution, "start"); - mark_step(solution); + mark_step(solution, "start"); } hugo_sort(a, b, solution); // bubble_sort(a, b, solution);