diff --git a/inc/push_swap.h b/inc/push_swap.h index f84cf7d..4902c78 100644 --- a/inc/push_swap.h +++ b/inc/push_swap.h @@ -31,4 +31,15 @@ void rotate(t_list **stack); void reverse_rotate(t_list **stack); void swap(t_list **stack); +void pa(t_state *state); +void pb(t_state *state); +void sa(t_state *state); +void sb(t_state *state); +void ss(t_state *state); +void ra(t_state *state); +void rb(t_state *state); +void rr(t_state *state); +void rra(t_state *state); +void rrb(t_state *state); +void rrr(t_state *state); #endif diff --git a/src/moves/push.c b/src/moves/push.c index 0d661b6..7c3dae9 100644 --- a/src/moves/push.c +++ b/src/moves/push.c @@ -13,6 +13,18 @@ #include "libft.h" #include "push_swap.h" +void pa(t_state *state) +{ + push(&(state->a), &(state->b)); + ft_printf("pa\n"); +} + +void pb(t_state *state) +{ + push(&(state->b), &(state->a)); + ft_printf("pb\n"); +} + void push(t_list **stack_1, t_list **stack_2) { t_list *temp; diff --git a/src/moves/reverse_rotate.c b/src/moves/reverse_rotate.c index 787f065..87f978b 100644 --- a/src/moves/reverse_rotate.c +++ b/src/moves/reverse_rotate.c @@ -11,6 +11,26 @@ /* ************************************************************************** */ #include "libft.h" +#include "push_swap.h" + +void rra(t_state *state) +{ + reverse_rotate(&(state->a)); + ft_printf("rra\n"); +} + +void rrb(t_state *state) +{ + reverse_rotate(&(state->b)); + ft_printf("rrb\n"); +} + +void rrr(t_state *state) +{ + reverse_rotate(&(state->a)); + reverse_rotate(&(state->b)); + ft_printf("rrr\n"); +} void reverse_rotate(t_list **stack) { diff --git a/src/moves/rotate.c b/src/moves/rotate.c index f917b88..91dc1c3 100644 --- a/src/moves/rotate.c +++ b/src/moves/rotate.c @@ -11,6 +11,26 @@ /* ************************************************************************** */ #include "libft.h" +#include "push_swap.h" + +void ra(t_state *state) +{ + rotate(&(state->a)); + ft_printf("ra\n"); +} + +void rb(t_state *state) +{ + rotate(&(state->b)); + ft_printf("rb\n"); +} + +void rr(t_state *state) +{ + rotate(&(state->a)); + rotate(&(state->b)); + ft_printf("rr\n"); +} void rotate(t_list **stack) { diff --git a/src/moves/swap.c b/src/moves/swap.c index 6565777..d0c0d3d 100644 --- a/src/moves/swap.c +++ b/src/moves/swap.c @@ -11,6 +11,26 @@ /* ************************************************************************** */ #include "libft.h" +#include "push_swap.h" + +void sa(t_state *state) +{ + swap(&(state->a)); + ft_printf("sa\n"); +} + +void sb(t_state *state) +{ + swap(&(state->b)); + ft_printf("rb\n"); +} + +void ss(t_state *state) +{ + swap(&(state->a)); + swap(&(state->b)); + ft_printf("ss\n"); +} void swap(t_list **stack) { diff --git a/src/push_swap.c b/src/push_swap.c index c274435..218024f 100644 --- a/src/push_swap.c +++ b/src/push_swap.c @@ -6,7 +6,7 @@ /* By: whaffman +#+ +:+ +#++#++:++#++ */ /* +#+ +#+#+ +#++#+ +#+ \o/ */ /* Created: 2024/11/04 13:04:11 by whaffman #+#+# #+#+# #+# #+# | */ -/* Updated: 2024/11/07 13:33:13 by whaffman ### ### ### ### / \ */ +/* Updated: 2024/11/07 13:44:28 by whaffman ### ### ### ### / \ */ /* */ /* ************************************************************************** */ @@ -36,36 +36,40 @@ void print_stack(const char *name, t_list *stack) ft_printf("\n"); } -void print_stacks(t_list *stack_a, t_list *stack_b) +void print_state(t_state *state) { ft_printf("\n"); - print_stack("A", stack_a); - print_stack("B", stack_b); + print_stack("A", state->a); + print_stack("B", state->b); ft_printf("===================\n"); } +t_state *initialise_state(t_state **state) +{ + *state = malloc(sizeof (t_state)); + if (*state) + { + (*state)->a = NULL; + (*state)->b = NULL; + } + return (*state); +} + int main(int argc, char *argv[]) { - t_list *stack_a; - t_list *stack_b; + t_state *state; - stack_a = NULL; - stack_b = NULL; + state = NULL; + if (!initialise_state(&state)) + return (1); while (argc-- > 1) { - if (!new_element(&stack_a, argv[argc])) + if (!new_element(&(state->a), argv[argc])) { ft_putstr_fd("Error\n", 2); return (1); } } - push(&stack_a, &stack_b); - push(&stack_a, &stack_b); - push(&stack_a, &stack_b); - rotate(&stack_a); - reverse_rotate(&stack_b); - print_stacks(stack_a, stack_b); - swap(&stack_a); - print_stacks(stack_a, stack_b); + print_state(state); return (0); }