La distancia de Hamming entre dos cadenas de igual longitud es el número de posiciones en las que los caracteres correspondientes son diferentes. Si las cadenas no tienen la misma longitud, la distancia de Hamming no está definida.
Desafío
Escriba un programa o función que encuentre la mayor distancia de Hamming entre todos los pares de cadenas de una lista de cadenas, rellenada según sea necesario de acuerdo con las reglas que se describen a continuación.
Los personajes serán de dentro a-zA-Z0-9
.
Las cadenas pueden no tener la misma longitud, por lo que para cada comparación, la cadena más corta debe rellenarse de la siguiente manera:
- envuelva la cadena desde el principio tantas veces como sea necesario para que coincida con la longitud requerida
- cambiar los casos de las letras cada vez que se envuelve (1er, 3er, 5to, etc.)
- dejar las cosas afuera
a-zA-Z
sin cambios al envolver
Por ejemplo, supongamos que necesita rellenar la cadena de 5 caracteres ab9Cd
para que termine con 18 caracteres. Terminarías con:
ab9CdAB9cDab9CdAB9
^^^^^ ^^^
con ^
agregado debajo de la 1ra y 3ra envolturas para resaltar los cambios de caso.
De entrada y salida
El formato de entrada / salida es flexible. Puede suponer que la entrada tiene al menos dos cadenas y que todas las cadenas tendrán al menos un carácter.
La salida es un entero.
Reglas
Este es el código de golf . Aplican reglas estándar.
Casos de prueba
[ "a", "b" ] => 1
[ "a", "b", "c" ] => 1
[ "a", "a", "c" ] => 1
[ "abc", "abcd" ] => 1
[ "abc12D5", "abC34d3", "ABC14dabc23DAbC89d"] => 17
[ "a", "Aaa", "AaaA", "aAaAa", "aaaaaaaaaaaaaa", "AAaAA", "aAa" ] => 8
["AacaAc", "Aab"] => 2
Implementación de referencia
Probé los ejemplos con un código R (completamente no protegido) que puedes probar aquí para comparar cualquier otro ejemplo que puedas probar con tu código.
["AacaAc", "Aab"] => 2
. Un golf intencionado para mi respuesta de Jelly hubiera fallado en ese caso, pero habría pasado todos los demás.