Esta es una secuela de este desafío: Código cercano al desafío: Suma de enteros
El desafío en este es un poco más difícil, y también lo convierte en un título genial (por eso lo elegí):
Calcule la distancia de Levenshtein entre dos cuerdas
Al igual que en el último desafío, su puntaje en este desafío es la distancia de Levenshtein entre su código y la cita anterior.
Así que ahora para los detalles!
Su programa tomará 2 entradas, ambas cadenas sin espacios finales o líneas nuevas, y generará la distancia de Levenshtein entre ellas. La distancia de Levenshtien se define como el número de adiciones, eliminaciones y sustituciones necesarias para transformar una cadena en otra. Para obtener más información sobre cómo calcularlo, consulte la página de Wikipedia vinculada anteriormente. Para probar si su programa funciona, use esta calculadora . Su programa no debe generar nada más que la distancia de Levenshtein entre las dos cadenas. Será descalificado si sale algo más. Ejemplo de E / S:
Inputs:
test
test2
Output:
1
Inputs:
222
515
Output:
3
Inputs:
Test
test
Output:
1
Su código puede no tener no-ops o comentarios.
fuente
R, distancia 35
Esto crea una función
Calculate
con parámetrosthe
yLevenshtein
. Utiliza la función incorporada Radist
para calcular la distancia. Los parámetros de cadena enadist
son esencialmentethe
yLevenshtein
renombrados abetween
ytwo
.fuente
PHP4.1, distancia
32221514Muy básico, nada emocionante.
O una versión más corta:
Para que esto funcione, debe enviar / configurar una variable POST / GET / COOKIE / session con las teclas:
distance
(istance
para el más corto)between_two_strings
(etweentwostrin
para el más corto)Los argumentos están en ese orden.
Prueba la puntuación en http://ideone.com/QzNZ8T
Ejemplo:
fuente
"Your code may not have no-ops or comments."
y su edición simplemente agregó un comentario HTML.PHP, distancia 44
Use la
levenshtein
función incorporada de la biblioteca estándar de PHP y nombre los argumentos para intentar minimizar la distancia.fuente
$two,$strings
?;
echo$Calculate_the=levenshtein($_GET[distance_between_two],$_GET[strings]);
Pip, distancia 50
¡No utiliza la función incorporada de Levenshtein!
Este código implementa el algoritmo recursivo de Levenshtein ; como tal, es extremadamente lento, toma unos segundos incluso para cadenas de longitud 5. ¡No recomendaría ejecutar el programa por sí mismo para verificarlo!
Aquí está mi código base, con espacios en blanco y comentarios:
El cambio principal en la versión final es asignar algunos valores a variables temporales
c
ye
, que aparecen en la cadena de desafío y, por lo tanto, reducen un poco la distancia de Levenshtein.fuente