Biorąc pod uwagę klucz i tablicę ciągów, przetasuj tablicę, aby została posortowana, gdy każdy element zostanie XOR'owany kluczem.
XOR'ing dwóch ciągów
Aby XOR napisać kluczem, XOR każdą z wartości znakowych napisu przez jego parę w kluczu, zakładając, że klucz będzie się powtarzał na zawsze. Na przykład abcde^123
wygląda następująco:
a b c d e
1 2 3 1 2
--------------------------------------------
01100001 01100010 01100011 01100100 01100101
00110001 00110010 00110011 00110001 00110010
--------------------------------------------
01010000 01010000 01010000 01010101 01010111
--------------------------------------------
P P P U W
Sortowanie
Sortowania zawsze należy dokonywać leksykograficznie z ciągów XOR. To znaczy 1 < A < a < ~
(przy założeniu kodowania ASCII)
Przykład
"912", ["abcde", "hello", "test", "honk"]
-- XOR'd
["XSQ]T", "QT^U^", "MTAM", "Q^\R"]
-- Sorted
["MTAM", "QT^U^", "Q^\R", "XSQ]T"]
-- Converted back
["test", "hello", "honk", "abcde"]
Notatki
- Klucz zawsze będzie miał co najmniej 1 znak
- Klucz i dane wejściowe będą składały się wyłącznie z drukowalnego kodu ASCII.
- Łańcuchy XOR'd mogą zawierać znaki niedrukowalne.
- Dane wejściowe i wyjściowe można realizować za pomocą rozsądnych metod
- Standardowe luki są zabronione.
- Możesz wziąć klucz i dane wejściowe w dowolnej kolejności.
Przypadki testowe
key, input -> output
--------------------
"912", ["abcde", "hello", "test", "honk"] -> ["test", "hello", "honk", "abcde"]
"taco", ["this", "is", "a", "taco", "test"] -> ["taco", "test", "this", "a", "is"]
"thisisalongkey", ["who", "what", "when"] -> ["who", "what", "when"]
"3", ["who", "what", "when"] -> ["what", "when", "who"]
To jest golf golfowy , więc najmniej bajtów wygrywa!