Test de similitude entre deux mots

Contenu du snippet

les arguments mot1 et mot2 sont alphanumérique.
La fonction retourne le pourcentage de similitude entre les deux mots.

Source / Exemple :


Function test_de_similitude(mot1, mot2)

Dim flagcolonne(256)
Dim longueur
Dim ligne
Dim colonne
Dim dernier1
Dim premier0
Dim somme
Dim i
longueur = Len(mot1)
ligne = 1
colonne = 1
somme = 0
dernier1 = 1
premier0 = 0

For i = 0 To 255
    flagcolonne(i) = False
Next i

'examen des mots
While ligne <= longueur
    If flagcolonne(colonne - 1) = False Then
    'pas de coincidence dans cette colonne -> tester
        If Mid(mot1, ligne, 1) = Mid(mot2, colonne, 1) Then
        'les caractères étaient identiques
        somme = somme + 1
        'bloquer la colonne pour un nouveau test
        flagcolonne(colonne - 1) = True
        dernier1 = colonne
        'passage à la ligne et à la colonne suivantes
        premier0 = 0
        ligne = ligne + 1
        colonne = colonne + 1
        If colonne > Len(mot2) Then
            'dépassement de la limite droite
            'retour à la 1ère colonne
            colonne = 1
        End If
        Else
            'les caractères sont différents
            'marquer la première différence dans cette ligne
            If premier0 = 0 Then
                premier0 = colonne
            End If
            'dans la colonne suivante
            colonne = colonne + 1
            If colonne > Len(mot2) Then
                'trop loin sur la droite
                'retour à la 1ère différence constatée
                'et une ligne plus bas
                colonne = premier0
                If colonne = 0 Then
                colonne = 1
                End If
                premier0 = 0
                ligne = ligne + 1
            End If
        End If
    Else
        'colonne dèja occupée par une similitude
        colonne = colonne + 1
        If colonne > Len(mot2) Then
        'trop loin vers la droite
        'retour à la similitude précédente
            premier0 = 0
            ligne = ligne + 1
        End If
    End If
Wend
' somme contient le nombre de similitudes
' coefficient de similitude = somme / longueur
test_de_similitude = somme / longueur
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.