Ejemplo n.º 1
0
void	bit_convert(char *buf, t_tetri *tetris)
{
	int tab[3];
	int	power;

	I = -1;
	J = -1;
	tetris->tetris = (t_tetris2*)malloc(sizeof(t_tetris2) * tetris->nb_tetris);
	while (buf[++I])
	{
		K = 0;
		ft_init_tab(TET[++J].tetris, 16);
		TET[J].carac = 'A' + J;
		while ((buf[I] != '\n' && buf[I + 1] != '\n') && buf[I--])
		{
			power = 0;
			while (buf[++I] != '\n')
			{
				if (buf[I] == '#')
					TET[J].tetris[K] += ft_power(2, power);
				power++;
			}
			K++;
			I++;
		}
		bit_reset(TET[J].tetris, 4);
	}
}
Ejemplo n.º 2
0
BitVec *EratosthenesSieve(int n) {
  BitVec *b = BitVecNew(n);

  for (int i = 0; i < n; i++) {
    bit_set(b, i);
  }

  bit_reset(b, 0);
  bit_reset(b, 1);

  for (int i = 2; i < n; i++) {
    if (bit_get(b, i)) {
      for (int j = i * 2; j < n; j += i)
        bit_reset(b, j);
    }
  }
  return b;
}
Ejemplo n.º 3
0
int
test_base_bitset(const char* param) {
    rand_seed((uint32_t)time(NULL));

    // bit create 
    int size = param ? atoi(param) : rand() % 1024;
    bit_t* bit = bit_create(size);
    if (!bit) {
        fprintf(stderr, "bit create fail\n");
        return -1;
    }

    // bit set 
    int test_size = (size >> 1);
    for (int i = 0; i < test_size; ++ i) {
        bit_set(bit, i);
    }

    // bit is set 
    for (int i = 0; i < size; ++ i) {
        if (i < test_size && bit_isset(bit, i)) {
            fprintf(stderr, "bit-set error\n");
            bit_release(bit);
            return -1;
        }
        if (i >= test_size && bit_isset(bit, i) == 0) {
            fprintf(stderr, "bit-set error\n");
            bit_release(bit);
            return -1;
        }
    }

    // bit count
    if (bit_count(bit) != test_size) {
        fprintf(stderr, "bit-count = %d error\n", bit_count(bit));
        bit_release(bit);
        return -1;
    }

    // bit reset -> bit count
    for (int i = 0; i < test_size; ++ i) {
        bit_reset(bit, i);
    }
    if (bit_count(bit) != 0) {
        fprintf(stderr, "bit-count error\n");
        bit_release(bit);
        return -1;
    }

    bit_release(bit);
    return 0;
}