Blind test et regex

Résolu/Fermé
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 - 23 mai 2016 à 21:30
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 - 25 mai 2016 à 19:12
Bonsoir,


Je suis en terminale spécialité ISN, et en projet de fin d'année j'ai décidé de faire un blind test.
Mais en voulant ajouter de l'interactivité dans le programme je suis confronté à un problème. Je précise que je réalise ce blind test en html et javascript afin de pouvoir le mettre en ligne.

Ceci est une capture d'écran de la partie du code qui pose problème, la fonction "verif" est appelée par le clic sur un bouton. Le titre du morceaux a préalablement été saisie par le joueur dans "zoneSaisie". Cette fonction a donc pour but de vérifier sa réponse. La variable " titre" contient le titre du morceaux et le nom de l'artiste ( tout deux récupérés à partir du nom du fichier ).
Le souci c'est que actuellement le joueur doit saisir exactement la réponse ce qui ne laisse aucune marge d'erreur. J'ai donc pensé à utilisé indexof et/ou regex pour vérifier si une partie de la réponse est présente dans le texte saisie par l'utilisateur. Mais je ne vois pas bien comment faire.


je vous remercie d'avance de bien vouloir prendre le temps de lire mon problème. N'hésitez pas à me demander des précisions

Cordialement
A voir également:

3 réponses

jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740
23 mai 2016 à 22:50
Je pense que ceci fera l'affaire:

Tu split chacune de tes string (pour en faire des array) puis tu regardes si il y a des valeurs communes via un code comme celui-la :

function getIntersect(arr1, arr2) {
    var r = [], o = {}, l = arr2.length, i, v;
    for (i = 0; i < l; i++) {
        o[arr2[i]] = true;
    }
    l = arr1.length;
    for (i = 0; i < l; i++) {
        v = arr1[i];
        if (v in o) {
            r.push(v);
        }
    }
    return r;
}


Par exemple,
var La_reponse = [ 'apple', 'orange', 'banana']; //réponse à trouver
var reponse_utilisateur2 = [ 'apple', 'orange', 'mango'];  //réponse proposée par l'utilisateur
var reponse_utilisateur3 = [ 'mango', 'lemon', 'pineapple']; //réponse proposée par l'utilisateur
var reponse_utilisateur4 = [ 'orange', 'lemon', 'grapes']; //réponse proposée par l'utilisateur

console.log(getIntersect(La_reponse, reponse_utilisateur2)); //returns [apple, orange]
console.log(getIntersect(La_reponse, reponse_utilisateur3)); //returns []
console.log(getIntersect(La_reponse, reponse_utilisateur4)); //returns [orange]

Retournera respectivement les résultats suivants :

["apple", "orange"]
[]
["orange"]


1
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740
23 mai 2016 à 22:51
A toi de définir combien d'éléments commun il doit y avoir au minimum pour accorder la bonne réponse ou non
(via un IF et l'utilisation des LENGTH sur les array).
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
24 mai 2016 à 16:00
Merci beaucoup ! Je met ça tout de suite en application, et je te tiens au courant
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
24 mai 2016 à 16:41
Je ne comprend pas bien à quoi correspondent arr1 et arr2, ce sont des variables ? Mais à partir de quoi dois je les créer ?
0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740
24 mai 2016 à 17:30
Comme indiqué. .. en splitant la question et la reponse
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
24 mai 2016 à 17:38
Pour splitter la variable titre je ne suis pas sur de savoir comment m'y prendre ( je ne l'ai jamais fais avant ) Je pensais faire ça


var arr1 = titre.split("");
var arr2 = rep.split("");




Est ce bien ça ?
0
algerino77 Messages postés 477 Date d'inscription mardi 20 janvier 2015 Statut Membre Dernière intervention 23 août 2016 617
23 mai 2016 à 21:57
Hello!

Je n'ai pas la solution à ton problème, mais j'ai pensé à une méthode peut être plus simple.

Au lieu de laisser la possibilité au spectateur de rentrer certain caractère, tu peux les bannir. Par exemple enlever les accents, les chiffres, caractères spéciaux. De cette façon tu ne laisses que les lettres en minuscules pas exemple et tu limites à fond les conflit ;)
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
Modifié par Mr.O'nyme le 23/05/2016 à 22:00
Merci pour ta réponse, oui j'y est pensé c'est ce que je compte faire en dernier recours si je trouves rien d'autres

Quelqu'un d'autre aurait la solution ?
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
23 mai 2016 à 22:02
Maintenant que j'y pense de tte façon le else empêche les conflits étant donné que soit la réponse est exacte soit elle n'est pas acceptée
0
jordane45 Messages postés 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 mars 2025 4 740
23 mai 2016 à 22:22
Bonjour,

1 - Ta question concerne le JAVASCRIPT (et non le PHP) ... je déplace donc dans le bon forum.

2 - Ici.. on COLLE son code directement sur le forum (en utilisant les balises de code) au lieu de mettre une image...
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.3 - En le faisant en Javascript .. les utilisateurs pourront connaitre les réponses sans souci... juste en regardant le code source de la page affichée.....
La meilleur solution serait de le recoder en PHP justement......
Cela te permettrait également de stocker les questions/réponses dans une Base de donnée.....
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
Modifié par Mr.O'nyme le 23/05/2016 à 22:32
Bonsoir, je n'ai pas pas le temps de faire du php, de plus je ne peux pas mettre en place de serveur. L'objectif premier de ce blind test est qu'il soit fonctionnel. Je ne cherche pas à parer à l'éventualité d'un utilisateur un peu trop retord.
Ce blind test n'aura qu'une audience très limitée et ne sera pas disponible sur le web. Je cherche seulement à résoudre un problème de programmation simplement.
Merci pour ton aide
0
Mr.O'nyme Messages postés 668 Date d'inscription lundi 8 juillet 2013 Statut Membre Dernière intervention 4 août 2017 52
23 mai 2016 à 22:35
        function Verif() {
            var rep = document.getElementById('zoneSaisie').value;

            if (rep == titre)


                alert("Bravo");


            else

                alert("Réessaye ! ⚠ Et attention à l'orthographe ☺");

        }
0