Neste desafio, você escreverá um programa que utiliza duas seqüências separadas por nova linha, s1 (a primeira linha) e s2 (a segunda linha), como entrada (STDIN ou mais próxima). Você pode assumir que o comprimento de s1 sempre será menor que 30 e maior que o comprimento de s2. O programa deve emitir cada passo na distância levenshtein de s1 a s2.
Para esclarecer o significado de cada etapa na distância levenshtein, o programa imprimirá n strings, onde n é a distância levenshtein entre s1 e s2 e a distância levenshtein entre duas strings adjacentes será sempre uma. A ordem não importa. A saída deve ser separada por nova linha e não incluir s1, apenas entre-s e s2. O programa também deve ser executado em menos de um minuto em um computador moderno.
Exemplos:
Entrada:
Programming
Codegolf
Resultado:
rogramming
Cogramming
Coramming
Coamming
Codmming
Codeming
Codeging
Codegong
Codegolg
Codegolf
Entrada:
Questions
Answers
Resultado:
uestions
Aestions
Anstions
Ansions
Answons
Answens
Answers
Entrada:
Offline
Online
Resultado:
Ofline
Online
Entrada:
Saturday
Sunday
Resultado:
Sturday
Surday
Sunday
Aqui está um link para um script python que imprime a distância e as etapas.
Regras adicionais:
- Sem uso da internet
- Aplicam-se brechas padrão
Isso é código-golfe, então mantenha seu código curto; o menor código vence!
s1(newline)s2
, no entanto, tendo examinado a questão novamente, pergunto-me se, em vez disso, você pretendia que o programa selecionasse s1 e s2 com base no comprimento de 2 strings inseridas, chegando em qualquer ordem, você se importaria de esclarecer esse ponto? Ou seja, assumimos que a entrada é s1 seguida por s2 ou selecionamos s1 e s2 com base no comprimento das duas entradas?Respostas:
Javascript,
167161154 bytesLigue com
l("Programming","golf")
Codepen
Código degolfado (e anotado) (desatualizado, mas você entendeu):
fonte
s
dentroa=a[s](1)
comoa=a[s="slice"](1)
salva alguns bytes."Programming"
->"Codegolf"
, mas deve ser 10.Haskell,
201194 bytesMais do que o esperado. Talvez eu possa jogar um pouco ...
Exemplo de uso:
É uma força bruta que decide entre alterar e excluir se os caracteres iniciais diferirem.
fonte