Dies ist eine Fortsetzung dieser Herausforderung: Code in der Nähe der Herausforderung: Summe der ganzen Zahlen
Die Herausforderung in diesem Spiel ist etwas schwieriger und sorgt auch für einen coolen Titel (weshalb ich ihn ausgewählt habe):
Berechnen Sie den Levenshtein-Abstand zwischen zwei Saiten
Genau wie bei der letzten Herausforderung ist Ihre Punktzahl bei dieser Herausforderung die Levenshtein-Distanz zwischen Ihrem Code und dem obigen Zitat.
Nun also zu den Details!
Ihr Programm verwendet zwei Eingaben, beide Zeichenfolgen ohne Leerzeichen oder Zeilenumbrüche, und gibt den Levenshtein-Abstand zwischen ihnen aus. Die Levenshtien-Entfernung ist definiert als die Anzahl von Hinzufügungen, Löschungen und Ersetzungen, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Weitere Informationen zur Berechnung finden Sie auf der oben verlinkten Wikipedia-Seite. Verwenden Sie diesen Taschenrechner , um zu testen, ob Ihr Programm funktioniert . Ihr Programm muss nur den Levenshtein-Abstand zwischen den beiden Strings ausgeben. Es wird disqualifiziert, wenn etwas anderes ausgegeben wird. Beispiel I / O:
Inputs:
test
test2
Output:
1
Inputs:
222
515
Output:
3
Inputs:
Test
test
Output:
1
Ihr Code enthält möglicherweise keine No-Ops oder Kommentare.
quelle
R, Abstand 35
Dadurch wird eine Funktion
Calculate
mit den Parameternthe
und erstelltLevenshtein
. Es verwendet die integrierte R-Funktionadist
, um die Entfernung zu berechnen. Die String - Parameter inadist
im Wesentlichenthe
undLevenshtein
umbenanntbetween
undtwo
.quelle
PHP4.1, Entfernung
32221514Sehr einfach, nichts Aufregendes.
Oder eine kürzere Version:
Damit dies funktioniert, müssen Sie eine POST / GET / COOKIE / Session-Variable mit den folgenden Tasten senden / setzen:
distance
(istance
für die kürzere)between_two_strings
(etweentwostrin
für die kürzere)Die Argumente sind in dieser Reihenfolge.
Testen Sie die Punktzahl auf http://ideone.com/QzNZ8T
Beispiel:
quelle
"Your code may not have no-ops or comments."
und deine Bearbeitung fügte einfach einen HTML-Kommentar hinzu.PHP, Abstand 44
Verwenden Sie die integrierte
levenshtein
Funktion aus der PHP-Standardbibliothek und benennen Sie die Argumente, um zu versuchen, die Entfernung zu minimieren.quelle
$two,$strings
?;
echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
Pip, Abstand 50
Verwendet keine eingebaute Levenshtein-Funktion!
Dieser Code implementiert den rekursiven Levenshtein-Algorithmus . Aus diesem Grund ist es extrem langsam und benötigt auch für Zeichenfolgen der Länge 5 einige Sekunden. Ich würde nicht empfehlen, das Programm selbst auszuführen, um es zu überprüfen!
Hier ist mein Basiscode mit Leerzeichen und Kommentaren:
Die wichtigste Änderung in der endgültigen Version ist die Zuweisung einiger Werte zu temporären Variablen
c
unde
, die im Challenge-String erscheinen und damit den Levenshtein-Abstand etwas verringern.quelle