UNE PARTIE DE SUDOKU ? CHOISSISSEZ LA DIMENSION, LE NIVEAU DE DIFFICULTÉ ET L

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 28 mars 2008 à 00:14
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 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.

https://codes-sources.commentcamarche.net/source/46204-une-partie-de-sudoku-choississez-la-dimension-le-niveau-de-difficulte-et-le-type-de-grille-solution-unique

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 1 mars 2009
1 mars 2009 à 10:58
Il y a erreur je crois....
hloic01 Messages postés 1 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 28 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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 23 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 23 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 juillet 2009
3 avril 2008 à 14:18
spipod Messages postés 23 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 23 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 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és 12 Date d'inscription vendredi 10 septembre 2004 Statut Membre Derniè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és 23 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 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és 126 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 9 novembre 2009 3
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 mars 2008 à 00:14
Code ci-dessous de coucou747
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 :)