Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : La table de sudoku qui foire [ Archives / Au secours ] (lkm)

mardi 31 janvier 2006 à 17:25:39 | La table de sudoku qui foire

lkm

Bonjour à tous, ceci est mon premier message sur javafr.com. En effet je débute en Java (mais pas en programmation) et je me suis dit que pour débuter, je coderai bien un petit applet java de sudoku pour mon site.
Le problème que j'ai est plus un soucis de programmation que de problème avec java.

Je vous explique comment je procède pour générer ma table (compète) de sudoku.
-j'initialise ma table à 2 dimensions : 9x9 cases.
- ensuite je remplis ma première ligne en vérifiant pour chaque ajout que le chiffre (aléatoire entre 1 et 9) à insérer  n'est pas dans la table. Ceci fonctionne très bien et si j'utilise que cette fonction la table de sudoku est cohérente sur les lignes.
J'ai réalisé la même fonction mais pour les colonnes et si je l'utilise (sans utiliser la fonction ligne) j'ai une table sudoku cohérente sur les colonnes.
Maintenant si j'utilise les 2 fonctions en faisant un ET entre les 2, ça foire complétement.
Pourquoi je ne le sais pas peut être avez vous la réponse.
Voici mon code:

import java.util.Random;

public class sudoku {
 //initialisation du tableau 
 public static int[][] init_tableau_sudoku(int[][] table){
  for(int i=0; i<9; i++){
   for(int j=0;j<9;j++){
    table[i][j] = -1; 
   }
  }
  return table;
 }
 //vérifie si la valeur est dans la ligne
 public static boolean in_array_ligne(int valeur, int[][] table, int indiceligne, int indicecolonne){
  for(int i=-1; i<indicecolonne; i++){
   if(table[indiceligne][i+1] == valeur){
    return true;
   }
  }
  return false;
 }
// vérifie si la valeur est dans la colonne
 public static boolean in_array_colonne(int valeur, int[][] table, int indiceligne, int indicecolonne){
  for(int i=-1; i<indiceligne;i++){
   if( table[i+1][indicecolonne] == valeur){
    return true;
   }
  }
  return false;
 }
// genere le sudoku 
 public int[][] genere_sudo(){
  Random valeur_t = new Random();
  int table[][] = new int[9][9];
  table = init_tableau_sudoku(table);
  int valeur_test = -1;
  for(int j=0; j<9;j++){
   for(int i=0; i<table.length; i++){
    valeur_test = -1;
    while( in_array_ligne(valeur_test,table,j,i) && in_array_colonne(valeur_test,table,j,i) ){
     valeur_test = valeur_t.nextInt(9)+1;
    }
    table[j][i] = valeur_test;
   }
  }
  return table;
 }

 public static void main(String[] args) {
  System.out.println("Bonjour tout le monde!");
  int table_sudoku[][] =  new int[9][9];
  String mike = "|";
  sudoku obj_sudoku = new sudoku();
  table_sudoku = obj_sudoku.genere_sudo();
  for(int i = 0;i<9;i++){
   for(int j=0;j<9;j++){
    mike += table_sudoku[i][j] + "|";
    if(j == 8){mike += "\n|";}
   }
  }
  System.out.println(mike);
  
 }

}
lkm


mardi 31 janvier 2006 à 20:43:05 | Re : La table de sudoku qui foire

eddyger

Bonjour,

(ne connaissant pas le sudoku je suis aller voir http://www.e-sudoku.fr/regle-grille-sudoku.php)
Je pense que ton test au niveau du while devrait être plutôt un OU plutot qu'un ET :
                while( in_array_ligne(valeur_test,table,j,i) || in_array_colonne(valeur_test,table,j,i) )

ed
 
 

dimanche 5 février 2006 à 11:52:09 | Re : La table de sudoku qui foire

lkm

Tu as entièrement raison, le pire c'est que j'avais vérifié, que j'avais bien trouvé une fonction OU mais le truc c'est que quand je met une fonction OU, j'ai l'impression de rentrer dans une boucle infinie, mon algorithme met 10 plombes à s'executer.
J'y ai réfléchi et j'ai peut être trouvé une feinte pour parer ça.
Je vous tiens au courant, je reste également ouvert à des propositions.

lkm



Cette discussion est classé dans : table, int, valeur, for, sudoku


Répondre à ce message

Sujets en rapport avec ce message

JDialog avec tableau [ par Suffren ] Bonjour,je cherche à réaliser un JDialog avec des onglets qui donnent des tableaux avec Swing et AbstractTableModel mais çà ne marche pas.Existe-t-il table de hachage !!!! [ par youneslami ] salut a tous,j ai une table de hashage qui contiens des String avec une valeur en entier.je cherche a mettre tous les String dont la valeur est super inverser une table [ par lolobuell ] Bonjour,voilà j'ai une tableclé 1 valeur {a,b,c}clé 2 valeur {d,e}clé 3 valeur {g,h}et je voudrai pouvoir cré les ensembles croisés:{a,d,g} {a,d,h}{a, servlet et id [ par errada ] Bonjour à tous,j'ai un petit soucis, voilà, dans ma sevrlet Affichage_Table je fais un select * from stagiaire dans ma bdd pour afficher tous les stag probleme nombres d'un tableau [ par Skyffer3 ] Salut a tous ! Voila quand je fais un tableau, par exemple :x = new int[3];for (i = 0; i int[i] = 0;}La boucle for remplit donc le tableau x comme ce retirer une valeur d'une table jdbtable [ par mamichec ] Voila mon probleme:J'ai une jdbTable relie a un Datasetquery.a l'affichage tout est correcte, j'obtiens une table de 2 colonnes avec toutes les valeur Insert en table de BDD avec une clef en AutoIncrement [ par zeldoi5 ] Bonjour je travaille sur MySQL et j'ai un petit soucis avec l'insertion dans ma table. C'est certainement une question simple, mais je ne comprends pl Basic => Java SoS [ par Enderounet ] Salut, j'ai cet algo en Basic et je l'ai traduit en java, mais je n'obtient pas les memes résultats.Si qqun voit une erreur ou qque chose qui ne va pa S.O.S !!! [ par javateux ] String [][]s = null;...for(int i = 0;i{ for(int j = 0;j { s[i][j] = "ouech"; }}...resultat => nullPointerException sur la ligne s[i][j] Conversion d'un tableau ASCII en STRING [ par neena ] bonjour, je voudrai savoir comment faire pour convertir mon tableau qui contient du code ASCII en STRING voila mon code (le cryptage marche mais pas l


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.