aboutsummaryrefslogtreecommitdiff
path: root/src/checker
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-19 14:21:53 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-19 14:21:53 +0100
commit6be6c78c8856b14c19a1958dfa3993cc0ced1b3f (patch)
tree68871b12df49d623dda8cfcbda0da810045608e4 /src/checker
parent2b4327b7a448228f67a054b4bdaa3f84b9db2164 (diff)
downloadpush_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.c12
-rw-r--r--src/checker/checker.h10
-rw-r--r--src/checker/main.c34
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);