Exemplo n.º 1
0
void		do_tr4(t_list **a, t_list **b, t_list **in)
{
	int curr;
	int j;

	curr = lstlen(*b) - 1;
	while (lstlen(*b) > lstlen(*a))
	{
		j = 0;
		while (j++ < 4)
			if ((*b)->val == curr || (*b)->val == curr - 1)
				make_move(a, b, in, PA);
			else
				make_move(a, b, in, RB);
		if (*a && (*a)->next && (*a)->val > (*a)->next->val)
			make_move(a, b, in, SA);
		curr -= 2;
	}
	while (lstlen(*b))
	{
		make_move(a, b, in, PA);
		make_move(a, b, in, PA);
		if (*a && (*a)->next && (*a)->val > (*a)->next->val)
			make_move(a, b, in, SA);
	}
}
Exemplo n.º 2
0
void	print_list_trimap(int *map1, int *map2, int *map3, t_list *l)
{
	int		count;
	t_list	*head;
	int		j;

	ft_printf("----------------------\n");
	count = lstlen(l);
	while (l)
	{
		head = l;
		j = MAX(exp2(log2(count) / 2), 4);
		while ((l = l->next) && j--)
			ft_printf(C_256 "[%-3d]-" RESET_ANSI, COLOR(map1[l->val]), l->val);
		ft_printf("     ");
		j = MAX(exp2(log2(count) / 2), 4);
		l = head;
		while ((l = l->next) && j--)
			ft_printf(C_256 "[%-3d]-" RESET_ANSI, COLOR(map2[l->val]), l->val);
		ft_printf("     ");
		j = MAX(exp2(log2(count) / 2), 4);
		l = head;
		while ((l = l->next) && j--)
			ft_printf(C_256 "[%-3d]-" RESET_ANSI, COLOR(map3[l->val]), l->val);
		ft_printf("\n");
	}
}
Exemplo n.º 3
0
void		do_in4_in8(t_list **a, t_list **b, t_list **in)
{
	char	**patterns;
	int		count;
	int		*abcd;
	int		*ops;
	int		j;

	patterns = load_file("patterns/IN4");
	count = lstlen(*a);
	abcd = make_sequence(count, 1, 1, 4);
	while (count)
	{
		ops = make_instr_arr(recognize_4pat(patterns, \
			grab_next_n(*a, 4), abcd));
		while (*ops != -1)
			make_move(a, b, in, *ops++);
		j = -1;
		while (++j < 4)
			abcd[j] = abcd[j] + 4;
		count -= 4;
	}
	free(abcd);
	free_split(patterns);
}
Exemplo n.º 4
0
void		do_tr4_in8(t_list **a, t_list **b, t_list **in)
{
	char	**patterns;
	int		*abcd;
	t_kit	*k;

	patterns = load_file("patterns/IN8");
	abcd = make_sequence(lstlen(*a) / 4 + 1, -1, 1, 4);
	while (lstlen(*a) != lstlen(*b))
	{
		k = new_kit(a, b, in, abcd);
		do_ops_kit(make_instr_arr(recognize_8pat(patterns, \
			grab_next_n(*a, 8), abcd)), k, 8, 0);
		add_vec(abcd, make_sequence(2, -4, 2, 4), 4);
	}
	free(abcd);
	free_split(patterns);
}
Exemplo n.º 5
0
void
check(int err)
{
    if(err) {
        fprintf(stderr, "utb-list: out of memory\n");
        lstfree(ls);
        exit(1);
    }
    printf("myMalloc: prideluji 288 bajtu, celkove prideleno %d bajtu\n", 288*lstlen(ls));
}
Exemplo n.º 6
0
int			is_rotationally_sorted(t_list *list)
{
	int		count;
	t_list	*l;

	count = lstlen(list);
	l = dupe_list(list);
	while (count--)
	{
		if (is_sorted(l))
			return (1);
		rot_up(&l);
	}
	free_list(l);
	return (0);
}
Exemplo n.º 7
0
int		status_display(t_kit *k, int *map, int *map2)
{
	static int	inst;
	int			j;

	ft_printf("\e[1;1H\e[2J");
	status_print(*(k->a), *(k->b), map, map2);
	j = lstlen(*(k->a)) > lstlen(*(k->b)) ? lstlen(*(k->a)) : lstlen(*(k->b));
	while (j++ < 64)
		ft_printf("\n");
	ft_printf("+%d, %d\n", lstlen(*(k->in)) - inst, lstlen(*(k->in)));
	inst = lstlen(*(k->in));
	getchar();
	return (1);
}
Exemplo n.º 8
0
void								sort(t_env *e, int len)
{
	int								i;
	int								x;
	int								tmp;
	int								*tab;

	i = -1;
	x = len;
	tmp = 0;
	tab = gettab(e->a->begin, len);
	while (x-- > 3)
	{
		ontop(e, tab[++i], lstlen(e->a));
		push(e, 'b');
		tmp++;
		if (verifsort(e->a))
			break ;
	}
	if (len - tmp == 3)
		lsort(e);
	while (tmp-- > 0)
		push(e, 'a');
}
Exemplo n.º 9
0
main(void)
{
    struct lstnode n = {0};
    int b;
    puts("List test program");
    puts("Zadejte pismeno 0-A pro jednu z nasledujicich cinnosti:");
    puts("0: Init,");
    puts("1: Actualize,");
    puts("2: Insert_First,");
    puts("3: First,");
    puts("4: Copy_First,");
    puts("5: Delete_First,");
    puts("6: Post_Delete,");
    puts("7: Post_Insert,");
    puts("8: Copy,");
    puts("9: Succ,");
    puts("A: Is_Active,");
    puts("M: Vypis menu");
    puts("CTRL+Z (Win) nebo CTRL+D (Unix): Konec programu");
menu:
    if(!gets(t))
        goto out;
    printf("Vase volba=%c\n", t[0]);
    switch(t[0]) {
    case '0':
        puts("Init - inicializace seznamu");
        break;
    case '1':
        puts("Actualize - prepis dat aktivni polozky");
        /* read but discard if no active */
        read(ls.active ? ls.active : &n);
        break;
    case '2':
        puts("Insert_First - vlozeni nove polozky na 1. misto seznamu");
        read(&n);
        check(lstinsfirst(&ls, n));
        break;
    case '3':
        puts("First - nastaveni aktivni polozky na 1.prvek");
        ls.active = ls.first;
        break;
    case '4':
        puts("Copy_First - Vypis 1.prvku seznamu");
        if(!ls.first)
            error("Chyba v List_Copy_First - first=NULL");
        printlstnode(*ls.first);
        break;
    case '5':
        puts("Delete_First - vymaz  1.prvek");
        b = ls.first;
        lstrmfirst(&ls);
        if(b)
            printf("myFree: uvolnuji 288 bajtu, celkove prideleno %d bajtu\n", 288*lstlen(ls));
        break;
    case '6':
        puts("Post_Delete - vymaz prvek za aktivnim prvkem");
        b = ls.first && ls.first->next;
        lstrmafter(&ls);
        if(b)
            printf("myFree: uvolnuji 288 bajtu, celkove prideleno %d bajtu\n", 288*lstlen(ls));
        break;
    case '7':
        puts("Post_Insert - vloz novy prvek za aktivni prvek");
        read(&n);
        if(ls.active)
            check(lstinsafter(ls, n));
        break;
    case '8':
        puts("Copy - ziskani hodnoty aktivniho prvku ");
        if(!ls.active)
            error("List_Copy error");
        printlstnode(*ls.active);
        break;
    case '9':
        puts("Succ - posuv ukazatel aktivniho prvku na dalsi prvek");
        if(ls.active)
            ls.active = ls.active->next;
        break;
    case 'A':
    case 'a':
        puts("Is_Active - zjisteni, zda je seznam aktivni");
        printf("Is_Active=%s\n", ls.active == ls.first && ls.first ? "true" : "false");
        break;
    default:
        goto out;
    }
    printstate();
    puts("");
    puts("Zadejte znak 0-A, EOF(tj. CTRL+Z nebo CTRL+D)=Konec, M=Menu:");
    puts("************************************************************");
    goto menu;
out:
    puts("Konec souboru, koncime.");
    lstfree(ls);
    return 0;
}
Exemplo n.º 10
0
void
showfree()
{
    printf("myFree: uvolnuji 288 bajtu, celkove prideleno %d bajtu\n", 288*lstlen(ls));
}