Topic de Hyuno0066 :

UN KHEY CHAUD EN PROGRAMMATION EN C

  • 1
Salut, je cherche un clé chaud en C qui pourrait m'aider avec mon programme !
Je veux faire une table de transposition pour mon programme qui joue au jeu reversi, sauf que : je suis NULLE en programmation (jamais fait de ma vie jusqu'à cette rentrée) et malgré toutes mes lectures sur internet je n'arrive pas à le faire et je ne récupère que des segmentation fault.
Si quelqu'un peut m'aider mp (:
Mais poste-le ici ton problème bordel

Bah j'ai essayé d'utiliser des zobrist keys :
<code>
long long rand64(void)
{
srand(time(NULL));
return rand() ^ ((long long)rand() << 15) ^ ((long long)rand() << 30) ^ ((long long)rand() << 45)
^ ((long long)rand() << 60);
}

void init_table(void)
{
for (int i = 0; i < SIZE10; i++) {
for (int j = 0; j < NB_PIECES; j++) {
for (int k = 0; k < NB_PIECES; k++)
table[j][k][i] = rand64();
}
}
}

long long zobrist_key(board_t *board)
{
long long h = 0;
int k = (int) (board->player == BLACK_DISC);
int size = (int) board->size * board->size;
for (int i = 0; i < size * size; i++) {
if ((board->black & (1 << i)) || (board->white & (1 << i))) {
long long j = (board->black & (1 << i)) ? 1 : 2;
h = h ^ table[i][k][j];
}
}
return h;
}

int search_node(board_t *board, int depth, int alpha, int beta)
{
hashe *entry = &hash_table[zobrist_key(board) % TABLE_SIZE];
if (entry->key == zobrist_key(board)) {
if (entry->depth >= depth) {
if (entry->flag == HASH_EXACT)
return entry->value;
if ((entry->flag == HASH_ALPHA) && (entry->value <= alpha))
return alpha;
if ((entry->flag == HASH_BETA) && (entry->value >= beta))
return beta;
}
}
return UNKNOWN;
}

void record_node(board_t *board, int depth, int value, int flag)
{
hashe *entry = &hash_table[zobrist_key(board) % TABLE_SIZE];
entry->key = zobrist_key(board);
entry->value = value;
entry->flag = flag;
entry->depth = depth;
}
</code>

Dans mon fichier.h j'ai mis ces variables :
<code>
typedef struct hashentry {
long long key;
int depth;
int value;
int flag;
} hashe;

long long table[NB_PIECES][NB_PIECES][SIZE10]; /* [color piece][player][square] */
hashe hash_table[TABLE_SIZE];
</code>

sauf que je reçois le message segmentation fault quand j'essaie de l'utiliser dans mon algo alpha beta

  • 1

Données du topic

Auteur
Hyuno0066
Date de création
2 décembre 2021 à 15:02:29
Nb. messages archivés
4
Nb. messages JVC
4
En ligne sur JvArchive 378