Fonctionement d'un jeu de questions / reponses ( reflexion et cogitation... )

Mammouth du PHP | 531 Messages

10 janv. 2009, 01:12

Bonjour,

Voilà je voudrais avoir des avis et idées autre que le mien sur la façon de mettre en place un simple jeu de question réponse.

En posant comme bémol principal que les réponses à vérifier sont sous forme de texte, finalement un simple jeu banal pourrait ne pas être si simple que ça à développer.

Voici pour illustrer des types de réponses qui pourraient toutes êtres juste malgré une orthographe totalement différente :


Exemple 1 : st machin => saint machin => saint-machin

Exemple 2 : jean machin => machin jean => machin => j machin => j.machin

Exemple 3 : 18 eme siecle => 18em(e) => 18em(e) => XVIIIe => XVIIIeme => XVIII eme

Exemple 4 : 128 403 => 128403 => 128400 ( marge erreur )

Exemple 5 : 12.33 => 12,33


L'idée serait donc d'avoir une validation des réponses qui autorise une certaine marge d'erreur ou des réponses juste mais formulés d'une autre façon que la réponse officielle.
La méthode qui parait évidente à première vue serrait de stocker toutes les réponses. Je trouve pourtant que ce n'est pas super comme méthode, car il faut penser à toutes les réponses possibles à une question... ce qui n'est pas forcément évident.


Donc je pensais plutôt à appliquer aux réponses des manipulations de chaine.
Pour chaque question on aurait des paramètres true ou false avec un traitement associé :

- Ordre des mots non obligatoire ( Ex. jean machin => machin jean )

- Type nom de personnalité : On pourrait si l'on rencontre une lettre suivi d'un espace ou d'un point, la comparer avec le prénom, et comparer le reste avec le nom ( Ex. j machin => j.machin )

- Type dâte : Tableau de correspondance du style ( 1943 / 43 ) ou encore ( 18 / XVIII ). Les caractères alpha ou les chaine ne correspondant pas à une numérotation de siècle serraient ignorés.

- Pourcentage erreur : Inutile d'expliquer, cela s'appliquerait aux chiffres ( 128403 => 128400 )


En espérant avoir des avis :D

ViPHP
ViPHP | 1996 Messages

10 janv. 2009, 12:30

Tu peux te servir d'un algorithme d'alignement de chaines (http://fr.wikipedia.org/wiki/Algorithme ... man-Wunsch). Cela te donnera le pourcentage de similitude entre la chaine attendue et la chaine entrée par l'utilisateur.
En bas de la page du lien, tu as aussi d'autres ressources intéressantes dans ton cas.

tu as cela aussi : http://fr.wikipedia.org/wiki/Cat%C3%A9g ... t%C3%A8res
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 531 Messages

10 janv. 2009, 13:06

Merci.
Très intéressant ce lien.

Je découvre au passage que ces algo sont implantés dans PHP :

http://fr.php.net/manual/fr/function.similar-text.php
http://fr.php.net/manual/fr/function.levenshtein.php

ViPHP
ViPHP | 1996 Messages

11 janv. 2009, 12:32

bah tiens, je les connaissais pas celles là... (je m'e..erde de temps en temps a recréer des fonctions existantes...)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr