Le défi: lire une entrée de longueur arbitraire et produire le ROT13 de l’entrée. Tous les caractères autres que AZ doivent être copiés intégralement dans la sortie et la casse doit être préservée si possible.
Toute langue capable de lire et d’écrire des flux standard est un jeu équitable.
code-golf
cryptography
MiffTheFox
la source
la source
Réponses:
Bash, 23 octets
Réponse canonique à 23 caractères:
la source
tr A-za-m N-ZA-z
(16 caractères)[\\]^_`
dans l'entrée. Il reviendra commeNOPQRS
plutôt que[\\]^_`
, du moins dans la version detr
moi. (Ce sont les six caractères ASCII qui se situent entreZ
eta
. De toute évidence, tous les autres caractères fonctionneront correctement.)Bash - 5 caractères
la source
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 octets
la source
Befunge -
7x30 = 2106x26 = 156 caractèresNouvelle version en streaming qui prend en charge les majuscules et les minuscules et devrait permettre une entrée illimitée.
L'ancienne version
Cela stocke les valeurs dans son propre code source. Montre vraiment à quel point il est horrible d'essayer de générer des valeurs stockées dans le même ordre que vous les avez reçues. Ne supporte que les caractères minuscules.
Je ne sais pas exactement quelles sont les limitations, en utilisant http://www.quirkster.com/iano/js/befunge.html en tant qu'interpréteur, il semble rompre avec les entrées volumineuses.
la source
Ruby -
60 57 3837 caractèresEdit: Et je viens de me rendre compte que les chaînes Ruby ont une
tr
méthode.Tester
Donne:
la source
puts
, et 'Az' est un raccourci pour 'A-Za-z''A-z'
c'est en fait'A-Z[\]^_
un 'Z', damn ascii having characters between
eta
.puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
.gets
ne renvoie que la première ligne, utilisez $ <. Read lit jusqu'à EOF. La question ne dit pas si l'entrée peut contenir de nouvelles lignes, alors je me suis simplement trompé de prudence.vim, 5 frappes
En supposant que le mode soit normal et que le texte est déjà écrit dans le tampon:
ggg?G
Ou, suivant les conventions de vimgolf:
g?GZZ
Vous pouvez également l'invoquer en tant que commande de terminal, à peu près comme ceci:
Je suppose que ce dernier compterait comme un "programme" de 8 caractères (
norm g?G
)la source
norm g?G
est l'abréviation denormal g?G
qui fait 8 caractères.gg
peut être laissée. Je dirais 3 frappes lorsque le fichier est ouvert.g?GZZ
).C -
8379 caractèresVersion lisible:
la source
Python (117 octets)
Voici une version en Python qui évite la
rot13()
méthode.la source
import sys
et utilisersys.stdin.read()
.[]
pour rendre la liste compilanttr///
solution en Perl (39 caractères), le passe-partout peut être enlevé avec-p
:Utilisation
-p
(23 caractères, y compris le commutateur supplémentaire):la source
R, 37 octets
example("chartr")
exécute les exemples pourchartr
, qui inclut larot
fonction, qui estROT13
par défaut ....la source
DC (
111108 pour le dc lui-même)Ok, ici, il est en (la plupart du temps) DC et un peu de magie sed et od pour le mettre dans le bon format pour le code. Si vous ne comptez pas la chose en entrée (
echo -n MESSAGE |
), c'est 160 octets:Il est intéressant de noter que le programme dc lui-même ne fait que 108 octets de long, plus court que la version python hors bibliothèque. Il préserve même la casse et la ponctuation, et bat Javascript dans la soumission ci-dessus! Si seulement je pouvais mieux analyser le résultat de od, ou encore mieux le remplacer complètement.
EDIT: Il convient de noter que la question n'indique pas une nouvelle ligne de fuite
10P
ce qui me permet d’économiser trois octets supplémentaires.EDIT 2: Il n’existe aucune spécification sur le format de l’entrée, donc je suppose qu’il est pris comme il convient pour mon programme: P
la source
Befunge-93, 85 (grille: 41x3 = 123)
C'est une question ancienne, mais je pensais la réactiver pour poster une réponse légèrement plus agréable en Befunge.
Vous pouvez le tester ici . Entrez un seul caractère à la fois; il se termine en entrant dans un
.
caractère (vous pouvez le modifier en modifiant le"."
côté droit de la deuxième ligne). Fonctionne avec les majuscules et les minuscules, ainsi que la ponctuation et sans limite de saisie.Je ne m'attends pas à ce que cela obtienne une tonne de votes positifs, mais je voulais simplement montrer à
quel point Befunge est génial.que vous pouvez faire un peu mieux que l'autre réponse.Je pourrais probablement le rendre encore plus court dans Befunge-98.
la source
>$! _
car vous avez deux zéros sur la pile à ce point lorsque vous attendez une valeur non nulle.PHP -
1039880 caractères(n'utilise pas str_rot13 ())
la source
Delphi, 110
la source
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.
sauve un personnage :)Haskell, 100 caractères
la source
Perl6 (54)
la source
Java 251 caractères
la source
Python 3 (107)
Ok, je promets de ne plus répondre à cette question maintenant, mais je me suis senti obligé de battre la réponse de DC en Python. Cela reflète probablement mal sur moi en tant que personne :).
la source
C:
6968 caractèresBon, je sais que ce fil est mort depuis longtemps, mais je ne pouvais pas supporter la (longue) solution C qui ne compile même pas sur Clang (mais le fait sur GCC).
Il est probablement presque toujours compressible.C'était certainement compressible. Et non seulement c'était compressible, il était possible de le rendre récursif.la source
05AB1E ,
1312 octetsA enregistré un octet grâce à robbie0630
Essayez-le en ligne!
Explication
la source
--debug
, et il semble que ce˜
soit un non-op dans ce cas et peut être coupé.PHP - 41 caractères
la source
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))}))
Cette solution résout le problème en ajoutant 13 au code de caractère si le caractère en question est dans la première moitié de l'alphabet, ou en soustrayant 13 si c'est dans la seconde moitié.
la source
+(c.toLowerCase()<'n'?13:-13))
par-13+26*/[a-m]/i.test(c)
.CHIQRSX9 + , 1
Vous devez juste utiliser le bon outil pour le problème.
CHIQRSX9 + est complet et peut lire et écrire à partir de canaux standard avec
C
.la source
C, 136 octets
Je ne me suis jamais senti qu'une de mes solutions était assez bonne pour être postée ici, mais je l'ai faite pour le plaisir, et j'ai pensé que ce serait ma drogue d'introduction au code golf.
la source
Javascript, 177 octets
Cela suppose qu'il existe deux fonctions, print et readLine:
la source
LispLisp (16 636)
Je suis désolé.
la source
8086 Code machine, 27 octets
Non assemblé:
Chaîne d'entrée dans
SI
, longueur dansCX
. Sortie du tampon de chaîne àDI
.Testez la sortie du programme IBM PC DOS:
Téléchargez le programme de test R13.COM (PC DOS).
la source
Haskell - 112 caractères
la source
K, 31
la source
{x^a(,/-13 13#\:a:.Q.A)?x}
pour 26 octetsTcl, 74 caractères
la source