Ihre Aufgabe ist es, die genaue Zeichenfolge auszugeben
The Jabberwocky
ohne Eingabe. Es gelten die normalen Regeln für die Eingabe und Ausgabe, sodass sowohl Funktionen als auch Programme zulässig sind.
Natürlich gibt es einen Haken, ohne einen Haken wäre es kein Spaß. Wenn in Ihrem Programm nicht-alphabetische Zeichen entfernt werden, muss das Gedicht The Jabberwocky (ohne Berücksichtigung der Groß- / Kleinschreibung) gestartet werden . Um das Gedicht zu beginnen, muss es eine fortlaufende Teilfolge des Gedichts sein, die am Anfang beginnt. Die leere Zeichenfolge ist in Ordnung (obwohl Sie wahrscheinlich nicht sehr gut punkten werden).
Hier ist der Text als Referenz:
twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebewarethejabberwockmysonthejawsthatbitetheclawsthatcatchbewarethejubjubbirdandshunthefrumiousbandersnatchhetookhisvorpalswordinhandlongtimethemanxomefoehesoughtsorestedhebythetumtumtreeandstoodawhileinthoughtandasinuffishthoughthestoodthejabberwockwitheyesofflamecamewhifflingthroughthetulgeywoodandburbledasitcameonetwoonetwoandthroughandthroughthevorpalbladewentsnickersnackheleftitdeadandwithitsheadhewentgalumphingbackandhastthouslainthejabberwockcometomyarmsmybeamishboyofrabjousdaycalloohcallayhechortledinhisjoytwasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabe
Hier ist ein Programm, mit dem Sie diese Eigenschaft testen können.
Wenn Sie kein Gedicht mehr verwenden können, dürfen Sie keine zusätzlichen alphabetischen Zeichen verwenden.
Alphabetische Zeichen sind Zeichen a
- z
und A
- Z
hier ist die vollständige Liste:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Wertung
Ihr Programm wird nach der Anzahl der verwendeten nicht-alphabetischen Bytes bewertet, wobei weniger besser ist.
Hier ist ein Haskell-Programm, das Antworten liefert. (Dies setzt voraus, dass Eingaben gültig sind)
Beispielprogramm
Das folgende Programm wäre gültig:
twas&*brilliga77812nd Thesli thyt Oves didgy reand Gim bleinth ewab eal lmims ywe""""""""
ret h eb or o g o ve sa n dthemomerAthsoutgrabebewaretheJABBERWOCKmysonthe)(*)()((*98980908(()*(jawsthatbit
Wenn auf alphabetische Zeichen reduziert, ist dies:
twasbrilligandTheslithytOvesdidgyreandGimbleinthewabeallmimsyweretheb orogovesandthemomerAthsoutgrabebewaretheJABBERWOCKmysonthejawsthatbit
Das passt zum ersten Teil des Gedichts (Groß- und Kleinschreibung wird nicht berücksichtigt).
Dieses Programm würde 59 Punkte erzielen, da es die folgenden nicht-alphabetischen Zeichen enthält:
&*77812 """"""""
)(*)()((*98980908(()*(
quelle
Jabberwocky
(ohne Artikel) ist, während der Name des Tieresthe Jabberwock
(ohne -y ) ist. Natürlich können Sie die erforderliche Ausgabe jetzt nicht ändern, aber ...Antworten:
oOo CODE , Punktzahl 0
Vielen Dank an Dennis für den Brainfuck-Code.
Probieren Sie es online!
Ich habe schlechte Nachrichten für diese Herausforderung ... :(
oOo CODE ist nur eine binäre Kodierung von Brainfuck, bei der für jedes Bit der Fall eines Buchstabens verwendet wird. Also ja, da das Gedicht lang genug (oder die Ausgabe kurz genug) ist, um ein Brainfuck-Programm abzudecken, das gedruckt wird
The Jabberwocky
(ohne sich wirklich anstrengen zu müssen), wird dies zu einer trivialen optimalen Antwort.quelle
C, Punktzahl
1047974Vielen Dank an @gastropner für die Senkung der Punktzahl auf 79 und an @ wizzwizz4 für die weitere Senkung auf 74!
Probieren Sie es online!
quelle
//abcdefgh\n
1 weniger Zeichen als/*abcdefgh*/
?Fission 2 , Score 3
Probieren Sie es online!
Erläuterung
Wir können die meisten Kleinbuchstaben ignorieren, sie setzen einfach die Energie eines Atoms auf ihren Codepunkt.
Der Großbuchstabe
R
ist der Einstiegspunkt des Programms, da hierdurch ein Atom erstellt wird, das richtig funktioniert. Wie gesagt, wir können das ignorierene
. Dann"
schaltet String - Modus, der nur alle Zeichen druckt er auf STDOUT begegnet, die uns gibtThe Jabberwock
. Das lässt nur diey
. Wir könnten das verwendeny
, das sofort in kommty
, aber dann müssten wir mindestens ein Nicht-Buchstaben-Byte für das Drucken (!
) und möglicherweise ein anderes für das Beenden des Programms verschwenden .Stattdessen warten wir geduldig darauf, dass wir
y
gleich vorhero
im Gedicht auftauchen . Denn damit können wir verwenden,O
was das Zeichen druckt und das Atom zerstört und das Programm beendet. Auf diese Weise benötigen wir nur Leerzeichen und zwei Anführungszeichen, die keine Buchstaben sind.quelle
Alice , Punktzahl 7
Probieren Sie es online!
Das
/
bewirkt, dass sich die IP diagonal bewegt und von den Rändern abprallt, sodass die tatsächlich ausgeführten Befehle ausgeführt werden"The "ono@
. Dern
Befehl (im Ordnungsmodus) drückt die Zeichenfolge "Jabberwocky", wenn die Oberseite des Stapels leer ist, undo
gibt die Oberseite des Stapels aus.quelle
Gelee , Punktzahl
64Ein vollständiges Programm, das das Ergebnis
druckt (als monadischer Link druckt es
The Jabberwock
als Nebeneffekt und gibt das Zeichen zurücky
)Fügt die Zeichen
“ ””
in ein in Groß- und Kleinschreibung geändertes Präfix des Gedichts ein.Das funktioniert, weil:
Das letzte
h
vorherSOUTGRABEBEWARE“The Jabberwock”m”y
ist (zumindest zum Zeitpunkt des Schreibens!) Ein undefiniertes Atom, das alles zu einer neuen Verknüpfung macht, die die Standardeingabe von0
und einige monadische Funktionen ausführtSOUTGRABEBEWARE
, die ergeben1
(siehe unten).1“The Jabberwock”m
führt dannm
, modulo Slicing, auf"The Jabberwock"
mit einer Scheibe Größe1
, wodurch man"The Jabberwock"
.Das Trailing
”y
ist eine neue führende Konstante, daher gibt Jelly diese Liste von Zeichen aus und gibt dann das Zeichen ausy
. Da dies nun das Ende des Programms ist, wird dieses dann gedruckt.Vorherige 6 Byter:
Probieren Sie es online!
Die sechs Nicht-Gedicht-Charaktere sind ein Zeilenvorschub
“ ”1“
.Alternative 6s:
quelle
m1“y
? Es wird immer noch gedrucktThe Jabberwock
und beginnt mit einer Teilmenge des Gedichtsm1“y
(oder es könnte seinm1”y
) wird benötigt, weil wir drucken müssenThe Jabberwocky
, nichtThe Jabberwock
.Holzkohle , Punktzahl 3
Probieren Sie es online!
Die drei Zeichen eingefügt:
⎚ ⌈
... es funktioniert auch mit dem ganzen Gedicht .
Wie?
quelle
Ruby (
-p
), Punktzahl 12Probieren Sie es online!
Missbrauche alle Kommentare!
Mit der
-p
Flagge druckt Ruby alles, was in gespeichert ist$_
. Benötigt eine einzelne Zeile einer Eingabe.quelle
-p
hier verwenden können, weil die Eingabezeile erforderlich ist. Msgstr "Ihre Aufgabe ist es, die genaue Zeichenfolge auszugeben,The Jabberwocky
ohne Eingaben zu machen."-p
ist ein Befehlszeilen-Flag, keine Eingabe.Holzkohle , Kerbe:
54Probieren Sie es online! Bearbeiten: 1 Byte dank nur @ ASCII gespeichert. Erläuterung: Wird in den folgenden ausführlichen Code übersetzt:
quelle
Foo , 5 Punkte
Probieren Sie es online!
quelle
> <> , Spielstand:
1312Probieren Sie es online!
Überprüfung und Bewertung .
Leitet sofort zur zweiten Zeile um, die "The Jabberwockmy" rückwärts zum Stapel drückt.
$~
Knallt den Überschuss, druckt den gesamten Stapelm
und kehrt>ro<
ihn vorher um.quelle
Retina 0.8.2 , Score:
212018161386Probieren Sie es online! Bearbeiten: Punktzahl um 2 dank @MartinEnder reduziert.
quelle
*
anstelle von verwenden$*
).C, Punktzahl 23
Probieren Sie es online!
quelle
Yabasic , 13
Danke für die Antwort von @ Pavel's Ruby!
Probieren Sie es online!
quelle
VBA, Score 5
Im Direktfenster ausführen:
Wie es funktioniert:
-
-
-
-
-
1 Fragezeichen, 1 Leerzeichen und 3 Anführungszeichen. VBA sieht dies als
?"" & "The Jabberwock" & "" & "y"
oder?"The Jabberwocky"
quelle
Haskell , Punktzahl 12
Probieren Sie es online!
Definiert eine Nullargumentfunktion,
twasbrilligandtheslithytovesdidgyreandgimbleinthewabeallmimsyweretheborogovesandthemomerathsoutgrabebeware :: String
deren Ausgabe ist"The Jabberwocky"
.quelle
Java (OpenJDK 9) , Punktzahl 11
Probieren Sie es online!
Credits
quelle
()
auft
(nicht verwendeterVoid
Null-Parameter) und Entfernen des führenden Zeichenst
aus dem Kommentar.<s>16</s> 14
ziehe ich es jedoch vor, wie immer in jedem StackExchange-Netzwerk eine endgültige Antwort zu geben. Die Änderungen selbst werden auf der Revisionsseite aufgelistet , sodass jeder die tatsächlichen Änderungen und die Entwicklung der Antwort im Laufe der Zeit sehen kann, anstatt alle früheren und aktuellen Informationen in einem großen, unlesbaren Beitrag zu speichern.PowerShell , Punktzahl:
1910Probieren Sie es online!
Antwort von Port of Pavel's Ruby . Danke an Jo King für -9 Punkte.
Die Zeichenfolgen sind miteinander
+
verkettet. Nachdem die Kommentare entfernt und der Code analysiert wurden, sieht PowerShell dies als'The Jabberwock'+'y'
. Diese Zeichenfolge verbleibt in der Pipeline und die Ausgabe ist implizit.quelle
The
undJabberwock
zu einer Saite kombinieren ? Probieren Sie es online!Gelee , Punktzahl: 8
Probieren Sie es online!
Komprimiert nur die Zeichenfolge und ist eine leere Zeichenfolge, wenn alle nicht alphabetischen Zeichen entfernt werden. Ärgerlicherweise hat die kürzeste komprimierte Form
“81Iȯd»
alphabetische Zeichen, von denen keinest
oderw
quelle
Stax , 11
Online ausführen und debuggen!
Nur ein komprimiertes String-Literal, das wiederum gepackt ist.
quelle
05AB1E , Punktzahl 14
Probieren Sie es online!
quelle
Canvas , Punktzahl 5
Probieren Sie es hier aus!
quelle
SOGL V0.12 , Punktzahl 9
Probieren Sie es hier aus!
quelle
Pip , Punktzahl 5
Probieren Sie es online!
Glücklicherweise sind Kleinbuchstaben in Pip allesamt Variablen, die in Ausdrücken für sich genommen No-Ops sind. Der interessante Teil des Codes:
Der Scanner bricht
OOD
wieO
folgt abOD
.OD
ist eine undefinierte Variable, die als nil (falsey) ausgewertet wird; wir logisch-oder dies dann mit"The Jabberwock"
, undO
gibt es ohne eine neue Zeile aus.Einzelzeichenfolge
y
. Da es der letzte Ausdruck im Programm ist, wird er gedruckt.quelle
SmileBASIC, Punktzahl 10
Dies wurde so ziemlich direkt aus der Yabasic-Antwort übernommen, und
da SB eine bessere Sprache ist, könnenwir es durch die Verwendung von Bezeichnungen anstelle von Kommentaren verkürzen, wodurch einige der Zeilenumbrüche überflüssig werdenEs gibt auch diese alternative Lösung für die gleiche Größe:
Eine Bezeichnung in einem Ausdruck wird als Zeichenfolge behandelt. (
@my == "@my"
), wenn Sie also Zeichen 2 nehmen, erhalten Sie "y".quelle
C (gcc) , Score 58
Die nützliche Tatsache, dass Kommentare und Zeilenumbrüche im // Stil billiger sind als solche im alten Stil, ergibt sich direkt aus dem Kommentar von @ wizzwizz4 für die Antwort von @ Steadybox .
Das Flag -m32 ist erforderlich.
Einige könnten durch den langen Namen der aufzurufenden Funktion in eine unangenehme Stimmung versetzt werden, während andere solche Einwände zu Recht als nachahmend empfinden; Am Ende müssen wir alle das Sirenenlied mit den niedrigen Punktzahlen beachten.
Probieren Sie es online!
quelle
Partie,
15Punkte 11Grundsätzlich nur
echo The Jabberwocky
mit nicht verwendeten Variablen und Bezeichnungen.Alte Version (24 Punkte):
Erfordert, dass der Code in einer Datei mit dem Namen gespeichert
n.bat
und im selben Verzeichnis ausgeführt wird.Alternative Version, die einen beliebigen Namen haben kann (Punktzahl 27):
Erklärung (mit entfernten Variablen):
quelle
Perl 5, Unterprogramm, Punktzahl 11
aber mit dem Zeichen \ x86 (
v134
) anstelle des X.(perlsub sagt: "Die Signatur ist Teil des Rumpfs einer Unterroutine. Normalerweise ist der Rumpf einer Unterroutine einfach ein geschweifter Codeblock.")
quelle
y
?Ruby , 9 Bytes ohne Buchstaben
Probieren Sie es online!
Golf Version (zur besseren Lesbarkeit):
Verwendet einige lange und nutzlose Variablen. In Ruby können Sie
whatever_you_want=
einen Ausdruck voranstellen, und dieser Ausdruck wird trotzdem zurückgegeben, nur mit dem Nebeneffekt, dass eine Variable mit einem ungewöhnlichen Namen erstellt wird.quelle
Selbstmodifizierender Brainfuck , Punktzahl 16
Probieren Sie es online!
Erläuterung
Das Band ist anfangs so aufgebaut:
<[<<]
>
[.>]
>>.
quelle
Fission , Punktzahl 6
Probieren Sie es online!
quelle