Wyzwanie: odczytać dane wejściowe o dowolnej długości i wygenerować ROT13 danych wejściowych. Wszystkie znaki oprócz AZ należy skopiować dosłownie na wyjście, a jeśli to możliwe, należy zachować wielkość liter.
Każdy język, który potrafi czytać i pisać standardowe strumienie, jest uczciwą grą.
code-golf
cryptography
MiffTheFox
źródło
źródło
Odpowiedzi:
Bash, 23 bajty
Kanoniczna odpowiedź na 23 znaki:
źródło
tr A-za-m N-ZA-z
(16 znaków)[\\]^_`
dane wejściowe. WróciNOPQRS
raczej niż[\\]^_`
, przynajmniej w wersji,tr
którą mam. (To jest sześć znaków w ASCII, które leżą międzyZ
aa
. Oczywiście wszystkie inne postacie będą działać poprawnie.)Bash - 5 znaków
źródło
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 bajty
źródło
Befunge -
7x30 = 2106x26 = 156 znakówNowa wersja przesyłania strumieniowego, która obsługuje zarówno duże, jak i małe litery i powinna obsługiwać nieograniczoną liczbę wejść.
Stara wersja
Przechowuje wartości wewnątrz własnego kodu źródłowego. Naprawdę pokazuje, jak okropnie jest próbować wysyłać zapisane wartości w tej samej kolejności, w jakiej je otrzymujesz. Obsługuje tylko małe litery.
Nie jestem pewien, jakie dokładnie to ma ograniczenia, używając http://www.quirkster.com/iano/js/befunge.html jako interpretera, który wydaje się łamać przy dużych nakładach.
źródło
Rubin -
60 57 3837 znakówEdycja: I właśnie zrealizowane ciągi Ruby mają
tr
metodę.Test
Daje:
źródło
puts
, a „Az” to skrót od „A-Za-z”'A-z'
to'A-Z[\]^_
a-z ', damn ascii having characters between
Z` ia
.puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
.gets
że zwraca tylko pierwszą linię, używając $ <. Read czyta do EOF. Pytanie nie mówi nic o tym, czy dane wejściowe mogą zawierać nowe wiersze, więc popełniłem błąd po stronie ostrożności.vim, 5 naciśnięć klawiszy
Zakładając, że tryb normalny i tekst jest już zapisany w buforze:
ggg?G
Lub następujące konwencje vimgolfa:
g?GZZ
Możesz także wywołać go jako polecenie terminalu, coś w stylu:
Wydaje mi się, że ten ostatni liczyłby się jako „program” składający się z 8 znaków (
norm g?G
)źródło
norm g?G
jest skrótem,normal g?G
co daje 8 znaków.gg
można przerwać. Powiedziałbym 3 naciśnięcia klawiszy, gdy plik jest otwarty.g?GZZ
).C -
8379 charactersReadable version:
źródło
Python (117 bytes)
Here's a Python version that avoids the
rot13()
-method.źródło
import sys
and usesys.stdin.read()
.[]
to make the list comp a generator: tio.run/…tr///
solution in Perl (39 characters), boilerplate can be removed with-p
:Using
-p
(23 characters including the extra switch):źródło
R, 37 bytes
example("chartr")
runs the examples forchartr
, which includes therot
function, which isROT13
by default....źródło
DC (
111108 for the dc itself)Ok, here it is in (mostly) dc and some sed and od magic to get it into the right format for the code. If you don't count the input thing (
echo -n MESSAGE |
) it's 160 bytes:As a point of interest, the dc programme itself is only a 108 bytes long, shorter than the non-library python version. It even preserves case and punctuation, and beats Javascript in the above submission! If only I could better parse the output of od, or better yet replace it altogether.
EDIT: It's worth noting that the question doesn't indicate a trailing new line
10P
which saves me three further bytes.EDIT 2: There's no specification for the format of the input, so I assume it's taken in as is convenient for my programme :P
źródło
Befunge-93, 85 (grid: 41x3=123)
This is an ancient question, but I thought I'd revive it to post a slightly nicer Befunge answer.
You can test it here. Enter a single character at a time; it terminates upon entering a
.
character (you can change that by modifying the"."
near the right side of the second row). Works with upper and lower case, as well as punctuation, and with no limit to input.I don't expect this to get a ton of upvotes or anything, but I just wanted to demonstrate
how awesome Befunge actually isthat you can do a little better than the other answer.I could probably make it even shorter in Befunge-98.
źródło
>$! _
because you've got two zeros on the stack at that point when you are expecting a non-zero value.PHP -
1039880 characters(not using str_rot13())
źródło
Delphi, 110
źródło
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.
saves one character :)Haskell, 100 characters
źródło
Perl6 (54)
źródło
Java 251 chars
źródło
Python 3 (107)
Ok, I promise to stop answering this question now, but I felt compelled to beat the DC answer in Python. This probably reflects poorly on me as a person :).
źródło
C:
6968 charactersAlright, I know this thread is long dead, but I couldn't stand the (long) C-solution which doesn't even compile on Clang (but does on GCC).
It is probably almost still squeezable.It certainly was squeezable. And not only was it squeezable, it was possible to make it recursive.źródło
05AB1E,
1312 bytesSaved a byte thanks to robbie0630
Try it online!
Explanation
źródło
--debug
, and it seems like the˜
is a no-op in this case and can be cut out.PHP - 41 Characters
źródło
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))}))
This solution solves the problem by adding 13 to the character code if the character in question is in the first half of the alphabet, or subtracting 13 if it's in the second half.
źródło
+(c.toLowerCase()<'n'?13:-13))
with-13+26*/[a-m]/i.test(c)
.CHIQRSX9+, 1
You just have to use the right tool for the problem.
CHIQRSX9+ is Turing complete, and it can read and write from standard channels with
C
.źródło
C, 136 bytes
I have never felt like any of my solutions are good enough to post on here, but made this for fun, and figured that it will be my gateway drug into code golf.
źródło
Javascript, 177 bytes
This assumes that there are two functions, print and readLine:
źródło
LispLisp (16,636)
I'm sorry.
źródło
8086 Machine Code, 27 bytes
Unassembled:
Input string in
SI
, length inCX
. Output string buffer atDI
.Test IBM PC DOS program output:
Download R13.COM test program (PC DOS).
źródło
Haskell - 112 characters
źródło
K, 31
źródło
{x^a(,/-13 13#\:a:.Q.A)?x}
for 26 bytesTcl, 74 chars
źródło