Criar um criptografador rot13 com golfe é muito fácil, porque as letras são da mesma ordem no espaço de caracteres ASCII. Vamos tentar um mecanismo rot32.
Sua tarefa é criar uma função que recebe uma string Base64 como entrada e retorna a mesma string, mas com cada letra girada 32 símbolos em relação ao original (em essência, com o primeiro bit invertido).
A cadeia de codificação base64 a ser usada para esse problema está 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/
com um caractere de preenchimento de =
. Isso evita soluções que, de outra forma, usariam ou importariam uma biblioteca interna Base64 onde as strings normalmente iniciam em A
vez 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+
O programa mais curto para fazê-lo em qualquer idioma vence.
Respostas:
CJam, 24 bytes
Experimente online.
Como funciona
fonte
Shell Bash / Unix, 29
Entrada de STDIN, saída em STDOUT.
fonte
Perl, 41
Apenas uma transliteração simples . Lê de STDIN, produz para STDOUT:
Experimente aqui.
fonte
-p
e-e
para se livrar da$_=<>;
e da;print
.CJam,
45 41 38 29 2726 bytesLê a string a ser criptografada de STDIN
Como funciona :
Experimente online aqui
fonte
Python, 178
Esta é uma implementação de referência não-destruída e de último lugar no Python que você pode usar para testar sua própria implementação.
fonte
GolfScript (
4140 bytes)Demonstração online
Existem duas partes: a tradução é uma variante da última técnica mencionada na minha dica
tr
no GolfScript , e a outra parte é a construção de strings, que usa a string0:a{A[
como uma matriz de valores de caracteres e uma dobra para transformá-las em intervalos de caracteres. Observe o uso de32/(*
para criar a string traduzida inserindo os primeiros 32 caracteres entre os segundos 32 caracteres e o caractere que estamos traduzindo.fonte
python, 69
testes
fonte
LiveScript, 91
LiveScript, 50
Se a sequência for permitida como um segundo argumento.
fonte
JavaScript 164
fonte