Blind test et regex

Résolu
Mr.O'nyme Messages postés 668 Date d'inscription   Statut Membre Dernière intervention   -  
Mr.O'nyme Messages postés 668 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   52
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Comme indiqué. .. en splitant la question et la reponse
0
Mr.O'nyme Messages postés 668 Date d'inscription   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   618
 
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   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   52
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   52
 
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   Statut Membre Dernière intervention   52
 
        function Verif() {
            var rep = document.getElementById('zoneSaisie').value;

            if (rep == titre)


                alert("Bravo");


            else

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

        }
0