Aufgabe
Sie erhalten eine Zeichenfolge in der Eingabe, die nur aus den Zeichen von a
bis besteht z
, dh die Eingabe entspricht dem regulären Ausdruck /^[a-z]*$/
.
Ihre Ausgabe sollte ein vollständiges Programm in der gleichen Sprache sein, dessen Quellcode die Eingabe enthält und eine korrekte Quine ist.
Beispiel
Ihr Programm würde die Ein- abc
und Ausgabe erhalten:
...abc...
Das obige sollte ein komplettes Programm in derselben Sprache sein, das keine Ein- und Ausgaben benötigt:
...abc...
dh es gibt sich selbst aus.
Wertung
Das ist Code-Golf . Kürzeste Antwort in Bytes gewinnt.
Antworten:
Python 3,
5761 BytesNimmt eine grundlegende Python 3 quine von hier und ersetzt die Variablennamen mit dem Eingang.
Anmerkung: Wie bereits in den Kommentaren von Hyper Neutrino aus, dies nicht funktioniert für reservierte Schlüsselwörter wiefor
,if
usw.Das Anhängen eines Zeichens, mit dem keines der reservierten Schlüsselwörter endet,
'x'
oder einer Zahl, behebt dies. (Ørjan Johansen).quelle
"for"
oder andere reservierte Wörter in Python.'x'
.Gelee , 9 Bytes
Generator
Probieren Sie es online!
Wie es funktioniert
Quine
Bei Eingabe von wird
quine
das folgende Programm generiert.Probieren Sie es online!
Wie es funktioniert
Dies ist die Standard-Gelee-Quine. Zuerst,
Setzt das linke Argument und den Rückgabewert auf den String
"quine\nØv"
.Dann
Ṙ
druckt eine String - Darstellung (der Code aus dem vorherigen Block) und gibt den unveränderten String.Nimmt danach
v
das linke Argument und übergibt es als Eingabe an das Jelly-ProgrammIn allen Jelly-Programmen wird nur der Hauptlink (der in der letzten Zeile definiert ist) ausgeführt, sodass die erste Zeile vollständig ignoriert wird.
Legt schließlich
Øv
den Rückgabewert auf fest"Ṙv"
, der implizit gedruckt wird, wenn das äußere Programm beendet ist.quelle
Haskell , 51 Bytes
q
Nimmt eine Zeichenfolge und gibt eine Zeichenfolge zurück.Probieren Sie es online!
Beispielausgabe für
putStr$q"test"
:Probieren Sie es online!
fst
zum Extrahieren des Haupttexts.show
, um das gesamte Tupel in eine Zeichenfolge zu verwandeln.mappend
, um die beiden vorherigen Funktionen zu kombinieren. Zweckmäßigerweise gibt esmappend
für zwei Funktionen eine Funktion, die jede Funktion auf ihr Argument anwendet und die Ergebnisse mitmappend
dem Ergebnistyp kombiniert (hier Zeichenfolgenverkettung).quelle
Unterlast , 14 Bytes
Probieren Sie es online!
Verwenden Sie als
(test)(~aSaS(:^)S):^
- das ist selbst ein Quine.Wie es funktioniert
(test)
und(~aSaS(:^)S)
sind Zeichenkettenliterale, also legen Sie sich auf den Stapel, wobei letzterer oben liegt.:
dupliziert die(~aSaS(:^)S)
Zeichenfolge über dem Stapel und^
führt den Inhalt als Unterprogramm aus.~
tauscht also jetzt die beiden obersten Elemente auf dem Stapel aus(test)
.a
Wraps(test)
in zusätzliche Klammern eingeschlossen.S
Nimmt die Zeichenfolge((test))
über den Stapel und druckt sie ohne die äußeren Klammern (die nur wörtliche Syntax sind).aS
der Rest(~aSaS(:^)S)
des Stapels in ähnlicher Weise gedruckt (mit den Klammern).(:^)S
das Finale gedruckt:^
.quelle
)(
als Eingabe, denke ich.a
-z
.Unterlast , 14 Bytes
Probieren Sie es online!
Ein anderer Ansatz als die andere Unterlastantwort; Dies ist kein Quine, sondern ein Quine. Interessanterweise kommt es auf die gleiche Anzahl von Bytes. Dies ist eine Funktion, die ihr Argument vom Stapel auf die Standardausgabe überträgt.
Erläuterung
Die resultierende Funktion sieht folgendermaßen aus:
Mit anderen Worten, es wird ein String-Literal ausgegeben, das sich selbst enthält, gefolgt von
:^
. Dies ist eindeutig eine Quine (weil das, was gerade gedruckt wurde, derselbe Code ist, den wir ausgeführt haben, um es überhaupt auszuführen).quelle
a
, solange Sie nichts dagegen haben, dass der Segmentierungsfehler in stderr ausgegeben wird, wenn die Eingabe enthälta
.(
alle Programme, ohne ein Zeichen zu sein, das in der Eingabe erscheint, notwendigerweise nichts tun oder abstürzen. Ich glaube nicht einmal, dass das spezifisch für TIO ist. Das Programm ist ungültig, hat aber zum Zeitpunkt des Absturzes bereits die gewünschte Ausgabe produziert.V , 9 Bytes
Probieren Sie es online!
Dies ist eine Modifikation des Standard-V-Quines , und ich bin stolz darauf, dass dies nur ein Byte länger ist.
Hexdump:
Erläuterung:
Dann stoppt die Aufnahme implizit und wird wiedergegeben. Dies erzeugt die folgende Ausgabe:
Da
j
die Wiedergabe des Makros unterbrochen wird,Hello
wird niemals etwas ausgeführt.quelle
Python 2, 38 Bytes
Obwohl die Eingabe nur zur Unterstützung erforderlich ist
a-z
, sollte dies mit jeder einzeiligen Eingabe funktionieren, die keine NUL-Bytes enthält.Probieren Sie es online aus
Für die Eingabe
abc
ergibt sich als Quine:Probieren Sie es online aus
quelle
RProgN 2 , 15 Bytes
Erklärt
Verwendung des Formats
Wo
%q
ist die Qouted-Eingabe, bildet eine Quine des GeschmacksDies ist eine Standard-RProgN2-Quine,
{']C'.}]C
die vor Beendigung die eingegebene Zeichenfolge anfügt und zerstört.Probieren Sie es online!
quelle
Retina , 14 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
Für die Eingabe
x
gibt diese Folgendes aus:Erläuterung
Die Ausgabe ist eine geringfügige Modifikation des Standard-Quines . Wir verwenden einfach den regulären Ausdruck
|x
anstelle des leeren regulären Ausdrucks. Da das|
noch zulässt (und priorisiert) und leere Übereinstimmung, ist die Funktionalität selbst nicht betroffen, und dax
immer nur Buchstaben enthalten werden, ist die gültige Regex-Syntax selbst garantiert.Beim Drucken wird eine Technik verwendet, die der des Quines selbst ähnelt. Um das Duplizieren des Quines zu vermeiden, fügen wir
¶\(*S1`|
nur einmal am Anfang der Zeichenkette ein. Das ist genau die Hälfte des Quellcodes. Um es zweimal ohne Zeilenvorschub zu drucken, verwenden wir die Konfiguration\(\
, die das gesamte Programm in eine Gruppe einwickelt und bewirkt, dass sowohl die Bühne selbst als auch die Gruppe, die es enthält, das Ergebnis ohne Zeilenvorschub druckt.quelle
Japt , 14 Bytes
Testen Sie es online! Für eine Eingabe von
abc
, Outputswas sich ausgibt. Testen Sie es online!
Erläuterung
Dies ist eine Erweiterung des Standard-Japt-Quine mit Nutzlast:
Der einzige Unterschied besteht darin, dass wir
ª`abc
am Ende anfügen , was in JavaScript im Grunde genommen der Fall ist||"abc"
. Da das Ergebnis des ersten Teils immer eine nicht leere Zeichenfolge ist (truey), wird die||
nie ausgeführt.Es gibt mehrere alternative Versionen derselben Länge:
quelle
CJam ,
16 bis14 BytesProbieren Sie es online!
Wie es funktioniert
Welches gibt sowas aus
"`_~\"test\";"`_~"test";
.quelle
JavaScript, 21 Bytes
quelle
Perl 5 , 35 Bytes
Probieren Sie es online!
quelle