Construire un chiffreur rot13 golfé est trop facile car les lettres sont toutes du même ordre dans l'espace de caractères ASCII. Essayons plutôt un moteur rot32.
Votre tâche consiste à créer une fonction qui prend une chaîne Base64 en entrée et renvoie la même chaîne, mais avec chaque lettre pivotée de 32 symboles par rapport à son origine (en substance, avec le premier bit inversé).
La chaîne de codage base64 à utiliser pour ce problème est 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
avec un caractère de remplissage de =
. Il s'agit d'empêcher les solutions qui autrement utiliseraient ou importeraient une bibliothèque Base64 intégrée où les chaînes commencent normalement par A
au lieu de 0
.
Example inputs and outputs:
> rot32("THE+QUICK+BROWN+FOX+JUMPS+OVER+THE+LAZY+DOG=")
nb8ukoc6eu5liqhu9irudogjmuip8lunb8uf4tsu7ia=
> rot32("NB8UKOC6EU5LIQHU9IRUDOGJMUIP8LUNB8UF4TSU7IA=")
h5Eoei6C8oBfckboFclo7iadgocjEfoh5Eo9AnmoDc4=
> rot32("Daisy++daisy++give+me+your+answer+true/I+/+m+half+crazy++all+for+the+love+of+you")
7GOY2uuJGOY2uuMO/KuSKu2U+XuGTY0KXuZX+KvcuvuSuNGRLuIXG32uuGRRuLUXuZNKuRU/KuULu2U+
Le programme le plus court pour le faire dans n'importe quelle langue gagne.
Réponses:
CJam, 24 octets
Essayez-le en ligne.
Comment ça fonctionne
la source
Bash / Unix shell, 29
Entrée depuis STDIN, sortie sur STDOUT.
la source
Perl, 41
Juste une simple translittération . Lit depuis STDIN, sort vers STDOUT:
Essayez-le ici.
la source
-p
et-e
pour vous débarrasser du$_=<>;
et du;print
.CJam,
45 41 38 29 2726 octetsLit la chaîne à chiffrer depuis STDIN
Comment ça marche :
Essayez-le en ligne ici
la source
Python, 178
Il s'agit d'une implémentation de référence de dernière place non golfée en Python que vous pouvez utiliser pour tester votre propre implémentation.
la source
GolfScript (
4140 octets)Démo en ligne
Il y a deux parties: la traduction est une variante de la dernière technique mentionnée dans mon conseil sur
tr
GolfScript , et l'autre partie est la construction de la chaîne, qui utilise la chaîne0:a{A[
comme un tableau de valeurs char et un pli pour les transformer en plages de caractères. Notez l'utilisation de32/(*
pour construire la chaîne traduite en insérant les 32 premiers caractères entre les 32 seconds caractères et le caractère que nous traduisons.la source
python, 69
tests
la source
LiveScript, 91
LiveScript, 50
Si la chaîne est autorisée comme deuxième argument.
la source
JavaScript 164
la source