Wenn wir uns auf die druckbaren ASCII-Zeichencodes in Dezimalform beziehen, wissen wir, dass von 32 bis 126 die druckbaren Zeichen 32 (Leerzeichen) sind. Ihre Herausforderung besteht darin, ein Programm zu schreiben, das nur Zeichen von 32 bis 125 (außer 126) verwendet und bei Ausführung seinen eigenen Quellcode ausgibt, mit der Ausnahme, dass für jedes Zeichen im Quellcode der ASCII-Code um eins erhöht wird.
Zum Beispiel, wenn der Quellcode war
main(){printf("Hello World");}
seine Ausgabe wäre
nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~
Folgendes ist verboten:
- Lesen / Schreiben / Verwenden externer Dateien oder Speicher (einschließlich Internet)
- Lesen / Echo Ihres eigenen Quellcodes
- Quellcodes mit weniger als 2 Zeichen (sie machen keinen Spaß). Muss größer oder gleich 2 sein.
Machen Sie es zu einem Beliebtheitswettbewerb, bei dem nach einer Wartezeit von mindestens zwei Wochen die Antwort in einer beliebigen Sprache mit den höchsten Bewertungen gewinnt, wobei die geringere Anzahl von Zeichen der Auslöser ist.
popularity-contest
quine
Fixpunkt
quelle
quelle
~
wirklich zu verwenden, ist für GolfScript zum Kotzen. Ich wette, du hast das mit Absicht getan. :-)Antworten:
Python (27 Zeichen)
In der Python-Shell gibt das folgende Skript das gewünschte Ergebnis aus:
Ja! es gibt aus:
quelle
huh? 5 Zeichen
Beachten Sie, dass das 5. Zeichen ein Leerzeichen danach ist
Ntbg
. Dies ist der gleiche Trick wie in einer meiner vorherigen Antworten .Ntbg
ist ein ungültiger Pfad, daher gibt der Interpreter Folgendes ausOuch!
:quelle
PHP (351)
Ich bin mir sicher, dass es einen besseren Weg gibt, dies zu tun, da ich neu im Codegolf bin, aber hier ist meine PHP-Lösung:
Ausgabe:
quelle
TI-BASIC, 10
Für Ihren TI-83/84 Rechner!
Ausgänge:
quelle
GolfScript, 15 Zeichen
Ausgabe:
Probieren Sie es online aus.
Eine ziemlich einfache Lösung, die auf der Technik basiert, die ich für meinen Einstieg in die Herausforderung "Rotierendes Quin" verwendet habe . Das knifflige Detail ist, dass das Zeichen
~
(ASCII 126) von den Herausforderungsregeln nicht zugelassen wird, sodass ich es nicht zum Ausführen meines Codeblocks verwenden kann. Glücklicherweise,1*
kann als Synonym dafür verwendet werden.Erläuterung:
Der Codeblock
{`{)}%"/2+"}
wird vom dupliziert.
, und die zweite Kopie wird von1*
(technisch gesehen eine Schleife mit einer Iteration) ausgeführt, wobei die andere Kopie auf dem Stapel verbleibt.`
Stringt den Codeblock innerhalb des Codeblocks und durchläuft{)}%
(die ASCII-Codes von) seinen Zeichen, wobei jeder um eins erhöht wird. Schließlich"/2+"
drückt die Literalzeichenfolge/2+
(die ist.1*
auf den Stapel durch ein verschoben). Am Ende des Programms druckt der GolfScript-Interpreter dann automatisch alles auf den Stapel.Ps. Ja, ich weiß, dass dies eher ein Beliebtheitswettbewerb als strenges Code-Golf ist , aber was soll ich sonst mit GolfScript - ASCII-Kunst machen? ;-)
quelle
JavaScript, 117 Zeichen
Ich weiß, dass es kein Code-Golf ist, aber ich habe es trotzdem gespielt.
(Ich lese meinen eigenen Quellcode nicht; ich benutze einfach die Funktion des
Function
ObjektstoString
.)quelle
Java - 1331 Bytes, 618 Bytes und 504 Bytes
Hier ist es in Java. Das Coole ist, dass es ziemlich lesbar und flexibel ist. Sie können experimentieren, um die
SHIFT
Variable in 0 zu ändern , und es wird ein Quine sein. Sie können es auf einen beliebigen Wert ändern, einschließlich negativer Werte, und der Code wird entsprechend verschoben.Der einzige Nachteil in der vorherigen Klasse sind jedoch die Zeilenumbrüche, die in der Fragenspezifikation nicht zulässig sind (außerhalb des Bereichs von 32 bis 125). Also gebe ich hier eine Golfversion, die frei von Zeilenumbrüchen ist (und frei von den Macken, mit denen sie umzugehen sind). Sie können den Wert der
S
Variablen bearbeiten , um die Verschiebung zu ändern. Dies hat 618 Bytes:Wenn wir die Feineinstellung des Offsets verwerfen und den Wert der Verschiebung fest codieren, können wir sicherlich eine vollständig golfene Version mit 504 Bytes erstellen:
quelle
Perl 5, 284 Zeichen enthalten die Zeilenvorschübe
Die Nichtverwendung von ~ machte es etwas kniffliger.
quelle
Python, 99
Ausgabe:
Dies kann auf 75 Zeichen gekürzt werden , es wird jedoch nach der Ausgabe ein neues Zeilenzeichen gedruckt, was die Regeln technisch übertrifft:
quelle
\x09
) an das Ende, da ein um eins verschobener Tabulator eine neue Zeile (\x0A
) ist. Dann würde Ihre gekürzte Version mit 76 Bytes arbeiten.Stax , 16 Bytes
Führen Sie es aus und debuggen Sie es
Anpassung der
"34bL"34bL
Quine. Da jetzt"
wird#
was nicht entkommen muss können wir es einfach in den String aufnehmen.quelle
Lua - 192
Ziemlich einfach,
quelle
C - 156
Nur die klassische C-Quine mit den erforderlichen Modifikationen
PS, ist anscheinend
sprintf(f,...,f,...)
ein segfault.quelle
JavaScript (276)
Ohne zu verwenden
.toString()
:quelle
Rubin, 63
Verdammt, ich kann hier keinen Heredoc benutzen.
Ruby hat eine native Methode
.succ
, die dies für ein Zeichen ausführt, und das Drucken ohne Zeilenvorschub ist kürzer als das Drucken mit. Das funktioniert also ziemlich gut.quelle
C 153
Eine weitere Modifikation des klassischen ...
quelle
> <>, 16 Bytes
Probieren Sie es hier aus!
Dies ist mehr oder weniger nur ein Standard-Quine in> <> (ohne die
g
Anweisung zu verwenden). Die einzigen Unterschiede sind, dass es seinen eigenen Quellcode nicht liest und jedes Zeichen um 1 erhöht, bevor es ausgegeben wird.Ausgänge
*> <> , 15 Bytes (nicht konkurrierend)
Probieren Sie es hier aus!
quelle
Tcl , 89 Bytes
Probieren Sie es online!
Tcl , 89 Bytes
Probieren Sie es online!
Zwei Ansätze; die gleiche Bytelänge!
quelle
Haskell , 64 Bytes
Probieren Sie es online!
quelle
Perl 5 , 55 Bytes
Probieren Sie es online!
quelle
J, 42 Bytes
quelle