UNE PARTIE DE SUDOKU ? CHOISSISSEZ LA DIMENSION, LE NIVEAU DE DIFFICULTÉ ET L
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
28 mars 2008 à 00:14
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 2014
-
20 juil. 2010 à 10:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 20 juil. 2010 à 10:06
salut chez moi ça donne ça
Parse error: syntax error, unexpected T_CLASS in /var/www/gillardg.net/htdocs/play/sudoku/SudokuSRC/class/_class.Sudoku.inc.php on line 1
aurais tu une idée ??
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 1 mars 2009 à 10:58
Il y a erreur je crois....
hloic01
Messages postés1Date d'inscriptionvendredi 27 février 2009StatutMembreDernière intervention28 février 2009 28 févr. 2009 à 23:05
Moi je l'ai vu fonctionné sur ton site je le trouve très bien mais quans j'ai essayé de l'installer sur mon compte free tout va bien mais quand je veu m'inscrire pour jouer j'ai ses erreurs:
Warning: touch() [function.touch]: Unable to create file logins/leseigneurdes.php because No such file or directory in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 123
Warning: fopen(logins/leseigneurdes.php) [function.fopen]: failed to open stream: No such file or directory in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 125
Warning: fputs(): supplied argument is not a valid stream resource in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 134
Warning: fclose(): supplied argument is not a valid stream resource in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 135
encore une chose à tout hasard pour les pages que tu as mis te concernant je voudrais savoir si je dois laisser les pages ou tu ecris que tu est en Terminale S .... ?
Merci de tes réponse !!
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 19 mai 2008 à 09:34
Pour info, si vous installez PHPSUDO sur free, vous devez cr?er un r?pertoire "sessions" ? la racine de votre h?bergement pour que le script fonctionne correctement.
Sinon, vous aurez des erreurs type Warning: session_start().
Je donne cette info car j'ai eu plusieurs emails me disant que mon script ne fonctionnait pas.
++
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 16 mai 2008 à 10:33
Merci SPIPOD ! Content que mon appli te convienne d'avantage ;)
Maintenant il reste le plus dure à faire le niveau de difficulté !
Le niveau de difficulté est régi par le nombre de suppositions. Et il faut qu'il y est une unique solution.
Ce n'est plus de la deduction mais de la supposition et de la deduction... Je suis sur une piste.
Pas évident... A suivre...
spipod
Messages postés23Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention17 juillet 2009 16 mai 2008 à 08:23
Salut,
Je vois une nette évolution, domage que ce ne soit pas la version publiée dès le début ma note aurait été plus haute (~8).
Tu as opté pour un générateur, j'ai toujours pensé que c'était la meilleure solution.
Bravo pour le travail d'amélioration.
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 15 mai 2008 à 20:19
J'ai testé mon appli sur mobile, Windows XP, Vista, et OSX sur les explorateurs Firefox 2.0, internet explorer 6 et 7, opera... et ça marche plutôt bien (sauf sur mon mobile les grilles plus grande que 9*9 ne sont pas très visibles pour le contenu des cases). Si vous testez le script, ça serait super sympa de me dire si ça marche bien sur votre os et explorateur (et m'envoyer ces infos). Merci d'avance !
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 3 avril 2008 à 16:22
http://jeanmichel.richer.free.fr/wudoku.php (-> plusieurs solutions possibles, mais est-ce important ?)
Demandes aux passionés de sudo et ils te répondront que ce n'est pas un sudoku.
Pas eu le temps de regarder ton code... Mon code est un peu long, mais je crois pas qu'on puisse le raccourcir beaucoup. Ha ! si enlever le moteur de templates... Ca serait dommage c'est quand même pratique et pour l'évolution de l'appli c'est plus facile.
Ta remarque : "beaucoup trop de code pour si peu". Je ne suis pas d'accord.
Envois ta source sur http://www.phpcs.com qu'on puisse voir son fonctionnement ;)
A+
spipod
Messages postés23Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention17 juillet 2009 3 avril 2008 à 14:18
spipod
Messages postés23Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention17 juillet 2009 28 mars 2008 à 15:01
J'ai bien regardé ton source, et le html que tu génères en final.
Je suis désolé, mais il y a beaucoup trop de code pour si peu. Mais il ne faut pas m'en vouloir, je suis un ancien (+ de 20 ans de code en tout genre) et anciennement les lignes de codes étaient comptées. Je vois que tu n'as pas testé le générateur que je t'ai donné. Donne moi quand même ton avis S.T.P.
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 28 mars 2008 à 14:42
Mon programme initial fonctionnait de la même manière, mais je me suis rendu compte qu'il y avait très souvent plusieurs solutions possibles. Donc ce n'était pas un sudoku. Quand tu fais un sudoku, que tu mets du temps à le résoudre et que tu te rends compte qu'il y a plusieurs solutions t'es super déçu. Le programme actuel est déjà lourd, si j'ajoute en plus le générateur de grilles complète, ça va faire beaucoup trop en charge (déjà testé).
A suivre...
Pour la note t'as été vraiment dure lol En fait chui' un peu vex... :)
spipod
Messages postés23Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention17 juillet 2009 28 mars 2008 à 14:30
Salut,
Ne tiens pas compte de ma remarque. J'ai testé ton code sur ton site.
Le code que je t'ai montré génère des grilles complètes, et le temps de génération est rapide. teste-le.
La grille est complète, dans mon programme final, je vide des cases avant d'afficher son contenu.
nlion
Messages postés12Date d'inscriptionvendredi 10 septembre 2004StatutMembreDernière intervention 1 mars 2009 28 mars 2008 à 14:09
Bonjour,
Merci pour les commentaires. Je prend note de vos remarques.
Pour répondre à neo2k2, je n'ai pas écris que les grilles avaient un niveau difficile. ;)
Certaines sont très faciles à résoudre, d'autres un peu moins. L'algo de resolution des grilles de coucou747 est par déduction, or le niveau difficile utilise une méthode par supposition.
Il faudrait un autre algo de résolution pour pouvoir changer le niveau (la solution pour changer le niveau de difficulté est là).
coucou747, je crois comprendre ton raisonement, en tout cas si tu le développes,
je serais très interressé de jeter un petit coup d'oeil dessus.
Une mise en commun de nos idées peut être très constructive en effet.
spipod, il faudrait m'expliquer la note lol 2 :( ? Je suis ouvert aux critiques et je ne suis pas vexé mais je t'avoue ne pas trop comprendre ta remarque. Mon script ne calcule pas de grilles complètes. Les grilles complètes sont stoquées sur un fichier. Je n'ai pas mis volontairement l'algo qui calcule ces grilles
car le temps d'execution était beaucoup trop long au total. J'ai préféré faire tourner mon générateur de grille complète à part et créer un fichier texte bien fournis avec les grilles trouvées. Pourquoi utiliser des grilles complètes pour créer des grilles incomplètes ? Pour avoir plus de chance que la grille de sudoku soit valide et validé par le solveur.
Oui, je me suis pris la tête en effet, mais c'est aussi le but du jeu. Et, je me suis encore plus pris la tête pour avoir de jolies grilles symétriques. Le fichier contient 2255 grilles pleines. Sur chaque grille pleine on peut créer beaucoups de sudokus. Mon but n'était pas de créer des grilles pleines mais de créer des sudokus (à solution unique).
J'attend ta version de sudoku avec impatience ;)
Bonne continuation à tous !
spipod
Messages postés23Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention17 juillet 2009 28 mars 2008 à 12:42
Perso j'écris mes programmes à l'ancienne.
Je trouve que tu t'es pris la tête.
Voici comment j'ai généré une grille completement en aléatoire et plus rapidement que ton source:
$nbt=0;
WHILE ($nbt<4900)
{
$nbt++;
FOR ($i=1;$i<=9;$i++)
FOR ($j=1;$j<=9;$j++)
$x[$i][$j]=0;
FOR ($i=1;$i<=9;$i++)
FOR ($j=1;$j<=9;$j++)
{
if ($j==9) $c=100; else $c=0;
$o=0;
WHILE ($o==0)
{
$o=1;
$c++;
srand();
IF ($c<=100)
$x[$i][$j]=rand(1,9);
ELSE
IF ($c<110)
$x[$i][$j]=$c-100;
ELSE
{
$i=50;
$j=50;
$o=1;
}
IF ($c<110)
{
fOR ($n=1;$n<=($j-1);$n++)
IF ($x[$i][$j]==$x[$i][$n])
$o=0;
fOR ($n=1;$n<=($i-1);$n++)
iF ($x[$i][$j]==$x[$n][$j])
$o=0;
IF ($o==1)
{
$y=intval(($i-1)/3)*3;
$z=intval(($j-1)/3)*3;
FOR ($n=1;$n<=3;$n++)
FOR ($m=1;$m<=3;$m++)
IF ($x[$i][$j]==$x[$n+$y][$m+$z] AND ($i<>($n+$y) AND $j<>($m+$z)))
$o=0;
}
}
}
}
IF ($i<20) $nbt=5000;
}
if ($nbt==5000)
echo "Grille générée";
Ce n'est pas optimisé, pas commenté, mais je pense que cela pourrais t'aider.
neo2k2
Messages postés126Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention 9 novembre 20093 28 mars 2008 à 10:22
Juste 2 petites remarques sur cette source fort sympathique (8/10).
:- le niveau n'est pas moyen ou difficile mais facile... (45sec. pour la première grille)
:- tu pourrais ajouter un timer à partir de la première frappe dans une case pour calculer le temps de résolution (ou sous forme d'un bouton begin et d'aun autre end)
Beau travail en tout cas et je pense bien que ton but est de générer des grilles, pas de les résoudre. Cependant, en fusionnant avec Coucou747, vous avez de quoi faire un très bon programme.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 mars 2008 à 00:14
:) faut le dire quand tu fais un truc du genre :) ca peut me donner envie d'upgrader mon code :)
j'aime bien ton code, mais pour creer une grille, a mon avis, tu devrais faire un algo genre :
:- pour chaque case, tu definis une liste de possibilites
:- pour chaque case, tu melanges l'ordre des possibilites
:- tu fixes une case a une valeur (la premiere dans la liste des possibilites)
:- tu fais les deductions qui conviennent
:- tu recommences jusqu'a trouver une incoherence ou terminer la fin de la grille
:- quand t'as une incoherence, tu ne prends plus la premiere mais la seconde possibilite
je ne sais pas si je suis clair, ca te fait une fonction recursive...
si j'ai le temps, je ferais ca en C ou en ocmal, ou les deux
20 juil. 2010 à 10:06
Parse error: syntax error, unexpected T_CLASS in /var/www/gillardg.net/htdocs/play/sudoku/SudokuSRC/class/_class.Sudoku.inc.php on line 1
aurais tu une idée ??
1 mars 2009 à 10:58
28 févr. 2009 à 23:05
Warning: touch() [function.touch]: Unable to create file logins/leseigneurdes.php because No such file or directory in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 123
Warning: fopen(logins/leseigneurdes.php) [function.fopen]: failed to open stream: No such file or directory in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 125
Warning: fputs(): supplied argument is not a valid stream resource in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 134
Warning: fclose(): supplied argument is not a valid stream resource in /mnt/125/sda/0/1/bobkill005/echec/create.php on line 135
encore une chose à tout hasard pour les pages que tu as mis te concernant je voudrais savoir si je dois laisser les pages ou tu ecris que tu est en Terminale S .... ?
Merci de tes réponse !!
19 mai 2008 à 09:34
Sinon, vous aurez des erreurs type Warning: session_start().
Je donne cette info car j'ai eu plusieurs emails me disant que mon script ne fonctionnait pas.
++
16 mai 2008 à 10:33
Maintenant il reste le plus dure à faire le niveau de difficulté !
Le niveau de difficulté est régi par le nombre de suppositions. Et il faut qu'il y est une unique solution.
Ce n'est plus de la deduction mais de la supposition et de la deduction... Je suis sur une piste.
Pas évident... A suivre...
16 mai 2008 à 08:23
Je vois une nette évolution, domage que ce ne soit pas la version publiée dès le début ma note aurait été plus haute (~8).
Tu as opté pour un générateur, j'ai toujours pensé que c'était la meilleure solution.
Bravo pour le travail d'amélioration.
15 mai 2008 à 20:19
3 avril 2008 à 16:22
Demandes aux passionés de sudo et ils te répondront que ce n'est pas un sudoku.
Pas eu le temps de regarder ton code... Mon code est un peu long, mais je crois pas qu'on puisse le raccourcir beaucoup. Ha ! si enlever le moteur de templates... Ca serait dommage c'est quand même pratique et pour l'évolution de l'appli c'est plus facile.
Ta remarque : "beaucoup trop de code pour si peu". Je ne suis pas d'accord.
Envois ta source sur http://www.phpcs.com qu'on puisse voir son fonctionnement ;)
A+
3 avril 2008 à 14:18
28 mars 2008 à 15:01
Je suis désolé, mais il y a beaucoup trop de code pour si peu. Mais il ne faut pas m'en vouloir, je suis un ancien (+ de 20 ans de code en tout genre) et anciennement les lignes de codes étaient comptées. Je vois que tu n'as pas testé le générateur que je t'ai donné. Donne moi quand même ton avis S.T.P.
28 mars 2008 à 14:42
A suivre...
Pour la note t'as été vraiment dure lol En fait chui' un peu vex... :)
28 mars 2008 à 14:30
Ne tiens pas compte de ma remarque. J'ai testé ton code sur ton site.
Le code que je t'ai montré génère des grilles complètes, et le temps de génération est rapide. teste-le.
La grille est complète, dans mon programme final, je vide des cases avant d'afficher son contenu.
28 mars 2008 à 14:09
Merci pour les commentaires. Je prend note de vos remarques.
Pour répondre à neo2k2, je n'ai pas écris que les grilles avaient un niveau difficile. ;)
Certaines sont très faciles à résoudre, d'autres un peu moins. L'algo de resolution des grilles de coucou747 est par déduction, or le niveau difficile utilise une méthode par supposition.
Il faudrait un autre algo de résolution pour pouvoir changer le niveau (la solution pour changer le niveau de difficulté est là).
coucou747, je crois comprendre ton raisonement, en tout cas si tu le développes,
je serais très interressé de jeter un petit coup d'oeil dessus.
Une mise en commun de nos idées peut être très constructive en effet.
spipod, il faudrait m'expliquer la note lol 2 :( ? Je suis ouvert aux critiques et je ne suis pas vexé mais je t'avoue ne pas trop comprendre ta remarque. Mon script ne calcule pas de grilles complètes. Les grilles complètes sont stoquées sur un fichier. Je n'ai pas mis volontairement l'algo qui calcule ces grilles
car le temps d'execution était beaucoup trop long au total. J'ai préféré faire tourner mon générateur de grille complète à part et créer un fichier texte bien fournis avec les grilles trouvées. Pourquoi utiliser des grilles complètes pour créer des grilles incomplètes ? Pour avoir plus de chance que la grille de sudoku soit valide et validé par le solveur.
Oui, je me suis pris la tête en effet, mais c'est aussi le but du jeu. Et, je me suis encore plus pris la tête pour avoir de jolies grilles symétriques. Le fichier contient 2255 grilles pleines. Sur chaque grille pleine on peut créer beaucoups de sudokus. Mon but n'était pas de créer des grilles pleines mais de créer des sudokus (à solution unique).
J'attend ta version de sudoku avec impatience ;)
Bonne continuation à tous !
28 mars 2008 à 12:42
Je trouve que tu t'es pris la tête.
Voici comment j'ai généré une grille completement en aléatoire et plus rapidement que ton source:
$nbt=0;
WHILE ($nbt<4900)
{
$nbt++;
FOR ($i=1;$i<=9;$i++)
FOR ($j=1;$j<=9;$j++)
$x[$i][$j]=0;
FOR ($i=1;$i<=9;$i++)
FOR ($j=1;$j<=9;$j++)
{
if ($j==9) $c=100; else $c=0;
$o=0;
WHILE ($o==0)
{
$o=1;
$c++;
srand();
IF ($c<=100)
$x[$i][$j]=rand(1,9);
ELSE
IF ($c<110)
$x[$i][$j]=$c-100;
ELSE
{
$i=50;
$j=50;
$o=1;
}
IF ($c<110)
{
fOR ($n=1;$n<=($j-1);$n++)
IF ($x[$i][$j]==$x[$i][$n])
$o=0;
fOR ($n=1;$n<=($i-1);$n++)
iF ($x[$i][$j]==$x[$n][$j])
$o=0;
IF ($o==1)
{
$y=intval(($i-1)/3)*3;
$z=intval(($j-1)/3)*3;
FOR ($n=1;$n<=3;$n++)
FOR ($m=1;$m<=3;$m++)
IF ($x[$i][$j]==$x[$n+$y][$m+$z] AND ($i<>($n+$y) AND $j<>($m+$z)))
$o=0;
}
}
}
}
IF ($i<20) $nbt=5000;
}
if ($nbt==5000)
echo "Grille générée";
Ce n'est pas optimisé, pas commenté, mais je pense que cela pourrais t'aider.
28 mars 2008 à 10:22
:- le niveau n'est pas moyen ou difficile mais facile... (45sec. pour la première grille)
:- tu pourrais ajouter un timer à partir de la première frappe dans une case pour calculer le temps de résolution (ou sous forme d'un bouton begin et d'aun autre end)
Beau travail en tout cas et je pense bien que ton but est de générer des grilles, pas de les résoudre. Cependant, en fusionnant avec Coucou747, vous avez de quoi faire un très bon programme.
28 mars 2008 à 00:14
http://www.phpcs.com/codes/RESOLUTION-SUDOKU-METHODE-DEDUCTION_35308.aspx
:) faut le dire quand tu fais un truc du genre :) ca peut me donner envie d'upgrader mon code :)
j'aime bien ton code, mais pour creer une grille, a mon avis, tu devrais faire un algo genre :
:- pour chaque case, tu definis une liste de possibilites
:- pour chaque case, tu melanges l'ordre des possibilites
:- tu fixes une case a une valeur (la premiere dans la liste des possibilites)
:- tu fais les deductions qui conviennent
:- tu recommences jusqu'a trouver une incoherence ou terminer la fin de la grille
:- quand t'as une incoherence, tu ne prends plus la premiere mais la seconde possibilite
je ne sais pas si je suis clair, ca te fait une fonction recursive...
si j'ai le temps, je ferais ca en C ou en ocmal, ou les deux
merci pour cette source :)