Mein Freund hat neulich einen Lisp-Übersetzer gemacht, das heißt, er hat einen String genommen und s => th und S => Th konvertiert. Es war ziemlich lang und ich dachte, es könnte Golf gespielt werden.
Die Aufgabe besteht also darin, ein Programm / eine Funktion zu erstellen, die eine Eingabezeichenfolge akzeptiert, in lisp übersetzt und die Zeichenfolge ausgibt
Testfall
Sam and Sally like Sheep Tham and Thally like Thheep
Sally likes sausages Thally liketh thauthageth
Sally sells seashells Thally thellth theathhellth
Beachten Sie, dass es keine Rolle spielt, dass h die ganze Zeit wiederholt wird
Dies ist Code Golf, also gewinnt die kürzeste Antwort
s
oder nicht verwendetS
.LOOK OUT A SNAKE!!! -> LOOK OUT A THNAKE!!!
Antworten:
Gemeinsame Lithp, 62
Zuerst
(read)
die Eingabe (es sollte eine Zeichenkette sein). Zeichenfolgen in CL sind Sequenzen, mit denen wirmap
jedes Zeichen durchlaufen. Das erste Argument,map
das den Typ des Ergebnisses darstellt (z. B. könnte ich eine Liste aus einem Vektor erstellen). Wann ist esnil
Fall ist()
, werden die Ergebnisse verworfen. Die Funktion, die der Eingabe zugeordnet ist,princ
druckt einfach jedes Zeichen (nicht lesbar), mit Ausnahme derjenigen, die ersetzt werden sollen.quelle
s
durch ersetztth
: Schau dir die Antworten von Pyson an.s
->th
,S
->Th
,th
->th
,Th
->Th
.(defmacro cathe (&rest args) `(case ,@args))
Netzhaut, 9 Bytes
Probieren Sie es online!
Die offensichtliche Antwort.
quelle
JavaThcript ETh6, 38 Bytes
Zuerst habe ich mich für die offensichtliche Lösung entschieden
Aber ich habe es 4 Bytes runter gespielt
Hierbei wird das Regex-
i
Flag verwendet, das nach Mustern sucht, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird. Das Gute an Javascript ist, dass Sie eine anonyme Funktion für das Ersetzen (Regex) angeben können.Probieren Sie es hier aus
quelle
'Tt'[b>'r']+'h'
, aber es ist die gleiche LängeGNU Sed - 17
Die offensichtliche Antwort.
quelle
Jelly , 13 Bytes
Jelly 'thhiny neues tranthlate Atom wegzuwerfen. Probieren Sie es online!
quelle
Python 3 - 40 byteth
Erstes Golfen!
Es verwendet die Übersetzungsmethode des
str
Moduls, die eine Übersetzungstabelle akzeptiert. Die Übersetzungstabelle ist eine einfache Tabelle mit einem Schlüsselcode als Schlüssel und dem Ersatzschlüssel als Wert.dict
str
quelle
JavaThcript ETh6, 43 Byteth
Thuite:
quelle
V , 11 byteth
Probieren Sie es online!
Mit einer Sprache, die ich gemacht habe. Es ist nicht abgeschlossen, aber es ist wirklich gut im Regieren.
quelle
C 50 Bytes
Ersetzen Sie
\1
mit einem tatsächlichen\x01
Byte.jimmy23013 hat ein Byte gespeichert, und dann habe ich mit seinem Ansatz zwei weitere gespeichert! Vielen Dank.
quelle
&c
Parameter defekt ist. Aber es ist nicht so, denn auf einer Little-Endian-Architektur wird das zweite Byte davon die "Zeichenfolge"int
sein0x00
und sie tatsächlich beenden ... Das ist schrecklich clever, ich liebe es!s(c){c=getchar();c+=c-83&~32?0:26625;s(printf(&c));}
char
.'h\1'
05AB1E,
1412 BytesDie direkte Antwort.
Probieren Sie es online aus
2 Bytes dank @Adnan gespart
quelle
Java,
7165 BytesErster Golfversuch, warum also nicht mit Java?
quelle
replace
anstelle von verwendenreplaceAll
s->s.replace("S","Th").replace("s","th")
GNU AWK, 31 Bytes
Verwenden Sie einfach die
gsub
Funktion, um das untere oder obere S über Regex zu übersetzen und es anschließend zu drucken. Kann mit Dateien arbeiten, oder mitstdin
wie in diesem Fallquelle
CJam, 15 Bytes
Teste es hier.
Erläuterung
quelle
Python3 - 46 Bytes
Fiel 4 Bytes mit Hilfe von @DenkerAffe !
quelle
lambda s:s.replace("s","th").replace("S","Th")
ist etwas kürzer.C # 6.0 - 58 Bytes
Nimmt die Eingabezeichenfolge als Argument für die Funktion.
quelle
Haskell, 36 Bytes
quelle
f's'=...
Char
s ...Rust, 46 Bytes
Probieren Sie es online!
quelle
PHP, 42 Bytes
Wenn von einer Datei ausgeführt:
Rennen wie:
quelle
php -d error_reporting=0
, um Mitteilungen zu unterdrücken.TI-Basic, 126 Bytes
quelle
Str1
ändert sich nie undAns
hält am Ende eine Zahl.Str1
wieder zu retten ...Java, 101 byteth
Beachten Sie, dass dies im Gegensatz zur vorherigen Java-Antwort ein vollständiges Programm ist .
Bonus (muss dem
C-Präprozessorzugeführt werdenPreprozessor THEE Preprothethor weitergeleitet werden):quelle
Pyth, 14 Bytes
Testsuite
Vielen Dank an @LeakyNun für den Tippfehler!
quelle
MATL , 17 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 3, 53 Bytes
Verwendung:
quelle
lambda s:s.replace("s","th").replace("S","Th")
Verwendung:(lambda s:s.replace("s","th").replace("S","Th"))(s)
GameMaker-Sprache, 74 Byte
quelle
Matlab, 39 byteth
Ein direkter Ansatz:
quelle
Emacth Lithp, 61 byteth
Emacs Lisp versucht, beim Ersetzen von Text schlau zu sein, aber diese Schlauheit bricht ab, wenn die ersetzte Zeichenfolge nur ein Leerzeichen, dh den Großbuchstaben S, einnimmt wird stattdessen abgeglichen. Dies behandelt jedoch auch "SAM und Sally" so, wie man es möchte, dh "THAM und Thally".
quelle
x86-Maschinencode, 19 Byte
In hex:
Eingabe::
ESI
Eingabezeichenfolge,:EDI
Ausgabepuffer.Demontage:
quelle
test al, 'S'
beide gleichzeitig überprüfenBefunge 98,
3749 BytesOriginalfassung :
Abschlussausgabe nach Konsens:
Dies hinterlässt ein großes Hupenloch im Code-Raster, über das ich nicht sehr glücklich bin. Ich werde das untersuchen, wenn ich Zeit habe.
Das 49. Byte ist ein Leerzeichen am Ende der zweiten Zeile, einschließlich eines rechteckigen Gitters, um zu verhindern, dass ccbi (und wahrscheinlich andere Interpreter) eine unendliche Zeile mit "Th" ausliest und druckt.
quelle
35 Byteth of Julia:
Probieren Sie es online! (beinhaltet alle Testfälle)
quelle
SpecBASThpecBATh - 53 Bytesquelle