Sudoku; valider un quadran 3x3
Résolu/Fermé
Rashlack
-
20 déc. 2016 à 20:14
Hydr0s Messages postés 1678 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 24 août 2022 - 21 déc. 2016 à 19:38
Hydr0s Messages postés 1678 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 24 août 2022 - 21 déc. 2016 à 19:38
A voir également:
- Sudoku; valider un quadran 3x3
- Sudoku gratuit - Télécharger - Jeux vidéo
- Valider code ihm ✓ - Forum Huawei
- Captcha impossible à valider ✓ - Forum Mozilla Firefox
- Référence future non valide ou référence à un type non compilé ✓ - Forum Word
- Code IHM - Forum LG
3 réponses
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
24 août 2022
679
Modifié par Hydr0s le 21/12/2016 à 19:42
Modifié par Hydr0s le 21/12/2016 à 19:42
Pas très pratique, tu te sers juste pas de la boucle :
Trust me and keep calm, I'm an engineer !
public boolean estDansLeBloc (int _valeur, int _ligne, int _colonne){ int i,j ; // En supposant que 0=<_ligne < 9 // On travaille sur des entiers (division entière) donc première ligne du bloc : int prem_li = (int) (_ligne/3) * 3; // Première colonne du bloc : int prem_col = (int) (_colonne /3) *3; for (int i = prem_li ; i < prem_li + 3 ; i++) { for (int j = prem_col; j < prem_col +3 ; j++) { if (_valeur == board[i][j]) { return false; } } return true ; }
Trust me and keep calm, I'm an engineer !
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
24 août 2022
679
21 déc. 2016 à 09:59
21 déc. 2016 à 09:59
Salut,
Il manque des variables dans la ligne
Il manque des variables dans la ligne
board[(_ligne - 1 + 3) / 3][(_colonne + 3) / 3]: les numéros ne changent pas...
Rashlack
Messages postés
2
Date d'inscription
mardi 20 décembre 2016
Statut
Membre
Dernière intervention
10 août 2018
21 déc. 2016 à 17:52
21 déc. 2016 à 17:52
Finalement j'ai trouvé une une méthode, ce n'est peut-être pas la plus simple, mais elle fonctionne...
alors voici, si jamais ça peut aider quelqu'un d'autre:
Merci
alors voici, si jamais ça peut aider quelqu'un d'autre:
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-1][y-1] == _valeur) {
return false;
}
y++;
}
y = _colonne;
_ligne++;
}
return true;
}
Merci
Hydr0s
Messages postés
1678
Date d'inscription
lundi 24 janvier 2011
Statut
Membre
Dernière intervention
24 août 2022
679
21 déc. 2016 à 19:38
21 déc. 2016 à 19:38
cette solution est très très moche : dans un
Voir solution ci-dessous...
for, la variable incrémentée est déjà mise dedans alors pourquoi utiliser
y++et
ligne++?
Voir solution ci-dessous...