|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 9 ![]() |
Bonjour,
Je voudrais savoir si quelqu'un aurait un début de piste pour une fonction me permettant de générer "un score" à partir de 2 chaines de caractères. Par exemple, comparer "ma chaine 1" et "ta chaine 2" et me dire que x lettres similaires sont placées au même endroit. Le but étant de comparer une saisie utilisateur avec une chaine stockée et permettant une erreur "humaine" mais qui se rapproche fortement de la réponse. Je pense qu'il faut utiliser charAt et indexOf mais je ne vois pas bien comment Merci pour votre aide |
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
Bonsoir,
tu peux faire le test avec les chaines transformées en tableaux avec la méthode split exemple Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
Salut,
ça ressemble à l'utilisation de l’algorithme de Levenshtein, http://fr.wikipedia.org/wiki/Distance_de_Levenshtein Un exemple en Javascript : http://phpjs.org/functions/levenshtein:463 |
|
|
10
|
|
|
#4 | |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
Citation:
Je me rend compte, une fois de plus, que ce que je sais n'est rien à coté de ce que j'ignore! |
|
|
|
10
|
|
|
#5 | ||
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
et sans conversion:
Code :
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
on peut aussi s'amuser un peu plus:
Code :
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
||
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 861 ![]() |
je pense que les réponses ne correspondent pas à l'attente de notre ami ! et pour cause, je pense que la question est mal énoncée quand il demande "x lettres similaires sont placées au même endroit".
car d'après ce que je comprend "permettant une erreur 'humaine'", si l'utilisateur entre un caractère en plus en début de chaîne, même si le reste de la chaîne est identique, aucune position ne correspondra et on aura 0% de correspondance. -> @Orangevinz, me trompe-je ? nb: je n'avais pas vu la réponse de Billy KiT, qui à mon avis correspond mieux à ton attente. |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
oui bon d'accord, j'ai oublié un à
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
bah, le problème des énoncés pas binaires je m'y ferais jamais de toute façon
bref, si ton intuition est bonne, ça revient à comparer 2 chaînes anagrammiques et à calculer l'écart;
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
le cahier des charges est relativement clair et les réponses me semble bien correspondre à cette attente, mais peut être me trompes je!
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() danseur Inscription : août 2003 Messages : 2 667 ![]() |
oui chuis assez d'accord...
me manquait juste l'expression "cahier des charges"
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire. |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
|
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 9 ![]() |
D'abord merci à tous pour vos réponses, je n'ai pas eu le temps de revenir avant désolé.
Vous m'avez donné plus que des pistes là! ![]() Je pense que je devrais arriver à faire ce que je veux avec cette fonction http://phpjs.org/functions/levenshtein:463 De mon côté j'avais également trouvé ca : http://phpjs.org/functions/similar_text:902 mais niveau pertinence de résultat, je pense que ca se vaut Il faut juste qu'ensuite je calcule un % de réussite par rapport à la longueur de la chaine pour savoir si la saisie est entre 95% et 100% (par rapport à la chaine attendue) @Willpower normalement ce genre de cas ne pourra pas se produire car j'utilise des cases correspondant chacune à une lettre. Le nombre de cases correspondants dès le début à la longueur de la chaine attendue. Merci encore à tous pour votre aide |
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 861 ![]() |
Citation:
comme quoi, il est toujours bien de redemander des précisions sur la question quand elle peut avoir plusieurs interprétations. le code de javatwister semble donc bien mieux correspondre à ton attente. (j'aime l'idée de l'anagrame, mais il faudrait y ajouter une boucle pour un anagrame à n %). tu peux également transformer ton score obtenu en % de la longueur en divisant ton score par chaine.length. |
|
|
|
10
|
|
|
#16 |
![]() ![]() Inscription : janvier 2011 Messages : 2 933 ![]() |
to javatwister :je n'avais pas fait attention à ton message, ne te méprends pas, pour être honnête je n'avais même pas vu qu'il manqué à, c'est juste que j'ai éclaté de rire en le lisant, je devais être dans d'excellente disposition!
to Billy KiT : décidément je ne devais pas être moi, je corriges donc, ce n'est pas Bon Dieu ! Mais c'est bien sûr ! ( Raymond Souplex) to Orangevinz : cela fait combien en levenshteinnien bon dieu mais c'est bien sûr VS mais bon sang c'est bien sûr ? |
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : mars 2011 Messages : 47 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com