diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-19 14:21:53 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-19 14:21:53 +0100 |
| commit | 6be6c78c8856b14c19a1958dfa3993cc0ced1b3f (patch) | |
| tree | 68871b12df49d623dda8cfcbda0da810045608e4 /src/checker | |
| parent | 2b4327b7a448228f67a054b4bdaa3f84b9db2164 (diff) | |
| download | push_swap-6be6c78c8856b14c19a1958dfa3993cc0ced1b3f.tar.gz push_swap-6be6c78c8856b14c19a1958dfa3993cc0ced1b3f.tar.bz2 push_swap-6be6c78c8856b14c19a1958dfa3993cc0ced1b3f.zip | |
Added stack operation visualizer, random stack generator, quick sort of some sort (WIP)
Diffstat (limited to 'src/checker')
| -rw-r--r-- | src/checker/check.c | 12 | ||||
| -rw-r--r-- | src/checker/checker.h | 10 | ||||
| -rw-r--r-- | src/checker/main.c | 34 |
3 files changed, 9 insertions, 47 deletions
diff --git a/src/checker/check.c b/src/checker/check.c index 125fdb7..bbe509f 100644 --- a/src/checker/check.c +++ b/src/checker/check.c @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:08 by cacharle #+# #+# */ -/* Updated: 2020/01/19 07:11:05 by cacharle ### ########.fr */ +/* Updated: 2020/01/19 09:02:08 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,8 +48,8 @@ static 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}}, - {"pa", FLAG_ARG_A_B, {.arg_2 = &stack_push_to}}, - {"pb", FLAG_ARG_B_A, {.arg_2 = &stack_push_to}}, + {"pa", FLAG_ARG_B_A, {.arg_2 = &stack_push_to}}, + {"pb", FLAG_ARG_A_B, {.arg_2 = &stack_push_to}}, {"ra", FLAG_ARG_A, {.arg_1 = &stack_rotate}}, {"rb", FLAG_ARG_B, {.arg_1 = &stack_rotate}}, {"rr", FLAG_ARG_A_B, {.arg_2 = &stack_rotate_2}}, @@ -89,9 +89,9 @@ t_bool stack_sorted(t_stack *stack) if (stack_length(stack) < 2) return (TRUE); - i = -1; - while (++i < stack->top) - if (stack->elements[i] > stack->elements[i + 1]) + i = stack->top + 1; + while (--i > 0) + if (stack->elements[i] > stack->elements[i - 1]) return (FALSE); return (TRUE); } diff --git a/src/checker/checker.h b/src/checker/checker.h index 877f669..808e408 100644 --- a/src/checker/checker.h +++ b/src/checker/checker.h @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:12 by cacharle #+# #+# */ -/* Updated: 2020/01/19 06:30:04 by cacharle ### ########.fr */ +/* Updated: 2020/01/19 09:09:29 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include <stdio.h> @@ -22,14 +22,6 @@ typedef enum { - STATUS_SUCCESS, - STATUS_FAILURE, - STATUS_ERROR, - STATUS_EOF, -} t_status; - -typedef enum -{ FLAG_ARG_A, FLAG_ARG_B, FLAG_ARG_A_B, diff --git a/src/checker/main.c b/src/checker/main.c index 3b4b313..a0a08b2 100644 --- a/src/checker/main.c +++ b/src/checker/main.c @@ -6,26 +6,12 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/18 10:16:14 by cacharle #+# #+# */ -/* Updated: 2020/01/19 08:37:03 by cacharle ### ########.fr */ +/* Updated: 2020/01/19 09:08:41 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "checker.h" -t_status has_dup(int *xs, size_t size) -{ - int *tmp; - t_status ret; - - if ((tmp = (int*)malloc(size * sizeof(int))) == 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; - free(tmp); - return (ret); -} - int main(int argc, char **argv) { t_status s; @@ -36,24 +22,8 @@ int main(int argc, char **argv) return (0); if ((a = stack_new(argc - 1)) == NULL) return (1); - while (--argc >= 1) - { - errno = 0; - stack_push(a, ft_strict_atoi(argv[argc])); - if (errno != 0) - { - ft_putendl_fd("Error", STDERR_FILENO); - stack_destroy(a); - return (1); - } - } - - if (has_dup(a->elements, stack_length(a)) != STATUS_SUCCESS) - { - ft_putendl_fd("Error", STDERR_FILENO); - stack_destroy(a); + if (parse(argc, argv, a) != STATUS_SUCCESS) return (1); - } if ((b = stack_new(stack_length(a))) == NULL) { stack_destroy(a); |
