/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* push_swap.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/11/25 23:15:17 by apommier #+# #+# */ /* Updated: 2022/01/18 21:45:38 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PUSH_SWAP_H # define PUSH_SWAP_H # include # include # include "../libft/libft.h" # include "../libft/get_next_line.h" typedef struct procest_slist { void *action; struct procest_slist *next; } t_slist; int push_swap(int nbrarg, char **list); int is_nbr(int nbrarg, char **list); t_list *set_list(int nbrarg, char **list); void lst_indexing(t_list *list); int is_double(int nbrarg, char **list); t_list *find_loop_index(t_list *list); int find_loop(t_list *start, t_list *list, int setswap); t_list *ft_lstnew(void *content); /*t_slist fonction*/ t_slist *new_slist(void *content); void s_lstadd_back(t_slist **alst, t_slist *new); t_slist *s_lstlast(t_slist *lst); void s_lstclear(t_slist **lst); void printf_slist(t_slist *start); /*process fonction*/ void ft_sa_sb(t_list **list, t_slist **process, char type, int set); void ft_ra_rb(t_list **list, t_slist **process, char type); t_list *ft_pa(t_list **list_a, t_list **list_b, t_slist **process); void ft_pb(t_list **list_a, t_list **list_b, t_slist **process); void ft_rra_rrb(t_list **list, t_slist **process, char type); /*sort fonction*/ t_list *best_b(t_list **b, t_list *start_b, t_list *a, int best_move); t_list *swap(t_list *a, t_list **b, t_slist **action, t_list *to_swap); t_list *make_list(int place, t_list *list, t_slist *action, char type); t_list *swap_to_a(t_list *a, t_list *b, t_list *start_b, t_slist *action); t_list *is_swap(t_list *list, t_slist **action, int *loop, t_list *best); int find_place_for_b(t_list *list, int index, int size_b); int find_nbr(int size_b, t_list *a, t_list *b, int index_b); t_list *swap_to_b(t_list *list, t_list *best, t_list *b, int loop); t_list *turn_list(t_list *a, t_slist *action); /*sort little*/ t_list *sort3(t_list *list, t_slist **action); void sort_little(t_list *list); t_list *sort5(t_list *list, t_slist **action, t_list *b); int is_sorted(t_list *list); t_list *end_sort3(t_list *list, t_slist **action); /*optimise list of action*/ t_slist *transform_list(t_slist *start, t_slist *start2, int r1, int r2); t_slist *transform_list2(t_slist *start, t_slist *start2, int r1, int r2); t_slist *sequence(t_slist *lst, t_slist *start1, t_slist *start2, int r1); t_slist *sequence2(t_slist *lst, t_slist *start1, t_slist *start2, int r1); void optimise_move(t_slist **action, t_slist *next_start, int r1); void optimise_move2(t_slist **action, t_slist *start2, int r1); void cut_lst(t_slist *lst); int ft_strcmp(const char *s1, t_slist *str); /*checker*/ int checker(t_slist *action, t_list **a); void do_move(t_list **lst, t_list **lst_b, t_slist *a, t_slist *delete); void do_move2(t_list **lst, t_list **lst_b, t_slist *a, t_slist **delete); t_slist *verify_list(t_slist *a); void big_slstclear(t_slist **lst); void printf_llist(t_list *start); #endif