Example #1
0
void	push_swap(t_shell *h, int x, int len, int i)
{
	int *big;

	len = l_len(h->sa) / 2;
	big = get_biggest(h->sa, len, x);
	h->min = x == INT_MIN ? big[0] : h->min;
	i = len;
	while (i)
	{
		if (arr(h->sa->nb, big, len) && arr(h->sa->n->nb, big, len) &&
h->sa->n->nb > h->sa->nb)
			ft_sa(h, 1);
		if (arr(h->sa->nb, big, len))
		{
			ft_pb(h, 1);
			i--;
		}
		else
			ft_ra(h, 1);
		sort_b_list(h, big, len);
	}
	rempile(h);
	if (x == INT_MIN)
		push_swap(h, big[len - 1], 0, 0);
	free(big);
	finish(h);
}
Example #2
0
void	which_swap(t_shell *head)
{
	if (l_len(head->sa) >= 40)
		push_swap(head, INT_MIN, 0, 0);
	else
	{
		while (ft_sorted(head->sa) == 0)
			small_swap(head);
	}
}
Example #3
0
int		main(int argc, char **argv)
{
	if (argc == 1 || (ft_strcmp(argv[1], "-v") == 0 && argc == 2))
		return (0);
	if (argc < 2 || (ft_strcmp(argv[1], "-v") == 0 && argc < 3))
		ft_error(0);
	else
		push_swap(argv);
	return (0);
}
Example #4
0
int		main(int argc, char **argv)
{
	t_dlist	*l_a;
	t_dlist *l_b;

	if (argc <= 1)
		show_usage();
	argv++;
	l_a = list_new();
	l_b = list_new();
	while (*argv)
	{
		l_a = list_append(l_a, ft_atoi(*argv));
		argv++;
	}
	push_swap(l_a, l_b);
	return (0);
}
Example #5
0
int	push_swap(int *l_a, int count)
{
  int	pos_min;
  int	ra_count;

  ra_count = 0;
  pos_min = find_lowest_number(l_a, count);
  while (ra_count <= pos_min)
    {
      rotate(l_a, count);
      ra_count++;
    }
  print_ra(pos_min);
  if (count == 0)
    return (0);
  write(1, "pb ", 3);
  push_swap(l_a, count - 1);
  return (0);
}
Example #6
0
void		push_swap2(t_dbl **a, t_dbl **b, t_option option,
	t_dbllist **lstactions)
{
	int		i;

	while ((*b)->length != 0)
	{
		action_fusion(b, i, lstactions);
		ft_push_pile(b, a);
		ft_lstdbladd(lstactions, "pa", 3);
		push_swap(a, b, option, lstactions);
		if (option.v)
		{
			if (option.c)
				ft_affiche_color(*a, *b, 0);
			else
				ft_affiche(*a, *b);
		}
	}
}
Example #7
0
int	main(int ac, char **av)
{
  int	*l_a;
  int	count;

  count = 0;
  l_a = malloc(sizeof(int) * ac);
  while (count < (ac - 1))
    {
      l_a[count] = (my_getnbr(av[count + 1]));
      count++;
    }
  if (no_tri(l_a, ac -1) == -1)
    {
      write(1, "\n", 1);
      return (0);
    }
  push_swap(l_a, ac - 1);
  pa(ac - 1);
  free(l_a);
  return (0);
}