In dieser Herausforderung schreiben Sie ein Programm, das zwei durch Zeilenumbrüche getrennte Zeichenfolgen, s1 (die erste Zeile) und s2 (die zweite Zeile), als Eingabe (STDIN oder am nächsten) verwendet. Sie können davon ausgehen, dass die Länge von s1 immer kleiner als 30 und größer als die Länge von s2 ist. Das Programm sollte dann jeden Schritt im Abstand von s1 bis s2 ausgeben.
Um zu verdeutlichen, was jeder Schritt in der Levenshtein-Entfernung bedeutet, gibt das Programm n Zeichenfolgen aus, wobei n die Levenshtein-Entfernung zwischen s1 und s2 ist und die Levenshtein-Entfernung zwischen zwei benachbarten Zeichenfolgen immer eins ist. Die Reihenfolge spielt keine Rolle. Die Ausgabe sollte durch Zeilenumbrüche getrennt sein und nicht s1, sondern nur die Zwischenschritte und s2 enthalten. Das Programm sollte auch auf einem modernen Computer in weniger als einer Minute ausgeführt werden.
Beispiele:
Eingang:
Programming
Codegolf
Ausgabe:
rogramming
Cogramming
Coramming
Coamming
Codmming
Codeming
Codeging
Codegong
Codegolg
Codegolf
Eingang:
Questions
Answers
Ausgabe:
uestions
Aestions
Anstions
Ansions
Answons
Answens
Answers
Eingang:
Offline
Online
Ausgabe:
Ofline
Online
Eingang:
Saturday
Sunday
Ausgabe:
Sturday
Surday
Sunday
Hier ist ein Link zu einem Python-Skript, das die Entfernung und die Schritte ausgibt.
Zusätzliche Regeln:
- Keine Nutzung des Internets
- Es gelten Standardlücken
Das ist Codegolf, also halten Sie den Code kurz. kürzester Code gewinnt!
s1(newline)s2
, aber nachdem ich die Frage noch einmal durchgesehen habe, frage ich mich, ob Sie stattdessen beabsichtigten, dass das Programm s1 und s2 basierend auf der Länge von 2 eingegebenen Zeichenfolgen auswählt Würde es Ihnen etwas ausmachen, diesen Punkt in irgendeiner Reihenfolge zu klären? Nehmen wir also an, dass die Eingabe s1 gefolgt von s2 ist, oder wählen wir s1 und s2 basierend auf der Länge der beiden Eingaben aus?Antworten:
Javascript,
167161154 BytesMit anrufen
l("Programming","golf")
Codepen
Entgolfter (und kommentierter) Code (veraltet, aber Sie haben die Idee):
quelle
s
insidea=a[s](1)
as deklarieren, werden aucha=a[s="slice"](1)
einige Bytes gespart."Programming"
-> aus"Codegolf"
, aber es sollte 10 sein.Haskell,
201194 BytesLänger als erwartet. Vielleicht kann ich ein bisschen Golf spielen ...
Anwendungsbeispiel:
Es ist eine rohe Kraft, die zwischen Ändern und Löschen entscheidet, wenn sich die Anfangsbuchstaben unterscheiden.
quelle