94 lines
4.0 KiB
C
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 18:45:38 by apommier ### ########.fr */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#ifndef PUSH_SWAP_H
|
|
# define PUSH_SWAP_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 max_int(t_list *start);
|
|
int push_swap(int nbrarg, char **list);
|
|
int is_nbr(int nbrarg, char **list, int i);
|
|
t_list *set_list(int nbrarg, char **list);
|
|
void lst_indexing(t_list *list);
|
|
int is_double(int nbrarg, char **list);
|
|
t_list *is_double_one(t_list *lst);
|
|
int max_and_sorted(t_list *start);
|
|
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);
|
|
|
|
#endif |