Odległość Hamminga między dwoma strunami o równej długości jest liczbą pozycji, w których odpowiadające znaki są różne. Jeśli struny nie są równej długości, odległość Hamminga nie jest zdefiniowana.
Wyzwanie
Napisz program lub funkcję, która znajdzie największą odległość Hamminga spośród wszystkich par ciągów z listy ciągów, wypełnionych zgodnie z wymaganiami zgodnie z zasadami opisanymi poniżej.
Postacie będą z wewnątrz a-zA-Z0-9.
Ciągi mogą nie być równej długości, więc dla każdego porównania krótszy ciąg musi być wypełniony w następujący sposób:
- owiń ciąg od początku tyle razy, ile potrzeba, aby dopasować wymaganą długość
- zmieniaj wielkość liter każdego owijania nieparzystego (1, 3, 5 itd.)
- pozostawiając rzeczy na zewnątrz
a-zA-Zbez zmian podczas pakowania
Załóżmy na przykład, że musisz ab9Cduzupełnić ciąg 5 znaków, aby kończył się 18 znakami. Skończyłbyś z:
ab9CdAB9cDab9CdAB9
^^^^^ ^^^
z ^dodanym pod 1. i 3. owinięciem, aby podkreślić zmiany wielkości liter.
Wejście wyjście
Format wejścia / wyjścia jest elastyczny. Możesz założyć, że dane wejściowe mają co najmniej dwa ciągi i że wszystkie ciągi będą miały co najmniej jeden znak.
Dane wyjściowe to liczba całkowita.
Zasady
To jest golf golfowy . Obowiązują standardowe zasady.
Przypadki testowe
[ "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
Realizacja referencyjna
Testowałem przykłady z (całkowicie nie golfowym) kodem R, który możesz wypróbować tutaj, aby porównać inne przykłady, które możesz wypróbować ze swoim kodem.
["AacaAc", "Aab"] => 2. Celowy golf w odpowiedzi na moją galaretkę nie udałby się w tej sprawie, ale przeszedłby wszystkie pozostałe.