intra to gitea
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* sort_2.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: lfirmin <[email protected]> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/11/03 11:40:53 by lfirmin #+# #+# */
|
||||
/* Updated: 2024/11/03 18:10:08 by lfirmin ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../include/pushswap.h"
|
||||
|
||||
void make_move(t_stack *stack_a, t_stack *stack_b, int cheap_ind)
|
||||
{
|
||||
int move[3];
|
||||
int value_b;
|
||||
int index_a;
|
||||
|
||||
move[1] = calc_move_stack_2(stack_b, cheap_ind);
|
||||
value_b = return_value(stack_b, cheap_ind);
|
||||
index_a = calc_index_a(stack_a, value_b);
|
||||
move[0] = calc_move_stack_2(stack_a, index_a);
|
||||
move[2] = 0;
|
||||
opti(move);
|
||||
make_move_b(stack_b, move[1]);
|
||||
make_move_a(stack_a, move[0]);
|
||||
make_move_r(stack_b, stack_a, move[2]);
|
||||
push(stack_b, stack_a);
|
||||
ft_printf_fd(1, "pa\n");
|
||||
}
|
||||
|
||||
void make_move_a(t_stack *stack_a, int move)
|
||||
{
|
||||
if (move > 0)
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rotate(stack_a);
|
||||
ft_printf_fd(1, "ra\n");
|
||||
move--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rrotate(stack_a);
|
||||
ft_printf_fd(1, "rra\n");
|
||||
move++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void make_move_b(t_stack *stack_b, int move)
|
||||
{
|
||||
if (move > 0)
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rotate(stack_b);
|
||||
ft_printf_fd(1, "rb\n");
|
||||
move--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rrotate(stack_b);
|
||||
ft_printf_fd(1, "rrb\n");
|
||||
move++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void make_move_r(t_stack *stack_b, t_stack *stack_a, int move)
|
||||
{
|
||||
if (move > 0)
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rotate(stack_b);
|
||||
rotate(stack_a);
|
||||
ft_printf_fd(1, "rr\n");
|
||||
move--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (move != 0)
|
||||
{
|
||||
rrotate(stack_b);
|
||||
rrotate(stack_a);
|
||||
ft_printf_fd(1, "rrr\n");
|
||||
move++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int calc_move_stack_2(t_stack *stack, int index)
|
||||
{
|
||||
t_node *curr;
|
||||
int i;
|
||||
int ind;
|
||||
|
||||
ind = index;
|
||||
curr = stack->top;
|
||||
while (ind > 1)
|
||||
{
|
||||
curr = curr->next;
|
||||
ind--;
|
||||
}
|
||||
if (index - 1 < stack->size - index + 1)
|
||||
i = index - 1;
|
||||
else
|
||||
i = (stack->size - index + 1) * -1;
|
||||
return (i);
|
||||
}
|
||||
Reference in New Issue
Block a user