Bonjour à tous,
Je vois que les JFF (fort intéressantes) sont nombreuses en ce moment... Je propose quand même comme depuis peu (et jusqu'à que je n'arrive plus à en faire) la nouvelle "JFF Sudoku" Comme la dernière n'a connu qu'un succès médiocre et que je doute sur l'impopularité du jeu de Sudoku ou de la nullité de mes sudokus je poste un Sudoku très facile pour que tout le monde ai la possiblité d'y réfléchir
Réponses blanquées ne sont pas de refus
Bonne chance,
Jimmy
Enfin j'ai réussi un algorithme qui peut résoudre n'importe quel Sudoku et qui vérifie le minimum possible des cas.
voici ma solution:
8 6 1 5 7 2 4 3 9
7 9 3 8 4 1 5 6 2
5 4 2 3 6 9 1 7 8
1 7 4 2 9 8 6 5 3
2 5 8 6 1 3 7 9 4
6 3 9 7 5 4 8 2 1
4 1 7 9 3 5 2 8 6
9 8 6 1 2 7 3 4 5
3 2 5 4 8 6 9 1 7
.
Pourrais-tu expliquer ton algorythme qui peut résoudre tous les sudoku stp ? Si ça marche pour tous les sudokus ça m'intéresse comme méthode...
Merci
Jimmy
Bonjour,
Je suis en train d'en faire un en Visual Basic. En fait, je crée une grille, je mets tout les nombres présents dans la grille de départ, je demande au programme de me mettre toutes les possibilités et de vérifier chaque ligne, chaque colonne, pour voir si tous les chiffres y sont au moins une fois. Je te tiens au courant quand je l'aurai fini (il est en cours d'élaboration).
Benoit
Salut PythagoreJimmy
Désolé j'ai vraiment pas de temps ces 2 semaines je ne pourrait pas t'expliquer mon programme(d'ailleur je ne vais même pas participé au challenge le reste de ce mois).
Mais si tu veux que je te copie mon programme écrit en turbo pascal je ne dirais pas non .
En tout cas si tu sera encore interessé dans 2 semaines je t'expliquerai mon programme .
Bonjour,
ok pas de problème pour dans 2 semaines ou en turbo pascal je sais pas ce que c'est mais je veux bien que tu me le copie si ça te dérange pas...
PS: Je sais pas si je comprendrais ton explication je ne suis qu'en troisième mais peut-etre que c'est pas difficile ?
Merci
Jimmy
Salut M_O,
tu pourras me passer ton programme en TP aussi stp ? (Je ne sais pas si tu avais l'intention de l'envoyer à Jimmy ou de le poster).
Merci.
Certe ça j'ai compris mais c'est quoi Turbo Pascal ?
Jimmy
Bonsoir
Le turbo pascal est un language de progammation comme le C++,le visual Basic etc...
Puisque tu ne le connais pas je ne crois pas que tu pourra comprendre quelque chose mais je le poste quand même puisque tu me le demande le voilà:
uses wincrt;
type t=array[1..9,1..9] of integer;
r=array[1..9,1..9,1..9] of integer;
function veri(x:integer;s:t;i,j:integer):boolean;var p,q,k,n,v:integer;b:boolean;
begin v:=1;if x<>0 then begin
for p:=1 to 9 do if ((p<>i)and(s[p,j]=x))or((p<>j)and(s[i,p]=x))then begin v:=0;p:=9;end;
if v=1 then begin n:=3*((i-1) div 3)+1;k:=3*((j-1) div 3)+1;
for p:=n to n+2 do for q:=k to k+2 do if((p<>i) or(q<>j))and(s[p,q]=x)then begin v:=0;p:=n+2;q:=k+2;end;end;
end;if v=1 then veri:=true else veri:=false;;end;
var q,n,i,k,j,m,p,tr1,f,v,g1,g2:integer;s,max,pos:t;tr:r;b,b1:boolean;
begin
writeln('remplissez le tableau (si une case est vide appuyez sur 0)');n:=1;
for i:=1 to 9 do for j:=1 to 9 do begin s[i,j]:=0;pos[i,j]:=0;end;
for i:=1 to 9 do for j:=1 to 9 do begin repeat gotoxy(3*i-2,j+1);readln(p);until p in [0..9];s[i,j]:=p;
if veri(p,s,i,j)=false then begin i:=9;j:=9;n:=0;gotoxy(1,12);writeln('le sudoku est faux !!');end
else begin max[i,j]:=1;tr[i,j,1]:=p;end;end;
if n=1 then begin for i:=1 to 9 do for j:=1 to 9 do if s[i,j]=0 then begin max[i,j]:=0;for p:=1 to 9 do begin
if veri(p,s,i,j)then begin inc(max[i,j]);tr[i,j,max[i,j]]:=p;end;end;if max[i,j]=1 then s[i,j]:=tr[i,j,1]
else if max[i,j]=0 then begin gotoxy(1,12);write('le sudoku est faux');n:=0;end;end;end;
if n=1 then begin i:=0;f:=0;
repeat q:=1;if f>1 then begin gotoxy(1,15);write(f);end;gotoxy(1,17);readln(v);n:=f;inc(f);if(f>1)then i:=g2-1 else n:=f;
repeat if f>n then begin n:=f;j:=g1-1;end else j:=0;i:=i+1;;repeat j:=j+1;m:=max[i,j];if m>1 then begin p:=pos[i,j];
if p=m then b:=false else repeat inc(p);tr1:=tr[i,j,p];b:=(veri(tr1,s,i,j));until (b or(p=m));
if b then begin s[i,j]:=tr1;pos[i,j]:=p;g1:=j;g2:=i;end
else begin s[i,j]:=0;pos[i,j]:=0;if(i>1)or(j>1)then begin repeat if j=1 then begin i:=i-1;j:=10;end;
repeat j:=j-1;p:=pos[i,j];m:=max[i,j];b1:=((p<m)and(m>1));
if p=m then begin s[i,j]:=0;pos[i,j]:=0;end;until((j=1)or b1);until(b1 or(i=1));
if b1 then begin if j>1 then j:=j-1 else begin i:=i-1;j:=9 end;end
else begin q:=0;i:=9;j:=9;gotoxy(1,12);if f=1 then writeln('le sudoku est faux ')
else writeln('y a plus de solutions');end;end else q:=0;
end;end;
until(j=9)or(q=0);until(i=9)or(q=0);
if q=1 then for i:=1 to 9 do for j:=1 to 9 do begin gotoxy(3*i+30,j+1);writeln(s[i,j]);end;
until(q=0);end;end.
Tu n'a qu'à telecharger le turbo pascal l'installer puis tu fais copier coller au programme si dessus et enfin tu apuie sur Ctrl+F9.Une fenêtre d'exécution appaîtra alors tu donnes les valeurs données par le sudoku une par une en appuyant sur entrée aprés chaque valeur(l'affichage sera comme mon poste de 10/03/2006 à 02:00)lorsque une case est vide tu appuies sur 0.
une fois le tableau est remplie tu tape n'importe quel numéro puis entrée à chaque fois que tu veux voir une nouvelle solution.
Bien évidament s'il n ya plus de solution le programme te le dira.
J'ai télécharger le Turbo Pascal mais comment je fait pour l'installer? J'ai un dossier avec plusieurs fichiers (BGI,BIN,DOC,EXAMPLES,SOURCE,UNITS,LISEZMOI,LISEZMOI(2),LISTEFIC,UNZIP. J'ai ouvert le unzip mais ça na pas marché cela extrait les mêmes fichiers...
Que faut-il faire?
Merci
Jimmy
Non y a pas. Y a unzip je l'ai ouvert et j'en ai extrait exactement les mêmes fichiers...
Je peux t'envoyer le mien si tu veux, tu n'as qu'à me contacter par MSN Messenger.
Dans ce cas pas la peine même d'installer le turbo pascal je peux t'envoyer le fichier exécutable directement
ok pas de problème mais ce language est bien compatible avec windows XP. Pour mon adresse e-mail MSN elle est dans mon profil
Jimmy
J'ai regardé mon profil mais elle n'y ai pas. Comment s'échange tout les adresses ? J'ai vu que c'était interdit s'il n'était pas dans le profil... ??
Jimmy
Merci pour tes conseils, instructions etc... Le programme marche donc très bien et je l'ai tout de suite enregistré comme ça je le perd pas !! Il me sera très utile pour les petits blocages durant la résolution d'un sudoku !!
Jimmy
Ce n'est pas pour ajouter quelquechose, mais juste pour voir comment on met une étoile dans un topic
Ne t'inquiète pas, je n'avais pas trouvé du tout (mais bon, faut dire que les indices de philoux aident peu et laissent bien le mystère entier)
Estelle
bonjour,
je m'adresse en particulier à master_och,j'ai récemment testé ton programme sur turbo pascal et je le trouve très interessant,seulement,je ne suis pas très fort dans ce langage et je ne comprend pas toute la synthaxe ,j'aimerai donc si cela ne te derange pas,que tu m'explique la démarche de ce programme plus en détails notamment pourquoi tu insère 2 tableaux(t et r) dans le programme au lieu d'un seul et sur le mode de fonctionnement de la fonction "very" merci
J'ai fait l'année dernière un programme en Java permettant de résoudre les sudokus. Malheureusement, je me suis rendu compte que ça ne marchait pas pour certains compliqués... J'ai néanmoins quelques visions d'amélioration, mais pas trop le temps.
L'algorithme s'appuie sur ce que j'appelle des filtres pour chaque chiffre, c'est à dire 9 tableaux de 81 cases pouvant contenir des 0 (incertain), 1(il y a un numéro correspondant au filtre ici), -1 (il n'y en a pas)
Je dispose aussi d'une grille solution (81 cases) contenant 0 (incertain), et les chiffers de 1 à 9.
Pour le source (en version graphique: applet), me contacter par mail.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :