From 7a6533373ab9b0dd075f995c98dcf332a7876fac Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 10 Sep 2021 10:54:12 +0200 Subject: Updated to norm v3 --- src/checker/check.c | 37 +++++++++++++++++++++++-------------- src/checker/checker.h | 8 ++++---- src/checker/main.c | 13 ++++++------- src/common/common.h | 15 ++++++++------- src/common/parse.c | 19 +++++++++++-------- src/common/stack_core.c | 17 ++++++++++------- src/common/stack_helper.c | 10 +++++----- src/common/stack_op.c | 8 ++++---- src/push_swap/main.c | 8 +++++--- src/push_swap/sort.c | 24 ++++++++++++++++-------- 10 files changed, 92 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/src/checker/check.c b/src/checker/check.c index bbe509f..1459dc6 100644 --- a/src/checker/check.c +++ b/src/checker/check.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:08 by cacharle #+# #+# */ -/* Updated: 2020/01/19 09:02:08 by cacharle ### ########.fr */ +/* Updated: 2021/09/10 10:26:47 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,11 +16,17 @@ t_status check(t_stack *a, t_stack *b) { t_status read_status; - while ((read_status = read_action(a, b)) != STATUS_EOF) + read_status = read_action(a, b); + while (read_status != STATUS_EOF) + { + read_status = read_action(a, b); if (read_status == STATUS_ERROR) return (STATUS_ERROR); - return (stack_sorted(a) && stack_empty(b) ? - STATUS_SUCCESS : STATUS_FAILURE); + } + if (stack_sorted(a) && stack_empty(b)) + return (STATUS_SUCCESS); + else + return (STATUS_FAILURE); } t_status read_action(t_stack *a, t_stack *b) @@ -41,10 +47,13 @@ t_status read_action(t_stack *a, t_stack *b) buf[i++] = c; buf[i] = '\0'; } - return (ret == 0 ? STATUS_EOF : STATUS_ERROR); + if (ret == 0) + return (STATUS_EOF); + else + return (STATUS_ERROR); } -static t_action g_actions[] = { +static const t_action g_actions[] = { {"sa", FLAG_ARG_A, {.arg_1 = &stack_swap}}, {"sb", FLAG_ARG_B, {.arg_1 = &stack_swap}}, {"ss", FLAG_ARG_A_B, {.arg_2 = &stack_swap_2}}, @@ -58,7 +67,7 @@ static t_action g_actions[] = { {"rrr", FLAG_ARG_A_B, {.arg_2 = &stack_reverse_rotate_2}}, }; -#define ACTIONS_SIZE (sizeof(g_actions) / sizeof(t_action)) +static const int g_actions_size = sizeof(g_actions) / sizeof(t_action); t_status exec_action(char action_id[ACTION_ID_BUF_SIZE], t_stack *a, t_stack *b) @@ -68,24 +77,24 @@ t_status exec_action(char action_id[ACTION_ID_BUF_SIZE], i = 0; while (ft_strcmp(action_id, g_actions[i].id) != 0) i++; - if (i == ACTIONS_SIZE) + if (i == g_actions_size) return (STATUS_ERROR); if (g_actions[i].args == FLAG_ARG_A) - g_actions[i].func.arg_1(a); + g_actions[i].u_func.arg_1(a); else if (g_actions[i].args == FLAG_ARG_B) - g_actions[i].func.arg_1(b); + g_actions[i].u_func.arg_1(b); else if (g_actions[i].args == FLAG_ARG_A_B) - g_actions[i].func.arg_2(a, b); + g_actions[i].u_func.arg_2(a, b); else if (g_actions[i].args == FLAG_ARG_B_A) - g_actions[i].func.arg_2(b, a); + g_actions[i].u_func.arg_2(b, a); else return (STATUS_ERROR); return (STATUS_SUCCESS); } -t_bool stack_sorted(t_stack *stack) +t_bool stack_sorted(t_stack *stack) { - int i; + int i; if (stack_length(stack) < 2) return (TRUE); diff --git a/src/checker/checker.h b/src/checker/checker.h index f6d50ef..d049e21 100644 --- a/src/checker/checker.h +++ b/src/checker/checker.h @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:12 by cacharle #+# #+# */ -/* Updated: 2020/01/22 10:42:16 by cacharle ### ########.fr */ +/* Updated: 2021/09/10 10:26:37 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ # define ACTION_ID_BUF_SIZE 4 -typedef enum e_flag_arg +typedef enum e_flag_arg { FLAG_ARG_A, FLAG_ARG_B, @@ -30,7 +30,7 @@ typedef enum e_flag_arg typedef void (*t_func_arg_1)(t_stack *); typedef void (*t_func_arg_2)(t_stack *, t_stack *); -typedef struct s_action +typedef struct s_action { const char *id; t_flag_arg args; @@ -38,7 +38,7 @@ typedef struct s_action { t_func_arg_1 arg_1; t_func_arg_2 arg_2; - } func; + } u_func; } t_action; t_status check(t_stack *a, t_stack *b); diff --git a/src/checker/main.c b/src/checker/main.c index a0a08b2..ca38105 100644 --- a/src/checker/main.c +++ b/src/checker/main.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:14 by cacharle #+# #+# */ -/* Updated: 2020/01/19 09:08:41 by cacharle ### ########.fr */ +/* Updated: 2021/09/10 10:33:05 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,15 +20,14 @@ int main(int argc, char **argv) if (argc == 1) return (0); - if ((a = stack_new(argc - 1)) == NULL) + a = stack_new(argc - 1); + if (a == NULL) return (1); if (parse(argc, argv, a) != STATUS_SUCCESS) return (1); - if ((b = stack_new(stack_length(a))) == NULL) - { - stack_destroy(a); - return (1); - } + b = stack_new(stack_length(a)); + if (b == NULL) + return (stack_destroy(a)); s = check(a, b); if (s == STATUS_SUCCESS) ft_putendl("OK"); diff --git a/src/common/common.h b/src/common/common.h index 87c4655..c4efad8 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 11:20:54 by cacharle #+# #+# */ -/* Updated: 2020/01/22 10:25:47 by cacharle ### ########.fr */ +/* Updated: 2021/09/10 10:33:19 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,24 +14,25 @@ # define COMMON_H # include +# include # include "libft.h" -typedef enum +typedef enum e_status { - STATUS_SUCCESS, - STATUS_FAILURE, + STATUS_FAILURE = false, + STATUS_SUCCESS = true, STATUS_ERROR, STATUS_EOF, } t_status; -typedef enum +typedef enum e_stack_tag { STACK_NO_TAG, STACK_A, STACK_B } t_stack_tag; -typedef struct s_stack +typedef struct s_stack { int *elements; t_stack_tag tag; @@ -43,7 +44,7 @@ typedef struct s_stack */ t_stack *stack_new(int size); -void stack_destroy(t_stack *stack); +int stack_destroy(t_stack *stack); void stack_push(t_stack *stack, int n); void stack_pop(t_stack *stack); int stack_peek(t_stack *stack); diff --git a/src/common/parse.c b/src/common/parse.c index b0415cd..34f0749 100644 --- a/src/common/parse.c +++ b/src/common/parse.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 09:03:28 by cacharle #+# #+# */ -/* Updated: 2020/01/19 13:33:17 by cacharle ### ########.fr */ +/* Updated: 2021/09/09 10:02:15 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,19 +14,22 @@ static t_status has_dup(int *xs, size_t size) { - int *tmp; - t_status ret; + int *tmp; + t_bool is_set; - if ((tmp = (int*)malloc(size * sizeof(int))) == NULL) + tmp = (int *)malloc(size * sizeof(int)); + if (tmp == NULL) return (STATUS_ERROR); ft_memcpy(tmp, xs, size * sizeof(int)); - ret = ft_is_set(tmp, size, sizeof(int), &ft_compar_int) ? - STATUS_SUCCESS : STATUS_FAILURE; + is_set = ft_is_set(tmp, size, sizeof(int), &ft_compar_int); free(tmp); - return (ret); + if (is_set) + return (STATUS_SUCCESS); + else + return (STATUS_FAILURE); } -t_status parse(int argc, char **argv, t_stack *a) +t_status parse(int argc, char **argv, t_stack *a) { while (--argc >= 1) { diff --git a/src/common/stack_core.c b/src/common/stack_core.c index adab5b1..68f74ca 100644 --- a/src/common/stack_core.c +++ b/src/common/stack_core.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 06:37:45 by cacharle #+# #+# */ -/* Updated: 2020/01/22 10:23:18 by cacharle ### ########.fr */ +/* Updated: 2021/09/10 10:32:43 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,11 +14,13 @@ t_stack *stack_new(int size) { - t_stack *stack; + t_stack *stack; - if ((stack = (t_stack*)malloc(sizeof(t_stack))) == NULL) + stack = (t_stack *)malloc(sizeof(t_stack)); + if (stack == NULL) return (NULL); - if ((stack->elements = (int*)malloc(sizeof(int) * size)) == NULL) + stack->elements = (int *)malloc(sizeof(int) * size); + if (stack->elements == NULL) { free(stack); return (NULL); @@ -28,12 +30,13 @@ t_stack *stack_new(int size) return (stack); } -void stack_destroy(t_stack *stack) +int stack_destroy(t_stack *stack) { if (stack == NULL) - return ; + return (1); free(stack->elements); free(stack); + return (1); } void stack_push(t_stack *stack, int n) @@ -49,7 +52,7 @@ void stack_pop(t_stack *stack) stack->top--; } -int stack_peek(t_stack *stack) +int stack_peek(t_stack *stack) { if (stack_empty(stack)) return (0); diff --git a/src/common/stack_helper.c b/src/common/stack_helper.c index 968060f..fd6f0c5 100644 --- a/src/common/stack_helper.c +++ b/src/common/stack_helper.c @@ -6,25 +6,25 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 06:40:18 by cacharle #+# #+# */ -/* Updated: 2020/01/22 10:22:54 by cacharle ### ########.fr */ +/* Updated: 2021/09/09 09:53:59 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "common.h" -inline void stack_swap_2(t_stack *stack_a, t_stack *stack_b) +inline void stack_swap_2(t_stack *stack_a, t_stack *stack_b) { stack_swap(stack_a); stack_swap(stack_b); } -inline void stack_rotate_2(t_stack *stack_a, t_stack *stack_b) +inline void stack_rotate_2(t_stack *stack_a, t_stack *stack_b) { stack_rotate(stack_a); stack_rotate(stack_b); } -inline void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b) +inline void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b) { stack_reverse_rotate(stack_a); stack_reverse_rotate(stack_b); @@ -35,7 +35,7 @@ inline t_bool stack_empty(t_stack *stack) return (stack->top == -1); } -inline int stack_length(t_stack *stack) +inline int stack_length(t_stack *stack) { return (stack->top + 1); } diff --git a/src/common/stack_op.c b/src/common/stack_op.c index e1c095b..bb5a854 100644 --- a/src/common/stack_op.c +++ b/src/common/stack_op.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* stack.c :+: :+: :+: */ +/* stack_op.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 06:37:44 by cacharle #+# #+# */ -/* Updated: 2020/01/19 07:06:58 by cacharle ### ########.fr */ +/* Updated: 2021/09/09 09:53:03 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,7 +46,7 @@ void stack_rotate(t_stack *stack) return ; tmp = stack_peek(stack); ft_memmove(stack->elements + 1, stack->elements, - (stack_length(stack) - 1) * sizeof(int)); + (stack_length(stack) - 1) * sizeof(int)); stack->elements[0] = tmp; } @@ -58,6 +58,6 @@ void stack_reverse_rotate(t_stack *stack) return ; tmp = stack->elements[0]; ft_memmove(stack->elements, stack->elements + 1, - (stack_length(stack) - 1) * sizeof(int)); + (stack_length(stack) - 1) * sizeof(int)); stack->elements[stack->top] = tmp; } diff --git a/src/push_swap/main.c b/src/push_swap/main.c index fa34b35..0d25ace 100644 --- a/src/push_swap/main.c +++ b/src/push_swap/main.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 09:09:59 by cacharle #+# #+# */ -/* Updated: 2020/01/22 10:36:31 by cacharle ### ########.fr */ +/* Updated: 2021/09/09 10:02:47 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,11 +19,13 @@ int main(int argc, char **argv) if (argc == 1) return (0); - if ((a = stack_new(argc - 1)) == NULL) + a = stack_new(argc - 1); + if (a == NULL) return (1); if (parse(argc, argv, a) != STATUS_SUCCESS) return (1); - if ((b = stack_new(stack_length(a))) == NULL) + b = stack_new(stack_length(a)); + if (b == NULL) { stack_destroy(a); return (1); diff --git a/src/push_swap/sort.c b/src/push_swap/sort.c index b6113e9..588dc54 100644 --- a/src/push_swap/sort.c +++ b/src/push_swap/sort.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 09:12:02 by cacharle #+# #+# */ -/* Updated: 2020/07/21 11:43:00 by charles ### ########.fr */ +/* Updated: 2021/09/10 10:48:01 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,6 +47,14 @@ static int frame_length(t_stack *st, int frame_index) /* stack_swap_print(main); */ /* } */ +static int not_a_ternary(bool cond, int x, int y) +{ + if (cond) + return (x); + else + return (y); +} + /* ** main : stack to sort ** tmp : temporary stack used to store pivot > values @@ -70,7 +78,7 @@ static void push_swap_qsort_partition(t_stack *main, t_stack *tmp, int main_frame) { int pivot; - int hidden_count; + int hidden_count; int frame_len; pivot = stack_peek(main); @@ -79,8 +87,8 @@ static void push_swap_qsort_partition(t_stack *main, t_stack *tmp, frame_len = frame_length(main, main_frame) - 1; while (frame_len > 0) { - if (main->tag == STACK_A ? - (stack_peek(main) < pivot) : (stack_peek(main) > pivot)) + if (not_a_ternary(main->tag == STACK_A, + stack_peek(main) < pivot, stack_peek(main) > pivot)) stack_push_to_print(main, tmp); else { @@ -118,9 +126,9 @@ static void push_swap_qsort_rec(t_stack *main, t_stack *tmp, return ; if (frame_length(main, main_frame) == 2) { - if (main->tag == STACK_A ? - main->elements[main->top] > main->elements[main->top - 1] - : main->elements[main->top] < main->elements[main->top - 1]) + if (not_a_ternary(main->tag == STACK_A, + main->elements[main->top] > main->elements[main->top - 1], + main->elements[main->top] < main->elements[main->top - 1])) stack_swap_print(main); return ; } @@ -140,7 +148,7 @@ static void push_swap_qsort_rec(t_stack *main, t_stack *tmp, ** wrapper for push_swap_qsort_rec */ -void push_swap_qsort(t_stack *a, t_stack *b) +void push_swap_qsort(t_stack *a, t_stack *b) { push_swap_qsort_rec(a, b, 0, 0); } -- cgit