Die Herausforderung: Einen Eingang beliebiger Länge auslesen und den ROT13 des Eingangs erzeugen . Alle Zeichen außer AZ sollten wörtlich in die Ausgabe kopiert werden, und Groß- / Kleinschreibung sollte nach Möglichkeit beibehalten werden.
Jede Sprache, die Standard-Streams lesen und schreiben kann, ist ein faires Spiel.
code-golf
cryptography
MiffTheFox
quelle
quelle
Antworten:
Bash, 23 Bytes
Kanonische Antwort mit 23 Zeichen:
quelle
tr A-za-m N-ZA-z
(16 Zeichen)[\\]^_`
die Eingabe ein. Es wirdNOPQRS
eher als zurückkommen[\\]^_`
, zumindest in der Version, dietr
ich habe. (Dies sind die sechs Zeichen in ASCII, die zwischenZ
und liegena
. Offensichtlich werden alle anderen Zeichen korrekt funktionieren.)Bash - 5 Zeichen
quelle
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
quelle
Befunge -
7x30 = 2106x26 = 156 ZeichenNeue Streaming-Version, die sowohl Groß- als auch Kleinbuchstaben unterstützt und unbegrenzte Eingaben unterstützen sollte.
Die alte Version
Dadurch werden die Werte in einem eigenen Quellcode gespeichert. Zeigt wirklich, wie schrecklich es ist, gespeicherte Werte in derselben Reihenfolge auszugeben, in der Sie sie erhalten. Unterstützt nur Kleinbuchstaben.
Ich bin mir nicht sicher, welche Einschränkungen dies hat, wenn http://www.quirkster.com/iano/js/befunge.html als Interpreter verwendet wird, der bei großen Eingaben offenbar nicht funktioniert.
quelle
Ruby -
60 57 3837 ZeichenEdit: Und gerade realisiert Ruby Strings haben eine
tr
Methode.Prüfung
Gibt:
quelle
puts
, und 'Az' ist eine Abkürzung für 'A-Za-z''A-z'
es tatsächlich'A-Z[\]^_
a-z ", damn ascii having characters between
Z" und zu seina
.puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
.gets
nur die erste Zeile zurückgegeben, wobei $ <. Read bis EOF gelesen wird. Die Frage sagt nichts darüber aus, ob die Eingabe neue Zeilen enthalten kann, so dass ich mich nur zur Vorsicht geirrt habe.Vim, 5 Tastenanschläge
Angenommen, der normale Modus und der Text sind bereits im Puffer geschrieben:
ggg?G
Oder fälschlicherweise Vimgolfs Konventionen:
g?GZZ
Sie können es auch als Terminalbefehl wie folgt aufrufen:
Ich denke, das letztere würde als "Programm" von 8 Zeichen zählen (
norm g?G
)quelle
norm g?G
ist eine Abkürzung fürnormal g?G
8 Zeichen.gg
kann. Ich würde sagen, 3 Tastenanschläge, wenn die Datei geöffnet ist.g?GZZ
).C -
8379 ZeichenLesbare Version:
quelle
Python (117 Bytes)
Hier ist eine Python-Version, die die
rot13()
-Methode vermeidet .quelle
import sys
und verwendensys.stdin.read()
.[]
, um die Liste zu einem Generator zu machen: tio.run/…tr///
Lösung in Perl (39 Zeichen), Boilerplate kann entfernt werden mit-p
:Verwenden von
-p
(23 Zeichen einschließlich des zusätzlichen Schalters):quelle
R, 37 Bytes
example("chartr")
führt die Beispiele für auschartr
, einschließlich derrot
Funktion, dieROT13
standardmäßig ... ist.quelle
Gleichstrom (
111108 für den Gleichstrom selbst)Ok, hier ist es (meistens) in dc und etwas sed und od Magie, um es in das richtige Format für den Code zu bringen. Wenn Sie die Eingabe thing (
echo -n MESSAGE |
) nicht zählen, sind es 160 Bytes:Aus Gründen des Interesses ist das DC-Programm selbst nur 108 Byte lang und damit kürzer als die Python-Version ohne Bibliothek. Es bewahrt auch Fall und Zeichensetzung und schlägt Javascript in der obigen Vorlage! Wenn ich nur die Ausgabe von od besser analysieren oder besser ersetzen könnte.
EDIT: Es ist erwähnenswert, dass die Frage keine nachgestellte neue Zeile anzeigt,
10P
die mir drei weitere Bytes erspart.BEARBEITEN 2: Es gibt keine Spezifikation für das Format der Eingabe, daher gehe ich davon aus, dass es für mein Programm passend ist: P
quelle
Befunge-93, 85 (Raster: 41 x 3 = 123)
Dies ist eine alte Frage, aber ich dachte, ich würde sie wiederbeleben, um eine etwas schönere Befunge-Antwort zu posten.
Sie können es hier testen . Geben Sie jeweils ein einzelnes Zeichen ein. es endet mit der Eingabe von a
.
Zeichens (Sie können dies ändern, indem Sie"."
die rechte Seite der zweiten Zeile ändern ). Funktioniert mit Groß- und Kleinschreibung sowie Interpunktion und ohne Eingabebegrenzung.Ich erwarte nicht, dass dies eine Menge positive Stimmen oder ähnliches einbringt, aber ich wollte nur demonstrieren,
wie großartig Befunge tatsächlich istdass man es ein bisschen besser machen kann als die andere Antwort.Ich könnte es in Befunge-98 wahrscheinlich noch kürzer machen.
quelle
>$! _
da Sie an dem Punkt, an dem Sie einen Wert ungleich Null erwarten, zwei Nullen auf dem Stapel haben.PHP -
1039880 Zeichen(ohne str_rot13 ())
quelle
Delphi, 110
quelle
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.
speichert einen Charakter :)Haskell, 100 Zeichen
quelle
Perl6 (54)
quelle
Java 251 Zeichen
quelle
Python 3 (107)
Ok, ich verspreche, diese Frage jetzt nicht mehr zu beantworten, aber ich fühlte mich gezwungen, die DC-Antwort in Python zu schlagen. Das spiegelt mich als Person wahrscheinlich schlecht wider :).
quelle
C:
6968 ZeichenOkay, ich weiß, dass dieser Thread schon lange tot ist, aber ich konnte die (lange) C-Lösung nicht ausstehen, die nicht einmal auf Clang kompiliert (aber auf GCC).
Es ist wahrscheinlich fast noch drückbar.Es war auf jeden Fall drückbar. Und es war nicht nur quetschbar, es war auch möglich, es rekursiv zu machen.quelle
05AB1E ,
1312 BytesEin Byte gespeichert dank robbie0630 wurde gespeichert
Probieren Sie es online!
Erläuterung
quelle
--debug
durchgearbeitet, und es scheint, dass˜
dies in diesem Fall ein No-Op ist und herausgeschnitten werden kann.PHP - 41 Zeichen
quelle
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))}))
Diese Lösung löst das Problem, indem dem Zeichencode 13 hinzugefügt wird, wenn sich das betreffende Zeichen in der ersten Hälfte des Alphabets befindet, oder 13 subtrahiert wird, wenn es sich in der zweiten Hälfte befindet.
quelle
+(c.toLowerCase()<'n'?13:-13))
mit-13+26*/[a-m]/i.test(c)
.CHIQRSX9 + , 1
Sie müssen nur das richtige Werkzeug für das Problem verwenden.
CHIQRSX9 + ist Turing-vollständig und kann mit von Standardkanälen lesen und schreiben
C
.quelle
C 136 Bytes
Ich hatte noch nie das Gefühl, dass eine meiner Lösungen gut genug ist, um sie hier zu veröffentlichen, aber ich habe sie zum Spaß gemacht und mir gedacht, dass dies mein Einstieg in den Code-Golfsport sein wird.
quelle
Javascript, 177 Bytes
Dies setzt voraus, dass es zwei Funktionen gibt, print und readLine:
quelle
LispLisp (16.636)
Es tut mir Leid.
quelle
8086 Maschinencode, 27 Bytes
Zerlegt:
Eingabe String in
SI
, Länge inCX
. String-Puffer ausgeben umDI
.Testen Sie die Ausgabe des IBM PC DOS-Programms:
Laden Sie das Testprogramm R13.COM (PC DOS) herunter .
quelle
Haskell - 112 Zeichen
quelle
K, 31
quelle
{x^a(,/-13 13#\:a:.Q.A)?x}
für 26 BytesTcl, 74 Zeichen
quelle