/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* optimise_move2.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/01/17 07:44:45 by apommier #+# #+# */ /* Updated: 2022/01/17 14:16:41 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "push_swap.h" t_slist *transform_list2(t_slist *start, t_slist *start2, int r1, int r2) { t_slist *type; type = start; if (r2 < r1) { while (r2--) { cut_lst(start2); start->action = "rrr"; start = start->next; } } else { while (r1--) { cut_lst(start2); start->action = "rrr"; start = start->next; } } return (type); } t_slist *sequence2(t_slist *lst, t_slist *start1, t_slist *start2, int r1) { char *type; int r2; type = 0; r2 = 0; if (!ft_strcmp("rra", lst) || !ft_strcmp("rrb", lst)) { type = lst->action; while (!ft_strcmp(type, lst) && r2++ >= 0) lst = lst->next; lst = transform_list2(start1, start2, r1, r2); } return (lst); } void optimise_move2(t_slist **action, t_slist *start2, int r1) { t_slist *start1; t_slist *lst; char *type; type = 0; lst = *action; while (lst) { r1 = 0; if (!ft_strcmp("rra", lst) || !ft_strcmp("rrb", lst)) { start1 = lst; type = lst->action; while (!ft_strcmp(type, lst) && r1++ >= 0) { start2 = lst; lst = lst->next; } lst = sequence2(lst, start1, start2, r1); } else if (lst) lst = lst->next; } }