IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Valider un block 3x3 dans un sudoku


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Par défaut Valider un block 3x3 dans un sudoku
    Bonjour,

    J'ai beau me creuser la tête, mais je n'arrive pas à trouver la solution; comment valider un carré 3x3 dans un sudoku. Je ne veux pas vérifier toute la grille, mais seulement le carré dans lequel je viens de placer un chiffre.

    ma méthode doit absolument utiliser commencé ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public boolean estDansLeBloc (int _valeur, int _ligne, int _colonne)
    j'avais commencé par faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public boolean estDansLeBloc (int _valeur, int _ligne, int _colonne){
    //for (int i = 0; i < 3 ; i++) {
    			for (int j = 0; j < 3; j++) {
    				if (_valeur == board[(_ligne - 1 + 3) / 3][(_colonne + 3) / 3]) {
    				    return false;	
    				}
    			}
    return true;
    }
    cependant comme vous pouvez le constater, peut importe la ligne ou la colonne, on vérifie toujours le premier carré soit les ligne et colonne de 0 à 2. Alors si j'ai entré un chiffre dans la colonne 5, ca ne fonctionne pas du tout.
    Des idées?

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Oui tu n'utilises j nulle part. Il faut l'intégrer dans ton calcul pour aller chercher dans la grille.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Par défaut
    Oui je me doute bien que je dois utiliser mon i et mon j quelque part dans ma formule pour avoir la bonne ligne et la bonne colonne, c'est justement là que je bloque.
    Par exemple si je place un chiffre dans la case (4,8) ma méthode dois vérifier les ligne 4,5 et 6, puis vérifier les colonnes 7, 8 et 9. Et éventuellement avoir vérifier les 9 case de ce petit carré 3x3.

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Par défaut
    Ce n'est surement pas le plus simple, mais ça fonctionne. Alors voici ce que j'ai fait si jamais ça peut aider quelqu'un d'autre.
    alors la fonction suivante est pour verifier si _valeur existe dans d'autre case d'un quadran de sudoku, celui qui est à l'intersection des ligne et colonne de la valeur tout juste placé.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    //....
     
    verifBloc = iGrille.estDansLeBloc(valeur, ligne, colonne);
     
    //....
     
    public boolean estDansLeBloc (int _valeur, int _ligne, int _colonne) {
    		int y = 1;
    		_ligne = (_ligne + 3) / 3;
    		//}
    		if (_ligne == 2) {
    			_ligne = 4;
    		}
    		if (_ligne == 3) {
    			_ligne = 7;
    		}
    		_colonne = (_colonne + 3) / 3;
    		if (_colonne == 2) {
    			_colonne = 4;
    			y = 4;
    		}
    		if (_colonne == 3) {
    			_colonne = 7;
    			y = 7;
    		}		
    		for (int i = 0; i < 3 ; i++) {
    			for (int j = 0; j < 3; j++) {
    				if (board[_ligne][y] == _valeur) {
    					return false;								
    				}
    				y++;		
    			}
    			y = _colonne;
    			_ligne++;
    		}		
    		return true;
    	}
    Bonne chance à tous dans vos projets.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 05/03/2007, 11h52
  2. Validation d'une BD dans le 92
    Par igor i dans le forum Access
    Réponses: 9
    Dernier message: 15/09/2006, 15h14
  3. comment valider/devalider un item dans une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 07h25
  4. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14
  5. validation d'un controle dans un formulaire
    Par marjo20 dans le forum IHM
    Réponses: 5
    Dernier message: 10/10/2004, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo