Schreiben Sie ein vollständiges Programm, das eine boolesche oder nicht negative Ganzzahleingabe akzeptiert. Es muss:
- Gibt seinen eigenen Quellcode aus, wenn der Eingabewert falsch ist
- Geben Sie den eigenen Quellcode umgekehrt aus, wenn der Eingabewert wahr ist
Ihr Programm kann weder palindrom sein noch seinen eigenen Quellcode lesen.
Dies ist Code Golf - kürzester Code in Bytes gewinnt.
Antworten:
Gol> <> , 9 Bytes
Es ist mir ein wenig unangenehm, dies zu posten, da wir bereits die Antworten von> <>, Vitsy und Minkolang haben. Die einzigen Ergänzungen zum Standard-Quine sind
I
(Integer-Eingabe lesen),?
(Next If Truthy ausführen) undr
(Reverse Stack).Probieren Sie es online aus .
quelle
sP#Hr?I"
CJam,
1716 BytesTeste es hier.
Eine recht unkomplizierte Modifikation der Standard-Quine. Andere Lösungen für 17 Bytes:
Wenn ich davon ausgehen kann, dass die Eingabe nur 0 oder 1 ist (als Ersatz für einen Booleschen Wert, für den es in CJam keinen dedizierten Typ gibt), erhalte ich 15, indem ich Folgendes weglasse
g
:Erläuterung
quelle
g
.Pyth, 17 Bytes
Eine einfache Modifikation des Standard-Pyth-Quines.
quelle
> <>, 17 Bytes
Benötigt das Flag -v (+1 Byte), um Eingaben auf den Stapel zu verschieben (oder um Eingaben zuvor auf dem Online-Interpreter auf den Stapel zu setzen).
Sie könnten das Folgende für die gleiche Anzahl von Bytes (ohne das Flag) tun, wenn nur Ganzzahleingaben zulässig wären (dh 0 für falsch, 1 für wahr).
Probieren Sie es online aus
Wahrheit / Falschheit für> <> ist nichts anderes als 0 bzw. 0.
quelle
Vitsy , 15 Bytes
... Ich ... Ich besiege CJam! (schreit vorbei) Mama! Schau, ma, ich habe es getan!
Erläuterung:
Neuere Version von Vitsy , 11 Bytes
quelle
Javascript (ES6), 42 Byte
Dies ist eine Modifikation meines Bling Quine . Es ist auch doppelt so lang.
quelle
prompt()
es notwendig ist, es sei denn, wir wechseln zu Node.JS. Ich glaube$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())
, dass es richtig funktioniert, obwohl es vielleicht mehr Golf gespielt werden könnte.Burlesque, 40 Bytes
Erläuterung:
Burlesque verfügt über integrierte Funktionen zur Stapel- und Codemanipulation. Sie können zwar nicht auf den Quellcode des Programms zugreifen, aber Sie können auf den verbleibenden Code zugreifen, der in Zukunft ausgeführt werden soll. Dies bedeutet
#Q
, dass der gesamte darauf folgende Code zurückgegeben wird, weshalb wir alles#Q
zu dem Code addieren müssen, mit dem wir arbeitenri#Q
.++1 2
ist technisch illegaler Code, da er stapelbasiert ist. Wir können den Code jedoch so manipulieren, dass er wie folgt ausgeführt wird1 2++
:Die Arbeit mit diesen integrierten Funktionen ist unglaublich knifflig und niemand hat sie bisher für produktive Zwecke verwendet, außer für quine-bezogene Dinge. Wenn du umkehrst
++1 2
bekommst du2 1++
was produziert21
und nicht12
. Der Grund, warum der obige Code erzeugt,12
ist, dass er#Q
auch das beinhaltet,<-
damit wir am Ende viel mehr ausführen als nur2 1++
: p. Am Ende führen wir das aus,2 1++#q<-
was produziert12
.Wir können tatsächlich Dinge in unserem Code ersetzen, zum Beispiel ersetzt dieser Code alle Vorkommen von sich
?+
selbst durch?*
Verwendung:
quelle
Haskell,
126118108 BytesErwartet
0
oder1
als Eingabe.quelle
Minkolang 0,10 , 13 Bytes
Probieren Sie es hier aus.
Das ist genau wie das Standard - quine außer für diese vier Zeichen:
n,?r
. Nimmtn
eine Ganzzahl von der Eingabe,,
invertiert sie und?
überspringt sie,r
wenn die Eingabe wahr ist. Andernfalls wirdr
der Stapel umgekehrt, sodass er in umgekehrter Reihenfolge ausgegeben wird.quelle
Python 2, 51 Bytes
quelle
Java 10 (volles Programm), 282 Bytes
Probieren Sie es online aus.
Java 10 (als Lambda-Funktion), 154 Bytes
Probieren Sie es online aus.
Erläuterung:
Eine Erklärung:
var s
enthält den unformatierten Quellcode%s
wird verwendet, um diesen String mit in sich selbst zu setzens.format(...)
%c
,,%1$c
und34
werden zum Formatieren der doppelten Anführungszeichen verwendets.format(s,34,s)
setzt alles zusammenUnd wird dann
new StringBuffer(s).reverse()
verwendet, um den Quine-String bei Bedarf basierend auf dem Eingabe-Booleschen Wert umzukehren.quelle
05AB1E , 21 Bytes
Probieren Sie es online aus.
Änderung der Standard- Quine
0"D34çý"D34çý
durch Hinzufügen‚sè
.Erläuterung:
PS: Druckt automatisch eine nachgestellte Zeile. Wenn dies auch umgekehrt werden soll, sind es stattdessen 23 Bytes:
Probieren Sie es online aus. (
?
ist ein expliziter Ausdruck ohne Zeilenumbruch )quelle