Push_swap/Utils/push_swap.h
2022-01-19 04:01:40 +01:00

94 lines
4.0 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* push_swap.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/11/25 23:15:17 by apommier #+# #+# */
/* Updated: 2022/01/19 03:53:31 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PUSH_SWAP_H
# define PUSH_SWAP_H
# include <stdio.h>
# include <unistd.h>
# 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);
/*process fonction for checker*/
int sa_sb(t_list **list, t_slist **process, char type, int set);
int ra_rb(t_list **list, t_slist **process, char type);
int pa(t_list **list_a, t_list **list_b, t_slist **process);
int pb(t_list **list_a, t_list **list_b, t_slist **process);
int 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);
int do_move(t_list **lst, t_list **lst_b, t_slist *a, t_slist *delete);
int 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