Bei einem gegebenen Schlüssel und einem Array von Zeichenfolgen wird das Array gemischt, sodass es sortiert wird, wenn jedes Element mit dem Schlüssel einer XOR-Verknüpfung unterzogen wird.
XOR'ing zwei Saiten
Um eine Zeichenfolge durch einen Schlüssel zu XORen, XORen Sie jeden der Zeichenwerte der Zeichenfolge durch sein Paar im Schlüssel, vorausgesetzt, der Schlüssel wird für immer wiederholt. abcde^123
Sieht zum Beispiel so aus:
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
Sortierung
Die Sortierung sollte immer lexikografisch anhand der XOR-Zeichenfolgen erfolgen. Das heißt 1 < A < a < ~
(unter der Annahme einer ASCII-Codierung)
Beispiel
"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"]
Anmerkungen
- Der Schlüssel besteht immer aus mindestens 1 Zeichen
- Schlüssel und Eingabe bestehen nur aus druckbarem ASCII.
- XOR-Zeichenfolgen können nicht druckbare Zeichen enthalten.
- Die Ein- und Ausgabe kann nach vernünftigen Methoden erfolgen
- Standardlücken sind verboten.
- Sie können den Schlüssel und die Eingabe in beliebiger Reihenfolge vornehmen.
Testfälle
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"]
Das ist Code-Golf , also gewinnt das Minimum an Bytes!