Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
void	ft_ss(t_push *p)
{
	if (p->nbl1 != 0)
		ft_sa(p);
	if (p->nbl2 != 0)
		ft_sb(p);
}
Ejemplo n.º 4
0
int		ft_ss(t_data *data)
{
	ft_sa(data);
	ft_sb(data);
	ft_print_name(data, "ss");
	return (0);
}
Ejemplo n.º 5
0
char	*ft_ss(t_control **list)
{
	if (!list || !*list)
		ft_exit("Error\n");
	ft_sa(list);
	ft_sb(list);
	return ("ss");
}
Ejemplo n.º 6
0
static int		ft_ss(t_ps *ps)
{
	int		i;

	i = 0;
	i += ft_sa(ps);
	i += ft_sb(ps);
	return (i);
}
Ejemplo n.º 7
0
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);
		}
	}
}