Давши ключ і масив рядків, перетасуйте масив так, щоб він був відсортований, коли кожен елемент є XOR'd з ключем.
XOR'і дві струни
Щоб XOR був рядок за ключем, XOR кожне з символьних значень рядка за його парою в ключі, припускаючи, що ключ повторюється назавжди. Наприклад, abcde^123
виглядає так:
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
Сортування
Сортування завжди повинно проводитися лексикографічно рядків XOR '. Тобто 1 < A < a < ~
(припускаючи кодування ASCII)
Приклад
"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"]
Примітки
- Ключ завжди матиме не менше 1 символу
- Ключ і вхід складаються тільки з друкованого ASCII.
- Рядки XOR'd можуть містити символи, що не надруковані.
- Введення та вихід можуть бути здійснені за допомогою розумних методів
- Стандартні лазівки заборонені.
- Ви можете взяти ключ і введення в будь-якому порядку.
Випробування
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"]
Це код-гольф , тому виграє найменше байт!