From e0b6bc7de82a0d471d5b1be5927689149c0f700f Mon Sep 17 00:00:00 2001 From: orfao Date: Tue, 9 Apr 2024 14:11:40 +0200 Subject: [PATCH] =?UTF-8?q?=20mise=20en=20fonction=20du=20sudoku=20c=C3=B4?= =?UTF-8?q?t=C3=A9=20machine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Grille.java | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/src/Grille.java b/src/Grille.java index 21dfeb2..8250938 100644 --- a/src/Grille.java +++ b/src/Grille.java @@ -18,6 +18,48 @@ public class Grille { } } + public boolean est_valide(int position, int nbr){ + + /* check si le numéro se répète sur la colonne */ + + int colonne = position%9; + int id_test = colonne; + while (id_test != (72+colonne)) { + if ((this.grille[id_test]==nbr) && (id_test != position)) { + return false; + } + id_test += 9; + } + + /* check si le numéro se répète sur la ligne */ + + int ligne = position/9; + id_test = ligne * 9; + + while (id_test != ((ligne +1)*9)) { + if ((this.grille[id_test]==nbr) && (id_test != position)) { + return false; + } + id_test += 1; + } + + /* check si le numéro se répète dans le carré auquel il appartient */ + + int Vcase = ligne/3; // permet de connaître la position du carré sur un axe vertical + int Hcase = colonne/3; // permet de connaître la position du carré sur un axe horizontal + int x,y; + + for (x=0; x<3 ;x++) { + for (y=0; y<3 ;y++) { + id_test = Vcase*27+(y+Hcase*3)+(x*9); + if ((this.grille[id_test]==nbr) && (id_test != position)) { + return false; + } + } + } + return true; + } + public void remplir_case(int position,int nbr){ if ((nbr > 0) && (nbr < 10)){ this.grille[position] = nbr; @@ -26,10 +68,9 @@ public class Grille { } } - public static void main(String[] args){ + /*public static void main(String[] args){ Grille grille = new Grille(); grille.remplir_case(3,59); System.out.println(grille.case_vide(3)); - - } + }*/ }