Étant donné une clé et un tableau de chaînes, mélangez le tableau afin qu'il soit trié lorsque chaque élément est XOR avec la clé.
XOR'ing deux cordes
Pour XOR une chaîne par une clé, XOR chacune des valeurs de caractère de la chaîne par sa paire dans la clé, en supposant que la clé se répète pour toujours. Par exemple, abcde^123
ressemble à:
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
Tri
Le tri doit toujours être fait lexicographiquement des chaînes XOR. C'est,1 < A < a < ~
(en supposant un codage ASCII)
Exemple
"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"]
Remarques
- La clé aura toujours au moins 1 caractère
- La clé et l'entrée ne seront constituées que d'ASCII imprimables.
- Les chaînes XOR peuvent contenir des caractères non imprimables.
- L'entrée et la sortie peuvent être effectuées à l'aide des méthodes raisonnables
- Failles standard sont interdites.
- Vous pouvez prendre la clé et l'entrée dans n'importe quel ordre.
Cas de 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"]
Il s'agit de code-golf , donc le moins d'octets gagne!