Mini golf de lunes: una serie de desafíos de código corto de golf , publicados (¡con suerte!) Todos los lunes
(Lo siento, esto es un poco tarde).
Estoy seguro de que la mayoría de ustedes han oído hablar de la distancia de Levenshtein , un algoritmo para calcular la distancia entre dos cadenas. Bueno, este desafío se trata de implementar un algoritmo similar de mi propia invención *, llamado distancia de anagrama . La principal diferencia es que el orden de los personajes no importa; en cambio, solo se miden los caracteres que son únicos para una cadena u otra.
Reto
El objetivo del desafío es escribir un programa o función que tome dos cadenas y devuelva la distancia del anagrama entre ellas. La forma principal de hacer esto es usar la siguiente lógica:
- Convierta ambas cadenas a minúsculas y (opcionalmente) ordene alfabéticamente los caracteres de cada uno.
- Si bien las cadenas contienen al menos un carácter igual, elimine la primera instancia de este carácter de cada cadena.
- Agregue las longitudes de las cadenas restantes y devuelva / envíe el resultado.
Ejemplo
Si las entradas son:
Hello, world!
Code golf!
Luego, en minúsculas y ordenadas, se convierten en: (según la clasificación predeterminada de JS; tenga en cuenta los espacios iniciales)
!,dehllloorw
!cdefgloo
Eliminando todos los caracteres que están en ambas cadenas, terminamos con:
,hllrw
cfg
Por lo tanto, la distancia del anagrama entre las dos cadenas originales = 6 + 3 = 9.
Detalles
- Las cadenas pueden tomarse en cualquier formato sensible.
- Las cadenas consistirán solo en ASCII imprimible.
- Las cadenas en sí no contendrán ningún espacio en blanco que no sean espacios regulares. (Sin pestañas, líneas nuevas, etc.)
- No necesita usar este algoritmo exacto, siempre que los resultados sean los mismos.
Casos de prueba
Entrada 1:
Hello, world!
Code golf!
Salida 1:
9
Entrada 2:
12345 This is some text.
.txet emos si sihT 54321
Salida 2:
0
Entrada 3:
All unique characters here!
Bdfgjkmopvwxyz?
Salida 3:
42
Entrada 4:
This is not exactly like Levenshtein distance,
but you'll notice it is quite similar.
Salida 4:
30
Entrada 5:
all lowercase.
ALL UPPERCASE!
Salida 5:
8
Tanteo
Este es el código de golf , por lo que gana el código válido más corto en bytes. Tiebreaker va a la presentación que alcanzó su conteo final de bytes primero. El ganador será elegido el próximo lunes 12 de octubre. ¡Buena suerte!
Editar: ¡ Felicidades al ganador, @isaacg, usando Pyth (nuevamente) por unos asombrosos 12 bytes!
* Si este algoritmo se ha utilizado en otro lugar y / o se le ha dado otro nombre, ¡hágamelo saber! No pude encontrarlo con una búsqueda de 20 minutos.