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); }
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); } }
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); }