La distance de Hamming entre deux chaînes de longueur égale est le nombre de positions auxquelles les caractères correspondants sont différents. Si les cordes ne sont pas de longueur égale, la distance de Hamming n'est pas définie.
Défi
Écrivez un programme ou une fonction qui trouve la plus grande distance de Hamming parmi toutes les paires de chaînes d'une liste de chaînes, complétées selon les besoins selon les règles décrites ci-dessous.
Les personnages seront de l'intérieur a-zA-Z0-9
.
Les chaînes peuvent ne pas être de longueur égale, donc pour chaque comparaison, la chaîne la plus courte doit être complétée comme suit:
- envelopper la chaîne depuis le début autant de fois que nécessaire pour correspondre à la longueur requise
- changer la casse des lettres à chaque emballage impair (1er, 3e, 5e, etc.)
- laisser les choses à l'extérieur
a-zA-Z
inchangées lors de l'emballage
Par exemple, disons que vous devez remplir la chaîne de 5 caractères ab9Cd
pour qu'elle se termine par 18 caractères. Vous vous retrouveriez avec:
ab9CdAB9cDab9CdAB9
^^^^^ ^^^
avec ^
ajouté sous les 1er et 3e tours pour mettre en évidence les changements de casse.
Entrée sortie
Le format d'entrée / sortie est flexible. Vous pouvez supposer que l'entrée a au moins deux chaînes et que toutes les chaînes auront au moins un caractère.
La sortie est un entier.
Règles
C'est du code-golf . Des règles standard s'appliquent.
Cas de test
[ "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
Implémentation de référence
J'ai testé les exemples avec du code R (complètement non golfé) que vous pouvez essayer ici pour comparer tous les autres exemples que vous pourriez essayer avec votre code.
["AacaAc", "Aab"] => 2
. Un golf intentionnel à ma réponse Jelly aurait échoué dans ce cas, mais aurait dépassé tous les autres.