Đưa ra một khóa và một chuỗi các chuỗi, xáo trộn mảng để nó được sắp xếp khi mỗi phần tử là XOR'd với khóa.
XOR'ing hai chuỗi
Để XOR một chuỗi bằng một khóa, XOR từng giá trị ký tự của chuỗi theo cặp của nó trong khóa, giả sử rằng khóa đó lặp lại mãi mãi. Ví dụ: abcde^123
trông như:
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
Sắp xếp
Việc sắp xếp phải luôn luôn được thực hiện theo phương pháp phân tích theo chuỗi của XOR. Đó là, 1 < A < a < ~
(Giả sử mã hóa ASCII)
Thí dụ
"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"]
Ghi chú
- Khóa sẽ luôn có ít nhất 1 ký tự
- Khóa và đầu vào sẽ chỉ bao gồm ASCII có thể in được.
- Chuỗi XOR có thể chứa các ký tự không in được.
- Đầu vào và đầu ra có thể được thực hiện thông qua các Phương thức hợp lý
- Lỗ hổng tiêu chuẩn bị cấm.
- Bạn có thể lấy Key và Input theo bất kỳ thứ tự nào.
Các trường hợp thử nghiệm
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"]
Đây là mã golf , vì vậy ít byte nhất sẽ thắng!