コード例 #1
0
ファイル: ft_get_func.c プロジェクト: kbunel/ecole_42
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);
}
コード例 #2
0
ファイル: select.c プロジェクト: ThomasSan/push_swap
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);
}
コード例 #3
0
ファイル: push_swap.c プロジェクト: ThomasSan/push_swap
void	rempile(t_shell *head)
{
	if (l_nb(head->sa) > head->sa->nb)
		ft_rra(head, 1);
	while (l_len(head->sb) > 1)
	{
		if (l_len(head->sb) > 2 && head->sb->nb > head->sb->n->nb &&
head->sb->nb > head->sb->n->n->nb)
			rb_or_rr(head);
		while (is_bigger(head->sa, head->sb->nb, head->min))
			while_bigger(head);
		ft_pa(head, 1);
		if (head->sa->nb > head->sa->n->nb && head->sa->n->nb != head->min)
		{
			if (l_len(head->sb) > 1 && head->sb->nb > head->sb->n->nb)
				ft_ss(head, 1);
			else
				ft_sa(head, 1);
		}
		while (is_smallest(head->sb, head->sa->nb) && !ft_sorted(head->sa))
			while_smallest(head);
	}
	ft_pa(head, 1);
	if (head->sa->nb > head->sa->n->nb && head->sa->n->nb != head->min)
		ft_sa(head, 1);
	ft_ra(head, 1);
}
コード例 #4
0
ファイル: push_swap.c プロジェクト: ThomasSan/push_swap
void	sort_b_list(t_shell *head, int *biggest, int len)
{
	if (l_len(head->sb) <= 1)
		return ;
	if (head->sb->nb > l_nb(head->sb))
		ft_rb(head, 1);
	if (head->sb->nb > head->sb->n->nb)
	{
		if (arr(head->sa->nb, biggest, len) &&
arr(head->sa->n->nb, biggest, len) && head->sa->n->nb > head->sa->nb)
			ft_ss(head, 1);
	}
}
コード例 #5
0
ファイル: select.c プロジェクト: ThomasSan/push_swap
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);
		}
	}
}