Data una chiave e una matrice di stringhe, mescola la matrice in modo che venga ordinata quando ogni elemento è XOR con la chiave.
XOR'ing due stringhe
Per XOR una stringa di una chiave, XOR ciascuno dei valori di carattere della stringa per la sua coppia nella chiave, supponendo che la chiave si ripeta per sempre. Ad esempio, abcde^123
sembra:
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
Ordinamento
L'ordinamento dovrebbe sempre essere eseguito lessicograficamente con le stringhe XOR. Cioè, 1 < A < a < ~
(Supponendo la codifica ASCII)
Esempio
"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"]
Appunti
- La chiave avrà sempre almeno 1 carattere
- Chiave e input saranno costituiti solo da ASCII stampabile.
- Le stringhe XOR potrebbero contenere caratteri non stampabili.
- L'input e l'output possono essere effettuati attraverso i metodi ragionevoli
- Sono vietate le scappatoie standard .
- È possibile prendere chiave e input in qualsiasi ordine.
Casi test
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"]
Questo è code-golf , quindi vince meno byte!