Esta é uma sequência deste desafio: Código próximo ao desafio: Soma de números inteiros
O desafio deste é um pouco mais difícil e também cria um título interessante (e foi por isso que o escolhi):
Calcular a distância de Levenshtein entre duas cordas
Assim como no último desafio, sua pontuação nesse desafio é a distância de Levenshtein entre seu código e a citação acima.
Então agora para os detalhes!
Seu programa terá 2 entradas, ambas as strings sem espaços à direita ou novas linhas, e produzirá a distância de Levenshtein entre elas. A distância de Levenshtien é definida como o número de adições, exclusões e substituições necessárias para transformar uma string em outra. Para mais informações sobre como calculá-lo, consulte a página da Wikipedia vinculada acima. Para testar se o seu programa funciona, use esta calculadora . Seu programa não deve produzir nada além da distância de Levenshtein entre as duas cadeias. Será desqualificado se algo mais for produzido. Exemplo de E / S:
Inputs:
test
test2
Output:
1
Inputs:
222
515
Output:
3
Inputs:
Test
test
Output:
1
Seu código pode não ter no-ops ou comentários.
fonte
R, distância 35
Isso cria uma função
Calculate
com parâmetrosthe
eLevenshtein
. Ele usa a funçãoadist
interna R para calcular a distância. Os parâmetros de cadeia emadist
são essencialmentethe
eLevenshtein
renomeado parabetween
etwo
.fonte
PHP4.1, distância
32.221514Muito básico, nada emocionante.
Ou uma versão mais curta:
Para que isso funcione, você precisa enviar / definir uma variável POST / GET / COOKIE / session com as teclas:
distance
(istance
para o menor)between_two_strings
(etweentwostrin
para o menor)Os argumentos estão nessa ordem.
Teste a pontuação em http://ideone.com/QzNZ8T
Exemplo:
fonte
"Your code may not have no-ops or comments."
e sua edição simplesmente adicionou um comentário HTML.PHP, distância 44
Use a
levenshtein
função interna da biblioteca padrão do PHP e nomeie os argumentos para tentar minimizar a distância.fonte
$two,$strings
?;
echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
Pip, distância 50
Não usa nenhuma função Levenshtein embutida!
Esse código implementa o algoritmo recursivo de Levenshtein ; Como tal, é extremamente lento, demorando alguns segundos, mesmo para seqüências de comprimento 5. Não recomendo executar o programa por si só para verificá-lo!
Aqui está o meu código base, com espaço em branco e comentários:
A principal mudança na versão final é atribuir alguns valores a variáveis temporárias
c
ee
, que aparecem na sequência de desafio e, assim, reduzem um pouco a distância de Levenshtein.fonte