Langage c generateur sudoku
poiuyt
-
poiuyt -
poiuyt -
Bonjour,
j'ai un problème au niveau de mon code. J'arrive à créer un sudoku soit avec des lignes valables soit avec des colonnes valables (i.e de 1 à 9) mais pas les deux à la fois.
Pouvez-vous m'aidez ?
Voici mon code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grille[9][9]={0}
srand(time(NULL));
int max = 9;
int min = 1;
int nombre_ok=0;
int i,j,k,v,h,m;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
do{
nombre_ok = 1;
grille[i][j] = (rand() % (max - min + 1)) + min;
for(k=0; k<9; k++)
{
if (k!=j)
{
if(grille[i][k] == grille[i][j])
{
nombre_ok = 0;
}
}
}
}while (!nombre_ok);
}
}
for(v=0; v<9;v++)
{
for(h=0; h<9; h++)
{
printf("%d ",grille[v][h]);
}
printf("\n");
}
return 0;
}
Merci.
j'ai un problème au niveau de mon code. J'arrive à créer un sudoku soit avec des lignes valables soit avec des colonnes valables (i.e de 1 à 9) mais pas les deux à la fois.
Pouvez-vous m'aidez ?
Voici mon code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int grille[9][9]={0}
srand(time(NULL));
int max = 9;
int min = 1;
int nombre_ok=0;
int i,j,k,v,h,m;
for(i=0; i<9; i++)
{
for(j=0; j<9; j++)
{
do{
nombre_ok = 1;
grille[i][j] = (rand() % (max - min + 1)) + min;
for(k=0; k<9; k++)
{
if (k!=j)
{
if(grille[i][k] == grille[i][j])
{
nombre_ok = 0;
}
}
}
}while (!nombre_ok);
}
}
for(v=0; v<9;v++)
{
for(h=0; h<9; h++)
{
printf("%d ",grille[v][h]);
}
printf("\n");
}
return 0;
}
Merci.
A voir également:
- Langage c generateur sudoku
- Langage ascii - Guide
- Generateur mot de passe - Télécharger - Sécurité
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Canva générateur d'image - Accueil - Outils
2 réponses
Tu vas dans la mauvaise direction, tu ne peux pas generer un sudoku en utilisant un tel algo, c'est bien plus complexe que ca.
D'autant plus que tu as l'air d'avoir neglige le fait qu'il fallait aussi verifier les 9 sous regions.
Il faut que pour chaque chiffre que tu veux placer, tu te construises une pool des solutions possibles (selon les regles de ne pas repeter un chiffre dans une sous region, dans une colonne, puis dans une ligne). Et ensuite tu choisis en random dans cette pool.
Ceci etant la partie facile (bien qu'elle soit deja prise de tete, normal c'est un casse tete non ? :p)
En effet, une fois que tu auras fait ca, la simplification minimale de ta grille ne sera pas du gateau, mais bon a l'aide d'un graphe je pense que ca peut se faire, mais la encore l'algo n'est pas du niveau debutant.
Car un vrai sudoku ne doit avoir qu'une unique solution.
https://fr.wikipedia.org/wiki/Sudoku#Structure_logique
Ca peut t'interesser.
En esperant t'avoir oriente vers la bonne direction :)
D'autant plus que tu as l'air d'avoir neglige le fait qu'il fallait aussi verifier les 9 sous regions.
Il faut que pour chaque chiffre que tu veux placer, tu te construises une pool des solutions possibles (selon les regles de ne pas repeter un chiffre dans une sous region, dans une colonne, puis dans une ligne). Et ensuite tu choisis en random dans cette pool.
Ceci etant la partie facile (bien qu'elle soit deja prise de tete, normal c'est un casse tete non ? :p)
En effet, une fois que tu auras fait ca, la simplification minimale de ta grille ne sera pas du gateau, mais bon a l'aide d'un graphe je pense que ca peut se faire, mais la encore l'algo n'est pas du niveau debutant.
Car un vrai sudoku ne doit avoir qu'une unique solution.
https://fr.wikipedia.org/wiki/Sudoku#Structure_logique
Ca peut t'interesser.
En esperant t'avoir oriente vers la bonne direction :)