Salut,
J’ai pour projet en C pour ma première année de DUT de créer un solutionneur de Sudoku pendant les vacances. Je vous envoie le sujet pour savoir en détail ce que je dois faire si ça vous intéresse…
https://www.mediafire.com/file/ma8k8zzl5ta088a/C_A1_sudoku_18_19.pdf/file
Puis tout mon code actuel avant de passer à ma demande :
Main.c (programme principal qui s’occupe d’exécuter chaque fonctions)
#include <stdio.h>
#include <stdlib.h>
#include "sudoku.h"
int main(void) {
int G[9][9] = {{0},{0}}; // Tableau contenant la grille
Cand C[9][9]; // Tableau contenant les candidats de chaque case de la grille
int NBO;
Case O[81];
lireGrille(G, "grille.txt");
ecrireGrille(G);
// initJeu(G, C, O, NBO);
estCand(G);
return 0;
}
sudoFunct.c (qui contient toutes les fonctions du programme)
#include <stdio.h>
#include <stdlib.h>
#include "sudoku.h"
/* SUPPRESION DE liregrille() et ecriregrille() POUR EVITER LE COPIAGE ET L'ANTIPLAGIAT */
/* void initJeu(int G[9][9], Cand C[9][9], Case O[81], int NBO) {
int i, j, k = 0;
int t;
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++) {
/* Initialisation de C[9][9]
if(G[i][j] != 0) {
C[i][j].nbc = 0;
C[i][j].tab = NULL;
}
else {
C[i][j].nbc = 9;
O[i].x = i;
O[j].y = j;
}
// printf("%d\n", C[i][j]);
}
}
} */
/* Suppression de estCand() pour éviter le copiage + éviter anti-plagiat */
struct.h (qui contient les deux structures utilisés)
typedef struct {
int x; // numéro de ligne
int y; // numéro de colonne
} Case;
typedef struct {
int nbc; // nombre de candidats
int *tab; // table des candidats
} Cand;
Voilà, maintenant je vous explique mon problème. J’essaye de faire fonctionner la fonction estCand qui me permettra de tester les nombres candidats qui seront dans une case (i, j) de ma grille de sudoku. Mais pour ça, je dois connaître les voisins qui doivent être différent du nombre pour lequel je cherche. En gros, que le nombre ne soit pas le même qu’un nombre en horizontale et en vertical à partir de la case, et ne soit pas non plus le même dans le groupe de cases.
Image pour que ce soit plus clair :
En gros, la case que j’ai entouré en carré ne doit pas être pareil que la flèche à l’horizontale, à la vertical, et de ce que j’ai entouré. Après, je vous invite à lire le sujet si vous voulez, c’est + clair ! Or, je n’ai aucune idée de comment faire pour savoir ça, j’y ait réfléchis 3 heures et fait plusieurs essais, mais je ne sais pas du tout comment faire…
Bref, merci de votre aide, j’suis grave bloqué là !