Lors de la comparaison de chaines de caractères, on cherche parfois des
chaines plus ou moins proches les unes des autres. En particulier, on peut
définir d'un point de vue mathématique trois opérations élémentaires permettant
de passer d'une chaine à une autre :
substituer un caractère : "ABC"->"AAC" ;
insérer un caractère : "ABC"->"ABDC" ;
supprimer un caractère : "ABC"->"AC".
On va supposer ici que le coût de ces opérations est le même. Le nombre
d'opérations élementaires pour passer d'une chaine à une autre constitue la
distance de Levenshtein.
On peut utiliser la formule récursive suivante, où on note \(\|a\|\) la
longueur de la chaine \(a\), et \(a-1\) la chaîne \(a\) tronquée de sa première lettre :
L'objectif est d'écrire une fonction lev qui prends en paramètres deux chaînes de caractères a et b et qui renvoie un entier correspondant à la distance de Levenshtein.
On peut obtenir un extrait d'une chaîne de caractères en désignant une tranche (slice en anglais) . Pour cela il faut indiquer le premier élément et le dernier qui ne sera pas inclus séparés par :.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)