Dans ce défi, vous allez écrire un programme qui prend en entrée deux chaînes séparées par une nouvelle ligne, s1 (la première ligne) et s2 (la deuxième ligne) (STDIN ou la plus proche). Vous pouvez supposer que la longueur de s1 sera toujours inférieure à 30 et supérieure à la longueur de s2. Le programme doit ensuite sortir chaque étape dans la distance de levenshtein de s1 à s2.
Pour clarifier ce que signifie chaque étape de la distance levenshtein, le programme imprimera n chaînes, où n est la distance levenshtein entre s1 et s2, et la distance levenshtein entre deux chaînes adjacentes sera toujours une. L'ordre n'a pas d'importance. La sortie doit être séparée par des sauts de ligne et ne pas inclure s1, uniquement les entre-deux et s2. Le programme devrait également fonctionner en moins d'une minute sur un ordinateur moderne.
Exemples:
Contribution:
Programming
Codegolf
Production:
rogramming
Cogramming
Coramming
Coamming
Codmming
Codeming
Codeging
Codegong
Codegolg
Codegolf
Contribution:
Questions
Answers
Production:
uestions
Aestions
Anstions
Ansions
Answons
Answens
Answers
Contribution:
Offline
Online
Production:
Ofline
Online
Contribution:
Saturday
Sunday
Production:
Sturday
Surday
Sunday
Voici un lien vers un script python qui affiche la distance et les étapes.
Règles supplémentaires:
- Pas d'utilisation d'Internet
- Des échappatoires standard s'appliquent
C'est du code-golf, alors gardez votre code court; le code le plus court gagne!
s1(newline)s2
, cependant, après avoir relu la question, je me demande si vous aviez plutôt l'intention que le programme sélectionne s1 et s2 en fonction de la longueur de 2 chaînes entrées, venant dans l'un ou l'autre ordre, pourriez-vous clarifier ce point? Autrement dit, supposons-nous que l'entrée est s1 suivie de s2, ou sélectionnons-nous s1 et s2 en fonction de la longueur des deux entrées?Réponses:
Javascript,
167161154 octetsAppeler avec
l("Programming","golf")
Codepen
Code dégolfé (et annoté) (obsolète mais vous avez l'idée):
la source
s
insidea=a[s](1)
commea=a[s="slice"](1)
économise quelques octets."Programming"
->"Codegolf"
, mais cela devrait être 10.Haskell,
201194 octetsPlus long que prévu. Peut-être que je peux jouer au golf un peu ...
Exemple d'utilisation:
C'est une force brute qui décide entre changer et supprimer si les caractères initiaux diffèrent.
la source