void small_swap(t_shell *h) { while (l_len(h->sa) > 1) { if (l_len(h->sb) > 1 && h->sa->nb > h->sa->n->nb && h->sb->nb < h->sb->n->nb) ft_ss(h, 1); else if (h->sa->nb > h->sa->n->nb) ft_sa(h, 1); else if (l_len(h->sb) > 1 && h->sb->nb < h->sb->n->nb) ft_sb(h, 1); if (h->max == h->sa->nb || (l_len(h->sb) > 2 && h->sa->nb > h->sa->n->nb && h->sa->nb > h->sa->n->n->nb)) ft_ra(h, 1); while (l_len(h->sa) > 2 && l_nb(h->sa) < h->sa->nb && l_nb(h->sa) < h->sa->n->nb) ft_rra(h, 1); if (l_len(h->sb) > 1 && l_nb(h->sb) > h->sb->nb) ft_rrb(h, 1); if (ft_sorted(h->sa)) break ; ft_pb(h, 1); if (l_len(h->sb) > 2 && ((h->sb->nb < h->sb->n->nb && h->sb->nb < h->sb->n->n->nb) || l_nb(h->sb) > h->sb->nb)) ft_rb(h, 1); } push_swap_suite(h); }
int ft_f(int f, t_ps *ps) { if (f == SA) return (ft_sa(ps)); else if (f == SB) return (ft_sb(ps)); else if (f == SS) return (ft_ss(ps)); else if (f == PB) return (ft_pb(ps)); else if (f == PA) return (ft_pa(ps)); else if (f == RA) return (ft_ra(ps)); else if (f == RB) return (ft_rb(ps)); else if (f == RR) return (ft_rr(ps)); else if (f == RRA) return (ft_rra(ps)); else if (f == RRB) return (ft_rrb(ps)); else if (f == RRR) return (ft_rrr(ps)); return (0); }
void ft_ss(t_push *p) { if (p->nbl1 != 0) ft_sa(p); if (p->nbl2 != 0) ft_sb(p); }
int ft_ss(t_data *data) { ft_sa(data); ft_sb(data); ft_print_name(data, "ss"); return (0); }
char *ft_ss(t_control **list) { if (!list || !*list) ft_exit("Error\n"); ft_sa(list); ft_sb(list); return ("ss"); }
static int ft_ss(t_ps *ps) { int i; i = 0; i += ft_sa(ps); i += ft_sb(ps); return (i); }
void push_swap_suite(t_shell *head) { while (l_len(head->sb) > 0) { while (l_len(head->sb) > 1 && l_nb(head->sb) > head->sb->nb) ft_rrb(head, 1); ft_pa(head, 1); if (l_len(head->sb) > 1 && l_len(head->sa) > 1 && head->sa->nb > head->sa->n->nb && head->sb->nb < head->sb->n->nb) ft_ss(head, 1); else { if (head->sa->nb > head->sa->n->nb) ft_sa(head, 1); if (l_len(head->sb) > 1 && head->sb->nb < head->sb->n->nb) ft_sb(head, 1); } } }