El desafío: leer una entrada de longitud arbitraria y producir el ROT13 de la entrada. Todos los caracteres, además de AZ, deben copiarse literalmente a la salida, y el caso debe conservarse si es posible.
Cualquier lenguaje que pueda leer y escribir transmisiones estándar es un juego justo.
code-golf
cryptography
MiffTheFox
fuente
fuente
Respuestas:
Bash, 23 bytes
Respuesta canónica de 23 caracteres:
fuente
tr A-za-m N-ZA-z
(16 caracteres)[\\]^_`
la entrada. Volverá enNOPQRS
lugar de[\\]^_`
, al menos en la versión detr
I have. (Esos son los seis personajes en ASCII que se encuentran entreZ
ya
. Obviamente, todos los demás personajes funcionarán correctamente.)Bash - 5 caracteres
fuente
bash --version GNU bash, Version 4.0.33(1)-release (i486-pc-linux-gnu)
rot13 - 0 chars
sudo apt-get install bsdgames
"Python 2, 34 bytes
fuente
Befunge -
7x30 = 2106x26 = 156 caracteresNueva versión de transmisión que admite mayúsculas y minúsculas y debe admitir entradas ilimitadas.
La versión anterior
Esto almacena los valores dentro de su propio código fuente. Realmente muestra cuán horrible es tratar de generar valores almacenados en el mismo orden en que los recibe. Solo admite caracteres en minúscula.
No estoy seguro exactamente qué limitaciones tiene esto, usando http://www.quirkster.com/iano/js/befunge.html como el intérprete, parece que se rompe con entradas grandes.
fuente
Rubí -
60 57 3837 caracteresEditar: Y acabo de darme cuenta de que las cadenas de Ruby tienen un
tr
método.Prueba
Da:
fuente
puts
, y 'Az' es un atajo para 'A-Za-z''A-z'
que en realidad es'A-Z[\]^_
a-z ', damn ascii having characters between
Z` ya
.puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
.gets
solo devuelve la primera línea, usando $ <. Lecturas de lectura hasta EOF. La pregunta no dice nada sobre si la entrada puede contener nuevas líneas, así que me equivoqué por el lado de la precaución.vim, 5 pulsaciones de teclas
Asumiendo el modo normal y que el texto ya está escrito en el búfer:
ggg?G
O, siguiendo las convenciones de vimgolf:
g?GZZ
También puede invocarlo como un comando de terminal, algo como esto:
Supongo que este último contaría como un "programa" de 8 caracteres (
norm g?G
)fuente
norm g?G
es la abreviatura denormal g?G
eso hace 8 caracteres.gg
puede dejar el primero . Yo diría 3 pulsaciones de teclas cuando el archivo está abierto.g?GZZ
).C -
8379 caracteresVersión legible:
fuente
Python (117 bytes)
Aquí hay una versión de Python que evita el
rot13()
método.fuente
import sys
y usassys.stdin.read()
.[]
para hacer la lista comp un generador: tio.run/…tr///
solución en Perl (39 caracteres), la repetitiva se puede eliminar con-p
:Uso
-p
(23 caracteres, incluido el interruptor adicional):fuente
R, 37 bytes
example("chartr")
ejecuta los ejemplos parachartr
, que incluye larot
función, que esROT13
por defecto ...fuente
DC (
111108 para el propio DC)Ok, aquí está en (principalmente) dc y algo de magia sed y od para llevarlo al formato correcto para el código. Si no cuenta lo de entrada (
echo -n MESSAGE |
) son 160 bytes:Como punto de interés, el programa de CC en sí tiene solo 108 bytes de longitud, más corto que la versión de Python que no es de biblioteca. ¡Incluso conserva mayúsculas y minúsculas, y supera a Javascript en el envío anterior! Si solo pudiera analizar mejor la salida de od, o mejor aún, reemplazarla por completo.
EDITAR: Vale la pena señalar que la pregunta no indica una nueva línea final
10P
que me ahorra tres bytes más.EDIT 2: no hay una especificación para el formato de la entrada, por lo que supongo que se toma como conveniente para mi programa: P
fuente
Befunge-93, 85 (cuadrícula: 41x3 = 123)
Esta es una pregunta antigua, pero pensé en revivirla para publicar una respuesta Befunge un poco más agradable.
Puedes probarlo aquí . Ingrese un solo carácter a la vez; termina al ingresar un
.
carácter (puede cambiarlo modificando el"."
lado cercano a la derecha de la segunda fila). Funciona con mayúsculas y minúsculas, así como con puntuación y sin límite de entrada.No espero que esto obtenga un montón de votos a favor ni nada, pero solo quería demostrar
lo increíble que es Befunge en realidadque puedes hacerlo un poco mejor que la otra respuesta.Probablemente podría hacerlo aún más corto en Befunge-98.
fuente
>$! _
porque tienes dos ceros en la pila en ese punto cuando esperas un valor distinto de cero.PHP -
1039880 caracteres(sin usar str_rot13 ())
fuente
Delphi, 110
fuente
var c:Char;begin repeat Read(c);Write(Chr(Ord(c)+(Ord(c in['A'..'M'])-Ord(c in['N'..'Z']))*13));until EOF;end.
salva un personaje :)Haskell, 100 personajes
fuente
Perl6 (54)
fuente
Java 251 caracteres
fuente
Pitón 3 (107)
Ok, prometo dejar de responder esta pregunta ahora, pero me sentí obligado a superar la respuesta de DC en Python. Esto probablemente se refleja mal en mí como persona :).
fuente
C:
6968 caracteresBien, sé que este hilo está muerto hace mucho tiempo, pero no podía soportar la solución C (larga) que ni siquiera se compila en Clang (pero sí en GCC).
Probablemente es casi todavía exprimible.Ciertamente fue exprimible. Y no solo era exprimible, sino que era posible hacerlo recursivo.fuente
05AB1E ,
1312 bytesGuardado un byte gracias a robbie0630
Pruébalo en línea!
Explicación
fuente
--debug
, y parece que˜
es un no-op en este caso y se puede cortar.PHP - 41 caracteres
fuente
JavaScript 1.8, 106
alert(prompt().replace(/\w/g,function(c)String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))))
JavaScript, 115
alert(prompt().replace(/\w/g,function(c){return String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))}))
Esta solución resuelve el problema agregando 13 al código de caracteres si el carácter en cuestión está en la primera mitad del alfabeto, o restando 13 si está en la segunda mitad.
fuente
+(c.toLowerCase()<'n'?13:-13))
con-13+26*/[a-m]/i.test(c)
.CHIQRSX9 + , 1
Solo tiene que usar la herramienta adecuada para el problema.
CHIQRSX9 + es Turing completo, y puede leer y escribir desde canales estándar con
C
.fuente
C, 136 bytes
Nunca sentí que ninguna de mis soluciones fuera lo suficientemente buena como para publicar aquí, pero lo hice por diversión y pensé que sería mi droga de entrada al golf de código.
fuente
Javascript, 177 bytes
Esto supone que hay dos funciones, print y readLine:
fuente
LispLisp (16,636)
Lo siento.
fuente
Código de máquina 8086, 27 bytes
Desmontado:
Cadena de entrada
SI
, longitudCX
. Búfer de cadena de salida enDI
.Pruebe el resultado del programa DOS de IBM PC:
Descargue el programa de prueba R13.COM (PC DOS).
fuente
Haskell - 112 caracteres
fuente
K, 31
fuente
{x^a(,/-13 13#\:a:.Q.A)?x}
por 26 bytesTcl, 74 caracteres
fuente