Получив ключ и массив строк, перетасуйте массив так, чтобы он сортировался, когда каждый элемент XOR соответствует ключу.
XOR'ing две строки
Чтобы 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 могут содержать непечатаемые символы.
- Ввод и вывод могут быть выполнены с помощью разумных методов
- Стандартные лазейки запрещены.
- Вы можете взять ключ и ввод в любом порядке.
Тестовые случаи
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"]
Это код-гольф , поэтому выигрывает минимум байтов!