Voici une suite à ce challenge: Code proche du challenge: Somme des entiers
Le défi dans celui-ci est un peu plus difficile, et crée également un titre sympa (c'est pourquoi je l'ai choisi):
Calculez la distance Levenshtein entre deux chaînes
Tout comme le dernier défi, votre score dans ce défi est la distance de Levenshtein entre votre code et la citation ci-dessus.
Alors maintenant pour les détails!
Votre programme prendra 2 entrées, les deux chaînes sans espaces de fin ni sauts de ligne, et affichera la distance Levenshtein entre elles. La distance de Levenshtien est définie comme le nombre d'ajouts, de suppressions et de substitutions nécessaires pour transformer une chaîne en une autre. Pour plus d'informations sur la façon de le calculer, consultez la page Wikipedia liée ci-dessus. Pour tester si votre programme fonctionne, utilisez cette calculatrice . Votre programme ne doit produire que la distance Levenshtein entre les deux chaînes. Il sera disqualifié si autre chose est sorti. Exemple d'E / S:
Inputs:
test
test2
Output:
1
Inputs:
222
515
Output:
3
Inputs:
Test
test
Output:
1
Votre code peut ne pas contenir d'opérations ou de commentaires.
la source
R, distance 35
Cela crée une fonction
Calculate
avec des paramètresthe
etLevenshtein
. Il utilise la fonction intégrée Radist
pour calculer la distance. Les paramètres de chaîne dansadist
sont essentiellementthe
etLevenshtein
renommés enbetween
ettwo
.la source
PHP4.1, distance
32221514Très basique, rien d'excitant.
Ou une version plus courte:
Pour que cela fonctionne, vous devez envoyer / définir une variable POST / GET / COOKIE / session avec les touches:
distance
(istance
pour le plus court)between_two_strings
(etweentwostrin
pour le plus court)Les arguments sont dans cet ordre.
Testez le score sur http://ideone.com/QzNZ8T
Exemple:
la source
"Your code may not have no-ops or comments."
et votre modification a simplement ajouté un commentaire HTML.PHP, distance 44
Utilisez la
levenshtein
fonction intégrée de la bibliothèque standard PHP et nommez les arguments afin d'essayer de minimiser la distance.la source
$two,$strings
?;
echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
Pip, distance 50
N'utilise aucune fonction Levenshtein intégrée!
Ce code implémente l'algorithme récursif de Levenshtein ; en tant que tel, il est extrêmement lent, prenant quelques secondes même pour des chaînes de longueur 5. Je ne recommanderais pas d'exécuter le programme lui-même pour le vérifier!
Voici mon code de base, avec des espaces et des commentaires:
Le principal changement dans la version finale est l'attribution de certaines valeurs aux variables temporaires
c
ete
, qui apparaissent dans la chaîne de défi et réduisent ainsi un peu la distance Levenshtein.la source