Sudoku c++ grille créer
linchan39
-
karkoura -
karkoura -
Bonjour,
Alors voila j'ai rien de mieux à faire que de vouloir me créer un sudoku maison . Je voudrais le faire en c++. J'arrive déjà a générer des lignes pour un tableau à deux dimension grille[9][9]. Mais ligne sont valide elle respecte les règles du sudoku(pas de même élément dans la même ligne). Mon problème c'est ensuite pour quelle respect les règles pas de même éléments dans la même colonne et pas de même éléments dans le même carré.
1) Je voudrais savoir si vous avez un moyen plus simple pour faire mon boxon (c'est un petit peu le bordel, disons le franchement).
2) comment je fait pour que les colonne et les carré soit aussi valide
Voila mon code.
le résultat:
5 2 9 8 7 3 6 1 4
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
Alors voila j'ai rien de mieux à faire que de vouloir me créer un sudoku maison . Je voudrais le faire en c++. J'arrive déjà a générer des lignes pour un tableau à deux dimension grille[9][9]. Mais ligne sont valide elle respecte les règles du sudoku(pas de même élément dans la même ligne). Mon problème c'est ensuite pour quelle respect les règles pas de même éléments dans la même colonne et pas de même éléments dans le même carré.
1) Je voudrais savoir si vous avez un moyen plus simple pour faire mon boxon (c'est un petit peu le bordel, disons le franchement).
2) comment je fait pour que les colonne et les carré soit aussi valide
Voila mon code.
#include <iostream> #include <stdlib.h> #include <time.h> #include <stdio.h> using namespace std; int main() { int grille[9][9]={0};//déclaration de la grille + mise à zéro //Pour la génération des nombres aléatoires srand((unsigned int)time(NULL)); //Les limites pour le tirage au sort int max = 9; int min = 1; bool erreur; int comparatif[9]={0}; //générer un ligne valide mais seulement avec la ligne est pas encore avec les colonnes et les carrés for(int i=0; i<9; i++) { grille[0][i] = (rand() % (max - min + 1)) + min; comparatif[grille[0][i]-1]++; for(int j=0;j<9;j++) { if(grille[0][i]==grille[0][j] && i!=j)//si l'élément courant est déja présent dans d'autre parti de la ligne { erreur=true; int k=0; while(k<9 && erreur==true) { if(comparatif[k]==0)//l'élément courant prend alors la valeur entre (1 et 9) qui n'appartient pas encore à la ligne { comparatif[grille[0][i]-1]--; comparatif[k]++; grille[0][i]=k+1; erreur==false; } k++; } } } } //afficher la grille for(int v=0; v<9;v++) { cout << "\n"; for(int h=0; h<9; h++) { cout << grille[v][h]; cout << " "; } } }
le résultat:
5 2 9 8 7 3 6 1 4
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
A voir également:
- Sudoku c++ grille créer
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
4 réponses
Salut,
La plupart des grilles de sudoku sont générées en utilisant un algorithme de backtracking (programmation par contraintes). C'est en Java, mais cette API est fourni avec un tutoriel et te permet de bien comprendre l'intérêt de ce genre d'algorithme : https://www.imt-atlantique.fr/fr
Le problème de la génération de la grille de sudoku, donne rapidement une combinatoire importante.
Une autre technique (moins intéressante), consiste à partir d'une grille valide et de faire des permutations.
La plupart des grilles de sudoku sont générées en utilisant un algorithme de backtracking (programmation par contraintes). C'est en Java, mais cette API est fourni avec un tutoriel et te permet de bien comprendre l'intérêt de ce genre d'algorithme : https://www.imt-atlantique.fr/fr
Le problème de la génération de la grille de sudoku, donne rapidement une combinatoire importante.
Une autre technique (moins intéressante), consiste à partir d'une grille valide et de faire des permutations.
karkoura
Salut, moi je veux utiliser choco mais j'ai ajouté cette bibliothèque mais au niveau l'eclipse les commandes sont inconnus. j'ai pas bien compris comment l'installer SVP aider moi.
Bonjour, nous souhaitons réaliser un TIPE en maths sup sur les sudoku. Nous avons du mal à programmer en C++. Comme votre début de programme est satisfaisant, nous voudrions savoir si vous l'avez terminé. ET si c'est le cas , pourriez vous nous le communiquer s'il vous plait?
Merci
Merci
avant le codage il faut bien concevoir son jeux avec un diagramme UC et UML(au moins) .:
http://fr.wikipedia.org/wiki/Diagramme_des_cas_d'utilisation
après tu passe par le coté logique :
https://fr.wikipedia.org/wiki/%C3%89lagage_alpha-beta
http://www.siteduzero.com/tutoriel-3-195327-l-algorithme-min-max.html
Enfin tu passe par la phase du codage.
To Be Or Not To Be , Marwen
http://fr.wikipedia.org/wiki/Diagramme_des_cas_d'utilisation
après tu passe par le coté logique :
https://fr.wikipedia.org/wiki/%C3%89lagage_alpha-beta
http://www.siteduzero.com/tutoriel-3-195327-l-algorithme-min-max.html
Enfin tu passe par la phase du codage.
To Be Or Not To Be , Marwen