-
Notifications
You must be signed in to change notification settings - Fork 0
/
push_swap.h
84 lines (76 loc) · 2.78 KB
/
push_swap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* push_swap.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: ltombell <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/06 11:34:46 by ltombell #+# #+# */
/* Updated: 2022/12/09 16:57:40 by ltombell ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef PUSH_SWAP_H
# define PUSH_SWAP_H
# include <stdlib.h>
# include <unistd.h>
//struct
typedef struct s_lista
{
int nb;
struct s_lista *next;
struct s_lista *prev;
} t_lista;
typedef struct s_prg
{
int best_lis;
int max_count;
int min_nb_a;
int *mova;
int *movb;
} t_prg;
//utility liste
void ft_print_list(t_lista *lista);
void ft_add_element(t_lista **lista, int n);
int ft_list_length(t_lista *lista);
void ft_add_element_to_start(t_lista **lista, int nb);
void ft_remove_first(t_lista **lista);
t_lista *ft_list_last(t_lista *lst);
void ft_remove_last(t_lista **lista);
//utility varie
long ft_atoi(const char *nptr);
int ft_find_min(t_lista *lista);
int ft_absolute(int nb);
int ft_is_number(char c);
int ft_is_the_smallest(int n, t_lista *lista);
int ft_is_list_ordered(t_lista *lst);
//stack utils
void ft_populate_list(t_lista **lst, int argc, char **argv);
//lis utils
void ft_lis_finder(t_lista *lista, t_prg *prg);
//mosse
void sa_sb(t_lista *lista, char c);
void ra_rb(t_lista **lista, char c);
void rra_rrb(t_lista **lista, char c);
void pa_pb(t_lista **a, t_lista **b, char c);
void rab(t_lista **a, t_lista **b);
void rrab(t_lista **a, t_lista **b);
//solutori
void ft_pusha_in_b(t_lista **a, t_lista **b, t_prg *prg);
void ft_order_lis(t_lista **lista, int min);
void ft_pusha_in_a(t_lista **a, t_lista **b, t_prg *prg);
void ft_three_solver(t_lista **a);
void ft_push_in_b_five_n_solve(t_lista **a, t_lista **b);
//contatori
int ft_doing_ra_counter(t_lista *lista, int nb);
int ft_doing_rra_counter(t_lista *lista, int nb);
int ft_find_best_move_ra(t_lista **a, int target, t_prg *prg);
int ft_find_best_move(t_lista **b, t_prg *prg);
//array
int *ft_create_mova_array(t_lista **a, t_lista **b, t_prg *prg);
int *ft_create_movb_array(t_lista **lista);
//error check
int ft_checkinput_nbrs(int argc, char **argv);
//frees
void ft_free_list(t_lista *lst);
void ft_free_lists(t_lista *a, t_lista *b);
#endif