Sudoku c++ grille créer

Fermé
linchan39 - Modifié par linchan39 le 20/02/2011 à 21:04
 karkoura - 4 févr. 2012 à 19:48
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.

#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

4 réponses

flo13142 Messages postés 71 Date d'inscription mardi 7 décembre 2010 Statut Membre Dernière intervention 21 février 2011 18
21 févr. 2011 à 09:19
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.
0
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.
0
Merci je vais regarder !!! :)
0
mathsforever
27 janv. 2012 à 08:44
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
0
chabacha109 Messages postés 268 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 14 mai 2012 9
Modifié par chabacha109 le 27/01/2012 à 11:54
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
0