|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Bonjour tout le monde,
Je cherche à écrire un programme en shell bash afin de déterminer le pourcentage d'analogie entre ces deux lignes: ABCDEFGHIJKL ....CDEABCIJKL (les ... sont des blancs) => on a 70% d'identité. Je pensais utiliser les boucles for (while), en mettant Code :
Je lutte un peu en fait. Je vous remercie par avance de votre aide |
||
|
|
10
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
il faudrait "jouer" sur ${paramètre:début:longueur} (en anglais : ${parameter:offset:length}). J'ai une préférence pour for, mais c'est faisable avec while : Code :
|
||
|
|
20
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 055 ![]() |
Citation:
Si tu veux qu'on t'aide, il faut quand-même nous donner les bonnes infos. Déjà pour moi, 7 lettres identiques sur les 12 possibles ne font pas 70 mais 58%. A moins que l'emplacement ne compte pas, et dans ce cas le AB situé au milieu de la seconde ligne pourra être vu comme identique au AB du début de la première mais sans détail sur ta façon de voir, on peut pas grand chose...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
20
|
|
|
#4 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Merci beaucoup.
Oui les blancs ne comptent pas, et on analyse seulement lettre à lettre (ce qui est comparable), d'ou 7 / 10 . Je pense qu'on peut faire avec une boucle for, mais je n'y arrive pas. En tout cas merci |
|
|
10
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 055 ![]() |
Citation:
Pour moi, il faut donner le nombre de lettres correspondantes par rapport au plus long des deux mots. Dans ce cas, alors comparer "ABCDEF" avec "ABX" (2/6) ne donnera pas le même résultat qu'avec "ABCDXY" (4/6). De plus (autre argument), si ta chaine 2 (qui est "....CDEFGHIJKL") devient "..XCDEFGHIJKL" (un blanc devient X), il y a toujours 7 correspondances mais avec ton calcul ça donne 7/11. Bref un calcul dont le résultat change alors que le nombre d'éléments correspondants ne change pas n'est pas super carré... Code bash :
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|||
|
|
20
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 4 ![]() |
Merci beaucoup, c'est très gentil !!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com