Voici le fruit de ma participation au Défi Delphi, je n'ai pas été trés bien classé, mais je me suis bien amusé...
La version (trés simplifiée ) Java, pour le bel exemple de BackTraking !....
public void chercheValeurCase(int n) {
if ((n < 81) && (!fini)) {
int x = n % 9;
int y = n / 9;
if (c[n].valeur == 0) {
for (int v = 1; v <= 9; v++)
if (!DansLigne(y, v))
if
(!DansColonne(x, v))
if (!DansCarre(x, y, v)) {
c[n].valeur = v;
chercheValeurCase(n + 1);
c[n].valeur = 0;// backTraking
!...=================
c[n].repaint();
}
} else
chercheValeurCase(n + 1);
} else {
if (!fini) {
AfficheSolution();
fini = true; // pour s'arrêter à la première ...
}
}
}
Un bon générteur