├── checker_Mac ├── tester.sh ├── Makefile ├── sort_three.c ├── push.c ├── rotate.c ├── swap.c ├── reverse_rotate.c ├── start.c ├── stack.c ├── split.c ├── cost.c ├── utils.c ├── push_swap.h ├── sort.c ├── main.c ├── do_moves.c ├── position.c ├── README.md ├── python_visualizer.py └── push_swap_test.sh /checker_Mac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abeph00/Push_Swap/HEAD/checker_Mac -------------------------------------------------------------------------------- /tester.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ $# -eq 0 ] 3 | then 4 | read -p "Total de pruebas a realizar: " TOTAL 5 | read -p "Cantidad de números por prueba: " lenlist 6 | elif [ $# -eq 1 ] 7 | then 8 | TOTAL=$1 9 | lenlist=$1 10 | elif [ $# -eq 2 ] 11 | then 12 | TOTAL=$1 13 | lenlist=$2 14 | else 15 | echo "Demasiados argumentos" 16 | exit 17 | fi 18 | 19 | var=0; 20 | echo "realizando pruebas..." 21 | 22 | for i in $(seq $TOTAL) 23 | do 24 | ARG=$(seq -$lenlist $lenlist | sort -R | head -n $lenlist | tr '\n' ' ') 25 | #echo $ARG 26 | ret=$(./push_swap $ARG | wc -l) 27 | ret2=$(./push_swap $ARG | ./checker_mac $ARG ) 28 | var=$(($ret + $var)) 29 | echo "$ret -----> $ret2" 30 | if [ $(($i % 10)) -eq 0 ] 31 | then 32 | echo "..." 33 | fi 34 | done 35 | 36 | echo Media de pasos necesarios: $(($var / $TOTAL)) 37 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | NAME = push_swap 3 | 4 | DEF_COLOR = \033[0;39m 5 | GRAY = \033[0;90m 6 | RED = \033[0;91m 7 | GREEN = \033[0;92m 8 | YELLOW = \033[0;93m 9 | BLUE = \033[0;94m 10 | MAGENTA = \033[0;95m 11 | CYAN = \033[0;96m 12 | WHITE = \033[0;97m 13 | BLACK = \033[0;99m 14 | ORANGE = \033[38;5;209m 15 | BROWN = \033[38;2;184;143;29m 16 | DARK_GRAY = \033[38;5;234m 17 | MID_GRAY = \033[38;5;245m 18 | DARK_GREEN = \033[38;2;75;179;82m 19 | DARK_YELLOW = \033[38;5;143m 20 | 21 | SRCS = main.c \ 22 | cost.c do_moves.c position.c \ 23 | push.c reverse_rotate.c \ 24 | split.c rotate.c sort_three.c sort.c \ 25 | stack.c start.c swap.c utils.c 26 | 27 | INCLUDE = ./push_swap.h 28 | 29 | CC = gcc 30 | RM = rm -f 31 | CFLAGS = -Wall -Wextra -Werror 32 | 33 | %.o: %.c 34 | @echo "${BLUE} ◎ $(YELLOW)Compiling ${RED}→ $(GREEN)$< $(DEF_COLOR)" 35 | @${CC} ${CFLAGS} -c $< -o $@ 36 | 37 | OBJS = ${SRCS:.c=.o} 38 | 39 | all: ${NAME} 40 | 41 | ${NAME}: ${OBJS} $(INCLUDE) 42 | @${CC} ${SRCS} -o ${NAME} 43 | @echo "\n$(GREEN) Created $(NAME) ✓$(DEF_COLOR)\n" 44 | 45 | clean: 46 | @${RM} ${OBJS} 47 | @echo "\n${GRAY} ◎ $(RED)All objects cleaned successfully ${GRAY}◎$(DEF_COLOR)\n" 48 | 49 | fclean: 50 | @${RM} ${OBJS} 51 | @${RM} ${NAME} 52 | @echo "\n${GRAY} ◎ $(RED)All objects and executable cleaned successfully${GRAY} ◎$(DEF_COLOR)\n" 53 | 54 | re: fclean all 55 | 56 | .PHONY: all clean fclean re -------------------------------------------------------------------------------- /sort_three.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* sort_three.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 13:50:31 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 19:37:55 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Returns the highest index in a stack. */ 16 | 17 | static int biggest_index(t_stack *stack) 18 | { 19 | int index; 20 | 21 | index = stack->index; 22 | while (stack) 23 | { 24 | if (stack->index > index) 25 | index = stack->index; 26 | stack = stack->next; 27 | } 28 | return (index); 29 | } 30 | 31 | /* Sorts a stack of 3 numbers in 2 or fewer moves. The sorting is done by index 32 | rather than value. */ 33 | 34 | void sort_three(t_stack **stack) 35 | { 36 | int biggest; 37 | 38 | if (is_sorted(*stack)) 39 | return ; 40 | biggest = biggest_index(*stack); 41 | if ((*stack)->index == biggest) 42 | do_ra(stack); 43 | else if ((*stack)->next->index == biggest) 44 | do_rra(stack); 45 | if ((*stack)->index > (*stack)->next->index) 46 | do_sa(stack); 47 | } 48 | -------------------------------------------------------------------------------- /push.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* push.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 19:48:11 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 22:35:46 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Pushes the top element of src stack to the top of dest stack. DISTINTO*/ 16 | /*tmp = *src; 17 | tmp->next = *dst; 18 | *dst = tmp; 19 | *src = (*src)->next;*/ 20 | static void push(t_stack **src, t_stack **dst) 21 | { 22 | t_stack *tmp; 23 | 24 | if (*src == NULL) 25 | return ; 26 | tmp = (*src)->next; 27 | (*src)->next = *dst; 28 | *dst = *src; 29 | *src = tmp; 30 | } 31 | 32 | /* Pushes the top element of stack b to the top of stack a. 33 | Prints "pa" to the standard output. */ 34 | 35 | void do_pa(t_stack **stack_a, t_stack **stack_b) 36 | { 37 | push(stack_b, stack_a); 38 | ft_putstr("pa\n"); 39 | } 40 | 41 | /* Pushes the top element of stack a to the top of stack b. 42 | Prints "pb" to the standard output. */ 43 | 44 | void do_pb(t_stack **stack_a, t_stack **stack_b) 45 | { 46 | push(stack_a, stack_b); 47 | ft_putstr("pb\n"); 48 | } 49 | -------------------------------------------------------------------------------- /rotate.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* rotate.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 16:42:41 by abertran #+# #+# */ 9 | /* Updated: 2023/03/09 12:58:17 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* The top element of the stack is sent to the bottom. */ 16 | 17 | static void rotate(t_stack **stack) 18 | { 19 | t_stack *tmp; 20 | t_stack *tail; 21 | 22 | tmp = *stack; 23 | *stack = (*stack)->next; 24 | tail = get_bottom(*stack); 25 | tmp->next = NULL; 26 | tail->next = tmp; 27 | } 28 | 29 | /* Sends the top element of stack a to the bottom. 30 | Prints "ra" to the standard output */ 31 | 32 | void do_ra(t_stack **stack_a) 33 | { 34 | rotate(stack_a); 35 | ft_putstr("ra\n"); 36 | } 37 | 38 | /* Sends the top element of stack b to the bottom. 39 | Prints "rb" to the standard output. */ 40 | 41 | void do_rb(t_stack **stack_b) 42 | { 43 | rotate(stack_b); 44 | ft_putstr("rb\n"); 45 | } 46 | 47 | /* Sends the top element of both stack a and stack b to the bottom 48 | of their stacks. Prints "rr" to the standard output. */ 49 | 50 | void do_rr(t_stack **stack_a, t_stack **stack_b) 51 | { 52 | rotate(stack_a); 53 | rotate(stack_b); 54 | ft_putstr("rr\n"); 55 | } 56 | -------------------------------------------------------------------------------- /swap.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* swap.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/22 16:13:16 by abertran #+# #+# */ 9 | /* Updated: 2023/03/08 20:35:05 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Swaps the top 2 elements of a stack. 16 | Does nothing if there is only one or no elements. */ 17 | 18 | static void swap(t_stack **stack) 19 | { 20 | t_stack *tmp; 21 | 22 | if (!*stack || (*stack)->next == NULL) 23 | return ; 24 | tmp = *stack; 25 | *stack = (*stack)->next; 26 | tmp->next = (*stack)->next; 27 | (*stack)->next = tmp; 28 | } 29 | 30 | /* Swaps the top 2 elements of stack a. Prints "sa" to the standard output. */ 31 | 32 | void do_sa(t_stack **stack_a) 33 | { 34 | swap(stack_a); 35 | ft_putstr("sa\n"); 36 | } 37 | 38 | /* Swaps the top 2 elements of stack b. Prints "sb" to the standard output. */ 39 | 40 | void do_sb(t_stack **stack_b) 41 | { 42 | swap(stack_b); 43 | ft_putstr("sb\n"); 44 | } 45 | 46 | /* Swaps the top 2 elements of stack a and the top 2 elements 47 | of stack b. Prints "ss" to the standard output. */ 48 | 49 | void do_ss(t_stack **stack_a, t_stack **stack_b) 50 | { 51 | swap(stack_a); 52 | swap(stack_b); 53 | ft_putstr("ss\n"); 54 | } 55 | -------------------------------------------------------------------------------- /reverse_rotate.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* reverse_rotate.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 18:24:22 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 18:44:03 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Brings the bottom element of a stack to the top. */ 16 | 17 | static void rev_rotate(t_stack **stack) 18 | { 19 | t_stack *tmp; 20 | t_stack *tail; 21 | t_stack *new_tail; 22 | 23 | tail = get_bottom(*stack); 24 | new_tail = before_bottom(*stack); 25 | tmp = *stack; 26 | *stack = tail; 27 | (*stack)->next = tmp; 28 | new_tail->next = NULL; 29 | } 30 | 31 | /* Brings the bottom element of stack a to the top. 32 | Prints "rra" to the standard output. */ 33 | 34 | void do_rra(t_stack **stack_a) 35 | { 36 | rev_rotate(stack_a); 37 | ft_putstr("rra\n"); 38 | } 39 | 40 | /* Brings the bottom element of stack b to the top. 41 | Prints "rrb" to the standard output. */ 42 | 43 | void do_rrb(t_stack **stack_b) 44 | { 45 | rev_rotate(stack_b); 46 | ft_putstr("rrb\n"); 47 | } 48 | 49 | /* Brings the bottom element of both stack a and stack be to the top of 50 | their stacks. Prints "rrr" to the standard output. */ 51 | 52 | void do_rrr(t_stack **stack_a, t_stack **stack_b) 53 | { 54 | rev_rotate(stack_a); 55 | rev_rotate(stack_b); 56 | ft_putstr("rrr\n"); 57 | } 58 | -------------------------------------------------------------------------------- /start.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* start.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/20 21:31:51 by abertran #+# #+# */ 9 | /* Updated: 2023/03/08 20:31:50 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Checks if the given arguments are all numbers, without duplicates. */ 16 | 17 | long input_is_correct(char *str) 18 | { 19 | int i; 20 | 21 | i = 0; 22 | if ((str[i] == '-' || str[i] == '+') && (ft_strlen(str) > 1)) 23 | i++; 24 | while (str[i] != '\0') 25 | { 26 | if (str[i] < '0' || str[i] > '9') 27 | return (0); 28 | i++; 29 | } 30 | return (1); 31 | } 32 | 33 | int is_duplicate(t_stack *column) 34 | { 35 | t_stack *tmp; 36 | t_stack *tmp2; 37 | 38 | tmp = column; 39 | while (tmp) 40 | { 41 | tmp2 = tmp->next; 42 | while (tmp2) 43 | { 44 | if (tmp->value == tmp2->value) 45 | return (1); 46 | tmp2 = tmp2->next; 47 | } 48 | tmp = tmp->next; 49 | } 50 | return (0); 51 | } 52 | 53 | /* Assigns an index to each value in stack a. 54 | * The indexes are assigned from highest (stack_size) to lowest (1). */ 55 | 56 | void get_index(t_stack *stack_a, int stack_size) 57 | { 58 | t_stack *ptr; 59 | t_stack *biggest; 60 | int value; 61 | 62 | while (--stack_size > 0) 63 | { 64 | ptr = stack_a; 65 | biggest = NULL; 66 | value = INT_MIN; 67 | while (ptr) 68 | { 69 | if (ptr->value == INT_MIN && ptr->index == 0) 70 | ptr->index = 1; 71 | if (ptr->value > value && ptr->index == 0) 72 | { 73 | value = ptr->value; 74 | biggest = ptr; 75 | ptr = ptr->next; 76 | } 77 | else 78 | ptr = ptr->next; 79 | } 80 | if (biggest != NULL) 81 | biggest->index = stack_size; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /stack.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* stack.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/20 22:10:18 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 18:34:18 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Creates a element(nodo) in the stack with the provided value. 16 | Returns the newly created stack element. */ 17 | 18 | t_stack *stack_new(int value) 19 | { 20 | t_stack *new; 21 | 22 | new = malloc(sizeof(t_stack)); 23 | if (!new) 24 | return (NULL); 25 | new->value = value; 26 | new->index = 0; 27 | new->pos = -1; 28 | new->target = -1; 29 | new->cost_a = -1; 30 | new->cost_b = -1; 31 | new->next = NULL; 32 | return (new); 33 | } 34 | 35 | /* Adds an element to the bottom of a stack. */ 36 | 37 | void stack_add(t_stack **stack, t_stack *new) 38 | { 39 | t_stack *bottom; 40 | 41 | if (!new) 42 | return ; 43 | if (!*stack) 44 | { 45 | *stack = new; 46 | return ; 47 | } 48 | bottom = get_bottom(*stack); 49 | bottom->next = new; 50 | } 51 | 52 | /* Returns the last element of the stack. */ 53 | 54 | t_stack *get_bottom(t_stack *stack) 55 | { 56 | while (stack && stack->next != NULL) 57 | stack = stack->next; 58 | return (stack); 59 | } 60 | 61 | /* Returns de element before the bottom element */ 62 | 63 | t_stack *before_bottom(t_stack *stack) 64 | { 65 | while (stack && stack->next->next != NULL) 66 | stack = stack->next; 67 | return (stack); 68 | } 69 | 70 | /* Returns the number of elements in a stack. */ 71 | 72 | int get_stack_size(t_stack *stack) 73 | { 74 | int size; 75 | 76 | size = 0; 77 | if (!stack) 78 | return (0); 79 | while (stack) 80 | { 81 | stack = stack->next; 82 | size++; 83 | } 84 | return (size); 85 | } 86 | -------------------------------------------------------------------------------- /split.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* split.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/03/07 19:05:59 by abertran #+# #+# */ 9 | /* Updated: 2023/03/08 20:31:56 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | size_t ft_strlen(const char *s) 16 | { 17 | size_t i; 18 | 19 | i = 0; 20 | while (s[i] != '\0') 21 | i++; 22 | return (i); 23 | } 24 | 25 | static unsigned int countwords(const char *s, char c) 26 | { 27 | unsigned int count; 28 | 29 | count = 0; 30 | while (*s) 31 | { 32 | while (*s && c == *s) 33 | s++; 34 | if (*s) 35 | count++; 36 | while (*s && *s != c) 37 | s++; 38 | } 39 | return (count); 40 | } 41 | 42 | static char *word_dup(const char *str, int start, int finish) 43 | { 44 | char *word; 45 | int i; 46 | 47 | i = 0; 48 | word = malloc((finish - start + 1) * sizeof(char)); 49 | if (!word) 50 | return (NULL); 51 | while (start < finish) 52 | word[i++] = str[start++]; 53 | word[i] = '\0'; 54 | return (word); 55 | } 56 | 57 | static char *ft_cpy(size_t i, char const *s, char c, char **split) 58 | { 59 | int index; 60 | size_t j; 61 | 62 | index = -1; 63 | j = 0; 64 | while (i <= ft_strlen(s)) 65 | { 66 | if (s[i] != c && index < 0) 67 | index = i; 68 | else if ((s[i] == c || i == ft_strlen(s)) && index >= 0) 69 | { 70 | split[j++] = word_dup(s, index, i); 71 | index = -1; 72 | } 73 | i++; 74 | } 75 | split[j] = 0; 76 | return (split[j]); 77 | } 78 | 79 | char **ft_split(char const *s, char c) 80 | { 81 | size_t i; 82 | char **split; 83 | 84 | if (!s) 85 | return (NULL); 86 | split = malloc((countwords(s, c) + 1) * sizeof(char *)); 87 | if (!split) 88 | return (NULL); 89 | i = 0; 90 | ft_cpy(i, s, c, split); 91 | return (split); 92 | } 93 | -------------------------------------------------------------------------------- /cost.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* cost.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 19:01:19 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 22:49:05 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Calculates the cost of moving each element of stack B into the correct 16 | position in stack A. 17 | cost_b represents the cost of getting the element to the top. 18 | cost_a represents the cost of getting to the right position in stack A. */ 19 | 20 | void cost(t_stack **stack_a, t_stack **stack_b) 21 | { 22 | t_stack *tmp_a; 23 | t_stack *tmp_b; 24 | int size_a; 25 | int size_b; 26 | 27 | tmp_a = *stack_a; 28 | tmp_b = *stack_b; 29 | size_a = get_stack_size(tmp_a); 30 | size_b = get_stack_size(tmp_b); 31 | while (tmp_b) 32 | { 33 | tmp_b->cost_b = tmp_b->pos; 34 | if (tmp_b->pos > size_b / 2) 35 | tmp_b->cost_b = (size_b - tmp_b->pos) * -1; 36 | tmp_b->cost_a = tmp_b->target; 37 | if (tmp_b->target > size_a / 2) 38 | tmp_b->cost_a = (size_a - tmp_b->target) * -1; 39 | tmp_b = tmp_b->next; 40 | } 41 | } 42 | 43 | /* Finds the element in stack B with the cheapest cost to move to stack A 44 | and moves it to the correct position in stack A. */ 45 | 46 | void cheapest_move(t_stack **stack_a, t_stack **stack_b) 47 | { 48 | t_stack *tmp; 49 | int cheapest; 50 | int cost_a; 51 | int cost_b; 52 | 53 | tmp = *stack_b; 54 | cheapest = INT_MAX; 55 | while (tmp) 56 | { 57 | if (abs(tmp->cost_a) + abs(tmp->cost_b) < cheapest) 58 | { 59 | cheapest = abs(tmp->cost_a) + abs(tmp->cost_b); 60 | cost_a = tmp->cost_a; 61 | cost_b = tmp->cost_b; 62 | } 63 | tmp = tmp->next; 64 | } 65 | do_move(stack_a, stack_b, cost_a, cost_b); 66 | } 67 | -------------------------------------------------------------------------------- /utils.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* utils.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/16 15:37:38 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 15:38:40 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Frees each element in a given stack and sets the stack pointer to NULL. 16 | ???? porque lo pasamos como doble puntero*/ 17 | 18 | void free_stack(t_stack **stack) 19 | 20 | { 21 | t_stack *tmp; 22 | 23 | if (!stack || !(*stack)) 24 | return ; 25 | while (*stack) 26 | { 27 | tmp = (*stack)->next; 28 | free(*stack); 29 | *stack = tmp; 30 | } 31 | *stack = NULL; 32 | } 33 | 34 | /* Writes "Error\n" to the standard output after freeing stack a and b. 35 | * Exits with standard error code 1. */ 36 | 37 | void error_exit(t_stack **stack_a, t_stack **stack_b) 38 | { 39 | if (stack_a == NULL || *stack_a != NULL) 40 | free_stack(stack_a); 41 | if (stack_b == NULL || *stack_b != NULL) 42 | free_stack(stack_b); 43 | write(2, "Error\n", 6); 44 | exit(1); 45 | } 46 | 47 | /* Converts an alphanumeric string of characters into a long integer. */ 48 | 49 | long int ft_atoi(const char *str) 50 | { 51 | long int nb; 52 | int isneg; 53 | int i; 54 | 55 | nb = 0; 56 | isneg = 1; 57 | i = 0; 58 | if (str[i] == '+') 59 | i++; 60 | else if (str[i] == '-') 61 | { 62 | isneg *= -1; 63 | i++; 64 | } 65 | while (str[i] >= '0' && str[i] <= '9') 66 | { 67 | nb = (nb * 10) + (str[i] - '0'); 68 | i++; 69 | } 70 | return (nb * isneg); 71 | } 72 | 73 | /* Prints a given string of characters to the standard output. */ 74 | 75 | void ft_putstr(char *str) 76 | { 77 | int i; 78 | 79 | i = 0; 80 | while (str[i]) 81 | { 82 | write(1, &str[i], 1); 83 | i++; 84 | } 85 | } 86 | 87 | /* Returns the absolute value of a number,ç 88 | which is the value without any sign consideration.*/ 89 | 90 | int abs(int nb) 91 | { 92 | if (nb < 0) 93 | return (nb * -1); 94 | return (nb); 95 | } 96 | -------------------------------------------------------------------------------- /push_swap.h: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* push_swap.h :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/15 18:14:42 by abertran #+# #+# */ 9 | /* Updated: 2023/03/09 12:57:13 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #ifndef PUSH_SWAP_H 14 | # define PUSH_SWAP_H 15 | 16 | # include 17 | # include 18 | # include 19 | # include 20 | # include 21 | 22 | typedef struct s_stack 23 | { 24 | int value; 25 | int index; 26 | int pos; 27 | int target; 28 | int cost_a; 29 | int cost_b; 30 | struct s_stack *next; 31 | } t_stack; 32 | 33 | long input_is_correct(char *av); 34 | void error_exit(t_stack **stack_a, t_stack **stack_b); 35 | void free_stack(t_stack **stack); 36 | long int ft_atoi(const char *str); 37 | void get_index(t_stack *stack_a, int stack_size); 38 | t_stack *stack_new(int value); 39 | void stack_add(t_stack **stack, t_stack *new); 40 | t_stack *get_bottom(t_stack *stack); 41 | int get_stack_size(t_stack *stack); 42 | int is_sorted(t_stack *stack); 43 | void sort_three(t_stack **stack); 44 | void do_sa(t_stack **stack_a); 45 | void do_sa(t_stack **stack_b); 46 | void do_ss(t_stack **stack_a, t_stack **stack_b); 47 | void ft_putstr(char *str); 48 | void do_ra(t_stack **stack_a); 49 | void do_rb(t_stack **stack_b); 50 | void do_rr(t_stack **stack_a, t_stack **stack_b); 51 | t_stack *before_bottom(t_stack *stack); 52 | void do_rra(t_stack **stack_a); 53 | void do_rrb(t_stack **stack_b); 54 | void do_rrr(t_stack **stack_a, t_stack **stack_b); 55 | void do_pa(t_stack **stack_a, t_stack **stack_b); 56 | void do_pb(t_stack **stack_a, t_stack **stack_b); 57 | void sort(t_stack **stack_a, t_stack **stack_b); 58 | void get_target_position(t_stack **stack_a, t_stack **stack_b); 59 | void cost(t_stack **stack_a, t_stack **stack_b); 60 | void cheapest_move(t_stack **stack_a, t_stack **stack_b); 61 | int abs(int nb); 62 | void do_move(t_stack **a, t_stack **b, int cost_a, int cost_b); 63 | int position_lowest_index(t_stack **stack); 64 | char **ft_split(char const *s, char c); 65 | void get_numbers(char *av, t_stack **stack_a); 66 | int is_duplicate(t_stack *column); 67 | size_t ft_strlen(const char *s); 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /sort.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* sort.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 19:01:19 by abertran #+# #+# */ 9 | /* Updated: 2023/03/10 12:06:38 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Pushes all the elements of stack a into stack b, except the three last. 16 | Smaller values first, then the larger values to help with efficiency.*/ 17 | 18 | static void push_init(t_stack **stack_a, t_stack **stack_b) 19 | { 20 | int stack_size; 21 | int pushes; 22 | int i; 23 | 24 | stack_size = get_stack_size(*stack_a); 25 | pushes = 0; 26 | i = 0; 27 | while (stack_size > 6 && i < stack_size && pushes < stack_size / 2) 28 | { 29 | if ((*stack_a)->index <= stack_size / 2) 30 | { 31 | do_pb(stack_a, stack_b); 32 | pushes++; 33 | } 34 | else 35 | do_ra(stack_a); 36 | i++; 37 | } 38 | while (stack_size - pushes > 3) 39 | { 40 | do_pb(stack_a, stack_b); 41 | pushes++; 42 | } 43 | } 44 | 45 | /* The stack a is almost sorted, rotate stack a until the lowest 46 | value is at the top. If it is in the bottom half of the stack, reverse 47 | rotate, otherwise rotate until it is at the top. */ 48 | 49 | static void sort_stack(t_stack **stack_a) 50 | { 51 | int lowest_p; 52 | int stack_size; 53 | 54 | stack_size = get_stack_size(*stack_a); 55 | lowest_p = position_lowest_index(stack_a); 56 | if (lowest_p > stack_size / 2) 57 | { 58 | while (lowest_p < stack_size) 59 | { 60 | do_rra(stack_a); 61 | lowest_p++; 62 | } 63 | } 64 | else 65 | { 66 | while (lowest_p > 0) 67 | { 68 | do_ra(stack_a); 69 | lowest_p--; 70 | } 71 | } 72 | } 73 | 74 | /* Sorting algorithm for a stack larger than 3. 75 | Push everything but 3 numbers to stack B. 76 | Sort the 3 numbers left in stack A. 77 | Calculate the most cost-effective move. 78 | Shift elements until stack A is in order. */ 79 | 80 | void sort(t_stack **stack_a, t_stack **stack_b) 81 | { 82 | push_init(stack_a, stack_b); 83 | sort_three(stack_a); 84 | while (*stack_b) 85 | { 86 | get_target_position(stack_a, stack_b); 87 | cost(stack_a, stack_b); 88 | cheapest_move(stack_a, stack_b); 89 | } 90 | if (!is_sorted(*stack_a)) 91 | sort_stack(stack_a); 92 | } 93 | -------------------------------------------------------------------------------- /main.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* main.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/15 18:08:38 by abertran #+# #+# */ 9 | /* Updated: 2023/03/08 20:42:12 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Checks if a stack is sorted. 16 | Returns 0 if the stack is not sorted, 1 if it is sorted. */ 17 | 18 | int is_sorted(t_stack *stack) 19 | { 20 | while (stack->next != NULL) 21 | { 22 | if (stack->value > stack->next->value) 23 | return (0); 24 | stack = stack->next; 25 | } 26 | return (1); 27 | } 28 | 29 | /* Chooses a sorting method depending on the number of values to be sorted. */ 30 | 31 | //Cuando sea dos y este ordenado? 32 | //si son 3 pero esta ordeenado? mas de 3 y ordenado? 33 | 34 | static void push_swap(t_stack **stack_a, t_stack **stack_b, int stack_size) 35 | { 36 | if (stack_size == 2 && !is_sorted(*stack_a)) 37 | do_sa(stack_a); 38 | else if (stack_size == 3) 39 | sort_three(stack_a); 40 | else if (stack_size > 3 && !is_sorted(*stack_a)) 41 | sort(stack_a, stack_b); 42 | } 43 | 44 | /*Fill the stack and check if the input is correct */ 45 | 46 | void get_numbers(char *av, t_stack **stack_a) 47 | { 48 | char **param; 49 | long int n; 50 | int i; 51 | 52 | param = ft_split(av, ' '); 53 | i = 0; 54 | while (param[i] != '\0') 55 | { 56 | if (input_is_correct(param[i])) 57 | { 58 | n = ft_atoi(param[i]); 59 | if (n > INT_MAX || n < INT_MIN) 60 | error_exit(stack_a, NULL); 61 | stack_add(stack_a, stack_new(n)); 62 | } 63 | else 64 | error_exit(NULL, NULL); 65 | free(param[i]); 66 | i++; 67 | } 68 | free(param); 69 | } 70 | 71 | /* Checks if the input is correct, in which case it initializes stacks a and b, 72 | assigns each value indexes and sorts the stacks. When sorting is done, frees 73 | the stacks and exits. 74 | system("leaks push_swap"); */ 75 | 76 | int main(int ac, char **av) 77 | { 78 | t_stack *stack_a; 79 | t_stack *stack_b; 80 | int stack_size; 81 | int i; 82 | 83 | i = 1; 84 | stack_b = NULL; 85 | stack_a = NULL; 86 | while (i < ac) 87 | { 88 | get_numbers(av[i], &stack_a); 89 | i++; 90 | } 91 | if (is_duplicate(stack_a)) 92 | error_exit(&stack_a, NULL); 93 | stack_size = get_stack_size(stack_a); 94 | get_index(stack_a, stack_size + 1); 95 | push_swap(&stack_a, &stack_b, stack_size); 96 | free_stack(&stack_a); 97 | free_stack(&stack_b); 98 | return (0); 99 | } 100 | -------------------------------------------------------------------------------- /do_moves.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* do_moves.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/03/01 19:01:19 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 22:49:05 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Reverse rotates both stacks until one of them is in position. 16 | The given cost is negative since both positions are in the bottom half 17 | of their stacks. The cost is increased as the stacks are 18 | rotated, when one reaches 0, the stack has been rotated as far as possible 19 | and the top position is correct. */ 20 | 21 | static void reverse_both(t_stack **a, t_stack **b, int *cost_a, int *cost_b) 22 | { 23 | while (*cost_a < 0 && *cost_b < 0) 24 | { 25 | (*cost_a)++; 26 | (*cost_b)++; 27 | do_rrr(a, b); 28 | } 29 | } 30 | 31 | /* Rotates both stacks until one of them is in position. 32 | The given cost is positive since both positions are in the top half 33 | of their stacks. The cost is decreased as the stacks are 34 | rotated, when one reaches 0, the stack has been rotated as far as possible 35 | and the top position is correct. */ 36 | 37 | static void rotate_both(t_stack **a, t_stack **b, int *cost_a, int *cost_b) 38 | { 39 | while (*cost_a > 0 && *cost_b > 0) 40 | { 41 | (*cost_a)--; 42 | (*cost_b)--; 43 | do_rr(a, b); 44 | } 45 | } 46 | 47 | /* Rotates stack A until it is in position. If the cost is negative, 48 | the stack will be reverse rotated, if it is positive, it will be 49 | rotated. */ 50 | 51 | static void rotate_a(t_stack **a, int *cost) 52 | { 53 | while (*cost) 54 | { 55 | if (*cost > 0) 56 | { 57 | do_ra(a); 58 | (*cost)--; 59 | } 60 | else if (*cost < 0) 61 | { 62 | do_rra(a); 63 | (*cost)++; 64 | } 65 | } 66 | } 67 | 68 | /* Rotates stack B until it is in position. If the cost is negative, 69 | the stack will be reverse rotated, if it is positive, it will be 70 | rotated. */ 71 | 72 | static void rotate_b(t_stack **b, int *cost) 73 | { 74 | while (*cost) 75 | { 76 | if (*cost > 0) 77 | { 78 | do_rb(b); 79 | (*cost)--; 80 | } 81 | else if (*cost < 0) 82 | { 83 | do_rrb(b); 84 | (*cost)++; 85 | } 86 | } 87 | } 88 | 89 | /* Chooses which move to make to get the B stack element to the correct 90 | position in stack A. 91 | If the costs of moving stack A and B into position match, 92 | both will be rotated or reverse rotated at the same time. 93 | They might also be rotated separately, before finally pushing the top B element 94 | to the top stack A. */ 95 | 96 | void do_move(t_stack **a, t_stack **b, int cost_a, int cost_b) 97 | { 98 | if (cost_a < 0 && cost_b < 0) 99 | reverse_both(a, b, &cost_a, &cost_b); 100 | else if (cost_a > 0 && cost_b > 0) 101 | rotate_both(a, b, &cost_a, &cost_b); 102 | rotate_a(a, &cost_a); 103 | rotate_b(b, &cost_b); 104 | do_pa(a, b); 105 | } 106 | -------------------------------------------------------------------------------- /position.c: -------------------------------------------------------------------------------- 1 | /* ************************************************************************** */ 2 | /* */ 3 | /* ::: :::::::: */ 4 | /* position.c :+: :+: :+: */ 5 | /* +:+ +:+ +:+ */ 6 | /* By: abertran +#+ +:+ +#+ */ 7 | /* +#+#+#+#+#+ +#+ */ 8 | /* Created: 2023/02/23 19:01:19 by abertran #+# #+# */ 9 | /* Updated: 2023/02/23 22:49:05 by abertran ### ########.fr */ 10 | /* */ 11 | /* ************************************************************************** */ 12 | 13 | #include "push_swap.h" 14 | 15 | /* Assigns a position to each element of a stack from top to bottom 16 | in ascending order. Is used to calculate the cost of moving a certain number to 17 | * a certain position*/ 18 | 19 | static void get_position(t_stack **stack) 20 | { 21 | t_stack *tmp; 22 | int i; 23 | 24 | tmp = *stack; 25 | i = 0; 26 | while (tmp) 27 | { 28 | tmp->pos = i; 29 | tmp = tmp->next; 30 | i++; 31 | } 32 | } 33 | 34 | /* Picks the best target position in stack A for the given index of 35 | an element in stack B. First checks if the index of the B element can 36 | be placed somewhere in between elements in stack A. 37 | If not, it finds the element with the smallest index in A and assigns 38 | that as the target position. */ 39 | //por que seguimos comprobando los numeros si se supone ya estan ordenados. 40 | //else if(tmp->index > target_i) 41 | // return (target); 42 | 43 | static int get_target(t_stack **stack_a, int index_b, int target_i, int target) 44 | { 45 | t_stack *tmp; 46 | 47 | tmp = *stack_a; 48 | while (tmp) 49 | { 50 | if (tmp->index > index_b && tmp->index < target_i) 51 | { 52 | target_i = tmp->index; 53 | target = tmp->pos; 54 | } 55 | tmp = tmp->next; 56 | } 57 | if (target_i != INT_MAX) 58 | return (target); 59 | tmp = *stack_a; 60 | while (tmp) 61 | { 62 | if (tmp->index < target_i) 63 | { 64 | target_i = tmp->index; 65 | target = tmp->pos; 66 | } 67 | tmp = tmp->next; 68 | } 69 | return (target); 70 | } 71 | 72 | /* Gets the current position of the element with the lowest index. */ 73 | 74 | int position_lowest_index(t_stack **stack) 75 | { 76 | t_stack *tmp; 77 | int lowest_i; 78 | int lowest_p; 79 | 80 | tmp = *stack; 81 | lowest_i = INT_MAX; 82 | get_position(stack); 83 | lowest_p = tmp->pos; 84 | while (tmp) 85 | { 86 | if (tmp->index < lowest_i) 87 | { 88 | lowest_i = tmp->index; 89 | lowest_p = tmp->pos; 90 | } 91 | tmp = tmp->next; 92 | } 93 | return (lowest_p); 94 | } 95 | 96 | /* Assigns a target position in stack A to each element. The target position 97 | is the spot the element in B needs to get to in order to be sorted. 98 | This position will be used to calculate the cost of moving each element 99 | to its target position. */ 100 | 101 | void get_target_position(t_stack **stack_a, t_stack **stack_b) 102 | { 103 | t_stack *tmp; 104 | int target; 105 | 106 | tmp = *stack_b; 107 | get_position(stack_a); 108 | get_position(stack_b); 109 | target = 0; 110 | while (tmp) 111 | { 112 | target = get_target(stack_a, tmp->index, INT_MAX, target); 113 | tmp->target = target; 114 | tmp = tmp->next; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | Push swap 4 |

5 | 6 |

7 | Development repo for 42 projects
8 | 9 | --- 10 | 11 | 12 | Es un proyecto de algoritmo simple de 42 en el que el objetivo sera mostrar por la salida estándar una serie de instrucciones para ordenar de menor a mayor en el stack A los números recibidos. El objetivo principal sera realizar esto en el menor numero posible de acciones. Sean meros sitios y negativos pero nunca duplicados. En el stack b no habra nada. Tendremos un numero máximo de acciones permitidas para cada caso: 13 | 14 | • Ordenar 3 valores: no más de 3 acciones. 15 | • Ordenar 5 valores: no más de 12 acciones. 16 | • Ordenar 100 valores (asignando puntos en función del numero de movimientos): 17 | • 5 puntos por menos de 700 acciones. 18 | • 4 puntos por menos de 900 acciones. 19 | • 3 puntos por menos de 1.100 acciones. 20 | • 2 puntos por menos de 1.300 acciones. 21 | • 1 puntos por menos de 1.500 acciones. 22 | • Ordenar 500 valores (asignando puntos en función del numero de movimientos): 23 | • 5 puntos por menos de 5.500 acciones. 24 | • 4 puntos por menos de 7.000 acciones. 25 | • 3 puntos por menos de 8.500 acciones. 26 | • 2 puntos por menos de 10.000 acciones. 27 | • 1 puntos por menos de 11.500 acciones. 28 | 29 | #### FUNCIONES POR ARCHIVO 30 | 31 | • COST: cost, cheapest_move. 32 | 33 | • DO_MOVE: reverse_both, rotate_both, rotate_a, rotate_b 34 | do_move. 35 | 36 | • MAIN: push_swap, get_numbers, main. 37 | 38 | • POSITION: get_position, get target, position_lowest_index 39 | get_target position. 40 | 41 | • PUSH: push, do_pa, do_pb. 42 | 43 | • ROTATE: rotate, do_ra, do_rb, do_rr. 44 | 45 | • REVERSE_ROTATE: rev_rotate, do_rra, do_rrb, do_rrr. 46 | 47 | • SORT THREE: biggest_index, sort_three. 48 | 49 | • SORT: push_init, sort_stack, sort. 50 | 51 | • SPLIT: ft_strlen, countwords, word_dup, ft_cpy, ft_split. 52 | 53 | • STACK: stack_new, stack_add, get_bottom, before_bottom , 54 | get_stack_size. 55 | 56 | • START: input_is_correct, is_duplicate, get_index. 57 | 58 | • SWAP: swap, do_sa, do_sb, do_ss. 59 | 60 | • UTILS: free_stack, error_exit, ft_atoi, ft_putstr, abs. 61 | 62 | #### MOVIMIENTOS A REALIZAR 63 | 64 | • sa : swap a - intercambia los dos primeros elementos encima del stack a. No hace 65 | • nada si hay uno o menos elementos. 66 | • sb : swap b - intercambia los dos primeros elementos encima del stack b. No hace 67 | • nada si hay uno o menos elementos. 68 | • ss : swap a y swap b a la vez. 69 | • pa : push a - toma el primer elemento del stack b y lo pone encima del stack a. 70 | No hace nada si b está vacío. 71 | • pb : push b - toma el primer elemento del stack a y lo pone encima del stack b. 72 | No hace nada si a está vacío. 73 | • ra : rotate a - desplaza hacia arriba todos los elementos del stack a una posición, 74 | de forma que el primer elemento se convierte en el último. 75 | • rb : rotate b - desplaza hacia arriba todos los elementos del stack b una posición, 76 | de forma que el primer elemento se convierte en el último. 77 | • rr : rotate a y rotate b - desplaza al mismo tiempo todos los elementos del stack 78 | a y del stack b una posición hacia arriba, de forma que el primer elemento se 79 | convierte en el último. 80 | • rra : reverse rotate a - desplaza hacia abajo todos los elementos del stack a una 81 | posición, de forma que el último elemento se convierte en el primero. 82 | • rrb : reverse rotate b - desplaza hacia abajo todos los elementos del stack b una 83 | posición, de forma que el último elemento se convierte en el primero. 84 | • rrr : reverse rotate a y reverse rotate b - desplaza al mismo tiempo todos 85 | los elementos del stack a y del stack b una posición hacia abajo, de forma que 86 | el último elemento se convierte en el primero. 87 | 88 | #### PLANTEAMIENTO Y ALGORITMO 89 | 90 | El proyecto esta realizado mediante listas enlazadas. En cada uno de los nodos guardaremos 6 valores que nos permitirán 91 | calcular cual es nuestro movimiento mas eficiente para ir ordenando nuestra pila. Este proyecto permite conseguir 92 | la máxima puntuación y realizar la corrección con menos movimientos que el tope para la puntuación máxima. 93 | Además nos permitirá admitir los argumentos como un string, mezclados o solo números como argumentos. 94 | 95 | #### TESTERS 96 | El tester.sh os generará la cantidad de números aleatorios que querais en el número de pruebas que necesiteis, 97 | y os dará una media de los movmientos realizados para resolverlo. 98 | Con python visualazer podreis ver de manera gráfica como va ordenando vuestra pila. 99 | Solo teneis que ejecutar cualquiera de los siguiente comandos 100 | python3 python_visualizer.py `ruby -e "puts (1..100).to_a.shuffle.join(' ')"` 101 | or python3 python_visualizer.py $(seq 1 100 | shuf | tr '\n' ' ') 102 | Para push swap tester tendremos que modificar un poquito el script y que el nombre del checker corresponda con el nuestro. 103 | 104 | #### VIDEOS 105 | 106 | Os dejo un pequeño video que espero ayude a la comprensión. 107 | 108 | 109 | https://user-images.githubusercontent.com/114256637/224307024-88827f99-d1e8-4b9d-bf63-34d110784871.mp4 110 | 111 | 112 | 113 | https://user-images.githubusercontent.com/114256637/224306906-7d0beeb2-3641-4d4b-b796-197a67c7b908.mp4 114 | 115 | -------------------------------------------------------------------------------- /python_visualizer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | 4 | from tkinter import * 5 | import sys 6 | import time 7 | import subprocess 8 | import os 9 | from math import sqrt 10 | 11 | 12 | """ 13 | __project__ = "push_swap visualizer" 14 | __author__ = "Emmanuel Ruaud" 15 | __email__ = "eruaud@student.le-101.fr" 16 | This python script was created to visualize your work with the PUSH_SWAP 17 | 42 Project. 18 | You must put this script in the same path or in a sibling path of your program 19 | Of course you need Python3 with the builtin Tkinter. 20 | You can install it with Brew. 21 | --> Brew install python3 22 | Execute the script with : 23 | --> python3 pyviz.py `ruby -e "puts (-200..200).to_a.shuffle.join(' ')"` 24 | You can change the PUSHS_PATH to get to the relative path of your push_swap 25 | You can decrease or increase the speed with the matching buttons. 26 | """ 27 | 28 | 29 | RELATIVE_PATH = r'push_swap' 30 | 31 | 32 | class PsGui: 33 | def __init__(self, master): 34 | ww = 600 35 | wh = 600 36 | self.i = 0 37 | self.speed = 0 38 | dirname = os.path.dirname(os.path.abspath(__file__)) 39 | PUSHS_PATH = os.path.join(dirname, RELATIVE_PATH) 40 | self.pile_a = [int(num) for num in sys.argv[1:]] 41 | self.first_pile = self.pile_a[:] 42 | self.pile_b = [] 43 | self.cmds = subprocess.check_output([PUSHS_PATH] + sys.argv[1:], stderr=subprocess.STDOUT, 44 | timeout=1200).splitlines() 45 | if len(self.pile_a) != 0: 46 | self.prespeed = 1 / len(self.pile_a) 47 | else: 48 | self.prespeed = 0 49 | self.master = master 50 | master.title("Push_swap viewer") 51 | self.mainframe = Frame(master) 52 | self.mainframe.pack(fill=BOTH) 53 | self.can = Canvas(self.mainframe, width=ww, height=wh, bg="black") 54 | self.can.pack(side=LEFT) 55 | self.toolframe = Frame(self.mainframe) 56 | self.toolframe.pack(side=RIGHT, fill=BOTH) 57 | self.butframe = Frame(self.toolframe) 58 | self.butframe.pack(side=TOP, fill=Y) 59 | self.PrevCtl = Button(self.butframe, text="<<", command=self.speed_down) 60 | self.PrevCtl.pack(side=LEFT) 61 | self.PauseCtl = Button(self.butframe, text=">", command=self.pause) 62 | self.PauseCtl.pack(side=LEFT) 63 | self.NextCtl = Button(self.butframe, text=">>", command=self.speed_up) 64 | self.NextCtl.pack(side=LEFT) 65 | self.ResetCtl = Button(self.butframe, text="R", command=self.reset) 66 | self.ResetCtl.pack(side=LEFT) 67 | self.listbox = Listbox(self.toolframe, bg='black', fg='light cyan', 68 | font=("monospace", 12), relief=FLAT) 69 | self.listbox.pack(fill=BOTH, expand=1) 70 | for cmd in self.cmds: 71 | self.listbox.insert(END, cmd) 72 | self.statusframe = Frame(master) 73 | self.statusframe.pack(side=BOTTOM, fill=X) 74 | self.speedmeter = Label(self.statusframe, 75 | text='frame rate = ' + str(self.speed), 76 | font=("monospace", 10)) 77 | self.speedmeter.pack(side=LEFT) 78 | self.totalcount = Label(self.statusframe, 79 | text='- operations = ' + str(len(self.cmds)), 80 | font=("monospace", 10)) 81 | self.totalcount.pack(side=LEFT) 82 | self.draw_rectangles() 83 | self.launch() 84 | 85 | def reset(self): 86 | self.speed = 0 87 | self.i = 0 88 | del self.pile_a[:] 89 | self.pile_a = self.first_pile[:] 90 | del self.pile_b[:] 91 | self.can.delete("all") 92 | self.draw_rectangles() 93 | self.listbox.see(0) 94 | self.PauseCtl.config(text='>') 95 | self.launch() 96 | 97 | def pause(self): 98 | if self.speed != 0: 99 | self.prespeed = self.speed 100 | self.speed = 0 101 | self.speedmeter.config(text='frame rate = 0') 102 | self.PauseCtl.config(text='>') 103 | else: 104 | self.speed = self.prespeed 105 | self.speedmeter.config(text='frame rate = ' \ 106 | + '{:.2e}'.format(self.speed)) 107 | self.PauseCtl.config(text='||') 108 | 109 | def speed_up(self): 110 | if self.speed == 0: 111 | self.PauseCtl.config(text='||') 112 | self.speed = self.prespeed 113 | self.speed = self.speed ** 2 114 | self.speedmeter.config(text='frame rate = ' \ 115 | + '{:.2e}'.format(self.speed)) 116 | 117 | def speed_down(self): 118 | self.speed = sqrt(self.speed) 119 | self.speedmeter.config(text='frame rate = ' \ 120 | + '{:.2e}'.format(self.speed)) 121 | 122 | def launch_cmds(self, cmd): 123 | if cmd == b'sa' and len(self.pile_a) >= 2: 124 | self.pile_a[0], self.pile_a[1] = self.pile_a[1], self.pile_a[0] 125 | if cmd == b'sb' and len(self.pile_b) >= 2: 126 | self.pile_b[0], self.pile_b[1] = self.pile_b[1], self.pile_b[0] 127 | if cmd == b'ss': 128 | if (len(self.pile_a) >= 2): 129 | self.pile_a[0], self.pile_a[1] = self.pile_a[1], self.pile_a[0] 130 | if (len(self.pile_b) >= 2): 131 | self.pile_b[0], self.pile_b[1] = self.pile_b[1], self.pile_b[0] 132 | if cmd == b'ra' and len(self.pile_a) >= 2: 133 | self.pile_a.append(self.pile_a[0]) 134 | del self.pile_a[0] 135 | if cmd == b'rb' and len(self.pile_b) >= 2: 136 | self.pile_b.append(self.pile_b[0]) 137 | del self.pile_b[0] 138 | if cmd == b'rr': 139 | if (len(self.pile_a) >= 2): 140 | self.pile_a.append(self.pile_a[0]) 141 | del self.pile_a[0] 142 | if (len(self.pile_b) >= 2): 143 | self.pile_b.append(self.pile_b[0]) 144 | del self.pile_b[0] 145 | if cmd == b'rra' and len(self.pile_a) >= 2: 146 | self.pile_a = [self.pile_a[-1]] + self.pile_a 147 | del self.pile_a[-1] 148 | if cmd == b'rrb' and len(self.pile_b) >= 2: 149 | self.pile_b = [self.pile_b[-1]] + self.pile_b 150 | del self.pile_b[-1] 151 | if cmd == b'rrr': 152 | if (len(self.pile_a) >= 2): 153 | self.pile_a = [self.pile_a[-1]] + self.pile_a 154 | del self.pile_a[-1] 155 | if (len(self.pile_b) >= 2): 156 | self.pile_b = [self.pile_b[-1]] + self.pile_b 157 | del self.pile_b[-1] 158 | if cmd == b'pa' and len(self.pile_b) >= 1: 159 | self.pile_a = [self.pile_b[0]] + self.pile_a 160 | del self.pile_b[0] 161 | if cmd == b'pb' and len(self.pile_a) >= 1: 162 | self.pile_b = [self.pile_a[0]] + self.pile_b 163 | del self.pile_a[0] 164 | return self.pile_a, self.pile_b 165 | 166 | def set_color(self, index): 167 | col = '#%02x%02x%02x' % (int(255 * (index - 0.3) * (index > 0.3)), 168 | int(255 * index 169 | - ((510 * (index - 0.6)) * (index > 0.6))), 170 | int((255 - 510 * index) * (index < 0.5))) 171 | return col 172 | 173 | def draw_rectangles(self): 174 | vi = 0 175 | ww = 600 176 | wh = 600 177 | hw = ww / 2 178 | hm = len(self.pile_a) + len(self.pile_b) 179 | mx, mn = (0, 0) 180 | if (hm != 0): 181 | mx = max(self.pile_a + self.pile_b) 182 | mn = min(self.pile_a + self.pile_b) 183 | rects = [] 184 | if len(self.pile_a) > 0: 185 | a_val = [(num - mn) / (mx - mn) for num in self.pile_a] 186 | for vala in a_val: 187 | rects.append(self.can.create_rectangle(0, vi, 188 | 10 + vala * (hw - 100), vi + wh / hm, 189 | fill=self.set_color(vala), outline="")) 190 | vi += wh / hm 191 | vi = 0 192 | if len(self.pile_b) > 0: 193 | b_val = [(num - mn) / (mx - mn) for num in self.pile_b] 194 | for valb in b_val: 195 | rects.append(self.can.create_rectangle(hw, vi, 196 | hw + 10 + valb * (hw - 100), vi + wh / hm, 197 | fill=self.set_color(valb), outline="")) 198 | vi += wh / hm 199 | 200 | def launch(self): 201 | while self.i < len(self.cmds): 202 | if self.speed != 0: 203 | while self.i < len(self.cmds): 204 | self.listbox.activate(self.i) 205 | self.can.delete("all") 206 | self.pile_a, self.pile_b = \ 207 | self.launch_cmds(self.cmds[self.i]) 208 | self.draw_rectangles() 209 | time.sleep(2 * self.speed) 210 | self.can.update() 211 | self.listbox.yview_scroll(1, 'units') 212 | self.i += 1 213 | if self.speed == 0: 214 | break 215 | time.sleep(0.25) 216 | self.can.update() 217 | self.PauseCtl.config(text='>') 218 | 219 | 220 | root = Tk() 221 | root.resizable(width=False, height=False) 222 | gui = PsGui(root) 223 | root.mainloop() 224 | -------------------------------------------------------------------------------- /push_swap_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # -=-=-=-=- CLRS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 4 | 5 | DEF_COLOR='\033[0;39m' 6 | BLACK='\033[0;30m' 7 | RED='\033[1;91m' 8 | GREEN='\033[1;92m' 9 | YELLOW='\033[0;93m' 10 | BLUE='\033[0;94m' 11 | MAGENTA='\033[0;95m' 12 | CYAN='\033[0;96m' 13 | GRAY='\033[0;90m' 14 | WHITE='\033[0;97m' 15 | 16 | printf ${BLUE}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 17 | printf ${YELLOW}"\n\t\tTEST CREATED BY: "${DEF_COLOR}; 18 | printf ${CYAN}"GEMARTIN\t\n"${DEF_COLOR}; 19 | printf ${BLUE}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 20 | 21 | rm -rf traces.txt 22 | rm -rf 0 23 | 24 | # -=-=-=-=- Control errors -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 25 | 26 | FILE=$PWD/push_swap 27 | FICHERO=test_check.txt 28 | 29 | if [ -f "$FILE" ]; then 30 | echo -n 31 | else 32 | printf "${RED}NO EXIST PUSH_SWAP PROGRAM ${DEF_COLOR}\n"; 33 | exit 0 34 | fi 35 | 36 | if [ $1 == -v ];then 37 | if [ -z "$2" ];then 38 | n=500; 39 | else 40 | n=$2; 41 | fi 42 | ARG=$(ruby -e "puts (0..($n)).to_a.shuffle.join(' ')"); ./push_swap $ARG | ./pro_checker $ARG 43 | exit 0 44 | fi 45 | 46 | if [ $1 == -v2 ];then 47 | ARG=$2; ./push_swap $ARG | ./pro_checker $ARG 48 | exit 0 49 | fi 50 | 51 | if [ -z "$1" ] || [ $1 != -b ]; then 52 | printf ${BLUE}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 53 | printf ${BLUE}"\n\t\t\tCONTROL ERRORS\t\n"${DEF_COLOR}; 54 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 55 | 56 | ARG="a" 57 | ./push_swap $ARG > /dev/null 2> test_check.txt 58 | if [ -s "$FICHERO" ];then 59 | while IFS= read -r line 60 | do 61 | if [[ $line == "Error" ]]; then 62 | printf "${GREEN}1.[OK] ${DEF_COLOR}\n"; 63 | else 64 | printf "${RED}1.[KO] ${DEF_COLOR}\n"; 65 | break 66 | fi 67 | done < test_check.txt 68 | else 69 | printf "${RED}1.[KO] ${DEF_COLOR}\n"; 70 | fi 71 | 72 | rm -rf test_check.txt 73 | 74 | ARG="111a11" 75 | ./push_swap $ARG > /dev/null 2> test_check.txt 76 | if [ -s "$FICHERO" ];then 77 | while IFS= read -r line 78 | do 79 | if [[ $line == "Error" ]]; then 80 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 81 | else 82 | printf "${RED}2.[KO] ${DEF_COLOR}\n"; 83 | break 84 | fi 85 | done < test_check.txt 86 | else 87 | printf "${RED}2.[KO] ${DEF_COLOR}\n"; 88 | fi 89 | 90 | rm -rf test_check.txt 91 | 92 | ARG="hello world" 93 | ./push_swap $ARG > /dev/null 2> test_check.txt 94 | if [ -s "$FICHERO" ];then 95 | while IFS= read -r line 96 | do 97 | if [[ $line == "Error" ]]; then 98 | printf "${GREEN}3.[OK] ${DEF_COLOR}\n"; 99 | else 100 | printf "${RED}3.[KO] ${DEF_COLOR}\n"; 101 | break 102 | fi 103 | done < test_check.txt 104 | else 105 | printf "${RED}3.[KO] ${DEF_COLOR}\n"; 106 | fi 107 | 108 | rm -rf test_check.txt 109 | 110 | ./push_swap "" > /dev/null 2> test_check.txt 111 | if [ -s "$FICHERO" ];then 112 | while IFS= read -r line 113 | do 114 | if [[ $line == "Error" ]]; then 115 | printf "${GREEN}4.[OK] ${DEF_COLOR}\n"; 116 | else 117 | printf "${RED}4.[KO] ${DEF_COLOR}\n"; 118 | break 119 | fi 120 | done < test_check.txt 121 | else 122 | printf "${RED}4.[KO] ${DEF_COLOR}\n"; 123 | fi 124 | 125 | rm -rf test_check.txt 126 | 127 | ARG="0 0" 128 | ./push_swap $ARG > /dev/null 2> test_check.txt 129 | if [ -s "$FICHERO" ];then 130 | while IFS= read -r line 131 | do 132 | if [[ $line == "Error" ]]; then 133 | printf "${GREEN}5.[OK] ${DEF_COLOR}\n"; 134 | else 135 | printf "${RED}5.[KO] ${DEF_COLOR}\n"; 136 | break 137 | fi 138 | done < test_check.txt 139 | else 140 | printf "${RED}5.[KO] ${DEF_COLOR}\n"; 141 | fi 142 | 143 | rm -rf test_check.txt 144 | 145 | ARG="-01 -001" 146 | ./push_swap $ARG > /dev/null 2> test_check.txt 147 | if [ -s "$FICHERO" ];then 148 | while IFS= read -r line 149 | do 150 | if [[ $line == "Error" ]]; then 151 | printf "${GREEN}6.[OK] ${DEF_COLOR}\n"; 152 | else 153 | printf "${RED}6.[KO] ${DEF_COLOR}\n"; 154 | break 155 | fi 156 | done < test_check.txt 157 | else 158 | printf "${RED}6.[KO] ${DEF_COLOR}\n"; 159 | fi 160 | 161 | rm -rf test_check.txt 162 | 163 | ARG="111-1 2 -3" 164 | ./push_swap $ARG > /dev/null 2> test_check.txt 165 | if [ -s "$FICHERO" ];then 166 | while IFS= read -r line 167 | do 168 | if [[ $line == "Error" ]]; then 169 | printf "${GREEN}7.[OK] ${DEF_COLOR}\n"; 170 | else 171 | printf "${RED}7.[KO] ${DEF_COLOR}\n"; 172 | break 173 | fi 174 | done < test_check.txt 175 | else 176 | printf "${RED}7.[KO] ${DEF_COLOR}\n"; 177 | fi 178 | 179 | rm -rf test_check.txt 180 | 181 | ARG="-3 -2 -2" 182 | ./push_swap $ARG > /dev/null 2> test_check.txt 183 | if [ -s "$FICHERO" ];then 184 | while IFS= read -r line 185 | do 186 | if [[ $line == "Error" ]]; then 187 | printf "${GREEN}8.[OK] ${DEF_COLOR}\n"; 188 | else 189 | printf "${RED}8.[KO] ${DEF_COLOR}\n"; 190 | break 191 | fi 192 | done < test_check.txt 193 | else 194 | printf "${RED}8.[KO] ${DEF_COLOR}\n"; 195 | fi 196 | 197 | rm -rf test_check.txt 198 | 199 | ARG="\n" 200 | ./push_swap $ARG > /dev/null 2> test_check.txt 201 | if [ -s "$FICHERO" ];then 202 | while IFS= read -r line 203 | do 204 | if [[ $line == "Error" ]]; then 205 | printf "${GREEN}9.[OK] ${DEF_COLOR}\n"; 206 | else 207 | printf "${RED}9.[KO] ${DEF_COLOR}\n"; 208 | break 209 | fi 210 | done < test_check.txt 211 | else 212 | printf "${RED}9.[KO] ${DEF_COLOR}\n"; 213 | fi 214 | 215 | rm -rf test_check.txt 216 | 217 | ARG="-2147483649" 218 | ./push_swap $ARG > /dev/null 2> test_check.txt 219 | if [ -s "$FICHERO" ];then 220 | while IFS= read -r line 221 | do 222 | if [[ $line == "Error" ]]; then 223 | printf "${GREEN}10.[OK] ${DEF_COLOR}\n"; 224 | else 225 | printf "${RED}10.[KO] ${DEF_COLOR}\n"; 226 | break 227 | fi 228 | done < test_check.txt 229 | else 230 | printf "${RED}10.[KO] ${DEF_COLOR}\n"; 231 | fi 232 | 233 | rm -rf test_check.txt 234 | 235 | ARG="-2147483650" 236 | ./push_swap $ARG > /dev/null 2> test_check.txt 237 | if [ -s "$FICHERO" ];then 238 | while IFS= read -r line 239 | do 240 | if [[ $line == "Error" ]]; then 241 | printf "${GREEN}11.[OK] ${DEF_COLOR}\n"; 242 | else 243 | printf "${RED}11.[KO] ${DEF_COLOR}\n"; 244 | break 245 | fi 246 | done < test_check.txt 247 | else 248 | printf "${RED}11.[KO] ${DEF_COLOR}\n"; 249 | fi 250 | 251 | rm -rf test_check.txt 252 | 253 | ARG="2147483648" 254 | ./push_swap $ARG > /dev/null 2> test_check.txt 255 | if [ -s "$FICHERO" ];then 256 | while IFS= read -r line 257 | do 258 | if [[ $line == "Error" ]]; then 259 | printf "${GREEN}12.[OK] ${DEF_COLOR}\n"; 260 | else 261 | printf "${RED}12.[KO] ${DEF_COLOR}\n"; 262 | break 263 | fi 264 | done < test_check.txt 265 | else 266 | printf "${RED}12.[KO] ${DEF_COLOR}\n"; 267 | fi 268 | 269 | rm -rf test_check.txt 270 | 271 | ARG="8 008 12" 272 | ./push_swap $ARG > /dev/null 2> test_check.txt 273 | if [ -s "$FICHERO" ];then 274 | while IFS= read -r line 275 | do 276 | if [[ $line == "Error" ]]; then 277 | printf "${GREEN}13.[OK] ${DEF_COLOR}\n"; 278 | else 279 | printf "${RED}13.[KO] ${DEF_COLOR}\n"; 280 | break 281 | fi 282 | done < test_check.txt 283 | else 284 | printf "${RED}13.[KO] ${DEF_COLOR}\n"; 285 | fi 286 | 287 | rm -rf test_check.txt 288 | 289 | ARG="10 -1 -2 -3 -4 -5 -6 90 99 10" 290 | ./push_swap $ARG > /dev/null 2> test_check.txt 291 | if [ -s "$FICHERO" ];then 292 | while IFS= read -r line 293 | do 294 | if [[ $line == "Error" ]]; then 295 | printf "${GREEN}14.[OK] ${DEF_COLOR}\n"; 296 | else 297 | printf "${RED}14.[KO] ${DEF_COLOR}\n"; 298 | break 299 | fi 300 | done < test_check.txt 301 | else 302 | printf "${RED}14.[KO] ${DEF_COLOR}\n"; 303 | fi 304 | 305 | rm -rf test_check.txt 306 | 307 | ARG="1 +1 -1" 308 | ./push_swap $ARG > /dev/null 2> test_check.txt 309 | if [ -s "$FICHERO" ];then 310 | while IFS= read -r line 311 | do 312 | if [[ $line == "Error" ]]; then 313 | printf "${GREEN}15.[OK] ${DEF_COLOR}\n"; 314 | else 315 | printf "${RED}15.[KO] ${DEF_COLOR}\n"; 316 | break 317 | fi 318 | done < test_check.txt 319 | else 320 | printf "${RED}15.[KO] ${DEF_COLOR}\n"; 321 | fi 322 | 323 | rm -rf test_check.txt 324 | 325 | ARG="3333-3333 1 4" 326 | ./push_swap $ARG > /dev/null 2> test_check.txt 327 | if [ -s "$FICHERO" ];then 328 | while IFS= read -r line 329 | do 330 | if [[ $line == "Error" ]]; then 331 | printf "${GREEN}16.[OK] ${DEF_COLOR}\n"; 332 | else 333 | printf "${RED}16.[KO] ${DEF_COLOR}\n"; 334 | break 335 | fi 336 | done < test_check.txt 337 | else 338 | printf "${RED}16.[KO] ${DEF_COLOR}\n"; 339 | fi 340 | 341 | rm -rf test_check.txt 342 | 343 | ARG="111a111 -4 3" 344 | ./push_swap $ARG > /dev/null 2> test_check.txt 345 | if [ -s "$FICHERO" ];then 346 | while IFS= read -r line 347 | do 348 | if [[ $line == "Error" ]]; then 349 | printf "${GREEN}17.[OK] ${DEF_COLOR}\n"; 350 | else 351 | printf "${RED}17.[KO] ${DEF_COLOR}\n"; 352 | break 353 | fi 354 | done < test_check.txt 355 | else 356 | printf "${RED}17.[KO] ${DEF_COLOR}\n"; 357 | fi 358 | 359 | rm -rf test_check.txt 360 | 361 | ARG="111111 -4 3 03" 362 | ./push_swap $ARG > /dev/null 2> test_check.txt 363 | if [ -s "$FICHERO" ];then 364 | while IFS= read -r line 365 | do 366 | if [[ $line == "Error" ]]; then 367 | printf "${GREEN}18.[OK] ${DEF_COLOR}\n"; 368 | else 369 | printf "${RED}18.[KO] ${DEF_COLOR}\n"; 370 | break 371 | fi 372 | done < test_check.txt 373 | else 374 | printf "${RED}18.[KO] ${DEF_COLOR}\n"; 375 | fi 376 | 377 | rm -rf test_check.txt 378 | 379 | ARG="2147483649" 380 | ./push_swap $ARG > /dev/null 2> test_check.txt 381 | if [ -s "$FICHERO" ];then 382 | while IFS= read -r line 383 | do 384 | if [[ $line == "Error" ]]; then 385 | printf "${GREEN}19.[OK] ${DEF_COLOR}\n"; 386 | else 387 | printf "${RED}19.[KO] ${DEF_COLOR}\n"; 388 | break 389 | fi 390 | done < test_check.txt 391 | else 392 | printf "${RED}19.[KO] ${DEF_COLOR}\n"; 393 | fi 394 | 395 | rm -rf test_check.txt 396 | 397 | ARG="2147483647+1" 398 | ./push_swap $ARG > /dev/null 2> test_check.txt 399 | if [ -s "$FICHERO" ];then 400 | while IFS= read -r line 401 | do 402 | if [[ $line == "Error" ]]; then 403 | printf "${GREEN}20.[OK] ${DEF_COLOR}\n"; 404 | else 405 | printf "${RED}20.[KO] ${DEF_COLOR}\n"; 406 | break 407 | fi 408 | done < test_check.txt 409 | else 410 | printf "${RED}20.[KO] ${DEF_COLOR}\n"; 411 | fi 412 | 413 | rm -rf test_check.txt 414 | 415 | ARG="0 1 2 3 4 5 0" 416 | ./push_swap $ARG > /dev/null 2> test_check.txt 417 | if [ -s "$FICHERO" ];then 418 | while IFS= read -r line 419 | do 420 | if [[ $line == "Error" ]]; then 421 | printf "${GREEN}21.[OK] ${DEF_COLOR}\n"; 422 | else 423 | printf "${RED}21.[KO] ${DEF_COLOR}\n"; 424 | break 425 | fi 426 | done < test_check.txt 427 | else 428 | printf "${RED}21.[KO] ${DEF_COLOR}\n"; 429 | fi 430 | 431 | rm -rf test_check.txt 432 | 433 | ARG="3 +3" 434 | ./push_swap $ARG > /dev/null 2> test_check.txt 435 | if [ -s "$FICHERO" ];then 436 | while IFS= read -r line 437 | do 438 | if [[ $line == "Error" ]]; then 439 | printf "${GREEN}22.[OK] ${DEF_COLOR}\n"; 440 | else 441 | printf "${RED}22.[KO] ${DEF_COLOR}\n"; 442 | break 443 | fi 444 | done < test_check.txt 445 | else 446 | printf "${RED}22.[KO] ${DEF_COLOR}\n"; 447 | fi 448 | 449 | rm -rf test_check.txt 450 | 451 | ARG="3+3" 452 | ./push_swap $ARG > /dev/null 2> test_check.txt 453 | if [ -s "$FICHERO" ];then 454 | while IFS= read -r line 455 | do 456 | if [[ $line == "Error" ]]; then 457 | printf "${GREEN}23.[OK] ${DEF_COLOR}\n"; 458 | else 459 | printf "${RED}23.[KO] ${DEF_COLOR}\n"; 460 | break 461 | fi 462 | done < test_check.txt 463 | else 464 | printf "${RED}23.[KO] ${DEF_COLOR}\n"; 465 | fi 466 | 467 | rm -rf test_check.txt 468 | 469 | ARG="42 42" 470 | ./push_swap $ARG > /dev/null 2> test_check.txt 471 | if [ -s "$FICHERO" ];then 472 | while IFS= read -r line 473 | do 474 | if [[ $line == "Error" ]]; then 475 | printf "${GREEN}24.[OK] ${DEF_COLOR}\n"; 476 | else 477 | printf "${RED}24.[KO] ${DEF_COLOR}\n"; 478 | break 479 | fi 480 | done < test_check.txt 481 | else 482 | printf "${RED}24.[KO] ${DEF_COLOR}\n"; 483 | fi 484 | 485 | rm -rf test_check.txt 486 | 487 | ARG="42 -42 -42 " 488 | ./push_swap $ARG > /dev/null 2> test_check.txt 489 | if [ -s "$FICHERO" ];then 490 | while IFS= read -r line 491 | do 492 | if [[ $line == "Error" ]]; then 493 | printf "${GREEN}25.[OK] ${DEF_COLOR}\n"; 494 | else 495 | printf "${RED}25.[KO] ${DEF_COLOR}\n"; 496 | break 497 | fi 498 | done < test_check.txt 499 | else 500 | printf "${RED}25.[KO] ${DEF_COLOR}\n"; 501 | fi 502 | 503 | rm -rf test_check.txt 504 | 505 | ARG="4222-4222" 506 | ./push_swap $ARG > /dev/null 2> test_check.txt 507 | if [ -s "$FICHERO" ];then 508 | while IFS= read -r line 509 | do 510 | if [[ $line == "Error" ]]; then 511 | printf "${GREEN}26.[OK] ${DEF_COLOR}\n"; 512 | else 513 | printf "${RED}26.[KO] ${DEF_COLOR}\n"; 514 | break 515 | fi 516 | done < test_check.txt 517 | else 518 | printf "${RED}26.[KO] ${DEF_COLOR}\n"; 519 | fi 520 | 521 | rm -rf test_check.txt 522 | 523 | ARG="99999999999999999999999999" 524 | ./push_swap $ARG > /dev/null 2> test_check.txt 525 | if [ -s "$FICHERO" ];then 526 | while IFS= read -r line 527 | do 528 | if [[ $line == "Error" ]]; then 529 | printf "${GREEN}27.[OK] ${DEF_COLOR}\n"; 530 | else 531 | printf "${RED}27.[KO] ${DEF_COLOR}\n"; 532 | break 533 | fi 534 | done < test_check.txt 535 | else 536 | printf "${RED}27.[KO] ${DEF_COLOR}\n"; 537 | fi 538 | 539 | rm -rf test_check.txt 540 | 541 | ARG="-99999999999999999999999999" 542 | ./push_swap $ARG > /dev/null 2> test_check.txt 543 | if [ -s "$FICHERO" ];then 544 | while IFS= read -r line 545 | do 546 | if [[ $line == "Error" ]]; then 547 | printf "${GREEN}28.[OK] ${DEF_COLOR}\n"; 548 | else 549 | printf "${RED}28.[KO] ${DEF_COLOR}\n"; 550 | break 551 | fi 552 | done < test_check.txt 553 | else 554 | printf "${RED}28.[KO] ${DEF_COLOR}\n"; 555 | fi 556 | 557 | rm -rf test_check.txt 558 | 559 | ARG="0 -0 1 -1" 560 | ./push_swap $ARG > /dev/null 2> test_check.txt 561 | if [ -s "$FICHERO" ];then 562 | while IFS= read -r line 563 | do 564 | if [[ $line == "Error" ]]; then 565 | printf "${GREEN}29.[OK] ${DEF_COLOR}\n"; 566 | else 567 | printf "${RED}29.[KO] ${DEF_COLOR}\n"; 568 | break 569 | fi 570 | done < test_check.txt 571 | else 572 | printf "${RED}29.[KO] ${DEF_COLOR}\n"; 573 | fi 574 | 575 | rm -rf test_check.txt 576 | 577 | ARG="0 +0 1 -1" 578 | ./push_swap $ARG > /dev/null 2> test_check.txt 579 | if [ -s "$FICHERO" ];then 580 | while IFS= read -r line 581 | do 582 | if [[ $line == "Error" ]]; then 583 | printf "${GREEN}30.[OK] ${DEF_COLOR}\n"; 584 | else 585 | printf "${RED}30.[KO] ${DEF_COLOR}\n"; 586 | break 587 | fi 588 | done < test_check.txt 589 | else 590 | printf "${RED}30.[KO] ${DEF_COLOR}\n"; 591 | fi 592 | 593 | rm -rf test_check.txt 594 | 595 | ARG="111+111 -4 3" 596 | ./push_swap $ARG > /dev/null 2> test_check.txt 597 | if [ -s "$FICHERO" ];then 598 | while IFS= read -r line 599 | do 600 | if [[ $line == "Error" ]]; then 601 | printf "${GREEN}31.[OK] ${DEF_COLOR}\n"; 602 | else 603 | printf "${RED}31.[KO] ${DEF_COLOR}\n"; 604 | break 605 | fi 606 | done < test_check.txt 607 | else 608 | printf "${RED}31.[KO] ${DEF_COLOR}\n"; 609 | fi 610 | 611 | rm -rf test_check.txt 612 | 613 | ARG="-" 614 | ./push_swap $ARG > /dev/null 2> test_check.txt 615 | if [ -s "$FICHERO" ];then 616 | while IFS= read -r line 617 | do 618 | if [[ $line == "Error" ]]; then 619 | printf "${GREEN}32.[OK] ${DEF_COLOR}\n"; 620 | else 621 | printf "${RED}32.[KO] ${DEF_COLOR}\n"; 622 | break 623 | fi 624 | done < test_check.txt 625 | else 626 | printf "${RED}32.[KO] ${DEF_COLOR}\n"; 627 | fi 628 | 629 | ARG="+" 630 | ./push_swap $ARG > /dev/null 2> test_check.txt 631 | if [ -s "$FICHERO" ];then 632 | while IFS= read -r line 633 | do 634 | if [[ $line == "Error" ]]; then 635 | printf "${GREEN}33.[OK] ${DEF_COLOR}\n"; 636 | else 637 | printf "${RED}33.[KO] ${DEF_COLOR}\n"; 638 | break 639 | fi 640 | done < test_check.txt 641 | else 642 | printf "${RED}33.[KO] ${DEF_COLOR}\n"; 643 | fi 644 | 645 | rm -rf test_check.txt 646 | 647 | ARG="--123 1 321" 648 | ./push_swap $ARG > /dev/null 2> test_check.txt 649 | if [ -s "$FICHERO" ];then 650 | while IFS= read -r line 651 | do 652 | if [[ $line == "Error" ]]; then 653 | printf "${GREEN}34.[OK] ${DEF_COLOR}\n"; 654 | else 655 | printf "${RED}34.[KO] ${DEF_COLOR}\n"; 656 | break 657 | fi 658 | done < test_check.txt 659 | else 660 | printf "${RED}34.[KO] ${DEF_COLOR}\n"; 661 | fi 662 | 663 | rm -rf test_check.txt 664 | 665 | ARG="++123 1 321" 666 | ./push_swap $ARG > /dev/null 2> test_check.txt 667 | if [ -s "$FICHERO" ];then 668 | while IFS= read -r line 669 | do 670 | if [[ $line == "Error" ]]; then 671 | printf "${GREEN}35.[OK] ${DEF_COLOR}\n"; 672 | else 673 | printf "${RED}35.[KO] ${DEF_COLOR}\n"; 674 | break 675 | fi 676 | done < test_check.txt 677 | else 678 | printf "${RED}35.[KO] ${DEF_COLOR}\n"; 679 | fi 680 | 681 | rm -rf test_check.txt 682 | 683 | ARG="0000000000000000000000009 000000000000000000000009" 684 | ./push_swap $ARG > /dev/null 2> test_check.txt 685 | if [ -s "$FICHERO" ];then 686 | while IFS= read -r line 687 | do 688 | if [[ $line == "Error" ]]; then 689 | printf "${GREEN}36.[OK] ${DEF_COLOR}\n"; 690 | else 691 | printf "${RED}36.[KO] ${DEF_COLOR}\n"; 692 | break 693 | fi 694 | done < test_check.txt 695 | else 696 | printf "${RED}36.[KO] ${DEF_COLOR}\n"; 697 | fi 698 | 699 | rm -rf test_check.txt 700 | 701 | ARG="00000001 1 9 3" 702 | ./push_swap $ARG > /dev/null 2> test_check.txt 703 | if [ -s "$FICHERO" ];then 704 | while IFS= read -r line 705 | do 706 | if [[ $line == "Error" ]]; then 707 | printf "${GREEN}37.[OK] ${DEF_COLOR}\n"; 708 | else 709 | printf "${RED}37.[KO] ${DEF_COLOR}\n"; 710 | break 711 | fi 712 | done < test_check.txt 713 | else 714 | printf "${RED}37.[KO] ${DEF_COLOR}\n"; 715 | fi 716 | 717 | rm -rf test_check.txt 718 | 719 | ARG="00000003 003 9 1" 720 | ./push_swap $ARG > /dev/null 2> test_check.txt 721 | if [ -s "$FICHERO" ];then 722 | while IFS= read -r line 723 | do 724 | if [[ $line == "Error" ]]; then 725 | printf "${GREEN}38.[OK] ${DEF_COLOR}\n"; 726 | else 727 | printf "${RED}38.[KO] ${DEF_COLOR}\n"; 728 | break 729 | fi 730 | done < test_check.txt 731 | else 732 | printf "${RED}38.[KO] ${DEF_COLOR}\n"; 733 | fi 734 | 735 | rm -rf test_check.txt 736 | 737 | ARG="--21345" 738 | ./push_swap $ARG > /dev/null 2> test_check.txt 739 | if [ -s "$FICHERO" ];then 740 | while IFS= read -r line 741 | do 742 | if [[ $line == "Error" ]]; then 743 | printf "${GREEN}39.[OK] ${DEF_COLOR}\n"; 744 | else 745 | printf "${RED}39.[KO] ${DEF_COLOR}\n"; 746 | break 747 | fi 748 | done < test_check.txt 749 | else 750 | printf "${RED}39.[KO] ${DEF_COLOR}\n"; 751 | fi 752 | 753 | rm -rf test_check.txt 754 | 755 | 756 | ARG="1 01" 757 | ./push_swap $ARG > /dev/null 2> test_check.txt 758 | if [ -s "$FICHERO" ];then 759 | while IFS= read -r line 760 | do 761 | if [[ $line == "Error" ]]; then 762 | printf "${GREEN}40.[OK] ${DEF_COLOR}\n"; 763 | else 764 | printf "${RED}40.[KO] ${DEF_COLOR}\n"; 765 | break 766 | fi 767 | done < test_check.txt 768 | else 769 | printf "${RED}40.[KO] ${DEF_COLOR}\n"; 770 | fi 771 | 772 | rm -rf test_check.txt 773 | 774 | ARG="-000 -0000" 775 | ./push_swap $ARG > /dev/null 2> test_check.txt 776 | if [ -s "$FICHERO" ];then 777 | while IFS= read -r line 778 | do 779 | if [[ $line == "Error" ]]; then 780 | printf "${GREEN}41.[OK] ${DEF_COLOR}\n"; 781 | else 782 | printf "${RED}41.[KO] ${DEF_COLOR}\n"; 783 | break 784 | fi 785 | done < test_check.txt 786 | else 787 | printf "${RED}41.[KO] ${DEF_COLOR}\n"; 788 | fi 789 | 790 | rm -rf test_check.txt 791 | 792 | ARG="-00042 -000042" 793 | ./push_swap $ARG > /dev/null 2> test_check.txt 794 | if [ -s "$FICHERO" ];then 795 | while IFS= read -r line 796 | do 797 | if [[ $line == "Error" ]]; then 798 | printf "${GREEN}42.[OK] ${DEF_COLOR}\n"; 799 | else 800 | printf "${RED}42.[KO] ${DEF_COLOR}\n"; 801 | break 802 | fi 803 | done < test_check.txt 804 | else 805 | printf "${RED}42.[KO] ${DEF_COLOR}\n"; 806 | fi 807 | 808 | rm -rf test_check.txt 809 | rm -rf 0 810 | 811 | # -=-=-=-=- Basic -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # 812 | 813 | printf ${BLUE}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 814 | printf ${BLUE}"\n\t\t\tBasic input\t\t\n"${DEF_COLOR}; 815 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 816 | 817 | ARG="2 1"; 818 | N=$(./push_swap $ARG | wc -l) 819 | if [ $N -lt 4 ]; then 820 | printf "${GREEN}1.[OK] ${DEF_COLOR}"; 821 | else 822 | printf "${RED}1.[KO]${DEF_COLOR}"; 823 | printf "${WHITE} TEST: "; 824 | echo -n "$ARG " 825 | fi 826 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 827 | if [ $S == "OK" ]; then 828 | printf "${GREEN}2.[OK] ${DEF_COLOR}"; 829 | else 830 | printf "${RED}2.[KO]${DEF_COLOR}"; 831 | fi 832 | 833 | ARG="1 3 2"; 834 | N=$(./push_swap $ARG | wc -l) 835 | if [ $N -lt 13 ]; then 836 | printf "${GREEN}3.[OK] ${DEF_COLOR}"; 837 | else 838 | printf "${RED}3.[KO]${DEF_COLOR}"; 839 | printf "${WHITE} TEST: "; 840 | echo -n "$ARG " 841 | fi 842 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 843 | if [ $S == "OK" ]; then 844 | printf "${GREEN}4.[OK] ${DEF_COLOR}"; 845 | else 846 | printf "${RED}4.[KO]${DEF_COLOR}"; 847 | fi 848 | 849 | ARG="2 3 1"; 850 | N=$(./push_swap $ARG | wc -l) 851 | if [ $N -lt 4 ]; then 852 | printf "${GREEN}5.[OK] ${DEF_COLOR}"; 853 | else 854 | printf "${RED}5.[KO]${DEF_COLOR}"; 855 | printf "${WHITE} TEST: "; 856 | echo -n "$ARG " 857 | fi 858 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 859 | if [ $S == "OK" ]; then 860 | printf "${GREEN}6.[OK] ${DEF_COLOR}"; 861 | else 862 | printf "${RED}6.[KO]${DEF_COLOR}"; 863 | fi 864 | 865 | ARG="2 1 3"; 866 | N=$(./push_swap $ARG | wc -l) 867 | if [ $N -lt 4 ]; then 868 | printf "${GREEN}7.[OK] ${DEF_COLOR}"; 869 | else 870 | printf "${RED}7.[KO]${DEF_COLOR}"; 871 | printf "${WHITE} TEST: "; 872 | echo -n "$ARG " 873 | fi 874 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 875 | if [ $S == "OK" ]; then 876 | printf "${GREEN}8.[OK] ${DEF_COLOR}"; 877 | else 878 | printf "${RED}8.[KO]${DEF_COLOR}"; 879 | fi 880 | 881 | ARG="3 1 2"; 882 | N=$(./push_swap $ARG | wc -l) 883 | if [ $N -lt 4 ]; then 884 | printf "${GREEN}9.[OK] ${DEF_COLOR}"; 885 | else 886 | printf "${RED}9.[KO]${DEF_COLOR}"; 887 | printf "${WHITE} TEST: "; 888 | echo -n "$ARG " 889 | fi 890 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 891 | if [ $S == "OK" ]; then 892 | printf "${GREEN}10.[OK] ${DEF_COLOR}"; 893 | else 894 | printf "${RED}10.[KO]${DEF_COLOR}"; 895 | fi 896 | 897 | ARG="3 2 1"; 898 | N=$(./push_swap $ARG | wc -l) 899 | if [ $N -lt 4 ]; then 900 | printf "${GREEN}11.[OK] ${DEF_COLOR}"; 901 | else 902 | printf "${RED}11.[KO]${DEF_COLOR}"; 903 | printf "${WHITE} TEST: "; 904 | echo -n "$ARG " 905 | fi 906 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 907 | if [ $S == "OK" ]; then 908 | printf "${GREEN}12.[OK] ${DEF_COLOR}"; 909 | else 910 | printf "${RED}12.[KO]${DEF_COLOR}"; 911 | fi 912 | ARG="1 2 4 3"; 913 | N=$(./push_swap $ARG | wc -l) 914 | if [ $N -lt 13 ]; then 915 | printf "${GREEN}13.[OK] ${DEF_COLOR}"; 916 | else 917 | printf "${RED}13.[KO]${DEF_COLOR}"; 918 | printf "${WHITE} TEST: "; 919 | echo -n "$ARG " 920 | fi 921 | 922 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 923 | if [ $S == "OK" ]; then 924 | printf "${GREEN}14.[OK] ${DEF_COLOR}"; 925 | else 926 | printf "${RED}14.[KO]${DEF_COLOR}"; 927 | fi 928 | 929 | ARG="1 3 2 4"; 930 | N=$(./push_swap $ARG | wc -l) 931 | if [ $N -lt 13 ]; then 932 | printf "${GREEN}15.[OK] ${DEF_COLOR}"; 933 | else 934 | printf "${RED}15.[KO]${DEF_COLOR}"; 935 | printf "${WHITE} TEST: "; 936 | echo -n "$ARG " 937 | fi 938 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 939 | if [ $S == "OK" ]; then 940 | printf "${GREEN}16.[OK] ${DEF_COLOR}"; 941 | else 942 | printf "${RED}16.[KO]${DEF_COLOR}"; 943 | fi 944 | 945 | ARG="1 3 4 2"; 946 | N=$(./push_swap $ARG | wc -l) 947 | if [ $N -lt 13 ]; then 948 | printf "${GREEN}17.[OK] ${DEF_COLOR}"; 949 | else 950 | printf "${RED}17.[KO]${DEF_COLOR}"; 951 | printf "${WHITE} TEST: "; 952 | echo -n "$ARG " 953 | fi 954 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 955 | if [ $S == "OK" ]; then 956 | printf "${GREEN}18.[OK] ${DEF_COLOR}"; 957 | else 958 | printf "${RED}18.[KO]${DEF_COLOR}"; 959 | fi 960 | 961 | ARG="1 4 3 2"; 962 | N=$(./push_swap $ARG | wc -l) 963 | if [ $N -lt 13 ]; then 964 | printf "${GREEN}19.[OK] ${DEF_COLOR}"; 965 | else 966 | printf "${RED}19.[KO]${DEF_COLOR}"; 967 | printf "${WHITE} TEST: "; 968 | echo -n "$ARG " 969 | fi 970 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 971 | if [ $S == "OK" ]; then 972 | printf "${GREEN}20.[OK] ${DEF_COLOR}"; 973 | else 974 | printf "${RED}20.[KO]${DEF_COLOR}"; 975 | fi 976 | 977 | ARG="1 4 2 3"; 978 | N=$(./push_swap $ARG | wc -l) 979 | if [ $N -lt 13 ]; then 980 | printf "${GREEN}21.[OK] ${DEF_COLOR}"; 981 | else 982 | printf "${RED}21.[KO]${DEF_COLOR}"; 983 | printf "${WHITE} TEST: "; 984 | echo -n "$ARG " 985 | fi 986 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 987 | if [ $S == "OK" ]; then 988 | printf "${GREEN}22.[OK] ${DEF_COLOR}"; 989 | else 990 | printf "${RED}22.[KO]${DEF_COLOR}"; 991 | fi 992 | 993 | ARG="2 3 4 1"; 994 | N=$(./push_swap $ARG | wc -l) 995 | if [ $N -lt 13 ]; then 996 | printf "${GREEN}23.[OK] ${DEF_COLOR}"; 997 | else 998 | printf "${RED}23.[KO]${DEF_COLOR}"; 999 | printf "${WHITE} TEST: "; 1000 | echo -n "$ARG " 1001 | fi 1002 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1003 | if [ $S == "OK" ]; then 1004 | printf "${GREEN}24.[OK] ${DEF_COLOR}"; 1005 | else 1006 | printf "${RED}24.[KO]${DEF_COLOR}"; 1007 | fi 1008 | 1009 | ARG="2 4 3 1"; 1010 | N=$(./push_swap $ARG | wc -l) 1011 | if [ $N -lt 13 ]; then 1012 | printf "${GREEN}25.[OK] ${DEF_COLOR}"; 1013 | else 1014 | printf "${RED}25.[KO]${DEF_COLOR}"; 1015 | printf "${WHITE} TEST: "; 1016 | echo -n "$ARG " 1017 | fi 1018 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1019 | if [ $S == "OK" ]; then 1020 | printf "${GREEN}26.[OK] ${DEF_COLOR}"; 1021 | else 1022 | printf "${RED}26.[KO]${DEF_COLOR}"; 1023 | fi 1024 | 1025 | ARG="2 1 4 3"; 1026 | N=$(./push_swap $ARG | wc -l) 1027 | if [ $N -lt 13 ]; then 1028 | printf "${GREEN}27.[OK] ${DEF_COLOR}"; 1029 | else 1030 | printf "${RED}27.[KO]${DEF_COLOR}"; 1031 | printf "${WHITE} TEST: "; 1032 | echo -n "$ARG " 1033 | fi 1034 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1035 | if [ $S == "OK" ]; then 1036 | printf "${GREEN}28.[OK] ${DEF_COLOR}"; 1037 | else 1038 | printf "${RED}28.[KO]${DEF_COLOR}"; 1039 | fi 1040 | 1041 | ARG="2 1 3 4"; 1042 | N=$(./push_swap $ARG | wc -l) 1043 | if [ $N -lt 13 ]; then 1044 | printf "${GREEN}29.[OK] ${DEF_COLOR}"; 1045 | else 1046 | printf "${RED}29.[KO]${DEF_COLOR}"; 1047 | printf "${WHITE} TEST: "; 1048 | echo -n "$ARG " 1049 | fi 1050 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1051 | if [ $S == "OK" ]; then 1052 | printf "${GREEN}30.[OK] ${DEF_COLOR}"; 1053 | else 1054 | printf "${RED}30.[KO]${DEF_COLOR}"; 1055 | fi 1056 | 1057 | ARG="2 3 1 4"; 1058 | N=$(./push_swap $ARG | wc -l) 1059 | if [ $N -lt 13 ]; then 1060 | printf "${GREEN}31.[OK] ${DEF_COLOR}"; 1061 | else 1062 | printf "${RED}31.[KO]${DEF_COLOR}"; 1063 | printf "${WHITE} TEST: "; 1064 | echo -n "$ARG " 1065 | fi 1066 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1067 | if [ $S == "OK" ]; then 1068 | printf "${GREEN}32.[OK] ${DEF_COLOR}"; 1069 | else 1070 | printf "${RED}32.[KO]${DEF_COLOR}"; 1071 | fi 1072 | 1073 | ARG="2 4 1 3"; 1074 | N=$(./push_swap $ARG | wc -l) 1075 | if [ $N -lt 13 ]; then 1076 | printf "${GREEN}33.[OK] ${DEF_COLOR}"; 1077 | else 1078 | printf "${RED}33.[KO]${DEF_COLOR}"; 1079 | printf "${WHITE} TEST: "; 1080 | echo -n "$ARG " 1081 | fi 1082 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1083 | if [ $S == "OK" ]; then 1084 | printf "${GREEN}34.[OK] ${DEF_COLOR}"; 1085 | else 1086 | printf "${RED}34.[KO]${DEF_COLOR}"; 1087 | fi 1088 | 1089 | ARG="3 4 1 2"; 1090 | N=$(./push_swap $ARG | wc -l) 1091 | if [ $N -lt 13 ]; then 1092 | printf "${GREEN}35.[OK] ${DEF_COLOR}"; 1093 | else 1094 | printf "${RED}35.[KO]${DEF_COLOR}"; 1095 | printf "${WHITE} TEST: "; 1096 | echo -n "$ARG " 1097 | fi 1098 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1099 | if [ $S == "OK" ]; then 1100 | printf "${GREEN}36.[OK] ${DEF_COLOR}"; 1101 | else 1102 | printf "${RED}36.[KO]${DEF_COLOR}"; 1103 | fi 1104 | 1105 | ARG="3 4 2 1"; 1106 | N=$(./push_swap $ARG | wc -l) 1107 | if [ $N -lt 13 ]; then 1108 | printf "${GREEN}37.[OK] ${DEF_COLOR}"; 1109 | else 1110 | printf "${RED}37.[KO]${DEF_COLOR}"; 1111 | printf "${WHITE} TEST: "; 1112 | echo -n "$ARG " 1113 | fi 1114 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1115 | if [ $S == "OK" ]; then 1116 | printf "${GREEN}38.[OK] ${DEF_COLOR}"; 1117 | else 1118 | printf "${RED}38.[KO]${DEF_COLOR}"; 1119 | fi 1120 | 1121 | ARG="3 2 1 4"; 1122 | N=$(./push_swap $ARG | wc -l) 1123 | if [ $N -lt 13 ]; then 1124 | printf "${GREEN}39.[OK] ${DEF_COLOR}"; 1125 | else 1126 | printf "${RED}39.[KO]${DEF_COLOR}"; 1127 | printf "${WHITE} TEST: "; 1128 | echo -n "$ARG " 1129 | fi 1130 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1131 | if [ $S == "OK" ]; then 1132 | printf "${GREEN}40.[OK] ${DEF_COLOR}"; 1133 | else 1134 | printf "${RED}40.[KO]${DEF_COLOR}"; 1135 | fi 1136 | 1137 | ARG="3 1 2 4"; 1138 | N=$(./push_swap $ARG | wc -l) 1139 | if [ $N -lt 13 ]; then 1140 | printf "${GREEN}41.[OK] ${DEF_COLOR}"; 1141 | else 1142 | printf "${RED}41.[KO]${DEF_COLOR}"; 1143 | printf "${WHITE} TEST: "; 1144 | echo -n "$ARG " 1145 | fi 1146 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1147 | if [ $S == "OK" ]; then 1148 | printf "${GREEN}42.[OK] ${DEF_COLOR}"; 1149 | else 1150 | printf "${RED}42.[KO]${DEF_COLOR}"; 1151 | fi 1152 | 1153 | ARG="3 1 2 4"; 1154 | N=$(./push_swap $ARG | wc -l) 1155 | if [ $N -lt 13 ]; then 1156 | printf "${GREEN}43.[OK] ${DEF_COLOR}"; 1157 | else 1158 | printf "${RED}43.[KO]${DEF_COLOR}"; 1159 | printf "${WHITE} TEST: "; 1160 | echo -n "$ARG " 1161 | fi 1162 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1163 | if [ $S == "OK" ]; then 1164 | printf "${GREEN}44.[OK] ${DEF_COLOR}"; 1165 | else 1166 | printf "${RED}44.[KO]${DEF_COLOR}"; 1167 | fi 1168 | 1169 | ARG="3 2 4 1"; 1170 | N=$(./push_swap $ARG | wc -l) 1171 | if [ $N -lt 13 ]; then 1172 | printf "${GREEN}45.[OK] ${DEF_COLOR}"; 1173 | else 1174 | printf "${RED}45.[KO]${DEF_COLOR}"; 1175 | printf "${WHITE} TEST: "; 1176 | echo -n "$ARG " 1177 | fi 1178 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1179 | if [ $S == "OK" ]; then 1180 | printf "${GREEN}46.[OK] ${DEF_COLOR}"; 1181 | else 1182 | printf "${RED}46.[KO]${DEF_COLOR}"; 1183 | fi 1184 | 1185 | ARG="3 1 4 2"; 1186 | N=$(./push_swap $ARG | wc -l) 1187 | if [ $N -lt 13 ]; then 1188 | printf "${GREEN}47.[OK] ${DEF_COLOR}"; 1189 | else 1190 | printf "${RED}47.[KO]${DEF_COLOR}"; 1191 | printf "${WHITE} TEST: "; 1192 | echo -n "$ARG " 1193 | fi 1194 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1195 | if [ $S == "OK" ]; then 1196 | printf "${GREEN}48.[OK] ${DEF_COLOR}"; 1197 | else 1198 | printf "${RED}48.[KO]${DEF_COLOR}"; 1199 | fi 1200 | 1201 | ARG="4 1 2 3"; 1202 | N=$(./push_swap $ARG | wc -l) 1203 | if [ $N -lt 13 ]; then 1204 | printf "${GREEN}49.[OK] ${DEF_COLOR}"; 1205 | else 1206 | printf "${RED}49.[KO]${DEF_COLOR}"; 1207 | printf "${WHITE} TEST: "; 1208 | echo -n "$ARG " 1209 | fi 1210 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1211 | if [ $S == "OK" ]; then 1212 | printf "${GREEN}50.[OK] ${DEF_COLOR}"; 1213 | else 1214 | printf "${RED}50.[KO]${DEF_COLOR}"; 1215 | fi 1216 | 1217 | ARG="4 1 3 2"; 1218 | N=$(./push_swap $ARG | wc -l) 1219 | if [ $N -lt 13 ]; then 1220 | printf "${GREEN}51.[OK] ${DEF_COLOR}"; 1221 | else 1222 | printf "${RED}51.[KO]${DEF_COLOR}"; 1223 | printf "${WHITE} TEST: "; 1224 | echo -n "$ARG " 1225 | fi 1226 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1227 | if [ $S == "OK" ]; then 1228 | printf "${GREEN}52.[OK] ${DEF_COLOR}"; 1229 | else 1230 | printf "${RED}52.[KO]${DEF_COLOR}"; 1231 | fi 1232 | 1233 | ARG="4 2 1 3"; 1234 | N=$(./push_swap $ARG | wc -l) 1235 | if [ $N -lt 13 ]; then 1236 | printf "${GREEN}53.[OK] ${DEF_COLOR}"; 1237 | else 1238 | printf "${RED}53.[KO]${DEF_COLOR}"; 1239 | printf "${WHITE} TEST: "; 1240 | echo -n "$ARG " 1241 | fi 1242 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1243 | if [ $S == "OK" ]; then 1244 | printf "${GREEN}54.[OK] ${DEF_COLOR}"; 1245 | else 1246 | printf "${RED}54.[KO]${DEF_COLOR}"; 1247 | fi 1248 | 1249 | ARG="4 2 3 1"; 1250 | N=$(./push_swap $ARG | wc -l) 1251 | if [ $N -lt 13 ]; then 1252 | printf "${GREEN}55.[OK] ${DEF_COLOR}"; 1253 | else 1254 | printf "${RED}55.[KO]${DEF_COLOR}"; 1255 | printf "${WHITE} TEST: "; 1256 | echo -n "$ARG " 1257 | fi 1258 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1259 | if [ $S == "OK" ]; then 1260 | printf "${GREEN}56.[OK] ${DEF_COLOR}"; 1261 | else 1262 | printf "${RED}56.[KO]${DEF_COLOR}"; 1263 | fi 1264 | 1265 | ARG="4 3 1 2"; 1266 | N=$(./push_swap $ARG | wc -l) 1267 | if [ $N -lt 13 ]; then 1268 | printf "${GREEN}57.[OK] ${DEF_COLOR}"; 1269 | else 1270 | printf "${RED}57.[KO]${DEF_COLOR}"; 1271 | printf "${WHITE} TEST: "; 1272 | echo -n "$ARG " 1273 | fi 1274 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1275 | if [ $S == "OK" ]; then 1276 | printf "${GREEN}58.[OK] ${DEF_COLOR}"; 1277 | else 1278 | printf "${RED}58.[KO]${DEF_COLOR}"; 1279 | fi 1280 | 1281 | ARG="4 3 2 1"; 1282 | N=$(./push_swap $ARG | wc -l) 1283 | if [ $N -lt 13 ]; then 1284 | printf "${GREEN}59.[OK] ${DEF_COLOR}"; 1285 | else 1286 | printf "${RED}59.[KO]${DEF_COLOR}"; 1287 | printf "${WHITE} TEST: "; 1288 | echo -n "$ARG " 1289 | fi 1290 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1291 | if [ $S == "OK" ]; then 1292 | printf "${GREEN}60.[OK] ${DEF_COLOR}"; 1293 | else 1294 | printf "${RED}60.[KO]${DEF_COLOR}"; 1295 | fi 1296 | 1297 | rm -rf 0 1298 | 1299 | printf ${BLUE}"\n\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 1300 | printf ${BLUE}"\n\t\t\tSize 5\t\t\n"${DEF_COLOR}; 1301 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 1302 | 1303 | 1304 | ARG="1 2 3 5 4"; 1305 | N=$(./push_swap $ARG | wc -l) 1306 | if [ $N -lt 13 ]; then 1307 | printf "${GREEN}1.[OK] ${DEF_COLOR}"; 1308 | else 1309 | printf "${RED}1.[KO]${DEF_COLOR}"; 1310 | printf "${WHITE} TEST: "; 1311 | echo -n "$ARG " 1312 | fi 1313 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1314 | if [ $S == "OK" ]; then 1315 | printf "${GREEN}2.[OK] ${DEF_COLOR}"; 1316 | else 1317 | printf "${RED}2.[KO]${DEF_COLOR}"; 1318 | fi 1319 | 1320 | ARG="1 2 4 3 5"; 1321 | N=$(./push_swap $ARG | wc -l) 1322 | if [ $N -lt 13 ]; then 1323 | printf "${GREEN}3.[OK] ${DEF_COLOR}"; 1324 | else 1325 | printf "${RED}3.[KO]${DEF_COLOR}"; 1326 | printf "${WHITE} TEST: "; 1327 | echo -n "$ARG " 1328 | fi 1329 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1330 | if [ $S == "OK" ]; then 1331 | printf "${GREEN}4.[OK] ${DEF_COLOR}"; 1332 | else 1333 | printf "${RED}4.[KO]${DEF_COLOR}"; 1334 | fi 1335 | 1336 | ARG="1 2 4 5 3"; 1337 | N=$(./push_swap $ARG | wc -l) 1338 | if [ $N -lt 13 ]; then 1339 | printf "${GREEN}5.[OK] ${DEF_COLOR}"; 1340 | else 1341 | printf "${RED}5.[KO]${DEF_COLOR}"; 1342 | printf "${WHITE} TEST: "; 1343 | echo -n "$ARG " 1344 | fi 1345 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1346 | if [ $S == "OK" ]; then 1347 | printf "${GREEN}6.[OK] ${DEF_COLOR}"; 1348 | else 1349 | printf "${RED}6.[KO]${DEF_COLOR}"; 1350 | fi 1351 | 1352 | ARG="1 2 5 3 4"; 1353 | N=$(./push_swap $ARG | wc -l) 1354 | if [ $N -lt 13 ]; then 1355 | printf "${GREEN}7.[OK] ${DEF_COLOR}"; 1356 | else 1357 | printf "${RED}7.[KO]${DEF_COLOR}"; 1358 | printf "${WHITE} TEST: "; 1359 | echo -n "$ARG " 1360 | fi 1361 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1362 | if [ $S == "OK" ]; then 1363 | printf "${GREEN}8.[OK] ${DEF_COLOR}"; 1364 | else 1365 | printf "${RED}8.[KO]${DEF_COLOR}"; 1366 | fi 1367 | 1368 | ARG="1 2 5 4 3"; 1369 | N=$(./push_swap $ARG | wc -l) 1370 | if [ $N -lt 13 ]; then 1371 | printf "${GREEN}9.[OK] ${DEF_COLOR}"; 1372 | else 1373 | printf "${RED}9.[KO]${DEF_COLOR}"; 1374 | printf "${WHITE} TEST: "; 1375 | echo -n "$ARG " 1376 | fi 1377 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1378 | if [ $S == "OK" ]; then 1379 | printf "${GREEN}10.[OK] ${DEF_COLOR}"; 1380 | else 1381 | printf "${RED}10.[KO]${DEF_COLOR}"; 1382 | fi 1383 | 1384 | ARG="1 3 2 4 5"; 1385 | N=$(./push_swap $ARG | wc -l) 1386 | if [ $N -lt 13 ]; then 1387 | printf "${GREEN}11.[OK] ${DEF_COLOR}"; 1388 | else 1389 | printf "${RED}11.[KO]${DEF_COLOR}"; 1390 | printf "${WHITE} TEST: "; 1391 | echo -n "$ARG " 1392 | fi 1393 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1394 | if [ $S == "OK" ]; then 1395 | printf "${GREEN}12.[OK] ${DEF_COLOR}"; 1396 | else 1397 | printf "${RED}12.[KO]${DEF_COLOR}"; 1398 | fi 1399 | 1400 | ARG="1 3 2 5 4"; 1401 | N=$(./push_swap $ARG | wc -l) 1402 | if [ $N -lt 13 ]; then 1403 | printf "${GREEN}13.[OK] ${DEF_COLOR}"; 1404 | else 1405 | printf "${RED}13.[KO]${DEF_COLOR}"; 1406 | printf "${WHITE} TEST: "; 1407 | echo -n "$ARG " 1408 | fi 1409 | 1410 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1411 | if [ $S == "OK" ]; then 1412 | printf "${GREEN}14.[OK] ${DEF_COLOR}"; 1413 | else 1414 | printf "${RED}14.[KO]${DEF_COLOR}"; 1415 | fi 1416 | 1417 | ARG="1 3 4 2 5"; 1418 | N=$(./push_swap $ARG | wc -l) 1419 | if [ $N -lt 13 ]; then 1420 | printf "${GREEN}15.[OK] ${DEF_COLOR}"; 1421 | else 1422 | printf "${RED}15.[KO]${DEF_COLOR}"; 1423 | printf "${WHITE} TEST: "; 1424 | echo -n "$ARG " 1425 | fi 1426 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1427 | if [ $S == "OK" ]; then 1428 | printf "${GREEN}16.[OK] ${DEF_COLOR}"; 1429 | else 1430 | printf "${RED}16.[KO]${DEF_COLOR}"; 1431 | fi 1432 | 1433 | ARG="1 3 4 5 2"; 1434 | N=$(./push_swap $ARG | wc -l) 1435 | if [ $N -lt 13 ]; then 1436 | printf "${GREEN}17.[OK] ${DEF_COLOR}"; 1437 | else 1438 | printf "${RED}17.[KO]${DEF_COLOR}"; 1439 | printf "${WHITE} TEST: "; 1440 | echo -n "$ARG " 1441 | fi 1442 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1443 | if [ $S == "OK" ]; then 1444 | printf "${GREEN}18.[OK] ${DEF_COLOR}"; 1445 | else 1446 | printf "${RED}18.[KO]${DEF_COLOR}"; 1447 | fi 1448 | 1449 | ARG="1 3 5 2 4"; 1450 | N=$(./push_swap $ARG | wc -l) 1451 | if [ $N -lt 13 ]; then 1452 | printf "${GREEN}19.[OK] ${DEF_COLOR}"; 1453 | else 1454 | printf "${RED}19.[KO]${DEF_COLOR}"; 1455 | printf "${WHITE} TEST: "; 1456 | echo -n "$ARG " 1457 | fi 1458 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1459 | if [ $S == "OK" ]; then 1460 | printf "${GREEN}20.[OK] ${DEF_COLOR}"; 1461 | else 1462 | printf "${RED}20.[KO]${DEF_COLOR}"; 1463 | fi 1464 | 1465 | ARG="1 3 5 4 2"; 1466 | N=$(./push_swap $ARG | wc -l) 1467 | if [ $N -lt 13 ]; then 1468 | printf "${GREEN}21.[OK] ${DEF_COLOR}"; 1469 | else 1470 | printf "${RED}21.[KO]${DEF_COLOR}"; 1471 | printf "${WHITE} TEST: "; 1472 | echo -n "$ARG " 1473 | fi 1474 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1475 | if [ $S == "OK" ]; then 1476 | printf "${GREEN}22.[OK] ${DEF_COLOR}"; 1477 | else 1478 | printf "${RED}22.[KO]${DEF_COLOR}"; 1479 | fi 1480 | 1481 | ARG="1 4 2 3 5"; 1482 | N=$(./push_swap $ARG | wc -l) 1483 | if [ $N -lt 13 ]; then 1484 | printf "${GREEN}23.[OK] ${DEF_COLOR}"; 1485 | else 1486 | printf "${RED}23.[KO]${DEF_COLOR}"; 1487 | printf "${WHITE} TEST: "; 1488 | echo -n "$ARG " 1489 | fi 1490 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1491 | if [ $S == "OK" ]; then 1492 | printf "${GREEN}24.[OK] ${DEF_COLOR}"; 1493 | else 1494 | printf "${RED}24.[KO]${DEF_COLOR}"; 1495 | fi 1496 | 1497 | ARG="1 4 2 5 3"; 1498 | N=$(./push_swap $ARG | wc -l) 1499 | if [ $N -lt 13 ]; then 1500 | printf "${GREEN}25.[OK] ${DEF_COLOR}"; 1501 | else 1502 | printf "${RED}25.[KO]${DEF_COLOR}"; 1503 | printf "${WHITE} TEST: "; 1504 | echo -n "$ARG " 1505 | fi 1506 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1507 | if [ $S == "OK" ]; then 1508 | printf "${GREEN}26.[OK] ${DEF_COLOR}"; 1509 | else 1510 | printf "${RED}26.[KO]${DEF_COLOR}"; 1511 | fi 1512 | 1513 | ARG="1 4 3 2 5"; 1514 | N=$(./push_swap $ARG | wc -l) 1515 | if [ $N -lt 13 ]; then 1516 | printf "${GREEN}27.[OK] ${DEF_COLOR}"; 1517 | else 1518 | printf "${RED}27.[KO]${DEF_COLOR}"; 1519 | printf "${WHITE} TEST: "; 1520 | echo -n "$ARG " 1521 | fi 1522 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1523 | if [ $S == "OK" ]; then 1524 | printf "${GREEN}28.[OK] ${DEF_COLOR}"; 1525 | else 1526 | printf "${RED}28.[KO]${DEF_COLOR}"; 1527 | fi 1528 | 1529 | ARG="1 4 3 5 2"; 1530 | N=$(./push_swap $ARG | wc -l) 1531 | if [ $N -lt 13 ]; then 1532 | printf "${GREEN}29.[OK] ${DEF_COLOR}"; 1533 | else 1534 | printf "${RED}29.[KO]${DEF_COLOR}"; 1535 | printf "${WHITE} TEST: "; 1536 | echo -n "$ARG " 1537 | fi 1538 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1539 | if [ $S == "OK" ]; then 1540 | printf "${GREEN}30.[OK] ${DEF_COLOR}"; 1541 | else 1542 | printf "${RED}30.[KO]${DEF_COLOR}"; 1543 | fi 1544 | 1545 | ARG="1 4 5 2 3"; 1546 | N=$(./push_swap $ARG | wc -l) 1547 | if [ $N -lt 13 ]; then 1548 | printf "${GREEN}31.[OK] ${DEF_COLOR}"; 1549 | else 1550 | printf "${RED}31.[KO]${DEF_COLOR}"; 1551 | printf "${WHITE} TEST: "; 1552 | echo -n "$ARG " 1553 | fi 1554 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1555 | if [ $S == "OK" ]; then 1556 | printf "${GREEN}32.[OK] ${DEF_COLOR}"; 1557 | else 1558 | printf "${RED}32.[KO]${DEF_COLOR}"; 1559 | fi 1560 | 1561 | ARG="1 4 5 3 2"; 1562 | N=$(./push_swap $ARG | wc -l) 1563 | if [ $N -lt 13 ]; then 1564 | printf "${GREEN}33.[OK] ${DEF_COLOR}"; 1565 | else 1566 | printf "${RED}33.[KO]${DEF_COLOR}"; 1567 | printf "${WHITE} TEST: "; 1568 | echo -n "$ARG " 1569 | fi 1570 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1571 | if [ $S == "OK" ]; then 1572 | printf "${GREEN}34.[OK] ${DEF_COLOR}"; 1573 | else 1574 | printf "${RED}34.[KO]${DEF_COLOR}"; 1575 | fi 1576 | 1577 | ARG="1 5 2 3 4"; 1578 | N=$(./push_swap $ARG | wc -l) 1579 | if [ $N -lt 13 ]; then 1580 | printf "${GREEN}35.[OK] ${DEF_COLOR}"; 1581 | else 1582 | printf "${RED}35.[KO]${DEF_COLOR}"; 1583 | printf "${WHITE} TEST: "; 1584 | echo -n "$ARG " 1585 | fi 1586 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1587 | if [ $S == "OK" ]; then 1588 | printf "${GREEN}36.[OK] ${DEF_COLOR}"; 1589 | else 1590 | printf "${RED}36.[KO]${DEF_COLOR}"; 1591 | fi 1592 | 1593 | ARG="1 5 2 4 3"; 1594 | N=$(./push_swap $ARG | wc -l) 1595 | if [ $N -lt 13 ]; then 1596 | printf "${GREEN}37.[OK] ${DEF_COLOR}"; 1597 | else 1598 | printf "${RED}37.[KO]${DEF_COLOR}"; 1599 | printf "${WHITE} TEST: "; 1600 | echo -n "$ARG " 1601 | fi 1602 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1603 | if [ $S == "OK" ]; then 1604 | printf "${GREEN}38.[OK] ${DEF_COLOR}"; 1605 | else 1606 | printf "${RED}38.[KO]${DEF_COLOR}"; 1607 | fi 1608 | 1609 | ARG="1 5 3 2 4"; 1610 | N=$(./push_swap $ARG | wc -l) 1611 | if [ $N -lt 13 ]; then 1612 | printf "${GREEN}39.[OK] ${DEF_COLOR}"; 1613 | else 1614 | printf "${RED}39.[KO]${DEF_COLOR}"; 1615 | printf "${WHITE} TEST: "; 1616 | echo -n "$ARG " 1617 | fi 1618 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1619 | if [ $S == "OK" ]; then 1620 | printf "${GREEN}40.[OK] ${DEF_COLOR}"; 1621 | else 1622 | printf "${RED}40.[KO]${DEF_COLOR}"; 1623 | fi 1624 | 1625 | ARG="1 5 3 4 2"; 1626 | N=$(./push_swap $ARG | wc -l) 1627 | if [ $N -lt 13 ]; then 1628 | printf "${GREEN}41.[OK] ${DEF_COLOR}"; 1629 | else 1630 | printf "${RED}41.[KO]${DEF_COLOR}"; 1631 | printf "${WHITE} TEST: "; 1632 | echo -n "$ARG " 1633 | fi 1634 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1635 | if [ $S == "OK" ]; then 1636 | printf "${GREEN}42.[OK] ${DEF_COLOR}"; 1637 | else 1638 | printf "${RED}42.[KO]${DEF_COLOR}"; 1639 | fi 1640 | 1641 | ARG="1 5 3 4 2"; 1642 | N=$(./push_swap $ARG | wc -l) 1643 | if [ $N -lt 13 ]; then 1644 | printf "${GREEN}43.[OK] ${DEF_COLOR}"; 1645 | else 1646 | printf "${RED}43.[KO]${DEF_COLOR}"; 1647 | printf "${WHITE} TEST: "; 1648 | echo -n "$ARG " 1649 | fi 1650 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1651 | if [ $S == "OK" ]; then 1652 | printf "${GREEN}44.[OK] ${DEF_COLOR}"; 1653 | else 1654 | printf "${RED}44.[KO]${DEF_COLOR}"; 1655 | fi 1656 | 1657 | ARG="1 5 4 2 3"; 1658 | N=$(./push_swap $ARG | wc -l) 1659 | if [ $N -lt 13 ]; then 1660 | printf "${GREEN}45.[OK] ${DEF_COLOR}"; 1661 | else 1662 | printf "${RED}45.[KO]${DEF_COLOR}"; 1663 | printf "${WHITE} TEST: "; 1664 | echo -n "$ARG " 1665 | fi 1666 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1667 | if [ $S == "OK" ]; then 1668 | printf "${GREEN}46.[OK] ${DEF_COLOR}"; 1669 | else 1670 | printf "${RED}46.[KO]${DEF_COLOR}"; 1671 | fi 1672 | 1673 | ARG="1 5 4 3 2"; 1674 | N=$(./push_swap $ARG | wc -l) 1675 | if [ $N -lt 13 ]; then 1676 | printf "${GREEN}47.[OK] ${DEF_COLOR}"; 1677 | else 1678 | printf "${RED}47.[KO]${DEF_COLOR}"; 1679 | printf "${WHITE} TEST: "; 1680 | echo -n "$ARG " 1681 | fi 1682 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1683 | if [ $S == "OK" ]; then 1684 | printf "${GREEN}48.[OK] ${DEF_COLOR}"; 1685 | else 1686 | printf "${RED}48.[KO]${DEF_COLOR}"; 1687 | fi 1688 | 1689 | ARG="2 1 3 4 5"; 1690 | N=$(./push_swap $ARG | wc -l) 1691 | if [ $N -lt 13 ]; then 1692 | printf "${GREEN}49.[OK] ${DEF_COLOR}"; 1693 | else 1694 | printf "${RED}49.[KO]${DEF_COLOR}"; 1695 | printf "${WHITE} TEST: "; 1696 | echo -n "$ARG " 1697 | fi 1698 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1699 | if [ $S == "OK" ]; then 1700 | printf "${GREEN}50.[OK] ${DEF_COLOR}"; 1701 | else 1702 | printf "${RED}50.[KO]${DEF_COLOR}"; 1703 | fi 1704 | 1705 | ARG="2 1 3 5 4"; 1706 | N=$(./push_swap $ARG | wc -l) 1707 | if [ $N -lt 13 ]; then 1708 | printf "${GREEN}51.[OK] ${DEF_COLOR}"; 1709 | else 1710 | printf "${RED}51.[KO]${DEF_COLOR}"; 1711 | printf "${WHITE} TEST: "; 1712 | echo -n "$ARG " 1713 | fi 1714 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1715 | if [ $S == "OK" ]; then 1716 | printf "${GREEN}52.[OK] ${DEF_COLOR}"; 1717 | else 1718 | printf "${RED}52.[KO]${DEF_COLOR}"; 1719 | fi 1720 | 1721 | ARG="2 1 4 3 5"; 1722 | N=$(./push_swap $ARG | wc -l) 1723 | if [ $N -lt 13 ]; then 1724 | printf "${GREEN}53.[OK] ${DEF_COLOR}"; 1725 | else 1726 | printf "${RED}53.[KO]${DEF_COLOR}"; 1727 | printf "${WHITE} TEST: "; 1728 | echo -n "$ARG " 1729 | fi 1730 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1731 | if [ $S == "OK" ]; then 1732 | printf "${GREEN}54.[OK] ${DEF_COLOR}"; 1733 | else 1734 | printf "${RED}54.[KO]${DEF_COLOR}"; 1735 | fi 1736 | 1737 | ARG="2 1 4 5 3"; 1738 | N=$(./push_swap $ARG | wc -l) 1739 | if [ $N -lt 13 ]; then 1740 | printf "${GREEN}55.[OK] ${DEF_COLOR}"; 1741 | else 1742 | printf "${RED}55.[KO]${DEF_COLOR}"; 1743 | printf "${WHITE} TEST: "; 1744 | echo -n "$ARG " 1745 | fi 1746 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1747 | if [ $S == "OK" ]; then 1748 | printf "${GREEN}56.[OK] ${DEF_COLOR}"; 1749 | else 1750 | printf "${RED}56.[KO]${DEF_COLOR}"; 1751 | fi 1752 | 1753 | ARG="2 1 5 3 4"; 1754 | N=$(./push_swap $ARG | wc -l) 1755 | if [ $N -lt 13 ]; then 1756 | printf "${GREEN}57.[OK] ${DEF_COLOR}"; 1757 | else 1758 | printf "${RED}57.[KO]${DEF_COLOR}"; 1759 | printf "${WHITE} TEST: "; 1760 | echo -n "$ARG " 1761 | fi 1762 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1763 | if [ $S == "OK" ]; then 1764 | printf "${GREEN}58.[OK] ${DEF_COLOR}"; 1765 | else 1766 | printf "${RED}58.[KO]${DEF_COLOR}"; 1767 | fi 1768 | 1769 | ARG="2 1 5 4 3"; 1770 | N=$(./push_swap $ARG | wc -l) 1771 | if [ $N -lt 13 ]; then 1772 | printf "${GREEN}59.[OK] ${DEF_COLOR}"; 1773 | else 1774 | printf "${RED}59.[KO]${DEF_COLOR}"; 1775 | printf "${WHITE} TEST: "; 1776 | echo -n "$ARG " 1777 | fi 1778 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1779 | if [ $S == "OK" ]; then 1780 | printf "${GREEN}60.[OK] ${DEF_COLOR}"; 1781 | else 1782 | printf "${RED}60.[KO]${DEF_COLOR}"; 1783 | fi 1784 | 1785 | ARG="2 3 1 4 5"; 1786 | N=$(./push_swap $ARG | wc -l) 1787 | if [ $N -lt 13 ]; then 1788 | printf "${GREEN}61.[OK] ${DEF_COLOR}"; 1789 | else 1790 | printf "${RED}61.[KO]${DEF_COLOR}"; 1791 | printf "${WHITE} TEST: "; 1792 | echo -n "$ARG " 1793 | fi 1794 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1795 | if [ $S == "OK" ]; then 1796 | printf "${GREEN}62.[OK] ${DEF_COLOR}"; 1797 | else 1798 | printf "${RED}62.[KO]${DEF_COLOR}"; 1799 | fi 1800 | 1801 | ARG="2 3 1 5 4"; 1802 | N=$(./push_swap $ARG | wc -l) 1803 | if [ $N -lt 13 ]; then 1804 | printf "${GREEN}63.[OK] ${DEF_COLOR}"; 1805 | else 1806 | printf "${RED}63.[KO]${DEF_COLOR}"; 1807 | printf "${WHITE} TEST: "; 1808 | echo -n "$ARG " 1809 | fi 1810 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1811 | if [ $S == "OK" ]; then 1812 | printf "${GREEN}64.[OK] ${DEF_COLOR}"; 1813 | else 1814 | printf "${RED}64.[KO]${DEF_COLOR}"; 1815 | fi 1816 | 1817 | ARG="2 3 4 1 5"; 1818 | N=$(./push_swap $ARG | wc -l) 1819 | if [ $N -lt 13 ]; then 1820 | printf "${GREEN}65.[OK] ${DEF_COLOR}"; 1821 | else 1822 | printf "${RED}65.[KO]${DEF_COLOR}"; 1823 | printf "${WHITE} TEST: "; 1824 | echo -n "$ARG " 1825 | fi 1826 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1827 | if [ $S == "OK" ]; then 1828 | printf "${GREEN}66.[OK] ${DEF_COLOR}"; 1829 | else 1830 | printf "${RED}66.[KO]${DEF_COLOR}"; 1831 | fi 1832 | 1833 | ARG="2 3 4 5 1"; 1834 | N=$(./push_swap $ARG | wc -l) 1835 | if [ $N -lt 13 ]; then 1836 | printf "${GREEN}67.[OK] ${DEF_COLOR}"; 1837 | else 1838 | printf "${RED}67.[KO]${DEF_COLOR}"; 1839 | printf "${WHITE} TEST: "; 1840 | echo -n "$ARG " 1841 | fi 1842 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1843 | if [ $S == "OK" ]; then 1844 | printf "${GREEN}68.[OK] ${DEF_COLOR}"; 1845 | else 1846 | printf "${RED}68.[KO]${DEF_COLOR}"; 1847 | fi 1848 | 1849 | ARG="2 3 5 1 4"; 1850 | N=$(./push_swap $ARG | wc -l) 1851 | if [ $N -lt 13 ]; then 1852 | printf "${GREEN}69.[OK] ${DEF_COLOR}"; 1853 | else 1854 | printf "${RED}69.[KO]${DEF_COLOR}"; 1855 | printf "${WHITE} TEST: "; 1856 | echo -n "$ARG " 1857 | fi 1858 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1859 | if [ $S == "OK" ]; then 1860 | printf "${GREEN}70.[OK] ${DEF_COLOR}"; 1861 | else 1862 | printf "${RED}70.[KO]${DEF_COLOR}"; 1863 | fi 1864 | 1865 | ARG="2 3 5 4 1"; 1866 | N=$(./push_swap $ARG | wc -l) 1867 | if [ $N -lt 13 ]; then 1868 | printf "${GREEN}71.[OK] ${DEF_COLOR}"; 1869 | else 1870 | printf "${RED}71.[KO]${DEF_COLOR}"; 1871 | printf "${WHITE} TEST: "; 1872 | echo -n "$ARG " 1873 | fi 1874 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1875 | if [ $S == "OK" ]; then 1876 | printf "${GREEN}72.[OK] ${DEF_COLOR}"; 1877 | else 1878 | printf "${RED}72.[KO]${DEF_COLOR}"; 1879 | fi 1880 | 1881 | ARG="2 4 1 3 5"; 1882 | N=$(./push_swap $ARG | wc -l) 1883 | if [ $N -lt 13 ]; then 1884 | printf "${GREEN}73.[OK] ${DEF_COLOR}"; 1885 | else 1886 | printf "${RED}73.[KO]${DEF_COLOR}"; 1887 | printf "${WHITE} TEST: "; 1888 | echo -n "$ARG " 1889 | fi 1890 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1891 | if [ $S == "OK" ]; then 1892 | printf "${GREEN}74.[OK] ${DEF_COLOR}"; 1893 | else 1894 | printf "${RED}74.[KO]${DEF_COLOR}"; 1895 | fi 1896 | 1897 | ARG="2 4 1 5 3"; 1898 | N=$(./push_swap $ARG | wc -l) 1899 | if [ $N -lt 13 ]; then 1900 | printf "${GREEN}75.[OK] ${DEF_COLOR}"; 1901 | else 1902 | printf "${RED}75.[KO]${DEF_COLOR}"; 1903 | printf "${WHITE} TEST: "; 1904 | echo -n "$ARG " 1905 | fi 1906 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1907 | if [ $S == "OK" ]; then 1908 | printf "${GREEN}76.[OK] ${DEF_COLOR}"; 1909 | else 1910 | printf "${RED}76.[KO]${DEF_COLOR}"; 1911 | fi 1912 | 1913 | ARG="2 4 3 1 5"; 1914 | N=$(./push_swap $ARG | wc -l) 1915 | if [ $N -lt 13 ]; then 1916 | printf "${GREEN}77.[OK] ${DEF_COLOR}"; 1917 | else 1918 | printf "${RED}77.[KO]${DEF_COLOR}"; 1919 | printf "${WHITE} TEST: "; 1920 | echo -n "$ARG " 1921 | fi 1922 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1923 | if [ $S == "OK" ]; then 1924 | printf "${GREEN}78.[OK] ${DEF_COLOR}"; 1925 | else 1926 | printf "${RED}78.[KO]${DEF_COLOR}"; 1927 | fi 1928 | 1929 | ARG="2 4 3 5 1"; 1930 | N=$(./push_swap $ARG | wc -l) 1931 | if [ $N -lt 13 ]; then 1932 | printf "${GREEN}79.[OK] ${DEF_COLOR}"; 1933 | else 1934 | printf "${RED}79.[KO]${DEF_COLOR}"; 1935 | printf "${WHITE} TEST: "; 1936 | echo -n "$ARG " 1937 | fi 1938 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1939 | if [ $S == "OK" ]; then 1940 | printf "${GREEN}80.[OK] ${DEF_COLOR}"; 1941 | else 1942 | printf "${RED}80.[KO]${DEF_COLOR}"; 1943 | fi 1944 | 1945 | ARG="2 4 5 1 3"; 1946 | N=$(./push_swap $ARG | wc -l) 1947 | if [ $N -lt 13 ]; then 1948 | printf "${GREEN}81.[OK] ${DEF_COLOR}"; 1949 | else 1950 | printf "${RED}81.[KO]${DEF_COLOR}"; 1951 | printf "${WHITE} TEST: "; 1952 | echo -n "$ARG " 1953 | fi 1954 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1955 | if [ $S == "OK" ]; then 1956 | printf "${GREEN}82.[OK] ${DEF_COLOR}"; 1957 | else 1958 | printf "${RED}82.[KO]${DEF_COLOR}"; 1959 | fi 1960 | 1961 | ARG="2 4 5 3 1"; 1962 | N=$(./push_swap $ARG | wc -l) 1963 | if [ $N -lt 13 ]; then 1964 | printf "${GREEN}83.[OK] ${DEF_COLOR}"; 1965 | else 1966 | printf "${RED}83.[KO]${DEF_COLOR}"; 1967 | printf "${WHITE} TEST: "; 1968 | echo -n "$ARG " 1969 | fi 1970 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1971 | if [ $S == "OK" ]; then 1972 | printf "${GREEN}84.[OK] ${DEF_COLOR}"; 1973 | else 1974 | printf "${RED}84.[KO]${DEF_COLOR}"; 1975 | fi 1976 | 1977 | ARG="2 5 1 3 4"; 1978 | N=$(./push_swap $ARG | wc -l) 1979 | if [ $N -lt 13 ]; then 1980 | printf "${GREEN}85.[OK] ${DEF_COLOR}"; 1981 | else 1982 | printf "${RED}85.[KO]${DEF_COLOR}"; 1983 | printf "${WHITE} TEST: "; 1984 | echo -n "$ARG " 1985 | fi 1986 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 1987 | if [ $S == "OK" ]; then 1988 | printf "${GREEN}86.[OK] ${DEF_COLOR}"; 1989 | else 1990 | printf "${RED}86.[KO]${DEF_COLOR}"; 1991 | fi 1992 | 1993 | ARG="2 5 1 4 3"; 1994 | N=$(./push_swap $ARG | wc -l) 1995 | if [ $N -lt 13 ]; then 1996 | printf "${GREEN}87.[OK] ${DEF_COLOR}"; 1997 | else 1998 | printf "${RED}87.[KO]${DEF_COLOR}"; 1999 | printf "${WHITE} TEST: "; 2000 | echo -n "$ARG " 2001 | fi 2002 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2003 | if [ $S == "OK" ]; then 2004 | printf "${GREEN}88.[OK] ${DEF_COLOR}"; 2005 | else 2006 | printf "${RED}88.[KO]${DEF_COLOR}"; 2007 | fi 2008 | 2009 | ARG="2 5 3 1 4"; 2010 | N=$(./push_swap $ARG | wc -l) 2011 | if [ $N -lt 13 ]; then 2012 | printf "${GREEN}89.[OK] ${DEF_COLOR}"; 2013 | else 2014 | printf "${RED}89.[KO]${DEF_COLOR}"; 2015 | printf "${WHITE} TEST: "; 2016 | echo -n "$ARG " 2017 | fi 2018 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2019 | if [ $S == "OK" ]; then 2020 | printf "${GREEN}90.[OK] ${DEF_COLOR}"; 2021 | else 2022 | printf "${RED}90.[KO]${DEF_COLOR}"; 2023 | fi 2024 | 2025 | ARG="2 5 3 4 1"; 2026 | N=$(./push_swap $ARG | wc -l) 2027 | if [ $N -lt 13 ]; then 2028 | printf "${GREEN}91.[OK] ${DEF_COLOR}"; 2029 | else 2030 | printf "${RED}91.[KO]${DEF_COLOR}"; 2031 | printf "${WHITE} TEST: "; 2032 | echo -n "$ARG " 2033 | fi 2034 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2035 | if [ $S == "OK" ]; then 2036 | printf "${GREEN}92.[OK] ${DEF_COLOR}"; 2037 | else 2038 | printf "${RED}92.[KO]${DEF_COLOR}"; 2039 | fi 2040 | 2041 | ARG="2 5 4 1 3"; 2042 | N=$(./push_swap $ARG | wc -l) 2043 | if [ $N -lt 13 ]; then 2044 | printf "${GREEN}93.[OK] ${DEF_COLOR}"; 2045 | else 2046 | printf "${RED}93.[KO]${DEF_COLOR}"; 2047 | printf "${WHITE} TEST: "; 2048 | echo -n "$ARG " 2049 | fi 2050 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2051 | if [ $S == "OK" ]; then 2052 | printf "${GREEN}94.[OK] ${DEF_COLOR}"; 2053 | else 2054 | printf "${RED}94.[KO]${DEF_COLOR}"; 2055 | fi 2056 | 2057 | ARG="2 5 4 3 1"; 2058 | N=$(./push_swap $ARG | wc -l) 2059 | if [ $N -lt 13 ]; then 2060 | printf "${GREEN}95.[OK] ${DEF_COLOR}"; 2061 | else 2062 | printf "${RED}95.[KO]${DEF_COLOR}"; 2063 | printf "${WHITE} TEST: "; 2064 | echo -n "$ARG " 2065 | fi 2066 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2067 | if [ $S == "OK" ]; then 2068 | printf "${GREEN}96.[OK] ${DEF_COLOR}"; 2069 | else 2070 | printf "${RED}96.[KO]${DEF_COLOR}"; 2071 | fi 2072 | 2073 | ARG="3 1 2 4 5"; 2074 | N=$(./push_swap $ARG | wc -l) 2075 | if [ $N -lt 13 ]; then 2076 | printf "${GREEN}97.[OK] ${DEF_COLOR}"; 2077 | else 2078 | printf "${RED}97.[KO]${DEF_COLOR}"; 2079 | printf "${WHITE} TEST: "; 2080 | echo -n "$ARG " 2081 | fi 2082 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2083 | if [ $S == "OK" ]; then 2084 | printf "${GREEN}98.[OK] ${DEF_COLOR}"; 2085 | else 2086 | printf "${RED}98.[KO]${DEF_COLOR}"; 2087 | fi 2088 | 2089 | ARG="3 1 2 5 4"; 2090 | N=$(./push_swap $ARG | wc -l) 2091 | if [ $N -lt 13 ]; then 2092 | printf "${GREEN}99.[OK] ${DEF_COLOR}"; 2093 | else 2094 | printf "${RED}99.[KO]${DEF_COLOR}"; 2095 | printf "${WHITE} TEST: "; 2096 | echo -n "$ARG " 2097 | fi 2098 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2099 | if [ $S == "OK" ]; then 2100 | printf "${GREEN}100.[OK] ${DEF_COLOR}"; 2101 | else 2102 | printf "${RED}100.[KO]${DEF_COLOR}"; 2103 | fi 2104 | 2105 | ARG="3 1 4 2 5"; 2106 | N=$(./push_swap $ARG | wc -l) 2107 | if [ $N -lt 13 ]; then 2108 | printf "${GREEN}101.[OK] ${DEF_COLOR}"; 2109 | else 2110 | printf "${RED}101.[KO]${DEF_COLOR}"; 2111 | printf "${WHITE} TEST: "; 2112 | echo -n "$ARG " 2113 | fi 2114 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2115 | if [ $S == "OK" ]; then 2116 | printf "${GREEN}102.[OK] ${DEF_COLOR}"; 2117 | else 2118 | printf "${RED}102.[KO]${DEF_COLOR}"; 2119 | fi 2120 | 2121 | ARG="3 1 4 5 2"; 2122 | N=$(./push_swap $ARG | wc -l) 2123 | if [ $N -lt 13 ]; then 2124 | printf "${GREEN}103.[OK] ${DEF_COLOR}"; 2125 | else 2126 | printf "${RED}103.[KO]${DEF_COLOR}"; 2127 | printf "${WHITE} TEST: "; 2128 | echo -n "$ARG " 2129 | fi 2130 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2131 | if [ $S == "OK" ]; then 2132 | printf "${GREEN}104.[OK] ${DEF_COLOR}"; 2133 | else 2134 | printf "${RED}104.[KO]${DEF_COLOR}"; 2135 | fi 2136 | 2137 | ARG="3 1 5 2 4"; 2138 | N=$(./push_swap $ARG | wc -l) 2139 | if [ $N -lt 13 ]; then 2140 | printf "${GREEN}105.[OK] ${DEF_COLOR}"; 2141 | else 2142 | printf "${RED}105.[KO]${DEF_COLOR}"; 2143 | printf "${WHITE} TEST: "; 2144 | echo -n "$ARG " 2145 | fi 2146 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2147 | if [ $S == "OK" ]; then 2148 | printf "${GREEN}106.[OK] ${DEF_COLOR}"; 2149 | else 2150 | printf "${RED}106.[KO]${DEF_COLOR}"; 2151 | fi 2152 | 2153 | ARG="3 1 5 4 2"; 2154 | N=$(./push_swap $ARG | wc -l) 2155 | if [ $N -lt 13 ]; then 2156 | printf "${GREEN}107.[OK] ${DEF_COLOR}"; 2157 | else 2158 | printf "${RED}107.[KO]${DEF_COLOR}"; 2159 | printf "${WHITE} TEST: "; 2160 | echo -n "$ARG " 2161 | fi 2162 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2163 | if [ $S == "OK" ]; then 2164 | printf "${GREEN}108.[OK] ${DEF_COLOR}"; 2165 | else 2166 | printf "${RED}108.[KO]${DEF_COLOR}"; 2167 | fi 2168 | 2169 | ARG="3 2 1 4 5"; 2170 | N=$(./push_swap $ARG | wc -l) 2171 | if [ $N -lt 13 ]; then 2172 | printf "${GREEN}109.[OK] ${DEF_COLOR}"; 2173 | else 2174 | printf "${RED}109.[KO]${DEF_COLOR}"; 2175 | printf "${WHITE} TEST: "; 2176 | echo -n "$ARG " 2177 | fi 2178 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2179 | if [ $S == "OK" ]; then 2180 | printf "${GREEN}110.[OK] ${DEF_COLOR}"; 2181 | else 2182 | printf "${RED}110.[KO]${DEF_COLOR}"; 2183 | fi 2184 | 2185 | ARG="3 2 1 5 4"; 2186 | N=$(./push_swap $ARG | wc -l) 2187 | if [ $N -lt 13 ]; then 2188 | printf "${GREEN}111.[OK] ${DEF_COLOR}"; 2189 | else 2190 | printf "${RED}111.[KO]${DEF_COLOR}"; 2191 | printf "${WHITE} TEST: "; 2192 | echo -n "$ARG " 2193 | fi 2194 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2195 | if [ $S == "OK" ]; then 2196 | printf "${GREEN}112.[OK] ${DEF_COLOR}"; 2197 | else 2198 | printf "${RED}112.[KO]${DEF_COLOR}"; 2199 | fi 2200 | 2201 | ARG="3 2 4 1 5"; 2202 | N=$(./push_swap $ARG | wc -l) 2203 | if [ $N -lt 13 ]; then 2204 | printf "${GREEN}113.[OK] ${DEF_COLOR}"; 2205 | else 2206 | printf "${RED}113.[KO]${DEF_COLOR}"; 2207 | printf "${WHITE} TEST: "; 2208 | echo -n "$ARG " 2209 | fi 2210 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2211 | if [ $S == "OK" ]; then 2212 | printf "${GREEN}114.[OK] ${DEF_COLOR}"; 2213 | else 2214 | printf "${RED}114.[KO]${DEF_COLOR}"; 2215 | fi 2216 | 2217 | ARG="3 2 4 5 1"; 2218 | N=$(./push_swap $ARG | wc -l) 2219 | if [ $N -lt 13 ]; then 2220 | printf "${GREEN}115.[OK] ${DEF_COLOR}"; 2221 | else 2222 | printf "${RED}115.[KO]${DEF_COLOR}"; 2223 | printf "${WHITE} TEST: "; 2224 | echo -n "$ARG " 2225 | fi 2226 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2227 | if [ $S == "OK" ]; then 2228 | printf "${GREEN}116.[OK] ${DEF_COLOR}"; 2229 | else 2230 | printf "${RED}116.[KO]${DEF_COLOR}"; 2231 | fi 2232 | 2233 | ARG="3 2 5 1 4"; 2234 | N=$(./push_swap $ARG | wc -l) 2235 | if [ $N -lt 13 ]; then 2236 | printf "${GREEN}117.[OK] ${DEF_COLOR}"; 2237 | else 2238 | printf "${RED}117.[KO]${DEF_COLOR}"; 2239 | printf "${WHITE} TEST: "; 2240 | echo -n "$ARG " 2241 | fi 2242 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2243 | if [ $S == "OK" ]; then 2244 | printf "${GREEN}118.[OK] ${DEF_COLOR}"; 2245 | else 2246 | printf "${RED}118.[KO]${DEF_COLOR}"; 2247 | fi 2248 | 2249 | ARG="3 2 5 4 1"; 2250 | N=$(./push_swap $ARG | wc -l) 2251 | if [ $N -lt 13 ]; then 2252 | printf "${GREEN}119.[OK] ${DEF_COLOR}"; 2253 | else 2254 | printf "${RED}119.[KO]${DEF_COLOR}"; 2255 | printf "${WHITE} TEST: "; 2256 | echo -n "$ARG " 2257 | fi 2258 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2259 | if [ $S == "OK" ]; then 2260 | printf "${GREEN}120.[OK] ${DEF_COLOR}"; 2261 | else 2262 | printf "${RED}120.[KO]${DEF_COLOR}"; 2263 | fi 2264 | 2265 | ARG="3 4 1 2 5"; 2266 | N=$(./push_swap $ARG | wc -l) 2267 | if [ $N -lt 13 ]; then 2268 | printf "${GREEN}121.[OK] ${DEF_COLOR}"; 2269 | else 2270 | printf "${RED}121.[KO]${DEF_COLOR}"; 2271 | printf "${WHITE} TEST: "; 2272 | echo -n "$ARG " 2273 | fi 2274 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2275 | if [ $S == "OK" ]; then 2276 | printf "${GREEN}122.[OK] ${DEF_COLOR}"; 2277 | else 2278 | printf "${RED}122.[KO]${DEF_COLOR}"; 2279 | fi 2280 | 2281 | ARG="3 4 1 5 2"; 2282 | N=$(./push_swap $ARG | wc -l) 2283 | if [ $N -lt 13 ]; then 2284 | printf "${GREEN}123.[OK] ${DEF_COLOR}"; 2285 | else 2286 | printf "${RED}123.[KO]${DEF_COLOR}"; 2287 | printf "${WHITE} TEST: "; 2288 | echo -n "$ARG " 2289 | fi 2290 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2291 | if [ $S == "OK" ]; then 2292 | printf "${GREEN}124.[OK] ${DEF_COLOR}"; 2293 | else 2294 | printf "${RED}124.[KO]${DEF_COLOR}"; 2295 | fi 2296 | 2297 | ARG="3 4 2 1 5"; 2298 | N=$(./push_swap $ARG | wc -l) 2299 | if [ $N -lt 13 ]; then 2300 | printf "${GREEN}125.[OK] ${DEF_COLOR}"; 2301 | else 2302 | printf "${RED}125.[KO]${DEF_COLOR}"; 2303 | printf "${WHITE} TEST: "; 2304 | echo -n "$ARG " 2305 | fi 2306 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2307 | if [ $S == "OK" ]; then 2308 | printf "${GREEN}126.[OK] ${DEF_COLOR}"; 2309 | else 2310 | printf "${RED}126.[KO]${DEF_COLOR}"; 2311 | fi 2312 | 2313 | ARG="3 4 2 5 1"; 2314 | N=$(./push_swap $ARG | wc -l) 2315 | if [ $N -lt 13 ]; then 2316 | printf "${GREEN}127.[OK] ${DEF_COLOR}"; 2317 | else 2318 | printf "${RED}127.[KO]${DEF_COLOR}"; 2319 | printf "${WHITE} TEST: "; 2320 | echo -n "$ARG " 2321 | fi 2322 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2323 | if [ $S == "OK" ]; then 2324 | printf "${GREEN}128.[OK] ${DEF_COLOR}"; 2325 | else 2326 | printf "${RED}128.[KO]${DEF_COLOR}"; 2327 | fi 2328 | 2329 | ARG="3 4 5 1 2"; 2330 | N=$(./push_swap $ARG | wc -l) 2331 | if [ $N -lt 13 ]; then 2332 | printf "${GREEN}129.[OK] ${DEF_COLOR}"; 2333 | else 2334 | printf "${RED}129.[KO]${DEF_COLOR}"; 2335 | printf "${WHITE} TEST: "; 2336 | echo -n "$ARG " 2337 | fi 2338 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2339 | if [ $S == "OK" ]; then 2340 | printf "${GREEN}130.[OK] ${DEF_COLOR}"; 2341 | else 2342 | printf "${RED}130.[KO]${DEF_COLOR}"; 2343 | fi 2344 | 2345 | ARG="3 4 5 2 1"; 2346 | N=$(./push_swap $ARG | wc -l) 2347 | if [ $N -lt 13 ]; then 2348 | printf "${GREEN}131.[OK] ${DEF_COLOR}"; 2349 | else 2350 | printf "${RED}131.[KO]${DEF_COLOR}"; 2351 | printf "${WHITE} TEST: "; 2352 | echo -n "$ARG " 2353 | fi 2354 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2355 | if [ $S == "OK" ]; then 2356 | printf "${GREEN}132.[OK] ${DEF_COLOR}"; 2357 | else 2358 | printf "${RED}132.[KO]${DEF_COLOR}"; 2359 | fi 2360 | 2361 | ARG="3 5 1 2 4"; 2362 | N=$(./push_swap $ARG | wc -l) 2363 | if [ $N -lt 13 ]; then 2364 | printf "${GREEN}133.[OK] ${DEF_COLOR}"; 2365 | else 2366 | printf "${RED}133.[KO]${DEF_COLOR}"; 2367 | printf "${WHITE} TEST: "; 2368 | echo -n "$ARG " 2369 | fi 2370 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2371 | if [ $S == "OK" ]; then 2372 | printf "${GREEN}134.[OK] ${DEF_COLOR}"; 2373 | else 2374 | printf "${RED}134.[KO]${DEF_COLOR}"; 2375 | fi 2376 | 2377 | ARG="3 5 1 4 2"; 2378 | N=$(./push_swap $ARG | wc -l) 2379 | if [ $N -lt 13 ]; then 2380 | printf "${GREEN}135.[OK] ${DEF_COLOR}"; 2381 | else 2382 | printf "${RED}135.[KO]${DEF_COLOR}"; 2383 | printf "${WHITE} TEST: "; 2384 | echo -n "$ARG " 2385 | fi 2386 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2387 | if [ $S == "OK" ]; then 2388 | printf "${GREEN}136.[OK] ${DEF_COLOR}"; 2389 | else 2390 | printf "${RED}136.[KO]${DEF_COLOR}"; 2391 | fi 2392 | 2393 | ARG="3 5 2 1 4"; 2394 | N=$(./push_swap $ARG | wc -l) 2395 | if [ $N -lt 13 ]; then 2396 | printf "${GREEN}137.[OK] ${DEF_COLOR}"; 2397 | else 2398 | printf "${RED}137.[KO]${DEF_COLOR}"; 2399 | printf "${WHITE} TEST: "; 2400 | echo -n "$ARG " 2401 | fi 2402 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2403 | if [ $S == "OK" ]; then 2404 | printf "${GREEN}138.[OK] ${DEF_COLOR}"; 2405 | else 2406 | printf "${RED}138.[KO]${DEF_COLOR}"; 2407 | fi 2408 | 2409 | ARG="3 5 2 4 1"; 2410 | N=$(./push_swap $ARG | wc -l) 2411 | if [ $N -lt 13 ]; then 2412 | printf "${GREEN}139.[OK] ${DEF_COLOR}"; 2413 | else 2414 | printf "${RED}139.[KO]${DEF_COLOR}"; 2415 | printf "${WHITE} TEST: "; 2416 | echo -n "$ARG " 2417 | fi 2418 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2419 | if [ $S == "OK" ]; then 2420 | printf "${GREEN}140.[OK] ${DEF_COLOR}"; 2421 | else 2422 | printf "${RED}140.[KO]${DEF_COLOR}"; 2423 | fi 2424 | 2425 | ARG="3 5 4 1 2"; 2426 | N=$(./push_swap $ARG | wc -l) 2427 | if [ $N -lt 13 ]; then 2428 | printf "${GREEN}141.[OK] ${DEF_COLOR}"; 2429 | else 2430 | printf "${RED}141.[KO]${DEF_COLOR}"; 2431 | printf "${WHITE} TEST: "; 2432 | echo -n "$ARG " 2433 | fi 2434 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2435 | if [ $S == "OK" ]; then 2436 | printf "${GREEN}142.[OK] ${DEF_COLOR}"; 2437 | else 2438 | printf "${RED}142.[KO]${DEF_COLOR}"; 2439 | fi 2440 | 2441 | ARG="3 5 4 2 1"; 2442 | N=$(./push_swap $ARG | wc -l) 2443 | if [ $N -lt 13 ]; then 2444 | printf "${GREEN}143.[OK] ${DEF_COLOR}"; 2445 | else 2446 | printf "${RED}143.[KO]${DEF_COLOR}"; 2447 | printf "${WHITE} TEST: "; 2448 | echo -n "$ARG " 2449 | fi 2450 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2451 | if [ $S == "OK" ]; then 2452 | printf "${GREEN}144.[OK] ${DEF_COLOR}"; 2453 | else 2454 | printf "${RED}144.[KO]${DEF_COLOR}"; 2455 | fi 2456 | 2457 | ARG="4 1 2 3 5"; 2458 | N=$(./push_swap $ARG | wc -l) 2459 | if [ $N -lt 13 ]; then 2460 | printf "${GREEN}145.[OK] ${DEF_COLOR}"; 2461 | else 2462 | printf "${RED}145.[KO]${DEF_COLOR}"; 2463 | printf "${WHITE} TEST: "; 2464 | echo -n "$ARG " 2465 | fi 2466 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2467 | if [ $S == "OK" ]; then 2468 | printf "${GREEN}146.[OK] ${DEF_COLOR}"; 2469 | else 2470 | printf "${RED}146.[KO]${DEF_COLOR}"; 2471 | fi 2472 | 2473 | ARG="4 1 2 5 3"; 2474 | N=$(./push_swap $ARG | wc -l) 2475 | if [ $N -lt 13 ]; then 2476 | printf "${GREEN}147.[OK] ${DEF_COLOR}"; 2477 | else 2478 | printf "${RED}147.[KO]${DEF_COLOR}"; 2479 | printf "${WHITE} TEST: "; 2480 | echo -n "$ARG " 2481 | fi 2482 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2483 | if [ $S == "OK" ]; then 2484 | printf "${GREEN}148.[OK] ${DEF_COLOR}"; 2485 | else 2486 | printf "${RED}148.[KO]${DEF_COLOR}"; 2487 | fi 2488 | 2489 | ARG="4 1 3 2 5"; 2490 | N=$(./push_swap $ARG | wc -l) 2491 | if [ $N -lt 13 ]; then 2492 | printf "${GREEN}149.[OK] ${DEF_COLOR}"; 2493 | else 2494 | printf "${RED}149.[KO]${DEF_COLOR}"; 2495 | printf "${WHITE} TEST: "; 2496 | echo -n "$ARG " 2497 | fi 2498 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2499 | if [ $S == "OK" ]; then 2500 | printf "${GREEN}150.[OK] ${DEF_COLOR}"; 2501 | else 2502 | printf "${RED}150.[KO]${DEF_COLOR}"; 2503 | fi 2504 | 2505 | ARG="4 1 3 5 2"; 2506 | N=$(./push_swap $ARG | wc -l) 2507 | if [ $N -lt 13 ]; then 2508 | printf "${GREEN}151.[OK] ${DEF_COLOR}"; 2509 | else 2510 | printf "${RED}151.[KO]${DEF_COLOR}"; 2511 | printf "${WHITE} TEST: "; 2512 | echo -n "$ARG " 2513 | fi 2514 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2515 | if [ $S == "OK" ]; then 2516 | printf "${GREEN}152.[OK] ${DEF_COLOR}"; 2517 | else 2518 | printf "${RED}152.[KO]${DEF_COLOR}"; 2519 | fi 2520 | 2521 | ARG="4 1 5 2 3"; 2522 | N=$(./push_swap $ARG | wc -l) 2523 | if [ $N -lt 13 ]; then 2524 | printf "${GREEN}153.[OK] ${DEF_COLOR}"; 2525 | else 2526 | printf "${RED}153.[KO]${DEF_COLOR}"; 2527 | printf "${WHITE} TEST: "; 2528 | echo -n "$ARG " 2529 | fi 2530 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2531 | if [ $S == "OK" ]; then 2532 | printf "${GREEN}154.[OK] ${DEF_COLOR}"; 2533 | else 2534 | printf "${RED}154.[KO]${DEF_COLOR}"; 2535 | fi 2536 | 2537 | ARG="4 1 5 3 2"; 2538 | N=$(./push_swap $ARG | wc -l) 2539 | if [ $N -lt 13 ]; then 2540 | printf "${GREEN}155.[OK] ${DEF_COLOR}"; 2541 | else 2542 | printf "${RED}155.[KO]${DEF_COLOR}"; 2543 | printf "${WHITE} TEST: "; 2544 | echo -n "$ARG " 2545 | fi 2546 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2547 | if [ $S == "OK" ]; then 2548 | printf "${GREEN}156.[OK] ${DEF_COLOR}"; 2549 | else 2550 | printf "${RED}156.[KO]${DEF_COLOR}"; 2551 | fi 2552 | 2553 | ARG="4 2 1 3 5"; 2554 | N=$(./push_swap $ARG | wc -l) 2555 | if [ $N -lt 13 ]; then 2556 | printf "${GREEN}157.[OK] ${DEF_COLOR}"; 2557 | else 2558 | printf "${RED}157.[KO]${DEF_COLOR}"; 2559 | printf "${WHITE} TEST: "; 2560 | echo -n "$ARG " 2561 | fi 2562 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2563 | if [ $S == "OK" ]; then 2564 | printf "${GREEN}158.[OK] ${DEF_COLOR}"; 2565 | else 2566 | printf "${RED}158.[KO]${DEF_COLOR}"; 2567 | fi 2568 | 2569 | ARG="4 2 1 5 3"; 2570 | N=$(./push_swap $ARG | wc -l) 2571 | if [ $N -lt 13 ]; then 2572 | printf "${GREEN}159.[OK] ${DEF_COLOR}"; 2573 | else 2574 | printf "${RED}159.[KO]${DEF_COLOR}"; 2575 | printf "${WHITE} TEST: "; 2576 | echo -n "$ARG " 2577 | fi 2578 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2579 | if [ $S == "OK" ]; then 2580 | printf "${GREEN}160.[OK] ${DEF_COLOR}"; 2581 | else 2582 | printf "${RED}160.[KO]${DEF_COLOR}"; 2583 | fi 2584 | 2585 | ARG="4 2 3 1 5"; 2586 | N=$(./push_swap $ARG | wc -l) 2587 | if [ $N -lt 13 ]; then 2588 | printf "${GREEN}161.[OK] ${DEF_COLOR}"; 2589 | else 2590 | printf "${RED}161.[KO]${DEF_COLOR}"; 2591 | printf "${WHITE} TEST: "; 2592 | echo -n "$ARG " 2593 | fi 2594 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2595 | if [ $S == "OK" ]; then 2596 | printf "${GREEN}162.[OK] ${DEF_COLOR}"; 2597 | else 2598 | printf "${RED}162.[KO]${DEF_COLOR}"; 2599 | fi 2600 | 2601 | ARG="4 2 3 5 1"; 2602 | N=$(./push_swap $ARG | wc -l) 2603 | if [ $N -lt 13 ]; then 2604 | printf "${GREEN}163.[OK] ${DEF_COLOR}"; 2605 | else 2606 | printf "${RED}163.[KO]${DEF_COLOR}"; 2607 | printf "${WHITE} TEST: "; 2608 | echo -n "$ARG " 2609 | fi 2610 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2611 | if [ $S == "OK" ]; then 2612 | printf "${GREEN}164.[OK] ${DEF_COLOR}"; 2613 | else 2614 | printf "${RED}164.[KO]${DEF_COLOR}"; 2615 | fi 2616 | 2617 | ARG="4 2 5 1 3"; 2618 | N=$(./push_swap $ARG | wc -l) 2619 | if [ $N -lt 13 ]; then 2620 | printf "${GREEN}165.[OK] ${DEF_COLOR}"; 2621 | else 2622 | printf "${RED}165.[KO]${DEF_COLOR}"; 2623 | printf "${WHITE} TEST: "; 2624 | echo -n "$ARG " 2625 | fi 2626 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2627 | if [ $S == "OK" ]; then 2628 | printf "${GREEN}166.[OK] ${DEF_COLOR}"; 2629 | else 2630 | printf "${RED}166.[KO]${DEF_COLOR}"; 2631 | fi 2632 | 2633 | ARG="4 2 5 3 1"; 2634 | N=$(./push_swap $ARG | wc -l) 2635 | if [ $N -lt 13 ]; then 2636 | printf "${GREEN}167.[OK] ${DEF_COLOR}"; 2637 | else 2638 | printf "${RED}167.[KO]${DEF_COLOR}"; 2639 | printf "${WHITE} TEST: "; 2640 | echo -n "$ARG " 2641 | fi 2642 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2643 | if [ $S == "OK" ]; then 2644 | printf "${GREEN}168.[OK] ${DEF_COLOR}"; 2645 | else 2646 | printf "${RED}168.[KO]${DEF_COLOR}"; 2647 | fi 2648 | 2649 | ARG="4 3 1 2 5"; 2650 | N=$(./push_swap $ARG | wc -l) 2651 | if [ $N -lt 13 ]; then 2652 | printf "${GREEN}169.[OK] ${DEF_COLOR}"; 2653 | else 2654 | printf "${RED}169.[KO]${DEF_COLOR}"; 2655 | printf "${WHITE} TEST: "; 2656 | echo -n "$ARG " 2657 | fi 2658 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2659 | if [ $S == "OK" ]; then 2660 | printf "${GREEN}170.[OK] ${DEF_COLOR}"; 2661 | else 2662 | printf "${RED}170.[KO]${DEF_COLOR}"; 2663 | fi 2664 | 2665 | ARG="4 3 1 5 2"; 2666 | N=$(./push_swap $ARG | wc -l) 2667 | if [ $N -lt 13 ]; then 2668 | printf "${GREEN}171.[OK] ${DEF_COLOR}"; 2669 | else 2670 | printf "${RED}171.[KO]${DEF_COLOR}"; 2671 | printf "${WHITE} TEST: "; 2672 | echo -n "$ARG " 2673 | fi 2674 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2675 | if [ $S == "OK" ]; then 2676 | printf "${GREEN}172.[OK] ${DEF_COLOR}"; 2677 | else 2678 | printf "${RED}172.[KO]${DEF_COLOR}"; 2679 | fi 2680 | 2681 | ARG="4 3 2 1 5"; 2682 | N=$(./push_swap $ARG | wc -l) 2683 | if [ $N -lt 13 ]; then 2684 | printf "${GREEN}173.[OK] ${DEF_COLOR}"; 2685 | else 2686 | printf "${RED}173.[KO]${DEF_COLOR}"; 2687 | printf "${WHITE} TEST: "; 2688 | echo -n "$ARG " 2689 | fi 2690 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2691 | if [ $S == "OK" ]; then 2692 | printf "${GREEN}174.[OK] ${DEF_COLOR}"; 2693 | else 2694 | printf "${RED}174.[KO]${DEF_COLOR}"; 2695 | fi 2696 | 2697 | ARG="4 3 2 5 1"; 2698 | N=$(./push_swap $ARG | wc -l) 2699 | if [ $N -lt 13 ]; then 2700 | printf "${GREEN}175.[OK] ${DEF_COLOR}"; 2701 | else 2702 | printf "${RED}175.[KO]${DEF_COLOR}"; 2703 | printf "${WHITE} TEST: "; 2704 | echo -n "$ARG " 2705 | fi 2706 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2707 | if [ $S == "OK" ]; then 2708 | printf "${GREEN}176.[OK] ${DEF_COLOR}"; 2709 | else 2710 | printf "${RED}176.[KO]${DEF_COLOR}"; 2711 | fi 2712 | 2713 | ARG="4 3 5 1 2"; 2714 | N=$(./push_swap $ARG | wc -l) 2715 | if [ $N -lt 13 ]; then 2716 | printf "${GREEN}177.[OK] ${DEF_COLOR}"; 2717 | else 2718 | printf "${RED}177.[KO]${DEF_COLOR}"; 2719 | printf "${WHITE} TEST: "; 2720 | echo -n "$ARG " 2721 | fi 2722 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2723 | if [ $S == "OK" ]; then 2724 | printf "${GREEN}178.[OK] ${DEF_COLOR}"; 2725 | else 2726 | printf "${RED}178.[KO]${DEF_COLOR}"; 2727 | fi 2728 | 2729 | ARG="4 3 5 2 1"; 2730 | N=$(./push_swap $ARG | wc -l) 2731 | if [ $N -lt 13 ]; then 2732 | printf "${GREEN}179.[OK] ${DEF_COLOR}"; 2733 | else 2734 | printf "${RED}179.[KO]${DEF_COLOR}"; 2735 | printf "${WHITE} TEST: "; 2736 | echo -n "$ARG " 2737 | fi 2738 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2739 | if [ $S == "OK" ]; then 2740 | printf "${GREEN}180.[OK] ${DEF_COLOR}"; 2741 | else 2742 | printf "${RED}180.[KO]${DEF_COLOR}"; 2743 | fi 2744 | 2745 | ARG="4 5 1 2 3"; 2746 | N=$(./push_swap $ARG | wc -l) 2747 | if [ $N -lt 13 ]; then 2748 | printf "${GREEN}181.[OK] ${DEF_COLOR}"; 2749 | else 2750 | printf "${RED}181.[KO]${DEF_COLOR}"; 2751 | printf "${WHITE} TEST: "; 2752 | echo -n "$ARG " 2753 | fi 2754 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2755 | if [ $S == "OK" ]; then 2756 | printf "${GREEN}182.[OK] ${DEF_COLOR}"; 2757 | else 2758 | printf "${RED}182.[KO]${DEF_COLOR}"; 2759 | fi 2760 | 2761 | ARG="4 5 1 3 2"; 2762 | N=$(./push_swap $ARG | wc -l) 2763 | if [ $N -lt 13 ]; then 2764 | printf "${GREEN}183.[OK] ${DEF_COLOR}"; 2765 | else 2766 | printf "${RED}183.[KO]${DEF_COLOR}"; 2767 | printf "${WHITE} TEST: "; 2768 | echo -n "$ARG " 2769 | fi 2770 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2771 | if [ $S == "OK" ]; then 2772 | printf "${GREEN}184.[OK] ${DEF_COLOR}"; 2773 | else 2774 | printf "${RED}184.[KO]${DEF_COLOR}"; 2775 | fi 2776 | 2777 | ARG="4 5 2 1 3"; 2778 | N=$(./push_swap $ARG | wc -l) 2779 | if [ $N -lt 13 ]; then 2780 | printf "${GREEN}185.[OK] ${DEF_COLOR}"; 2781 | else 2782 | printf "${RED}185.[KO]${DEF_COLOR}"; 2783 | printf "${WHITE} TEST: "; 2784 | echo -n "$ARG " 2785 | fi 2786 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2787 | if [ $S == "OK" ]; then 2788 | printf "${GREEN}186.[OK] ${DEF_COLOR}"; 2789 | else 2790 | printf "${RED}186.[KO]${DEF_COLOR}"; 2791 | fi 2792 | 2793 | ARG="4 5 2 3 1"; 2794 | N=$(./push_swap $ARG | wc -l) 2795 | if [ $N -lt 13 ]; then 2796 | printf "${GREEN}187.[OK] ${DEF_COLOR}"; 2797 | else 2798 | printf "${RED}187.[KO]${DEF_COLOR}"; 2799 | printf "${WHITE} TEST: "; 2800 | echo -n "$ARG " 2801 | fi 2802 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2803 | if [ $S == "OK" ]; then 2804 | printf "${GREEN}188.[OK] ${DEF_COLOR}"; 2805 | else 2806 | printf "${RED}188.[KO]${DEF_COLOR}"; 2807 | fi 2808 | 2809 | ARG="4 5 3 1 2"; 2810 | N=$(./push_swap $ARG | wc -l) 2811 | if [ $N -lt 13 ]; then 2812 | printf "${GREEN}189.[OK] ${DEF_COLOR}"; 2813 | else 2814 | printf "${RED}189.[KO]${DEF_COLOR}"; 2815 | printf "${WHITE} TEST: "; 2816 | echo -n "$ARG " 2817 | fi 2818 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2819 | if [ $S == "OK" ]; then 2820 | printf "${GREEN}190.[OK] ${DEF_COLOR}"; 2821 | else 2822 | printf "${RED}190.[KO]${DEF_COLOR}"; 2823 | fi 2824 | 2825 | ARG="4 5 3 2 1"; 2826 | N=$(./push_swap $ARG | wc -l) 2827 | if [ $N -lt 13 ]; then 2828 | printf "${GREEN}191.[OK] ${DEF_COLOR}"; 2829 | else 2830 | printf "${RED}191.[KO]${DEF_COLOR}"; 2831 | printf "${WHITE} TEST: "; 2832 | echo -n "$ARG " 2833 | fi 2834 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2835 | if [ $S == "OK" ]; then 2836 | printf "${GREEN}192.[OK] ${DEF_COLOR}"; 2837 | else 2838 | printf "${RED}192.[KO]${DEF_COLOR}"; 2839 | fi 2840 | 2841 | ARG="5 1 2 3 4"; 2842 | N=$(./push_swap $ARG | wc -l) 2843 | if [ $N -lt 13 ]; then 2844 | printf "${GREEN}193.[OK] ${DEF_COLOR}"; 2845 | else 2846 | printf "${RED}193.[KO]${DEF_COLOR}"; 2847 | printf "${WHITE} TEST: "; 2848 | echo -n "$ARG " 2849 | fi 2850 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2851 | if [ $S == "OK" ]; then 2852 | printf "${GREEN}194.[OK] ${DEF_COLOR}"; 2853 | else 2854 | printf "${RED}194.[KO]${DEF_COLOR}"; 2855 | fi 2856 | 2857 | ARG="5 1 2 4 3"; 2858 | N=$(./push_swap $ARG | wc -l) 2859 | if [ $N -lt 13 ]; then 2860 | printf "${GREEN}195.[OK] ${DEF_COLOR}"; 2861 | else 2862 | printf "${RED}195.[KO]${DEF_COLOR}"; 2863 | printf "${WHITE} TEST: "; 2864 | echo -n "$ARG " 2865 | fi 2866 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2867 | if [ $S == "OK" ]; then 2868 | printf "${GREEN}196.[OK] ${DEF_COLOR}"; 2869 | else 2870 | printf "${RED}196.[KO]${DEF_COLOR}"; 2871 | fi 2872 | 2873 | ARG="5 1 3 2 4"; 2874 | N=$(./push_swap $ARG | wc -l) 2875 | if [ $N -lt 13 ]; then 2876 | printf "${GREEN}197.[OK] ${DEF_COLOR}"; 2877 | else 2878 | printf "${RED}197.[KO]${DEF_COLOR}"; 2879 | printf "${WHITE} TEST: "; 2880 | echo -n "$ARG " 2881 | fi 2882 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2883 | if [ $S == "OK" ]; then 2884 | printf "${GREEN}198.[OK] ${DEF_COLOR}"; 2885 | else 2886 | printf "${RED}198.[KO]${DEF_COLOR}"; 2887 | fi 2888 | 2889 | ARG="5 1 3 4 2"; 2890 | N=$(./push_swap $ARG | wc -l) 2891 | if [ $N -lt 13 ]; then 2892 | printf "${GREEN}199.[OK] ${DEF_COLOR}"; 2893 | else 2894 | printf "${RED}199.[KO]${DEF_COLOR}"; 2895 | printf "${WHITE} TEST: "; 2896 | echo -n "$ARG " 2897 | fi 2898 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2899 | if [ $S == "OK" ]; then 2900 | printf "${GREEN}200.[OK] ${DEF_COLOR}"; 2901 | else 2902 | printf "${RED}200.[KO]${DEF_COLOR}"; 2903 | fi 2904 | 2905 | ARG="5 1 4 2 3"; 2906 | N=$(./push_swap $ARG | wc -l) 2907 | if [ $N -lt 13 ]; then 2908 | printf "${GREEN}201.[OK] ${DEF_COLOR}"; 2909 | else 2910 | printf "${RED}201.[KO]${DEF_COLOR}"; 2911 | printf "${WHITE} TEST: "; 2912 | echo -n "$ARG " 2913 | fi 2914 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2915 | if [ $S == "OK" ]; then 2916 | printf "${GREEN}202.[OK] ${DEF_COLOR}"; 2917 | else 2918 | printf "${RED}202.[KO]${DEF_COLOR}"; 2919 | fi 2920 | 2921 | ARG="5 1 4 3 2"; 2922 | N=$(./push_swap $ARG | wc -l) 2923 | if [ $N -lt 13 ]; then 2924 | printf "${GREEN}203.[OK] ${DEF_COLOR}"; 2925 | else 2926 | printf "${RED}203.[KO]${DEF_COLOR}"; 2927 | printf "${WHITE} TEST: "; 2928 | echo -n "$ARG " 2929 | fi 2930 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2931 | if [ $S == "OK" ]; then 2932 | printf "${GREEN}204.[OK] ${DEF_COLOR}"; 2933 | else 2934 | printf "${RED}204.[KO]${DEF_COLOR}"; 2935 | fi 2936 | 2937 | ARG="5 1 4 3 2"; 2938 | N=$(./push_swap $ARG | wc -l) 2939 | if [ $N -lt 13 ]; then 2940 | printf "${GREEN}205.[OK] ${DEF_COLOR}"; 2941 | else 2942 | printf "${RED}205.[KO]${DEF_COLOR}"; 2943 | printf "${WHITE} TEST: "; 2944 | echo -n "$ARG " 2945 | fi 2946 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2947 | if [ $S == "OK" ]; then 2948 | printf "${GREEN}206.[OK] ${DEF_COLOR}"; 2949 | else 2950 | printf "${RED}206.[KO]${DEF_COLOR}"; 2951 | fi 2952 | 2953 | ARG="5 1 4 3 2"; 2954 | N=$(./push_swap $ARG | wc -l) 2955 | if [ $N -lt 13 ]; then 2956 | printf "${GREEN}207.[OK] ${DEF_COLOR}"; 2957 | else 2958 | printf "${RED}207.[KO]${DEF_COLOR}"; 2959 | printf "${WHITE} TEST: "; 2960 | echo -n "$ARG " 2961 | fi 2962 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2963 | if [ $S == "OK" ]; then 2964 | printf "${GREEN}208.[OK] ${DEF_COLOR}"; 2965 | else 2966 | printf "${RED}208.[KO]${DEF_COLOR}"; 2967 | fi 2968 | 2969 | ARG="5 2 3 1 4"; 2970 | N=$(./push_swap $ARG | wc -l) 2971 | if [ $N -lt 13 ]; then 2972 | printf "${GREEN}209.[OK] ${DEF_COLOR}"; 2973 | else 2974 | printf "${RED}209.[KO]${DEF_COLOR}"; 2975 | printf "${WHITE} TEST: "; 2976 | echo -n "$ARG " 2977 | fi 2978 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2979 | if [ $S == "OK" ]; then 2980 | printf "${GREEN}210.[OK] ${DEF_COLOR}"; 2981 | else 2982 | printf "${RED}210.[KO]${DEF_COLOR}"; 2983 | fi 2984 | 2985 | ARG="5 2 3 4 1"; 2986 | N=$(./push_swap $ARG | wc -l) 2987 | if [ $N -lt 13 ]; then 2988 | printf "${GREEN}211.[OK] ${DEF_COLOR}"; 2989 | else 2990 | printf "${RED}211.[KO]${DEF_COLOR}"; 2991 | printf "${WHITE} TEST: "; 2992 | echo -n "$ARG " 2993 | fi 2994 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 2995 | if [ $S == "OK" ]; then 2996 | printf "${GREEN}212.[OK] ${DEF_COLOR}"; 2997 | else 2998 | printf "${RED}212.[KO]${DEF_COLOR}"; 2999 | fi 3000 | 3001 | ARG="5 2 4 1 3"; 3002 | N=$(./push_swap $ARG | wc -l) 3003 | if [ $N -lt 13 ]; then 3004 | printf "${GREEN}213.[OK] ${DEF_COLOR}"; 3005 | else 3006 | printf "${RED}213.[KO]${DEF_COLOR}"; 3007 | printf "${WHITE} TEST: "; 3008 | echo -n "$ARG " 3009 | fi 3010 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3011 | if [ $S == "OK" ]; then 3012 | printf "${GREEN}214.[OK] ${DEF_COLOR}"; 3013 | else 3014 | printf "${RED}214.[KO]${DEF_COLOR}"; 3015 | fi 3016 | 3017 | ARG="5 2 4 3 1"; 3018 | N=$(./push_swap $ARG | wc -l) 3019 | if [ $N -lt 13 ]; then 3020 | printf "${GREEN}215.[OK] ${DEF_COLOR}"; 3021 | else 3022 | printf "${RED}215.[KO]${DEF_COLOR}"; 3023 | printf "${WHITE} TEST: "; 3024 | echo -n "$ARG " 3025 | fi 3026 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3027 | if [ $S == "OK" ]; then 3028 | printf "${GREEN}216.[OK] ${DEF_COLOR}"; 3029 | else 3030 | printf "${RED}216.[KO]${DEF_COLOR}"; 3031 | fi 3032 | 3033 | ARG="5 3 1 2 4"; 3034 | N=$(./push_swap $ARG | wc -l) 3035 | if [ $N -lt 13 ]; then 3036 | printf "${GREEN}217.[OK] ${DEF_COLOR}"; 3037 | else 3038 | printf "${RED}217.[KO]${DEF_COLOR}"; 3039 | printf "${WHITE} TEST: "; 3040 | echo -n "$ARG " 3041 | fi 3042 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3043 | if [ $S == "OK" ]; then 3044 | printf "${GREEN}218.[OK] ${DEF_COLOR}"; 3045 | else 3046 | printf "${RED}218.[KO]${DEF_COLOR}"; 3047 | fi 3048 | 3049 | ARG="5 3 1 4 2"; 3050 | N=$(./push_swap $ARG | wc -l) 3051 | if [ $N -lt 13 ]; then 3052 | printf "${GREEN}219.[OK] ${DEF_COLOR}"; 3053 | else 3054 | printf "${RED}219.[KO]${DEF_COLOR}"; 3055 | printf "${WHITE} TEST: "; 3056 | echo -n "$ARG " 3057 | fi 3058 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3059 | if [ $S == "OK" ]; then 3060 | printf "${GREEN}220.[OK] ${DEF_COLOR}"; 3061 | else 3062 | printf "${RED}220.[KO]${DEF_COLOR}"; 3063 | fi 3064 | 3065 | ARG="5 3 2 1 4"; 3066 | N=$(./push_swap $ARG | wc -l) 3067 | if [ $N -lt 13 ]; then 3068 | printf "${GREEN}221.[OK] ${DEF_COLOR}"; 3069 | else 3070 | printf "${RED}221.[KO]${DEF_COLOR}"; 3071 | printf "${WHITE} TEST: "; 3072 | echo -n "$ARG " 3073 | fi 3074 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3075 | if [ $S == "OK" ]; then 3076 | printf "${GREEN}222.[OK] ${DEF_COLOR}"; 3077 | else 3078 | printf "${RED}222.[KO]${DEF_COLOR}"; 3079 | fi 3080 | 3081 | ARG="5 3 2 4 1"; 3082 | N=$(./push_swap $ARG | wc -l) 3083 | if [ $N -lt 13 ]; then 3084 | printf "${GREEN}223.[OK] ${DEF_COLOR}"; 3085 | else 3086 | printf "${RED}223.[KO]${DEF_COLOR}"; 3087 | printf "${WHITE} TEST: "; 3088 | echo -n "$ARG " 3089 | fi 3090 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3091 | if [ $S == "OK" ]; then 3092 | printf "${GREEN}224.[OK] ${DEF_COLOR}"; 3093 | else 3094 | printf "${RED}224.[KO]${DEF_COLOR}"; 3095 | fi 3096 | 3097 | ARG="5 3 4 1 2"; 3098 | N=$(./push_swap $ARG | wc -l) 3099 | if [ $N -lt 13 ]; then 3100 | printf "${GREEN}225.[OK] ${DEF_COLOR}"; 3101 | else 3102 | printf "${RED}225.[KO]${DEF_COLOR}"; 3103 | printf "${WHITE} TEST: "; 3104 | echo -n "$ARG " 3105 | fi 3106 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3107 | if [ $S == "OK" ]; then 3108 | printf "${GREEN}226.[OK] ${DEF_COLOR}"; 3109 | else 3110 | printf "${RED}226.[KO]${DEF_COLOR}"; 3111 | fi 3112 | 3113 | ARG="5 3 4 2 1"; 3114 | N=$(./push_swap $ARG | wc -l) 3115 | if [ $N -lt 13 ]; then 3116 | printf "${GREEN}227.[OK] ${DEF_COLOR}"; 3117 | else 3118 | printf "${RED}227.[KO]${DEF_COLOR}"; 3119 | printf "${WHITE} TEST: "; 3120 | echo -n "$ARG " 3121 | fi 3122 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3123 | if [ $S == "OK" ]; then 3124 | printf "${GREEN}228.[OK] ${DEF_COLOR}"; 3125 | else 3126 | printf "${RED}228.[KO]${DEF_COLOR}"; 3127 | fi 3128 | 3129 | ARG="5 4 1 2 3"; 3130 | N=$(./push_swap $ARG | wc -l) 3131 | if [ $N -lt 13 ]; then 3132 | printf "${GREEN}229.[OK] ${DEF_COLOR}"; 3133 | else 3134 | printf "${RED}229.[KO]${DEF_COLOR}"; 3135 | printf "${WHITE} TEST: "; 3136 | echo -n "$ARG " 3137 | fi 3138 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3139 | if [ $S == "OK" ]; then 3140 | printf "${GREEN}230.[OK] ${DEF_COLOR}"; 3141 | else 3142 | printf "${RED}230.[KO]${DEF_COLOR}"; 3143 | fi 3144 | 3145 | ARG="5 4 1 3 2"; 3146 | N=$(./push_swap $ARG | wc -l) 3147 | if [ $N -lt 13 ]; then 3148 | printf "${GREEN}231.[OK] ${DEF_COLOR}"; 3149 | else 3150 | printf "${RED}231.[KO]${DEF_COLOR}"; 3151 | printf "${WHITE} TEST: "; 3152 | echo -n "$ARG " 3153 | fi 3154 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3155 | if [ $S == "OK" ]; then 3156 | printf "${GREEN}232.[OK] ${DEF_COLOR}"; 3157 | else 3158 | printf "${RED}232.[KO]${DEF_COLOR}"; 3159 | fi 3160 | 3161 | ARG="5 4 2 1 3"; 3162 | N=$(./push_swap $ARG | wc -l) 3163 | if [ $N -lt 13 ]; then 3164 | printf "${GREEN}233.[OK] ${DEF_COLOR}"; 3165 | else 3166 | printf "${RED}233.[KO]${DEF_COLOR}"; 3167 | printf "${WHITE} TEST: "; 3168 | echo -n "$ARG " 3169 | fi 3170 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3171 | if [ $S == "OK" ]; then 3172 | printf "${GREEN}234.[OK] ${DEF_COLOR}"; 3173 | else 3174 | printf "${RED}234.[KO]${DEF_COLOR}"; 3175 | fi 3176 | 3177 | ARG="5 4 2 3 1"; 3178 | N=$(./push_swap $ARG | wc -l) 3179 | if [ $N -lt 13 ]; then 3180 | printf "${GREEN}235.[OK] ${DEF_COLOR}"; 3181 | else 3182 | printf "${RED}235.[KO]${DEF_COLOR}"; 3183 | printf "${WHITE} TEST: "; 3184 | echo -n "$ARG " 3185 | fi 3186 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3187 | if [ $S == "OK" ]; then 3188 | printf "${GREEN}236.[OK] ${DEF_COLOR}"; 3189 | else 3190 | printf "${RED}236.[KO]${DEF_COLOR}"; 3191 | fi 3192 | 3193 | ARG="5 4 3 1 2"; 3194 | N=$(./push_swap $ARG | wc -l) 3195 | if [ $N -lt 13 ]; then 3196 | printf "${GREEN}237.[OK] ${DEF_COLOR}"; 3197 | else 3198 | printf "${RED}237.[KO]${DEF_COLOR}"; 3199 | printf "${WHITE} TEST: "; 3200 | echo -n "$ARG " 3201 | fi 3202 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3203 | if [ $S == "OK" ]; then 3204 | printf "${GREEN}238.[OK] ${DEF_COLOR}"; 3205 | else 3206 | printf "${RED}238.[KO]${DEF_COLOR}"; 3207 | fi 3208 | 3209 | ARG="5 4 3 2 1"; 3210 | N=$(./push_swap $ARG | wc -l) 3211 | if [ $N -lt 13 ]; then 3212 | printf "${GREEN}239.[OK] ${DEF_COLOR}"; 3213 | else 3214 | printf "${RED}239.[KO]${DEF_COLOR}"; 3215 | printf "${WHITE} TEST: "; 3216 | echo -n "$ARG " 3217 | fi 3218 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3219 | if [ $S == "OK" ]; then 3220 | printf "${GREEN}240.[OK] ${DEF_COLOR}"; 3221 | else 3222 | printf "${RED}240.[KO]${DEF_COLOR}"; 3223 | fi 3224 | 3225 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3226 | printf ${BLUE}"\n\t\t Multiple size <= 100\t\t\n"${DEF_COLOR}; 3227 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3228 | 3229 | echo Multiple size '<'= 100 >> traces.txt 3230 | 3231 | res_1=0 3232 | res_2=0 3233 | res_3=0 3234 | res_4=0 3235 | res_5=0 3236 | res_err=0 3237 | control=1 3238 | val=201 3239 | media=0 3240 | alta=0 3241 | baja=2147483647 3242 | if [ $1 > 0 ]; then 3243 | val=$1 3244 | fi 3245 | ((val++)) 3246 | cont=1 3247 | while [ $cont -lt $val ] 3248 | do 3249 | ARG=$(ruby -e "puts (00..99).to_a.shuffle.join(' ')"); 3250 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3251 | if [ $S == "OK" ]; then 3252 | printf "${GREEN}$cont .[OK]${DEF_COLOR}"; 3253 | control=2 3254 | else 3255 | printf "${RED}$cont .[KO]${DEF_COLOR}"; 3256 | control=3 3257 | fi 3258 | N=$(./push_swap $ARG | wc -l) 3259 | if [ $N -gt $alta ]; then 3260 | alta=$(($N)) 3261 | fi 3262 | if [ $N -lt $baja ]; then 3263 | baja=$(($N)) 3264 | fi 3265 | media=$(($media+$N)) 3266 | if [ $N -gt 700 ] || [ $N -eq 700 ]; then 3267 | echo TEST $cont ARG:"$ARG" >> traces.txt 3268 | fi 3269 | if [ $N -lt 700 ] && [ $control -eq 2 ]; then 3270 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3271 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3272 | ((res_1++)) 3273 | elif [ $N -gt 700 ] || [ $N -eq 700 ] && [ $N -lt 900 ] && [ $control -eq 2 ]; then 3274 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3275 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3276 | if [ $N -gt $alta ]; then 3277 | alta=$(($N)) 3278 | fi 3279 | if [ $N -lt $baja ]; then 3280 | baja=$(($N)) 3281 | fi 3282 | media=$(($media+$N)) 3283 | ((res_2++)) 3284 | elif [ $N -gt 900 ] || [ $N -eq 900 ] && [ $N -lt 1100 ] && [ $control -eq 2 ]; then 3285 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3286 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3287 | if [ $N -gt $alta ]; then 3288 | alta=$(($N)) 3289 | fi 3290 | if [ $N -lt $baja ]; then 3291 | baja=$(($N)) 3292 | fi 3293 | media=$(($media+$N)) 3294 | ((res_3++)) 3295 | elif [ $N -gt 1100 ] || [ $N -eq 1100 ] && [ $N -lt 1300 ] && [ $control -eq 2 ]; then 3296 | printf "${RED}[KO][2/5]${DEF_COLOR}\n"; 3297 | printf "${CYAN} Moves:$N${DEF_COLOR}"; 3298 | if [ $N -gt $alta ]; then 3299 | alta=$(($N)) 3300 | fi 3301 | if [ $N -lt $baja ]; then 3302 | baja=$(($N)) 3303 | fi 3304 | media=$(($media+$N)) 3305 | ((res_4++)) 3306 | elif [ $N -gt 1300 ] || [ $N -eq 1300 ] && [ $control -eq 2 ]; then 3307 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3308 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3309 | if [ $N -gt $alta ]; then 3310 | alta=$(($N)) 3311 | fi 3312 | if [ $N -lt $baja ]; then 3313 | baja=$(($N)) 3314 | fi 3315 | media=$(($media+$N)) 3316 | ((res_5++)) 3317 | elif [ $control -eq 3 ]; then 3318 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3319 | echo TEST $cont ARG:"$ARG" >> traces.txt 3320 | ((res_err++)) 3321 | fi 3322 | ((cont++)) 3323 | done 3324 | 3325 | ((val--)) 3326 | media=$(($media/$val)) 3327 | printf "${CYAN}\n\nMax: $alta${DEF_COLOR}\n" 3328 | printf "${CYAN}Min: $baja${DEF_COLOR}\n" 3329 | printf "${CYAN}Average: $media${DEF_COLOR}\n" 3330 | printf "${WHITE}\n\nTest ${DEF_COLOR}${GREEN}[5/5] ${WHITE}$res_1/$val" 3331 | if [ $res_1 == $val ]; then 3332 | printf "${GREEN} Congrats , all tests have been completed successfully 🥳✅" 3333 | echo OK >> traces.txt 3334 | fi 3335 | if [ $res_2 != 0 ]; then 3336 | printf "${WHITE}\nTest ${DEF_COLOR}${YELLOW}[4/5] ${WHITE}$res_2/$val" 3337 | fi 3338 | if [ $res_3 != 0 ]; then 3339 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[3/5] ${WHITE}$res_3/$val" 3340 | fi 3341 | if [ $res_4 != 0 ]; then 3342 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[2/5] ${WHITE}$res_4/$val" 3343 | fi 3344 | if [ $res_5 != 0 ]; then 3345 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[1/5] ${WHITE}$res_5/$val\n" 3346 | fi 3347 | if [ $res_err != 0 ]; then 3348 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[NO SORTED] ${WHITE}$res_err/$val\n" 3349 | fi 3350 | if [ $res_1 != $val ]; then 3351 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 3352 | fi 3353 | 3354 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3355 | printf ${BLUE}"\n\t\t Multiple size <= 500\t\t\n"${DEF_COLOR}; 3356 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3357 | 3358 | echo Multiple size '<'= 500 >> traces.txt 3359 | 3360 | res_1=0 3361 | res_2=0 3362 | res_3=0 3363 | res_4=0 3364 | res_5=0 3365 | val=201 3366 | media=0 3367 | control=1 3368 | alta=0 3369 | baja=2147483647 3370 | if [ $2 > 0 ]; then 3371 | val=$2 3372 | fi 3373 | ((val++)) 3374 | cont=1 3375 | while [ $cont -lt $val ] 3376 | do 3377 | ARG=$(ruby -e "puts (-250..249).to_a.shuffle.join(' ')"); 3378 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3379 | if [ $S == "OK" ]; then 3380 | printf "${GREEN}$cont .[OK]${DEF_COLOR}"; 3381 | control=2 3382 | else 3383 | printf "${RED}$cont .[KO]${DEF_COLOR}"; 3384 | control=3 3385 | fi 3386 | N=$(./push_swap $ARG | wc -l) 3387 | if [ $N -gt $alta ]; then 3388 | alta=$(($N)) 3389 | fi 3390 | if [ $N -lt $baja ]; then 3391 | baja=$(($N)) 3392 | fi 3393 | media=$(($media+$N)) 3394 | if [ $N -gt 700 ] || [ $N -eq 700 ]; then 3395 | echo TEST $cont ARG:"$ARG" >> traces.txt 3396 | fi 3397 | if [ $N -lt 5500 ] && [ $control -eq 2 ]; then 3398 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3399 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3400 | ((res_1++)) 3401 | elif [ $N -gt 5500 ] || [ $N -eq 5500 ] && [ $N -lt 7000 ] && [ $control -eq 2 ]; then 3402 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3403 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3404 | if [ $N -gt $alta ]; then 3405 | alta=$(($N)) 3406 | fi 3407 | if [ $N -lt $baja ]; then 3408 | baja=$(($N)) 3409 | fi 3410 | media=$(($media+$N)) 3411 | ((res_2++)) 3412 | elif [ $N -gt 7000 ] || [ $N -eq 7000 ] && [ $N -lt 8500 ] && [ $control -eq 2 ]; then 3413 | printf "${RED}[OK][3/5]${DEF_COLOR}"; 3414 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3415 | if [ $N -gt $alta ]; then 3416 | alta=$(($N)) 3417 | fi 3418 | if [ $N -lt $baja ]; then 3419 | baja=$(($N)) 3420 | fi 3421 | media=$(($media+$N)) 3422 | ((res_3++)) 3423 | elif [ $N -gt 8500 ] || [ $N -eq 8500 ] && [ $N -lt 10000 ] && [ $control -eq 2 ]; then 3424 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3425 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3426 | if [ $N -gt $alta ]; then 3427 | alta=$(($N)) 3428 | fi 3429 | if [ $N -lt $baja ]; then 3430 | baja=$(($N)) 3431 | fi 3432 | media=$(($media+$N)) 3433 | ((res_4++)) 3434 | elif [ $N -gt 11500 ] || [ $N -eq 11500 ] && [ $control -eq 2 ]; then 3435 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3436 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3437 | if [ $N -gt $alta ]; then 3438 | alta=$(($N)) 3439 | fi 3440 | if [ $N -lt $baja ]; then 3441 | baja=$(($N)) 3442 | fi 3443 | media=$(($media+$N)) 3444 | ((res_5++)) 3445 | elif [ $control -eq 3 ]; then 3446 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 3447 | echo TEST $cont ARG:"$ARG" >> traces.txt 3448 | fi 3449 | ((cont++)) 3450 | done 3451 | 3452 | ((val--)) 3453 | media=$(($media/$val)) 3454 | printf "${CYAN}\n\nMax move: $alta${DEF_COLOR}\n" 3455 | printf "${CYAN}Min move: $baja${DEF_COLOR}\n" 3456 | printf "${CYAN}Average: $media${DEF_COLOR}\n" 3457 | printf "${WHITE}\n\nTest ${DEF_COLOR}${GREEN}[5/5] ${WHITE}$res_1/$val" 3458 | if [ $res_1 == $val ]; then 3459 | printf "${GREEN} Congrats , all tests have been completed successfully 🥳✅" 3460 | echo OK >> traces.txt 3461 | fi 3462 | if [ $res_2 != 0 ]; then 3463 | printf "${WHITE}\nTest ${DEF_COLOR}${YELLOW}[4/5] ${WHITE}$res_2/$val" 3464 | fi 3465 | if [ $res_3 != 0 ]; then 3466 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[3/5] ${WHITE}$res_3/$val" 3467 | fi 3468 | if [ $res_4 != 0 ]; then 3469 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[2/5] ${WHITE}$res_4/$val" 3470 | fi 3471 | if [ $res_5 != 0 ]; then 3472 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[1/5] ${WHITE}$res_5/$val\n" 3473 | fi 3474 | if [ $res_err != 0 ]; then 3475 | printf "${WHITE}\nTest ${DEF_COLOR}${RED}[NO SORTED] ${WHITE}$res_err/$val\n" 3476 | fi 3477 | if [ $res_1 != $val ]; then 3478 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 3479 | fi 3480 | 3481 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3482 | printf ${BLUE}"\n\t\t Order nums\t\t\n"${DEF_COLOR}; 3483 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3484 | 3485 | ARG=""; 3486 | N=$(./push_swap $ARG | wc -l) 3487 | if [ $N -eq 0 ]; then 3488 | printf "${GREEN}1. [OK]${DEF_COLOR}"; 3489 | else 3490 | printf "${RED}1. [KO]${DEF_COLOR}"; 3491 | fi 3492 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3493 | if [[ $R == 0 ]]; then 3494 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3495 | else 3496 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3497 | fi 3498 | 3499 | ARG="1 2 3 4 5 6 7 8 9"; 3500 | N=$(./push_swap $ARG | wc -l) 3501 | if [ $N -eq 0 ]; then 3502 | printf "${GREEN}2. [OK]${DEF_COLOR}"; 3503 | else 3504 | printf "${RED}2. [KO]${DEF_COLOR}"; 3505 | fi 3506 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3507 | if [[ $R == 0 ]]; then 3508 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3509 | else 3510 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3511 | fi 3512 | 3513 | ARG="1 2 3"; 3514 | N=$(./push_swap $ARG | wc -l) 3515 | if [ $N -eq 0 ]; then 3516 | printf "${GREEN}3. [OK]${DEF_COLOR}"; 3517 | else 3518 | printf "${RED}3. [KO]${DEF_COLOR}"; 3519 | fi 3520 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3521 | if [[ $R == 0 ]]; then 3522 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3523 | else 3524 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3525 | fi 3526 | 3527 | ARG="1"; 3528 | N=$(./push_swap $ARG | wc -l) 3529 | if [ $N -eq 0 ]; then 3530 | printf "${GREEN}4. [OK]${DEF_COLOR}"; 3531 | else 3532 | printf "${RED}4. [KO]${DEF_COLOR}"; 3533 | fi 3534 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3535 | if [[ $R == 0 ]]; then 3536 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3537 | else 3538 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3539 | fi 3540 | 3541 | ARG="0 1 2 3 4"; 3542 | N=$(./push_swap $ARG | wc -l) 3543 | if [ $N -eq 0 ]; then 3544 | printf "${GREEN}5. [OK]${DEF_COLOR}"; 3545 | else 3546 | printf "${RED}5. [KO]${DEF_COLOR}"; 3547 | fi 3548 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3549 | if [[ $R == 0 ]]; then 3550 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3551 | else 3552 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3553 | fi 3554 | 3555 | ARG="1 2"; 3556 | N=$(./push_swap $ARG | wc -l) 3557 | if [ $N -eq 0 ]; then 3558 | printf "${GREEN}6. [OK]${DEF_COLOR}"; 3559 | else 3560 | printf "${RED}6. [KO]${DEF_COLOR}"; 3561 | fi 3562 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3563 | if [[ $R == 0 ]]; then 3564 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3565 | else 3566 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3567 | fi 3568 | 3569 | ARG="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30"; 3570 | N=$(./push_swap $ARG | wc -l) 3571 | if [ $N -eq 0 ]; then 3572 | printf "${GREEN}7. [OK]${DEF_COLOR}"; 3573 | else 3574 | printf "${RED}7. [KO]${DEF_COLOR}"; 3575 | fi 3576 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3577 | if [[ $R == 0 ]]; then 3578 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3579 | else 3580 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3581 | fi 3582 | 3583 | ARG="6 7 8"; 3584 | N=$(./push_swap $ARG | wc -l) 3585 | if [ $N -eq 0 ]; then 3586 | printf "${GREEN}8. [OK]${DEF_COLOR}"; 3587 | else 3588 | printf "${RED}8. [KO]${DEF_COLOR}"; 3589 | fi 3590 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3591 | if [[ $R == 0 ]]; then 3592 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3593 | else 3594 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3595 | fi 3596 | 3597 | ARG="2147483645 2147483646 2147483647"; 3598 | N=$(./push_swap $ARG | wc -l) 3599 | if [ $N -eq 0 ]; then 3600 | printf "${GREEN}9. [OK]${DEF_COLOR}"; 3601 | else 3602 | printf "${RED}9. [KO]${DEF_COLOR}"; 3603 | fi 3604 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3605 | if [[ $R == 0 ]]; then 3606 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3607 | else 3608 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3609 | fi 3610 | 3611 | ARG="-2147483648 -2147483647 -2147483646"; 3612 | N=$(./push_swap $ARG | wc -l) 3613 | if [ $N -eq 0 ]; then 3614 | printf "${GREEN}10. [OK]${DEF_COLOR}"; 3615 | else 3616 | printf "${RED}10. [KO]${DEF_COLOR}"; 3617 | fi 3618 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3619 | if [[ $R == 0 ]]; then 3620 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3621 | else 3622 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3623 | fi 3624 | 3625 | ARG="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50"; 3626 | N=$(./push_swap $ARG | wc -l) 3627 | if [ $N -eq 0 ]; then 3628 | printf "${GREEN}11. [OK]${DEF_COLOR}"; 3629 | else 3630 | printf "${RED}11. [KO]${DEF_COLOR}"; 3631 | fi 3632 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3633 | if [[ $R == 0 ]]; then 3634 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3635 | else 3636 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3637 | fi 3638 | 3639 | ARG="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77"; 3640 | N=$(./push_swap $ARG | wc -l) 3641 | if [ $N -eq 0 ]; then 3642 | printf "${GREEN}12. [OK]${DEF_COLOR}"; 3643 | else 3644 | printf "${RED}12. [KO]${DEF_COLOR}"; 3645 | fi 3646 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 3647 | if [[ $R == 0 ]]; then 3648 | printf "${GREEN}[MOK] ${DEF_COLOR}\n"; 3649 | else 3650 | printf "${RED} [KO LEAKS] ${DEF_COLOR}\n"; 3651 | fi 3652 | 3653 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3654 | printf ${BLUE}"\n\t\t Random test with big nums\t\t\n"${DEF_COLOR}; 3655 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 3656 | 3657 | ARG=$(ruby -e "puts (-2147483648..-2147483149).to_a.shuffle.join(' ')"); 3658 | N=$(./push_swap $ARG | wc -l) 3659 | if [ $N -lt 5500 ]; then 3660 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3661 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3662 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3663 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3664 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3665 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3666 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3667 | elif [ $N -gt 11500 ]; then 3668 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3669 | fi 3670 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3671 | if [ $S == "OK" ]; then 3672 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3673 | else 3674 | printf "${RED} [KO]${DEF_COLOR}\n"; 3675 | fi 3676 | 3677 | ARG=$(ruby -e "puts (-2147483648..-2147483149).to_a.shuffle.join(' ')"); 3678 | N=$(./push_swap $ARG | wc -l) 3679 | if [ $N -lt 5500 ]; then 3680 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3681 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3682 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3683 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3684 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3685 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3686 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3687 | elif [ $N -gt 11500 ]; then 3688 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3689 | fi 3690 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3691 | if [ $S == "OK" ]; then 3692 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3693 | else 3694 | printf "${RED} [KO]${DEF_COLOR}\n"; 3695 | fi 3696 | 3697 | ARG=$(ruby -e "puts (0..499).to_a.shuffle.join(' ')"); 3698 | N=$(./push_swap $ARG | wc -l) 3699 | if [ $N -lt 5500 ]; then 3700 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3701 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3702 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3703 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3704 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3705 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3706 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3707 | elif [ $N -gt 11500 ]; then 3708 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3709 | fi 3710 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3711 | if [ $S == "OK" ]; then 3712 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3713 | else 3714 | printf "${RED} [KO]${DEF_COLOR}\n"; 3715 | fi 3716 | 3717 | ARG=$(ruby -e "puts (0..499).to_a.shuffle.join(' ')"); 3718 | N=$(./push_swap $ARG | wc -l) 3719 | if [ $N -lt 5500 ]; then 3720 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3721 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3722 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3723 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3724 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3725 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3726 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3727 | elif [ $N -gt 11500 ]; then 3728 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3729 | fi 3730 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3731 | if [ $S == "OK" ]; then 3732 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3733 | else 3734 | printf "${RED} [KO]${DEF_COLOR}\n"; 3735 | fi 3736 | 3737 | ARG=$(ruby -e "puts (0..498).to_a.shuffle.join(' ')"); 3738 | N=$(./push_swap $ARG | wc -l) 3739 | if [ $N -lt 5500 ]; then 3740 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3741 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3742 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3743 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3744 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3745 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3746 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3747 | elif [ $N -gt 11500 ]; then 3748 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3749 | fi 3750 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3751 | if [ $S == "OK" ]; then 3752 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3753 | else 3754 | printf "${RED} [KO]${DEF_COLOR}\n"; 3755 | fi 3756 | 3757 | ARG=$(ruby -e "puts (0..498).to_a.shuffle.join(' ')"); 3758 | N=$(./push_swap $ARG | wc -l) 3759 | if [ $N -lt 5500 ]; then 3760 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3761 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3762 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3763 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3764 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3765 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3766 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3767 | elif [ $N -gt 11500 ]; then 3768 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3769 | fi 3770 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3771 | if [ $S == "OK" ]; then 3772 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3773 | else 3774 | printf "${RED} [KO]${DEF_COLOR}\n"; 3775 | fi 3776 | 3777 | ARG=$(ruby -e "puts (0..497).to_a.shuffle.join(' ')"); 3778 | N=$(./push_swap $ARG | wc -l) 3779 | if [ $N -lt 5500 ]; then 3780 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3781 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3782 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3783 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3784 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3785 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3786 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3787 | elif [ $N -gt 11500 ]; then 3788 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3789 | fi 3790 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3791 | if [ $S == "OK" ]; then 3792 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3793 | else 3794 | printf "${RED} [KO]${DEF_COLOR}\n"; 3795 | fi 3796 | 3797 | ARG=$(ruby -e "puts (0..497).to_a.shuffle.join(' ')"); 3798 | N=$(./push_swap $ARG | wc -l) 3799 | if [ $N -lt 5500 ]; then 3800 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3801 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3802 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3803 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3804 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3805 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3806 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3807 | elif [ $N -gt 11500 ]; then 3808 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3809 | fi 3810 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3811 | if [ $S == "OK" ]; then 3812 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3813 | else 3814 | printf "${RED} [KO]${DEF_COLOR}\n"; 3815 | fi 3816 | 3817 | ARG=$(ruby -e "puts (-1..498).to_a.shuffle.join(' ')"); 3818 | N=$(./push_swap $ARG | wc -l) 3819 | if [ $N -lt 5500 ]; then 3820 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3821 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3822 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3823 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3824 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3825 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3826 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3827 | elif [ $N -gt 11500 ]; then 3828 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3829 | fi 3830 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3831 | if [ $S == "OK" ]; then 3832 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3833 | else 3834 | printf "${RED} [KO]${DEF_COLOR}\n"; 3835 | fi 3836 | 3837 | ARG=$(ruby -e "puts (5000..5499).to_a.shuffle.join(' ')"); 3838 | N=$(./push_swap $ARG | wc -l) 3839 | if [ $N -lt 5500 ]; then 3840 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3841 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3842 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3843 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3844 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3845 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3846 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3847 | elif [ $N -gt 11500 ]; then 3848 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3849 | fi 3850 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3851 | if [ $S == "OK" ]; then 3852 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3853 | else 3854 | printf "${RED} [KO]${DEF_COLOR}\n"; 3855 | fi 3856 | 3857 | ARG=$(ruby -e "puts (50000..50499).to_a.shuffle.join(' ')"); 3858 | N=$(./push_swap $ARG | wc -l) 3859 | if [ $N -lt 5500 ]; then 3860 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3861 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3862 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3863 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3864 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3865 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3866 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3867 | elif [ $N -gt 11500 ]; then 3868 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3869 | fi 3870 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3871 | if [ $S == "OK" ]; then 3872 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3873 | else 3874 | printf "${RED} [KO]${DEF_COLOR}\n"; 3875 | fi 3876 | 3877 | ARG=$(ruby -e "puts (500000..500499).to_a.shuffle.join(' ')"); 3878 | N=$(./push_swap $ARG | wc -l) 3879 | if [ $N -lt 5500 ]; then 3880 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3881 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3882 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3883 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3884 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3885 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3886 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3887 | elif [ $N -gt 11500 ]; then 3888 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3889 | fi 3890 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3891 | if [ $S == "OK" ]; then 3892 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3893 | else 3894 | printf "${RED} [KO]${DEF_COLOR}\n"; 3895 | fi 3896 | 3897 | ARG=$(ruby -e "puts (5000000..5000499).to_a.shuffle.join(' ')"); 3898 | N=$(./push_swap $ARG | wc -l) 3899 | if [ $N -lt 5500 ]; then 3900 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3901 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3902 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3903 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3904 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3905 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3906 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3907 | elif [ $N -gt 11500 ]; then 3908 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3909 | fi 3910 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3911 | if [ $S == "OK" ]; then 3912 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3913 | else 3914 | printf "${RED} [KO]${DEF_COLOR}\n"; 3915 | fi 3916 | 3917 | ARG=$(ruby -e "puts (50000000..50000499).to_a.shuffle.join(' ')"); 3918 | N=$(./push_swap $ARG | wc -l) 3919 | if [ $N -lt 5500 ]; then 3920 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3921 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3922 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3923 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3924 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3925 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3926 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3927 | elif [ $N -gt 11500 ]; then 3928 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3929 | fi 3930 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3931 | if [ $S == "OK" ]; then 3932 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3933 | else 3934 | printf "${RED} [KO]${DEF_COLOR}\n"; 3935 | fi 3936 | 3937 | ARG=$(ruby -e "puts (500000000..500000499).to_a.shuffle.join(' ')"); 3938 | N=$(./push_swap $ARG | wc -l) 3939 | if [ $N -lt 5500 ]; then 3940 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3941 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3942 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3943 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3944 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3945 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3946 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3947 | elif [ $N -gt 11500 ]; then 3948 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3949 | fi 3950 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3951 | if [ $S == "OK" ]; then 3952 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3953 | else 3954 | printf "${RED} [KO]${DEF_COLOR}\n"; 3955 | fi 3956 | 3957 | ARG=$(ruby -e "puts (0..450).to_a.shuffle.join(' ')"); 3958 | N=$(./push_swap $ARG | wc -l) 3959 | if [ $N -lt 5500 ]; then 3960 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3961 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3962 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3963 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3964 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3965 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3966 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3967 | elif [ $N -gt 11500 ]; then 3968 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3969 | fi 3970 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3971 | if [ $S == "OK" ]; then 3972 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3973 | else 3974 | printf "${RED} [KO]${DEF_COLOR}\n"; 3975 | fi 3976 | 3977 | ARG=$(ruby -e "puts (250..720).to_a.shuffle.join(' ')"); 3978 | N=$(./push_swap $ARG | wc -l) 3979 | if [ $N -lt 5500 ]; then 3980 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 3981 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 3982 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 3983 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 3984 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 3985 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 3986 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 3987 | elif [ $N -gt 11500 ]; then 3988 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 3989 | fi 3990 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 3991 | if [ $S == "OK" ]; then 3992 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 3993 | else 3994 | printf "${RED} [KO]${DEF_COLOR}\n"; 3995 | fi 3996 | 3997 | ARG=$(ruby -e "puts (10000..10460).to_a.shuffle.join(' ')"); 3998 | N=$(./push_swap $ARG | wc -l) 3999 | if [ $N -lt 5500 ]; then 4000 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 4001 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 4002 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 4003 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 4004 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 4005 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 4006 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 4007 | elif [ $N -gt 11500 ]; then 4008 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 4009 | fi 4010 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4011 | if [ $S == "OK" ]; then 4012 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 4013 | else 4014 | printf "${RED} [KO]${DEF_COLOR}\n"; 4015 | fi 4016 | 4017 | ARG=$(ruby -e "puts (100..250).to_a.shuffle.join(' ')"); 4018 | N=$(./push_swap $ARG | wc -l) 4019 | if [ $N -lt 5500 ]; then 4020 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 4021 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 4022 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 4023 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 4024 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 4025 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 4026 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 4027 | elif [ $N -gt 11500 ]; then 4028 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 4029 | fi 4030 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4031 | if [ $S == "OK" ]; then 4032 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 4033 | else 4034 | printf "${RED} [KO]${DEF_COLOR}\n"; 4035 | fi 4036 | 4037 | ARG=$(ruby -e "puts (90000..90460).to_a.shuffle.join(' ')"); 4038 | N=$(./push_swap $ARG | wc -l) 4039 | if [ $N -lt 5500 ]; then 4040 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 4041 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 4042 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 4043 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 4044 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 4045 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 4046 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 4047 | elif [ $N -gt 11500 ]; then 4048 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 4049 | fi 4050 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4051 | if [ $S == "OK" ]; then 4052 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 4053 | else 4054 | printf "${RED} [KO]${DEF_COLOR}\n"; 4055 | fi 4056 | 4057 | ARG=$(ruby -e "puts (-500..-9).to_a.shuffle.join(' ')"); 4058 | N=$(./push_swap $ARG | wc -l) 4059 | if [ $N -lt 5500 ]; then 4060 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 4061 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 4062 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 4063 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 4064 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 4065 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 4066 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 4067 | elif [ $N -gt 11500 ]; then 4068 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 4069 | fi 4070 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4071 | if [ $S == "OK" ]; then 4072 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 4073 | else 4074 | printf "${RED} [KO]${DEF_COLOR}\n"; 4075 | fi 4076 | 4077 | ARG=$(ruby -e "puts (-50000..-49510).to_a.shuffle.join(' ')"); 4078 | N=$(./push_swap $ARG | wc -l) 4079 | if [ $N -lt 5500 ]; then 4080 | printf "${GREEN}[OK][5/5]${DEF_COLOR}"; 4081 | elif [ $N -gt 5500 ] && [ $N -lt 7000 ]; then 4082 | printf "${YELLOW}[OK][4/5]${DEF_COLOR}"; 4083 | elif [ $N -gt 7000 ] && [ $N -lt 8500 ]; then 4084 | printf "${RED}[KO][3/5]${DEF_COLOR}"; 4085 | elif [ $N -gt 8500 ] && [ $N -lt 10000 ]; then 4086 | printf "${RED}[KO][2/5]${DEF_COLOR}"; 4087 | elif [ $N -gt 11500 ]; then 4088 | printf "${RED}[KO][1/5]${DEF_COLOR}"; 4089 | fi 4090 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4091 | if [ $S == "OK" ]; then 4092 | printf "${GREEN} [OK]${DEF_COLOR}\n"; 4093 | else 4094 | printf "${RED} [KO]${DEF_COLOR}\n"; 4095 | fi 4096 | 4097 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4098 | printf ${BLUE}"\n\t\t All size test + leaks check\t\n"${DEF_COLOR}; 4099 | printf ${BLUE}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4100 | 4101 | echo All size test >> traces.txt 4102 | 4103 | printf "\n${WHITE}⚠️ This test is very long. It is recommended to use it only when the project is finished or in an evaluation ⚠️${DEF_COLOR}\n\n\n"; 4104 | 4105 | sleep 1 4106 | 4107 | res_1=0 4108 | res_2=0 4109 | res_3=0 4110 | res_4=0 4111 | cont=1 4112 | cont2=1 4113 | cont3=1 4114 | cont4=0 4115 | while [ $cont2 -lt 501 ] 4116 | do 4117 | cont=1 4118 | while [ $cont -lt 6 ] 4119 | do 4120 | ARG=$(ruby -e "puts (00..($cont2)).to_a.shuffle.join(' ')"); 4121 | N=$(./push_swap $ARG | wc -l) 4122 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4123 | if [ $S == "OK" ]; then 4124 | printf "${GREEN}$cont3 .[OK]${DEF_COLOR}"; 4125 | ((cont2++)) 4126 | printf "${MAGENTA} Num args: $cont2 ${DEF_COLOR}" 4127 | ((cont2--)) 4128 | printf "${CYAN} Moves:$N${DEF_COLOR}\n"; 4129 | ((res_1++)) 4130 | else 4131 | printf "${RED}$cont3 .[KO]${DEF_COLOR}\n"; 4132 | echo TEST $cont ARG:"$ARG" >> traces.txt 4133 | ((res_2++)) 4134 | fi 4135 | if [ $cont -eq 5 ]; then 4136 | 4137 | R=$(leaks -atExit -- ./push_swap $ARG > /dev/null && echo $?) 4138 | ((cont4++)) 4139 | if [[ $R == 0 ]]; then 4140 | printf "${GREEN}$cont3 [MEMORY OK] ${DEF_COLOR}\n"; 4141 | ((res_3++)) 4142 | else 4143 | printf "${RED}$cont3 [KO LEAKS] ${DEF_COLOR}\n"; 4144 | echo TEST LEAKS $cont ARG:"$ARG" >> traces.txt 4145 | ((res_4++)) 4146 | fi 4147 | fi 4148 | ((cont++)) 4149 | ((cont3++)) 4150 | done 4151 | ((cont2++)) 4152 | done 4153 | 4154 | ((cont3--)) 4155 | 4156 | if [ $res_1 == $cont3 ]; then 4157 | printf "${GREEN}\nCongrats , all tests have been completed successfully 🥳✅\n" 4158 | echo OK >> traces.txt 4159 | fi 4160 | if [ $res_2 != 0 ]; then 4161 | printf "${GREEN}\nOK${WHITE} TESTS $res_1/$cont3\n" 4162 | printf "${RED}\nKO${WHITE} TESTS $res_2/$cont3\n" 4163 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 4164 | fi 4165 | 4166 | if [ $res_4 != 0 ]; then 4167 | printf "${GREEN}\nOK${WHITE} TESTS $res_3/$cont4\n" 4168 | printf "${RED}\nKO${WHITE} TESTS $res_4/$cont4\n" 4169 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 4170 | fi 4171 | 4172 | else 4173 | 4174 | FILE=$PWD/checker 4175 | 4176 | if [ -f "$FILE" ]; then 4177 | echo -n 4178 | else 4179 | printf "${RED}NO EXIST CHECKER PROGRAM${DEF_COLOR}\n"; 4180 | exit 0 4181 | fi 4182 | 4183 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4184 | printf ${MAGENTA}"\n\t\t\t BONUS\t\t\n"${DEF_COLOR}; 4185 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4186 | 4187 | printf ${MAGENTA}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 4188 | printf ${MAGENTA}"\n\t\t\tCONTROL ERRORS\t\n"${DEF_COLOR}; 4189 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4190 | 4191 | ./checker "a" 2> test_check.txt 4192 | if [ -s "$FICHERO" ];then 4193 | while IFS= read -r line 4194 | do 4195 | if [[ $line == "Error" ]]; then 4196 | printf "${GREEN}1.[OK] ${DEF_COLOR}\n"; 4197 | else 4198 | printf "${RED}1.[KO] ${DEF_COLOR}\n"; 4199 | break 4200 | fi 4201 | done < test_check.txt 4202 | else 4203 | printf "${RED}1.[KO] ${DEF_COLOR}\n"; 4204 | fi 4205 | 4206 | 4207 | ./checker "111a11" 2> test_check.txt 4208 | if [ -s "$FICHERO" ];then 4209 | while IFS= read -r line 4210 | do 4211 | if [[ $line == "Error" ]]; then 4212 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 4213 | else 4214 | printf "${RED}2.[KO] ${DEF_COLOR}\n"; 4215 | break 4216 | fi 4217 | done < test_check.txt 4218 | else 4219 | printf "${RED}2.[KO] ${DEF_COLOR}\n"; 4220 | fi 4221 | 4222 | 4223 | ./checker "hello world" 2> test_check.txt 4224 | if [ -s "$FICHERO" ];then 4225 | while IFS= read -r line 4226 | do 4227 | if [[ $line == "Error" ]]; then 4228 | printf "${GREEN}3.[OK] ${DEF_COLOR}\n"; 4229 | else 4230 | printf "${RED}3.[KO] ${DEF_COLOR}\n"; 4231 | break 4232 | fi 4233 | done < test_check.txt 4234 | else 4235 | printf "${RED}3.[KO] ${DEF_COLOR}\n"; 4236 | fi 4237 | 4238 | 4239 | ./checker "" 2> test_check.txt 4240 | if [ -s "$FICHERO" ];then 4241 | while IFS= read -r line 4242 | do 4243 | if [[ $line == "Error" ]]; then 4244 | printf "${GREEN}4.[OK] ${DEF_COLOR}\n"; 4245 | else 4246 | printf "${RED}4.[KO] ${DEF_COLOR}\n"; 4247 | break 4248 | fi 4249 | done < test_check.txt 4250 | else 4251 | printf "${RED}4.[KO] ${DEF_COLOR}\n"; 4252 | fi 4253 | 4254 | ./checker "0 0" 2> test_check.txt 4255 | if [ -s "$FICHERO" ];then 4256 | while IFS= read -r line 4257 | do 4258 | if [[ $line == "Error" ]]; then 4259 | printf "${GREEN}5.[OK] ${DEF_COLOR}\n"; 4260 | else 4261 | printf "${RED}5.[KO] ${DEF_COLOR}\n"; 4262 | break 4263 | fi 4264 | done < test_check.txt 4265 | else 4266 | printf "${RED}5.[KO] ${DEF_COLOR}\n"; 4267 | fi 4268 | 4269 | ./checker "111-1 2 -3" 2> test_check.txt 4270 | if [ -s "$FICHERO" ];then 4271 | while IFS= read -r line 4272 | do 4273 | if [[ $line == "Error" ]]; then 4274 | printf "${GREEN}7.[OK] ${DEF_COLOR}\n"; 4275 | else 4276 | printf "${RED}7.[KO] ${DEF_COLOR}\n"; 4277 | break 4278 | fi 4279 | done < test_check.txt 4280 | else 4281 | printf "${RED}7.[KO] ${DEF_COLOR}\n"; 4282 | fi 4283 | 4284 | ./checker "-3 -2 -2" 2> test_check.txt 4285 | if [ -s "$FICHERO" ];then 4286 | while IFS= read -r line 4287 | do 4288 | if [[ $line == "Error" ]]; then 4289 | printf "${GREEN}8.[OK] ${DEF_COLOR}\n"; 4290 | else 4291 | printf "${RED}8.[KO] ${DEF_COLOR}\n"; 4292 | break 4293 | fi 4294 | done < test_check.txt 4295 | else 4296 | printf "${RED}8.[KO] ${DEF_COLOR}\n"; 4297 | fi 4298 | 4299 | ./checker "\n" 2> test_check.txt 4300 | if [ -s "$FICHERO" ];then 4301 | while IFS= read -r line 4302 | do 4303 | if [[ $line == "Error" ]]; then 4304 | printf "${GREEN}9.[OK] ${DEF_COLOR}\n"; 4305 | else 4306 | printf "${RED}9.[KO] ${DEF_COLOR}\n"; 4307 | break 4308 | fi 4309 | done < test_check.txt 4310 | else 4311 | printf "${RED}9.[KO] ${DEF_COLOR}\n"; 4312 | fi 4313 | 4314 | ./checker "-2147483649" 2> test_check.txt 4315 | if [ -s "$FICHERO" ];then 4316 | while IFS= read -r line 4317 | do 4318 | if [[ $line == "Error" ]]; then 4319 | printf "${GREEN}10.[OK] ${DEF_COLOR}\n"; 4320 | else 4321 | printf "${RED}10.[KO] ${DEF_COLOR}\n"; 4322 | break 4323 | fi 4324 | done < test_check.txt 4325 | else 4326 | printf "${RED}10.[KO] ${DEF_COLOR}\n"; 4327 | fi 4328 | 4329 | ./checker "-2147483650" 2> test_check.txt 4330 | if [ -s "$FICHERO" ];then 4331 | while IFS= read -r line 4332 | do 4333 | if [[ $line == "Error" ]]; then 4334 | printf "${GREEN}11.[OK] ${DEF_COLOR}\n"; 4335 | else 4336 | printf "${RED}11.[KO] ${DEF_COLOR}\n"; 4337 | break 4338 | fi 4339 | done < test_check.txt 4340 | else 4341 | printf "${RED}11.[KO] ${DEF_COLOR}\n"; 4342 | fi 4343 | 4344 | ./checker "2147483648" 2> test_check.txt 4345 | if [ -s "$FICHERO" ];then 4346 | while IFS= read -r line 4347 | do 4348 | if [[ $line == "Error" ]]; then 4349 | printf "${GREEN}12.[OK] ${DEF_COLOR}\n"; 4350 | else 4351 | printf "${RED}12.[KO] ${DEF_COLOR}\n"; 4352 | break 4353 | fi 4354 | done < test_check.txt 4355 | else 4356 | printf "${RED}12.[KO] ${DEF_COLOR}\n"; 4357 | fi 4358 | 4359 | ./checker "8 "9 1" 12" 2> test_check.txt 4360 | if [ -s "$FICHERO" ];then 4361 | while IFS= read -r line 4362 | do 4363 | if [[ $line == "Error" ]]; then 4364 | printf "${GREEN}13.[OK] ${DEF_COLOR}\n"; 4365 | else 4366 | printf "${RED}13.[KO] ${DEF_COLOR}\n"; 4367 | break 4368 | fi 4369 | done < test_check.txt 4370 | else 4371 | printf "${RED}13.[KO] ${DEF_COLOR}\n"; 4372 | fi 4373 | 4374 | ./checker "10 -1 -2 -3 -4 -5 -6 90 99 10" 2> test_check.txt 4375 | if [ -s "$FICHERO" ];then 4376 | while IFS= read -r line 4377 | do 4378 | if [[ $line == "Error" ]]; then 4379 | printf "${GREEN}14.[OK] ${DEF_COLOR}\n"; 4380 | else 4381 | printf "${RED}14.[KO] ${DEF_COLOR}\n"; 4382 | break 4383 | fi 4384 | done < test_check.txt 4385 | else 4386 | printf "${RED}14.[KO] ${DEF_COLOR}\n"; 4387 | fi 4388 | 4389 | ./checker "1 +1 -1" 2> test_check.txt 4390 | if [ -s "$FICHERO" ];then 4391 | while IFS= read -r line 4392 | do 4393 | if [[ $line == "Error" ]]; then 4394 | printf "${GREEN}15.[OK] ${DEF_COLOR}\n"; 4395 | else 4396 | printf "${RED}15.[KO] ${DEF_COLOR}\n"; 4397 | break 4398 | fi 4399 | done < test_check.txt 4400 | else 4401 | printf "${RED}15.[KO] ${DEF_COLOR}\n"; 4402 | fi 4403 | 4404 | ./checker "3333-3333 1 4" 2> test_check.txt 4405 | if [ -s "$FICHERO" ];then 4406 | while IFS= read -r line 4407 | do 4408 | if [[ $line == "Error" ]]; then 4409 | printf "${GREEN}16.[OK] ${DEF_COLOR}\n"; 4410 | else 4411 | printf "${RED}16.[KO] ${DEF_COLOR}\n"; 4412 | break 4413 | fi 4414 | done < test_check.txt 4415 | else 4416 | printf "${RED}16.[KO] ${DEF_COLOR}\n"; 4417 | fi 4418 | 4419 | ./checker "111a111 -4 3" 2> test_check.txt 4420 | if [ -s "$FICHERO" ];then 4421 | while IFS= read -r line 4422 | do 4423 | if [[ $line == "Error" ]]; then 4424 | printf "${GREEN}17.[OK] ${DEF_COLOR}\n"; 4425 | else 4426 | printf "${RED}17.[KO] ${DEF_COLOR}\n"; 4427 | break 4428 | fi 4429 | done < test_check.txt 4430 | else 4431 | printf "${RED}17.[KO] ${DEF_COLOR}\n"; 4432 | fi 4433 | 4434 | ./checker "111111 "-4 3"" 2> test_check.txt 4435 | if [ -s "$FICHERO" ];then 4436 | while IFS= read -r line 4437 | do 4438 | if [[ $line == "Error" ]]; then 4439 | printf "${GREEN}18.[OK] ${DEF_COLOR}\n"; 4440 | else 4441 | printf "${RED}18.[KO] ${DEF_COLOR}\n"; 4442 | break 4443 | fi 4444 | done < test_check.txt 4445 | else 4446 | printf "${RED}18.[KO] ${DEF_COLOR}\n"; 4447 | fi 4448 | 4449 | ./checker "2147483649" 2> test_check.txt 4450 | if [ -s "$FICHERO" ];then 4451 | while IFS= read -r line 4452 | do 4453 | if [[ $line == "Error" ]]; then 4454 | printf "${GREEN}19.[OK] ${DEF_COLOR}\n"; 4455 | else 4456 | printf "${RED}19.[KO] ${DEF_COLOR}\n"; 4457 | break 4458 | fi 4459 | done < test_check.txt 4460 | else 4461 | printf "${RED}19.[KO] ${DEF_COLOR}\n"; 4462 | fi 4463 | 4464 | ./checker "2147483647+1" 2> test_check.txt 4465 | if [ -s "$FICHERO" ];then 4466 | while IFS= read -r line 4467 | do 4468 | if [[ $line == "Error" ]]; then 4469 | printf "${GREEN}20.[OK] ${DEF_COLOR}\n"; 4470 | else 4471 | printf "${RED}20.[KO] ${DEF_COLOR}\n"; 4472 | break 4473 | fi 4474 | done < test_check.txt 4475 | else 4476 | printf "${RED}20.[KO] ${DEF_COLOR}\n"; 4477 | fi 4478 | 4479 | ./checker "0 1 2 3 4 5 0" 2> test_check.txt 4480 | if [ -s "$FICHERO" ];then 4481 | while IFS= read -r line 4482 | do 4483 | if [[ $line == "Error" ]]; then 4484 | printf "${GREEN}21.[OK] ${DEF_COLOR}\n"; 4485 | else 4486 | printf "${RED}21.[KO] ${DEF_COLOR}\n"; 4487 | break 4488 | fi 4489 | done < test_check.txt 4490 | else 4491 | printf "${RED}21.[KO] ${DEF_COLOR}\n"; 4492 | fi 4493 | 4494 | ./checker "3 +3" 2> test_check.txt 4495 | if [ -s "$FICHERO" ];then 4496 | while IFS= read -r line 4497 | do 4498 | if [[ $line == "Error" ]]; then 4499 | printf "${GREEN}22.[OK] ${DEF_COLOR}\n"; 4500 | else 4501 | printf "${RED}22.[KO] ${DEF_COLOR}\n"; 4502 | break 4503 | fi 4504 | done < test_check.txt 4505 | else 4506 | printf "${RED}22.[KO] ${DEF_COLOR}\n"; 4507 | fi 4508 | 4509 | ./checker "3+3" 2> test_check.txt 4510 | if [ -s "$FICHERO" ];then 4511 | while IFS= read -r line 4512 | do 4513 | if [[ $line == "Error" ]]; then 4514 | printf "${GREEN}23.[OK] ${DEF_COLOR}\n"; 4515 | else 4516 | printf "${RED}23.[KO] ${DEF_COLOR}\n"; 4517 | break 4518 | fi 4519 | done < test_check.txt 4520 | else 4521 | printf "${RED}23.[KO] ${DEF_COLOR}\n"; 4522 | fi 4523 | 4524 | ./checker "42 42" 2> test_check.txt 4525 | if [ -s "$FICHERO" ];then 4526 | while IFS= read -r line 4527 | do 4528 | if [[ $line == "Error" ]]; then 4529 | printf "${GREEN}24.[OK] ${DEF_COLOR}\n"; 4530 | else 4531 | printf "${RED}24.[KO] ${DEF_COLOR}\n"; 4532 | break 4533 | fi 4534 | done < test_check.txt 4535 | else 4536 | printf "${RED}24.[KO] ${DEF_COLOR}\n"; 4537 | fi 4538 | 4539 | ./checker "42 " -42" " 2> test_check.txt 4540 | if [ -s "$FICHERO" ];then 4541 | while IFS= read -r line 4542 | do 4543 | if [[ $line == "Error" ]]; then 4544 | printf "${GREEN}25.[OK] ${DEF_COLOR}\n"; 4545 | else 4546 | printf "${RED}25.[KO] ${DEF_COLOR}\n"; 4547 | break 4548 | fi 4549 | done < test_check.txt 4550 | else 4551 | printf "${RED}25.[KO] ${DEF_COLOR}\n"; 4552 | fi 4553 | 4554 | ./checker "4222-4222" 2> test_check.txt 4555 | if [ -s "$FICHERO" ];then 4556 | while IFS= read -r line 4557 | do 4558 | if [[ $line == "Error" ]]; then 4559 | printf "${GREEN}26.[OK] ${DEF_COLOR}\n"; 4560 | else 4561 | printf "${RED}26.[KO] ${DEF_COLOR}\n"; 4562 | break 4563 | fi 4564 | done < test_check.txt 4565 | else 4566 | printf "${RED}26.[KO] ${DEF_COLOR}\n"; 4567 | fi 4568 | 4569 | ./checker "99999999999999999999999999" 2> test_check.txt 4570 | if [ -s "$FICHERO" ];then 4571 | while IFS= read -r line 4572 | do 4573 | if [[ $line == "Error" ]]; then 4574 | printf "${GREEN}27.[OK] ${DEF_COLOR}\n"; 4575 | else 4576 | printf "${RED}27.[KO] ${DEF_COLOR}\n"; 4577 | break 4578 | fi 4579 | done < test_check.txt 4580 | else 4581 | printf "${RED}27.[KO] ${DEF_COLOR}\n"; 4582 | fi 4583 | 4584 | ./checker "-99999999999999999999999999" 2> test_check.txt 4585 | if [ -s "$FICHERO" ];then 4586 | while IFS= read -r line 4587 | do 4588 | if [[ $line == "Error" ]]; then 4589 | printf "${GREEN}28.[OK] ${DEF_COLOR}\n"; 4590 | else 4591 | printf "${RED}28.[KO] ${DEF_COLOR}\n"; 4592 | break 4593 | fi 4594 | done < test_check.txt 4595 | else 4596 | printf "${RED}28.[KO] ${DEF_COLOR}\n"; 4597 | fi 4598 | 4599 | ./checker "0 -0 1 -1" 2> test_check.txt 4600 | if [ -s "$FICHERO" ];then 4601 | while IFS= read -r line 4602 | do 4603 | if [[ $line == "Error" ]]; then 4604 | printf "${GREEN}29.[OK] ${DEF_COLOR}\n"; 4605 | else 4606 | printf "${RED}29.[KO] ${DEF_COLOR}\n"; 4607 | break 4608 | fi 4609 | done < test_check.txt 4610 | else 4611 | printf "${RED}29.[KO] ${DEF_COLOR}\n"; 4612 | fi 4613 | 4614 | ./checker "0 +0 1 -1" 2> test_check.txt 4615 | if [ -s "$FICHERO" ];then 4616 | while IFS= read -r line 4617 | do 4618 | if [[ $line == "Error" ]]; then 4619 | printf "${GREEN}30.[OK] ${DEF_COLOR}\n"; 4620 | else 4621 | printf "${RED}30.[KO] ${DEF_COLOR}\n"; 4622 | break 4623 | fi 4624 | done < test_check.txt 4625 | else 4626 | printf "${RED}30.[KO] ${DEF_COLOR}\n"; 4627 | fi 4628 | 4629 | ./checker "111+111 -4 3" 2> test_check.txt 4630 | if [ -s "$FICHERO" ];then 4631 | while IFS= read -r line 4632 | do 4633 | if [[ $line == "Error" ]]; then 4634 | printf "${GREEN}31.[OK] ${DEF_COLOR}\n"; 4635 | else 4636 | printf "${RED}31.[KO] ${DEF_COLOR}\n"; 4637 | break 4638 | fi 4639 | done < test_check.txt 4640 | else 4641 | printf "${RED}31.[KO] ${DEF_COLOR}\n"; 4642 | fi 4643 | 4644 | rm -rf test_check.txt 4645 | 4646 | ./checker "-" 2> test_check.txt 4647 | if [ -s "$FICHERO" ];then 4648 | while IFS= read -r line 4649 | do 4650 | if [[ $line == "Error" ]]; then 4651 | printf "${GREEN}32.[OK] ${DEF_COLOR}\n"; 4652 | else 4653 | printf "${RED}32.[KO] ${DEF_COLOR}\n"; 4654 | break 4655 | fi 4656 | done < test_check.txt 4657 | else 4658 | printf "${RED}32.[KO] ${DEF_COLOR}\n"; 4659 | fi 4660 | 4661 | rm -rf test_check.txt 4662 | 4663 | ./checker "+" 2> test_check.txt 4664 | if [ -s "$FICHERO" ];then 4665 | while IFS= read -r line 4666 | do 4667 | if [[ $line == "Error" ]]; then 4668 | printf "${GREEN}33.[OK] ${DEF_COLOR}\n"; 4669 | else 4670 | printf "${RED}33.[KO] ${DEF_COLOR}\n"; 4671 | break 4672 | fi 4673 | done < test_check.txt 4674 | else 4675 | printf "${RED}33.[KO] ${DEF_COLOR}\n"; 4676 | fi 4677 | 4678 | ./push_swap "--123 1 321" 2> test_check.txt 4679 | if [ -s "$FICHERO" ];then 4680 | while IFS= read -r line 4681 | do 4682 | if [[ $line == "Error" ]]; then 4683 | printf "${GREEN}34.[OK] ${DEF_COLOR}\n"; 4684 | else 4685 | printf "${RED}34.[KO] ${DEF_COLOR}\n"; 4686 | break 4687 | fi 4688 | done < test_check.txt 4689 | else 4690 | printf "${RED}34.[KO] ${DEF_COLOR}\n"; 4691 | fi 4692 | 4693 | rm -rf test_check.txt 4694 | 4695 | ./push_swap "++123 1 321" 2> test_check.txt 4696 | if [ -s "$FICHERO" ];then 4697 | while IFS= read -r line 4698 | do 4699 | if [[ $line == "Error" ]]; then 4700 | printf "${GREEN}35.[OK] ${DEF_COLOR}\n"; 4701 | else 4702 | printf "${RED}35.[KO] ${DEF_COLOR}\n"; 4703 | break 4704 | fi 4705 | done < test_check.txt 4706 | else 4707 | printf "${RED}35.[KO] ${DEF_COLOR}\n"; 4708 | fi 4709 | 4710 | rm -rf test_check.txt 4711 | 4712 | ./push_swap "09 9 3 -1" 2> test_check.txt 4713 | if [ -s "$FICHERO" ];then 4714 | while IFS= read -r line 4715 | do 4716 | if [[ $line == "Error" ]]; then 4717 | printf "${GREEN}36.[OK] ${DEF_COLOR}\n"; 4718 | else 4719 | printf "${RED}36.[KO] ${DEF_COLOR}\n"; 4720 | break 4721 | fi 4722 | done < test_check.txt 4723 | else 4724 | printf "${RED}36.[KO] ${DEF_COLOR}\n"; 4725 | fi 4726 | 4727 | rm -rf test_check.txt 4728 | 4729 | ./push_swap "00000001 1 9 3" 2> test_check.txt 4730 | if [ -s "$FICHERO" ];then 4731 | while IFS= read -r line 4732 | do 4733 | if [[ $line == "Error" ]]; then 4734 | printf "${GREEN}37.[OK] ${DEF_COLOR}\n"; 4735 | else 4736 | printf "${RED}37.[KO] ${DEF_COLOR}\n"; 4737 | break 4738 | fi 4739 | done < test_check.txt 4740 | else 4741 | printf "${RED}37.[KO] ${DEF_COLOR}\n"; 4742 | fi 4743 | 4744 | rm -rf test_check.txt 4745 | 4746 | ./push_swap "-5 00000003 003 9 1" 2> test_check.txt 4747 | if [ -s "$FICHERO" ];then 4748 | while IFS= read -r line 4749 | do 4750 | if [[ $line == "Error" ]]; then 4751 | printf "${GREEN}38.[OK] ${DEF_COLOR}\n"; 4752 | else 4753 | printf "${RED}38.[KO] ${DEF_COLOR}\n"; 4754 | break 4755 | fi 4756 | done < test_check.txt 4757 | else 4758 | printf "${RED}38.[KO] ${DEF_COLOR}\n"; 4759 | fi 4760 | 4761 | rm -rf test_check.txt 4762 | 4763 | # Checkear nombres de funciones diferentes 4764 | printf ${MAGENTA}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 4765 | printf ${MAGENTA}"\n\t\t\tCheck operations\t\t\n"${DEF_COLOR}; 4766 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4767 | 4768 | ARG="2 1 3"; 4769 | S=$(echo -e "sa" | ./checker_Mac $ARG) 4770 | R=$(echo -e "sa" | ./checker $ARG) 4771 | if [ $S == $R ]; then 4772 | printf "${GREEN}SA 1.[OK] ${DEF_COLOR}\n"; 4773 | else 4774 | printf "${RED}1.[KO]${DEF_COLOR}\n"; 4775 | fi 4776 | 4777 | ARG="2 1 3"; 4778 | S=$(echo -e "sa\nsa\nsa" | ./checker_Mac $ARG) 4779 | R=$(echo -e "sa\nsa\nsa" | ./checker $ARG) 4780 | if [ $S == $R ]; then 4781 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 4782 | else 4783 | printf "${RED}2.[KO]${DEF_COLOR}\n"; 4784 | fi 4785 | 4786 | ARG="2 1 3"; 4787 | S=$(echo -e "sa\nsa" | ./checker_Mac $ARG) 4788 | R=$(echo -e "sa\nsa" | ./checker $ARG) 4789 | if [ $S == $R ]; then 4790 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 4791 | else 4792 | printf "${RED}2.[KO]${DEF_COLOR}\n"; 4793 | fi 4794 | 4795 | printf ${MAGENTA}"\n-------------------------------------------------------------\n"${DEF_COLOR}; 4796 | printf ${MAGENTA}"\n\t\t\tBasic Input\t\t\n"${DEF_COLOR}; 4797 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4798 | 4799 | ARG="2 1"; 4800 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4801 | R=$(./push_swap $ARG | ./checker $ARG) 4802 | if [ $S == $R ]; then 4803 | printf "${GREEN}1.[OK] ${DEF_COLOR}\n"; 4804 | else 4805 | printf "${RED}1.[KO]${DEF_COLOR}\n"; 4806 | fi 4807 | 4808 | ARG="2 1 3"; 4809 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4810 | R=$(./push_swap $ARG | ./checker $ARG) 4811 | if [ $S == $R ]; then 4812 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 4813 | else 4814 | printf "${RED}2.[KO]${DEF_COLOR}\n"; 4815 | fi 4816 | 4817 | ARG="1 3 2"; 4818 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4819 | R=$(./push_swap $ARG | ./checker $ARG) 4820 | if [ $S == $R ]; then 4821 | printf "${GREEN}3.[OK] ${DEF_COLOR}\n"; 4822 | else 4823 | printf "${RED}3.[KO]${DEF_COLOR}\n"; 4824 | fi 4825 | 4826 | ARG="2 3 1"; 4827 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4828 | R=$(./push_swap $ARG | ./checker $ARG) 4829 | if [ $S == $R ]; then 4830 | printf "${GREEN}4.[OK] ${DEF_COLOR}\n"; 4831 | else 4832 | printf "${RED}4.[KO]${DEF_COLOR}\n"; 4833 | fi 4834 | 4835 | ARG="3 2 1"; 4836 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4837 | R=$(./push_swap $ARG | ./checker $ARG) 4838 | if [ $S == $R ]; then 4839 | printf "${GREEN}5.[OK] ${DEF_COLOR}\n"; 4840 | else 4841 | printf "${RED}5.[KO]${DEF_COLOR}\n"; 4842 | fi 4843 | 4844 | ARG="3 1 2"; 4845 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4846 | R=$(./push_swap $ARG | ./checker $ARG) 4847 | if [ $S == $R ]; then 4848 | printf "${GREEN}6.[OK] ${DEF_COLOR}\n"; 4849 | else 4850 | printf "${RED}6.[KO]${DEF_COLOR}\n"; 4851 | fi 4852 | 4853 | 4854 | ARG="4 3 2 1"; 4855 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4856 | R=$(./push_swap $ARG | ./checker $ARG) 4857 | if [ $S == $R ]; then 4858 | printf "${GREEN}7.[OK] ${DEF_COLOR}\n"; 4859 | else 4860 | printf "${RED}7.[KO]${DEF_COLOR}\n"; 4861 | fi 4862 | 4863 | ARG="4 2 1 3"; 4864 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4865 | R=$(./push_swap $ARG | ./checker $ARG) 4866 | if [ $S == $R ]; then 4867 | printf "${GREEN}8.[OK] ${DEF_COLOR}\n"; 4868 | else 4869 | printf "${RED}8.[KO]${DEF_COLOR}\n"; 4870 | fi 4871 | 4872 | ARG="4 3 1 2"; 4873 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4874 | R=$(./push_swap $ARG | ./checker $ARG) 4875 | if [ $S == $R ]; then 4876 | printf "${GREEN}9.[OK] ${DEF_COLOR}\n"; 4877 | else 4878 | printf "${RED}9.[KO]${DEF_COLOR}\n"; 4879 | fi 4880 | 4881 | ARG="3 2 1 4"; 4882 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4883 | R=$(./push_swap $ARG | ./checker $ARG) 4884 | if [ $S == $R ]; then 4885 | printf "${GREEN}10.[OK] ${DEF_COLOR}\n"; 4886 | else 4887 | printf "${RED}10.[KO]${DEF_COLOR}\n"; 4888 | fi 4889 | 4890 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4891 | printf ${MAGENTA}"\n\t\t\tSize 5\t\t\n"${DEF_COLOR}; 4892 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4893 | 4894 | ARG="2 1 3 4 5"; 4895 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4896 | R=$(./push_swap $ARG | ./checker $ARG) 4897 | if [ $S == $R ]; then 4898 | printf "${GREEN}1.[OK] ${DEF_COLOR}\n"; 4899 | else 4900 | printf "${RED}1.[KO]${DEF_COLOR}\n"; 4901 | fi 4902 | 4903 | ARG="5 4 3 2 1"; 4904 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4905 | R=$(./push_swap $ARG | ./checker $ARG) 4906 | if [ $S == $R ]; then 4907 | printf "${GREEN}2.[OK] ${DEF_COLOR}\n"; 4908 | else 4909 | printf "${RED}2.[KO]${DEF_COLOR}\n"; 4910 | fi 4911 | 4912 | ARG="5 4 1 2 3"; 4913 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4914 | R=$(./push_swap $ARG | ./checker $ARG) 4915 | if [ $S == $R ]; then 4916 | printf "${GREEN}3.[OK] ${DEF_COLOR}\n"; 4917 | else 4918 | printf "${RED}3.[KO]${DEF_COLOR}\n"; 4919 | fi 4920 | 4921 | ARG="5 4 3 1 2"; 4922 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4923 | R=$(./push_swap $ARG | ./checker $ARG) 4924 | if [ $S == $R ]; then 4925 | printf "${GREEN}4.[OK] ${DEF_COLOR}\n"; 4926 | else 4927 | printf "${RED}4.[KO]${DEF_COLOR}\n"; 4928 | fi 4929 | 4930 | ARG="4 5 3 1 2"; 4931 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4932 | R=$(./push_swap $ARG | ./checker $ARG) 4933 | if [ $S == $R ]; then 4934 | printf "${GREEN}5.[OK] ${DEF_COLOR}\n"; 4935 | else 4936 | printf "${RED}5.[KO]${DEF_COLOR}\n"; 4937 | fi 4938 | 4939 | ARG="3 2 1 5 4"; 4940 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4941 | R=$(./push_swap $ARG | ./checker $ARG) 4942 | if [ $S == $R ]; then 4943 | printf "${GREEN}6.[OK] ${DEF_COLOR}\n"; 4944 | else 4945 | printf "${RED}6.[KO]${DEF_COLOR}\n"; 4946 | fi 4947 | 4948 | 4949 | ARG="1 2 3 5 4"; 4950 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4951 | R=$(./push_swap $ARG | ./checker $ARG) 4952 | if [ $S == $R ]; then 4953 | printf "${GREEN}7.[OK] ${DEF_COLOR}\n"; 4954 | else 4955 | printf "${RED}7.[KO]${DEF_COLOR}\n"; 4956 | fi 4957 | 4958 | ARG="2 1 4 5 3"; 4959 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4960 | R=$(./push_swap $ARG | ./checker $ARG) 4961 | if [ $S == $R ]; then 4962 | printf "${GREEN}8.[OK] ${DEF_COLOR}\n"; 4963 | else 4964 | printf "${RED}8.[KO]${DEF_COLOR}\n"; 4965 | fi 4966 | 4967 | ARG="1 3 2 5 4"; 4968 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4969 | R=$(./push_swap $ARG | ./checker $ARG) 4970 | if [ $S == $R ]; then 4971 | printf "${GREEN}9.[OK] ${DEF_COLOR}\n"; 4972 | else 4973 | printf "${RED}9.[KO]${DEF_COLOR}\n"; 4974 | fi 4975 | 4976 | ARG="2 3 4 5 1"; 4977 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 4978 | R=$(./push_swap $ARG | ./checker $ARG) 4979 | if [ $S == $R ]; then 4980 | printf "${GREEN}10.[OK] ${DEF_COLOR}\n"; 4981 | else 4982 | printf "${RED}10.[KO]${DEF_COLOR}\n"; 4983 | fi 4984 | 4985 | rm -rf 0 4986 | rm -rf test_check.txt 4987 | 4988 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4989 | printf ${MAGENTA}"\n\t\t Multiple size <= 100\t\t\n"${DEF_COLOR}; 4990 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 4991 | 4992 | echo BONUS-Multiple size '<'= 100 >> traces.txt 4993 | 4994 | val=101 4995 | 4996 | if [ $2 ]; then 4997 | val=$(($2+1)) 4998 | fi 4999 | res_1=0 5000 | res_2=0 5001 | cont=1 5002 | while [ $cont -lt $val ] 5003 | do 5004 | ARG=$(ruby -e "puts (00..99).to_a.shuffle.join(' ')"); 5005 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 5006 | R=$(./push_swap $ARG | ./checker $ARG) 5007 | if [ $S == $R ] && [ $R == "OK" ]; then 5008 | printf "${GREEN}$cont .[OK] ${DEF_COLOR}"; 5009 | ((res_1++)) 5010 | else 5011 | printf "${RED}$cont .[KO] ${DEF_COLOR}"; 5012 | echo TEST $cont ARG:"$ARG" >> traces.txt 5013 | ((res_2++)) 5014 | fi 5015 | ((cont++)) 5016 | done 5017 | 5018 | echo 5019 | 5020 | ((val--)) 5021 | if [ $res_1 == $val ]; then 5022 | printf "${GREEN}\nCongrats , all tests have been completed successfully 🥳✅\n" 5023 | echo OK >> traces.txt 5024 | fi 5025 | if [ $res_2 != 0 ]; then 5026 | printf "${GREEN}\nOK${WHITE} TESTS $res_1/$val${DEF_COLOR}\n" 5027 | printf "${RED}\nKO${WHITE} TESTS $res_2/$val${DEF_COLOR}\n" 5028 | printf "${CYAN}\nCheck traces $PWD/traces.txt${DEF_COLOR}\n" 5029 | fi 5030 | 5031 | rm -rf 0 5032 | rm -rf test_check.txt 5033 | 5034 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 5035 | printf ${MAGENTA}"\n\t\t Multiple size <= 500\t\t\n"${DEF_COLOR}; 5036 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 5037 | 5038 | echo BONUS-Multiple size '<'= 500 >> traces.txt 5039 | 5040 | val=101 5041 | 5042 | if [ $2 ]; then 5043 | val=$(($3+1)) 5044 | fi 5045 | 5046 | res_1=0 5047 | res_2=0 5048 | cont=1 5049 | while [ $cont -lt $val ] 5050 | do 5051 | ARG=$(ruby -e "puts (00..499).to_a.shuffle.join(' ')"); 5052 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 5053 | R=$(./push_swap $ARG | ./checker $ARG) 5054 | if [ $S == $R ] && [ $R == "OK" ]; then 5055 | printf "${GREEN}$cont .[OK] ${DEF_COLOR}"; 5056 | ((res_1++)) 5057 | else 5058 | printf "${RED}$cont .[KO] ${DEF_COLOR}"; 5059 | echo TEST $cont ARG:"$ARG" >> traces.txt 5060 | ((res_2++)) 5061 | fi 5062 | ((cont++)) 5063 | done 5064 | 5065 | echo 5066 | 5067 | ((val--)) 5068 | if [ $res_1 == $val ]; then 5069 | printf "${GREEN}\nCongrats , all tests have been completed successfully 🥳✅\n" 5070 | echo OK >> traces.txt 5071 | fi 5072 | if [ $res_2 != 0 ]; then 5073 | printf "${GREEN}\nOK${WHITE} TESTS $res_1/$val\n" 5074 | printf "${RED}\nKO${WHITE} TESTS $res_2/$val\n" 5075 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 5076 | fi 5077 | 5078 | rm -rf 0 5079 | rm -rf test_check.txt 5080 | 5081 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 5082 | printf ${MAGENTA}"\n\t\t All size test + leaks check\t\n"${DEF_COLOR}; 5083 | printf ${MAGENTA}"\n-------------------------------------------------------------\n\n"${DEF_COLOR}; 5084 | 5085 | echo BONUS-All size test >> traces.txt 5086 | 5087 | val=500 5088 | res_1=0 5089 | res_2=0 5090 | cont=1 5091 | var=0 5092 | while [ $cont -lt $val ] && [ $var -lt 500 ] 5093 | do 5094 | ARG=$(ruby -e "puts (00..$var).to_a.shuffle.join(' ')"); 5095 | var=$(($var + 1)) 5096 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 5097 | R=$(./push_swap $ARG | ./checker $ARG) 5098 | if [ $S == $R ]; then 5099 | printf "${GREEN}$cont .[OK] ${DEF_COLOR}"; 5100 | ((res_1++)) 5101 | else 5102 | printf "${RED}$cont .[KO] ${DEF_COLOR}"; 5103 | echo TEST $cont ARG:"$ARG" >> traces.txt 5104 | ((res_2++)) 5105 | fi 5106 | R=$(./push_swap $ARG | leaks -atExit -- ./checker $ARG > /dev/null && echo $?) 5107 | if [[ $R == 0 ]]; then 5108 | printf "${GREEN}[MOK] ${DEF_COLOR}"; 5109 | else 5110 | printf "${RED} [KO LEAKS] ${DEF_COLOR}"; 5111 | fi 5112 | echo 5113 | ((cont++)) 5114 | done 5115 | 5116 | while [ $var -lt 1000 ] 5117 | do 5118 | ARG=$(ruby -e "puts (00..$var).to_a.shuffle.join(' ')"); 5119 | var=$(($var + 25)) 5120 | S=$(./push_swap $ARG | ./checker_Mac $ARG) 5121 | R=$(./push_swap $ARG | ./checker $ARG) 5122 | if [ $S == $R ]; then 5123 | printf "${GREEN}$cont .[OK] ${DEF_COLOR}"; 5124 | ((res_1++)) 5125 | else 5126 | printf "${RED}$cont .[KO] ${DEF_COLOR}"; 5127 | echo TEST $cont ARG:"$ARG" >> traces.txt 5128 | ((res_2++)) 5129 | fi 5130 | R=$(./push_swap $ARG | leaks -atExit -- ./checker $ARG > /dev/null && echo $?) 5131 | if [[ $R == 0 ]]; then 5132 | printf "${GREEN}[MOK] ${DEF_COLOR}"; 5133 | else 5134 | printf "${RED} [KO LEAKS] ${DEF_COLOR}"; 5135 | fi 5136 | echo 5137 | ((cont++)) 5138 | done 5139 | 5140 | ((cont--)) 5141 | echo 5142 | 5143 | val=$(($val+$var)) 5144 | 5145 | ((val--)) 5146 | if [ $res_1 == $cont ]; then 5147 | printf "${GREEN}\nCongrats , all tests have been completed successfully 🥳✅\n" 5148 | echo OK >> traces.txt 5149 | fi 5150 | if [ $res_2 != 0 ]; then 5151 | printf "${GREEN}\nOK${WHITE} TESTS $res_1/$cont\n" 5152 | printf "${RED}\nKO${WHITE} TESTS $res_2/$cont\n" 5153 | printf "${CYAN}\nCheck traces $PWD/traces.txt\n" 5154 | fi 5155 | 5156 | fi 5157 | 5158 | rm -rf 0 5159 | rm -rf test_check.txt 5160 | --------------------------------------------------------------------------------