From 826ae77bc796845a10c012abf342a1987c88f02f Mon Sep 17 00:00:00 2001 From: dick Date: Wed, 3 Apr 2024 12:13:16 +0200 Subject: [PATCH] Auto --- Main$1.class | Bin 0 -> 957 bytes Main.class | Bin 1369 -> 1501 bytes Main.java | 16 +++++++++++ Resolve.class | Bin 0 -> 846 bytes Resolve.java | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 Main$1.class create mode 100644 Resolve.class create mode 100644 Resolve.java diff --git a/Main$1.class b/Main$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1b7c63c52ac4f8c7c608497d50c55b772f8b5997 GIT binary patch literal 957 zcmZuwT~pIQ6g}G((uM%#!{S#ZARle{h=_^`GRxMkR|m1M>zJ4LA(h4)>>;k=I~I@9k|d45)$#ViE1~K==$sbwfR^GUU{&gNU~T z!)W!0cldipo_ImidAX^o)Y7}=1z!AwVWLEA-If1qEx%#NtcMMv8mxMO*iKseB6`jD zeO2LZ?1jOuhz`Q2B}m(NNs~DIBz8oHJxn53YCxWoMz=p{ zM8fvDP1X~~A~~ldPAxH5TR|YAb)QQqBtu@Qc6?4Q@9ZB5H)bg6(!W+zJsAsHNxmv7 zf|iCtY45^2%~6jd+PQWtT~fXouLP;@kV$q#R#PDqa$VEG+Gj~+iYMxsrG^!>5F zM!(b6v!cVoFeDGdlbVo{H^noL`(cxzd}(y+AvqDKkzJB>u`QAWn~rTC$O5GEc{Kxo zkj9{qCPC*sMfV6ssp|@5^Yok{9Iecqf>q{Ek*X}5B3=28%onON6e#u*0+STSaJ9Sg zEv-~svz4!4XXyEW0%fUh=p{%G8)wLVgr)Nw<%%q&$qMM9e43=r(BYUxk$$Qf%;6eU eGe{M)6tC;<8@Q=!Mcl%;t`xCAXp#hzkgh)#INJdL literal 0 HcmV?d00001 diff --git a/Main.class b/Main.class index 90fd4f09d7f299952410e63e624e15e8d9d53801..94c366e4d8016afbd9b3457ad29ea9a0c220b412 100644 GIT binary patch delta 576 zcmW-e+fGwK6o$WPx6EdD@C>3wYH1OW*3x;KpMYqHia=TBtw$G@-Nfjr9&J)~PXPR3@) zAxqBT1Sf4yNlx439VEjB&PdKWL>Q5rvl(@0W7uX)GVZX4w1M-I3pNv`deY{iWXz$H zDN{Nvx#SS#vJneC24@V++7u-v$(%qHYBjGu`PlV+&)<6KMg@^M&)+C{>s7DrE0Xj| zt|+c@ZR>Ah=e(lKg5<3x0;n`{H_*CPE1FSB*!5tkn_k(_D+rz^0Xc28;qCq*2`w58IgO=r94W;Y4Fh?LIq zv@<~mvmDT4>ZGElU!{vRVl?zeU+A5`BExHjctei9cY5z(j%m{ngW3Wt-72aLO&fFD Fj{l{{SnB`) delta 465 zcmYL_%T8255Qe`#&d^OyLjp>Ikr^%njKJ}R=;#27z<@G%1cn*BqL`Q%7myfCAR#es zTx!gD0v><`kc^27h+E&l1<$}65URt1UVK$u^;dOu9i{%;um4W|8~}OVSvu&er=I~s zXt~C9%METCZfOP$w=J3>k2{*XmK1r-J;QxV14D*_X4uk1pT~%1)bPNo9~#Cq1xqWB zymZ_LCp;zvDT;vD&KKr7@_^%qhP@x*DAlqGGNs{HYFY6zD^10&$FCDMwa=hk^W0|-6)nG@(xkNP6 zE6o|S-GXfDzVA_->6-26y3tQvmo{K&?~-|9+Q;+z|Z(Fv9TG}xDu)wZDFED zdXJzvQzLQSA>yKFHAZ?kESH2C*-Vy3LRns(X2wNRl1!NvnYxwtT;>yPY>0A;cD~8T P-(}PvQl-dAzksW!tkpVw diff --git a/Main.java b/Main.java index b4b1d66..392b533 100644 --- a/Main.java +++ b/Main.java @@ -1,5 +1,8 @@ import javax.swing.*; import java.awt.BorderLayout; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + public class Main { @@ -27,6 +30,19 @@ public class Main { // Ajout de l'écouteur d'événements au bouton "Reset" resetButton.addActionListener(new Reset(grid, enterPanel)); + // Ajout de l'écouteur d'événements au bouton "Solve" + solveButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (Resolve.solveSudoku(grid)) { + enterPanel.repaint(); // Redessiner la grille après la résolution + JOptionPane.showMessageDialog(frame, "Grille résolue avec succès !"); + } else { + JOptionPane.showMessageDialog(frame, "Impossible de résoudre la grille."); + } + } +}); + frame.pack(); frame.setLocationRelativeTo(null); // Centrer la fenêtre sur l'écran frame.setVisible(true); diff --git a/Resolve.class b/Resolve.class new file mode 100644 index 0000000000000000000000000000000000000000..4e532ce490f784acf4752ebdca3d04eb5ecafe87 GIT binary patch literal 846 zcmY*XOHUI~7(KUh?+kqa<#7?xhe4yl7^!wKuqgEviA1o8C^52ON+)EXwg|Mw#JJ*5 zz{=o)4I5Vy7i>-3vvuXlpFkS$+)<-W((gOpbIy0BU(Y@t1DM2c0t)>JNDLS==s-Id z60l2QBit?vSYzXh0`h*d76|mtg^l2G>t!|AeCk*0%p|v(^>(n(sx{YJoElqNnjL>3 z(7mwjudL7e8&R8s3+xQH7X5lyn{T!`7dM@JOmkwP+1gwQW$z7)wN({n^d_Hqr5`#G{6E0!J+M9l%p5)%KZfKk$@a% z?I>w5_Y<>KK|> z=ihRBuuUKte97%X$wO(Dq~jmpx|yt&M~LlW#LX0mEAA1jsL8}uB^o=i4#^-EajasP z*kUB3<7~1_vyvm{Yh>*rg&P#9fL;`tpF%%M7{G1zJ>cvtM(~K;&ydG5E@G7;HE;JaerbhM@-p(iiBw9*_n~=( zmJ_-6P}X5|%a4C*6fOH-Et9b~YM#tyjZ>CqYunz(b<1to2J6bLO8FZ-Y z_Z^$|ME;d&27M$_AibLy#4QXFXW{XzNoJ-fjYm68S<0B9t>6xx<1Rwn!#eRR=3e7r iB*kSUJFrAQ&oy@&e}*(g>7YvtGcr2xPskU>(DxGsU5}># literal 0 HcmV?d00001 diff --git a/Resolve.java b/Resolve.java new file mode 100644 index 0000000..29e570b --- /dev/null +++ b/Resolve.java @@ -0,0 +1,74 @@ +public class Resolve { + public static boolean solveSudoku(int[][] grid) { + int row = -1; + int col = -1; + boolean isEmpty = true; + + // Recherche d'une cellule vide dans la grille + for (int i = 0; i < grid.length; i++) { + for (int j = 0; j < grid[i].length; j++) { + if (grid[i][j] == 0) { + row = i; + col = j; + // Cellule vide trouvée + isEmpty = false; + break; + } + } + if (!isEmpty) { + break; + } + } + + // Si la grille est pleine, le sudoku est résolu + if (isEmpty) { + return true; + } + + // Essayer de placer les chiffres de 1 à 9 dans la cellule vide + for (int num = 1; num <= 9; num++) { + if (isValidMove(grid, row, col, num)) { + grid[row][col] = num; + // Résoudre récursivement le sudoku + if (solveSudoku(grid)) { + return true; + } + // Annuler la valeur si la solution n'est pas possible + grid[row][col] = 0; + } + } + // Aucune solution n'est possible pour cette cellule + return false; + } + + // Vérifie si un nombre peut être placé dans une cellule spécifique + private static boolean isValidMove(int[][] grid, int row, int col, int num) { + // Vérifie la ligne + for (int x = 0; x < 9; x++) { + if (grid[row][x] == num) { + return false; + } + } + + // Vérifie la colonne + for (int y = 0; y < 9; y++) { + if (grid[y][col] == num) { + return false; + } + } + + // Vérifie la région 3x3 + int regionRowStart = row - row % 3; + int regionColStart = col - col % 3; + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (grid[i + regionRowStart][j + regionColStart] == num) { + return false; + } + } + } + + // La valeur peut être placée dans cette cellule + return true; + } +}