From bf0aa1545329bff7226ca09d80e5037d0cd03a22 Mon Sep 17 00:00:00 2001 From: whaffman Date: Thu, 7 Nov 2024 15:15:20 +0100 Subject: [PATCH] sort3 done --- Makefile | 6 +++--- inc/push_swap.h | 2 ++ libft/inc/ft_printf.h | 1 - libft/inc/libft.h | 8 -------- libft/src/ft_printf/print_pointer.c | 2 +- src/moves/swap.c | 2 ++ src/push_swap.c | 1 + src/sort/sort3.c | 22 +++++++++++----------- 8 files changed, 20 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 993f577..71482d8 100644 --- a/Makefile +++ b/Makefile @@ -18,10 +18,10 @@ LIBFT_INC_PATH = libft/inc LIBFT = libft/libft.a OBJ_PATH = obj -VPATH = src:src/util:src/moves +VPATH = src:src/util:src/moves:src/sort SOURCES = push_swap.c ft_lstat.c new_element.c push.c rotate.c reverse_rotate.c \ - swap.c + swap.c sort3.c OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) @@ -63,7 +63,7 @@ fclean: clean re: fclean all run: all - @$(eval ARG = $(shell shuf -i 0-100 -n 5)) + @$(eval ARG = $(shell shuf -i 0-100 -n 3)) ./$(NAME) $(ARG) debug: CFLAGS += -DDEBUG -g diff --git a/inc/push_swap.h b/inc/push_swap.h index 4902c78..765f694 100644 --- a/inc/push_swap.h +++ b/inc/push_swap.h @@ -26,6 +26,8 @@ t_list *ft_lstat(t_list *list, int n); void print_stack(const char *name, t_list *stack); void print_stacks(t_list *stack_a, t_list *stack_b); +int sort3(t_state *state); + void push(t_list **stack_1, t_list **stack_2); void rotate(t_list **stack); void reverse_rotate(t_list **stack); diff --git a/libft/inc/ft_printf.h b/libft/inc/ft_printf.h index 6e5740b..8801e4e 100644 --- a/libft/inc/ft_printf.h +++ b/libft/inc/ft_printf.h @@ -28,5 +28,4 @@ int print_pointer(va_list args); int parse_conversion(const char **format, va_list args); int parse_placeholder(const char **format, va_list args); - #endif diff --git a/libft/inc/libft.h b/libft/inc/libft.h index e859777..70a72be 100644 --- a/libft/inc/libft.h +++ b/libft/inc/libft.h @@ -20,14 +20,6 @@ typedef struct s_list struct s_list *next; } t_list; -typedef struct s_clist -{ - void *content; - struct s_clist *next; - struct s_clist *prev; -} t_clist; - - int ft_isalpha(int c); int ft_isdigit(int c); int ft_isalnum(int c); diff --git a/libft/src/ft_printf/print_pointer.c b/libft/src/ft_printf/print_pointer.c index aa25405..8c213d5 100644 --- a/libft/src/ft_printf/print_pointer.c +++ b/libft/src/ft_printf/print_pointer.c @@ -22,7 +22,7 @@ int print_pointer(va_list args) size_t len; char *str; int wrote; - + n = va_arg(args, unsigned long); if (!n) return (write(1, "(nil)", 5)); diff --git a/src/moves/swap.c b/src/moves/swap.c index d0c0d3d..1f62150 100644 --- a/src/moves/swap.c +++ b/src/moves/swap.c @@ -36,6 +36,8 @@ void swap(t_list **stack) { int *temp; + if (!*stack) + return ; temp = (*stack)->next->content; (*stack)->next->content = (*stack)->content; (*stack)->content = temp; diff --git a/src/push_swap.c b/src/push_swap.c index 218024f..070bc28 100644 --- a/src/push_swap.c +++ b/src/push_swap.c @@ -70,6 +70,7 @@ int main(int argc, char *argv[]) return (1); } } + sort3(state); print_state(state); return (0); } diff --git a/src/sort/sort3.c b/src/sort/sort3.c index 82e893c..0d918bc 100644 --- a/src/sort/sort3.c +++ b/src/sort/sort3.c @@ -20,29 +20,29 @@ // cab ra // cba sa rra -int sort3(t_list **stack) +int sort3(t_state *state) { - const int a = *((int *)(*stack)->content); - const int b = *((int *)(*stack)->next->content); - const int c = *((int *)(*stack)->next->next->content); + const int a = *((int *) state->a->content); + const int b = *((int *) state->a->next->content); + const int c = *((int *) state->a->next->next->content); - if (ft_lstsize(*stack) != 3) + if (ft_lstsize(state->a) != 3) return (0); if (a < b && b < c) return (1); else if (a < b && b > c) { - rra(); - if (a > b) - sa(); + rra(state); + if (a < c) + sa(state); } else if (a > c && b < c) - ra(); + ra(state); else { - sa(); + sa(state); if (b > c) - rra(); + rra(state); } return (1); }