Esempio n. 1
0
static void	operate_next(t_list **lst_a, t_list **lst_b, t_list **op_lst)
{
	char	*op;

	op = ((t_op*)((*op_lst)->content))->op;
	if (!ft_strcmp("ra", op))
		rotate(lst_a);
	else if (!ft_strcmp("rb", op))
		rotate(lst_b);
	else if (!ft_strcmp("rr", op))
	{
		rotate(lst_a);
		rotate(lst_b);
	}
	else if (!ft_strcmp("rra", op))
		rev_rotate(lst_a);
	else if (!ft_strcmp("rrb", op))
		rev_rotate(lst_b);
	else if (!ft_strcmp("rrr", op))
	{
		rev_rotate(lst_a);
		rev_rotate(lst_b);
	}
	else if (!ft_strcmp("", op))
		return ;
	else
		operate_exit(lst_a, lst_b, op_lst);
}
Esempio n. 2
0
void	lst_trans(t_list **lst, int range)
{
	int	i;

	if (!range)
		return ;
	i = ft_abs(range);
	while (i--)
	{
		if (range < 0)
			rev_rotate(lst);
		swap(lst);
		if (range > 0)
			rotate(lst);
	}
}
Esempio n. 3
0
void	resolution(t_lst *lsta, t_lst *lstb)
{
	if (verif_rotate_a(lsta) == 1)
	{
		rev_rotate(&lsta);
		apply_opt_v(lsta, lstb);
	}
	if (verif_rotate_a(lsta) == 2)
	{
		rotate(&lsta);
		apply_opt_v(lsta, lstb);
	}
	while (is_sort(lsta, lstb))
	{
		while (a_is_sort(lsta) == 1)
			resolve_a(&lsta, &lstb);
		while (is_sort(lsta, lstb) == 2)
			resolve_b(&lsta, &lstb);
		remove_list(&lsta, &lstb);
	}
	ft_print_color(MAGENTA, "\n\nEnd:", 1);
	print_lst(lsta, lstb);
}