Für diese Herausforderung müssen Sie ein Programm erstellen, das eine Ganzzahl annimmt x
und seine Quelle x
mehrmals ausgibt .
Regeln
Dies ist Codegolf. Das Ziel ist es, Ihr Programm so zu golfen, dass es die geringste Anzahl von Bytes enthält
Wenn Sie eine Funktion übergeben, muss die Funktion
x
als Parameter dienen und den gesamten Codex
mehrmals an STDOUT zurückgeben oder ausdrucken . Der Funktionskörper darf auch nicht leer seinWenn Sie ein Lambda einreichen, ist es nicht erforderlich, dass Sie es einer Variablen zuweisen
Leere Programme sind verboten
Ihr Programm muss nur funktionieren, wenn
x
eine ganze Zahl größer oder gleich 0 istIhr Programm liest möglicherweise auch keinen Teil seines Quellcodes direkt
x
sein0
oder können wir es auf positive ganze Zahlen beschränken?x
möglicherweise eine ganze Zahl größer oder gleich 0Antworten:
Python 2 , 50 Bytes
Beachten Sie das nachstehende Komma und die Zeilenumbrüche.
Probieren Sie es online!
quelle
sys.stdout.write("2")
danach getestet .Japt , 14 Bytes
Probieren Sie es online!
Erläuterung
quelle
RProgN 2 , 8 Bytes
Das RProgN2 Loop Quine eignet sich besonders gut dafür!
Probieren Sie es online!
quelle
Mathematica,
4033 BytesDanke an lanlock4 für das Speichern von 7 Bytes!
Reine Funktion, die ein nichtnegatives ganzzahliges Argument verwendet.
ToString[#0]
ist die Standardmethode von Mathematica, um auf die Definition der aktuellen reinen Funktion zuzugreifen.StringRepeat[..., #1]
Verkettet (Eingabe) Kopien dieser Zeichenfolge miteinander. Beispielsweise,ergibt:
quelle
StringJoin @@ Table[ToString[#0], #1] & [2]
gibt mir einen Fehler.Table::itform: Argument 2 at position 2 does not have the correct form for an iterator.
Table[x,5]
das{x,x,x,x,x}
in Mathematica 10.2 und darüber hinaus zurückkehren wird, aber in Mathematica 10.1 gibt es einen solchen Fehler (den es erwartetTable[x,{5}]
).StringJoin @@ Table
mitStringRepeat
.V , 11 Bytes
Probieren Sie es online!
Dies ist eine äußerst triviale Modifikation des erweiterbaren Standard-V-Quines . Wir verwenden es einfach
À
, um es arg1- mal auszuführen .quelle
Gleichstrom , 31 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Python 2, 70 Bytes
Diese Lösung funktioniert, wenn
x=0
. Es gibt eine einzelne nachgestellte Zeile.Probieren Sie es online aus
Python 2, 60 Bytes (ungültig)
Dies setzt voraus, dass
x>=1
aber das OP klarstellt,x
dass Null sein kann. Es gibt eine einzelne nachgestellte Zeile.Probieren Sie es online aus
quelle
Unterlast , 12 Bytes
Probieren Sie es online!
Funktionsübergabe, da Unterlast keine andere Möglichkeit hat, Eingaben vorzunehmen. (Der TIO-Link zeigt die Nummer 4 als Eingabe an und fügt Code zum Drucken der resultierenden Ausgabe hinzu.)
Dies ist nur ein universeller Quine-Konstruktor
(a(:^)*):^
, plus~^
("mache eine Anzahl von Kopien gleich dem Argument").quelle
Japt , 14 Bytes
Probieren Sie es online!
quelle
Gelee , 10 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
GNU Make , 49 Bytes
Make fügt die Kopien durch ein einzelnes Leerzeichen zusammen, sodass ich das zusätzliche Leerzeichen am Ende einfügen und mit einem
strip
dazwischenliegenden entfernen muss, um die Anforderung genau zu befolgen.quelle
$0
In Make-Funktionen ist nicht dasselbe wie in Shells. Dies ist der Name der Variablen, als die die Funktion aufgerufen wird. Siehe gnu.org/savannah-checkouts/gnu/make/manual/html_node/…call
was Sie tun, ist zu ersetzen$0
und$1
mit aktuellen Parametern zu versehen - es ist eine einfache String-Interpolation, genau wie bei Python%
.Pyth, 17 Bytes
Probieren Sie es online!
Triviale Erweiterung der bekannten
jN*2]"jN*2]
Quine, die sich aber wahrscheinlich zum Golfen eignetquelle
Betaload , 203 Bytes
Zeilenumbrüche zur Verdeutlichung hinzugefügt:
Ich gab mir die Einschränkung, dass es von STDIN lesen muss, anstatt von der Spitze des Stapels, wie es eine Unterlast-Antwort normalerweise tun würde. Ich habe auch die richtige Dezimaleingabe verwendet, die den größten Teil des Codes ausmacht.
Erläuterung:
Ich packe das Programm in einen Quine-Wrapper:
(a(:^)*
und):^
. Dies bedeutet, dass der Quellcode des Programms für den gesamten Code im Quine-Wrapper ganz unten im Stapel angezeigt wird.Um Ziffern in eine normale Kirchenzahl umzuwandeln, ersetze ich jede Ziffer durch den Code, multipliziere mit 10 und addiere diese Ziffer:
Es gibt hier eine Menge Wiederholungen, also packen wir es in ein Unterprogramm, das eine Church-Ziffer von der Oberseite des Stapels nimmt und sie verwendet, um die "Ziffernfolge" zu konstruieren:
Ich habe dies in eine neue Umgebung gestellt, damit schnell darauf zugegriffen werden kann:
Jetzt kann ich den Ersatzcode für erstellen
R
.R
Verwendet die obersten Elemente des Stapels, um eine Nachschlagetabelle zu erstellen, in der eine Zeichenfolge aus STDIN durch Betaload-Code ersetzt wird. Das funktioniert so:Wir können jedoch das soeben erstellte Unterprogramm verwenden, um die Codesegmente zu generieren:
Beim
R
Ausführen wird die Eingabe in eine Reihe von Unterprogrammen umgewandelt, die eine Kirchenzahl bilden. Wenn dieses Unterprogramm ausgeführt wird, erstellt es diese Church-Ziffer für das nächste Element auf dem Stapel (0, das zuvor abgelegt wurde). Dies bedeutet, dassR^
der oberste Wert auf dem Stapel die Church-Ziffer ist. Wir dann^
wenden die Church-Nummer noch einmal auf das letzte Element im Stapel (den Quellcode des Programms) an, um die Antwort zu erhalten.Lustige Tatsache: Ich habe den MD für diese Einreichung seit mehreren Monaten. Ich hatte es behalten, nachdem ich eine Frage missverstanden hatte (die ich anscheinend nicht mehr finde). Ich musste es aus meinem Papierkorb ausgraben, um es hier zu posten.
quelle
05AB1E , 23 Bytes
Probieren Sie es online!
quelle
Python 2 , 41 Bytes
Probieren Sie es online!
Verwendet eine irgendwie hackige Ausgabe
input
stattprint
, daprint
es einen seltsamen Fehler gibt, bei dem eine neue Zeile gedruckt wird, wenn dies nicht der Fall sein soll ... . Wird mit einem EOF-Fehler beendet.Erläuterung:
quelle
05AB1E ,
2725 BytesProbieren Sie es online!
quelle
Pyth, 13 Bytes
Testsuite
Das Standard-Pyth-Quine plus zwei
*
für die Wiederholung.quelle
Perl, 48 Bytes
\47
ist das oktale Escape für ein einfaches Anführungszeichen ('
). Es wird in doppelten Anführungszeichen ("
), aber nicht in einfachen Anführungszeichen interpretiert .quelle
Javascript ES6,
2737 BytesBearbeiten
+10 Bytes
f=
sollten ebenfalls angezeigt werdenquelle
f=
?toString
die Funktion aufruft .f.toString()
orf
ist dasselbe, zeigt aber nicht den Funktionsnamen anf
diese Weise wird auf seine eigene Quelle verwiesen .CJam ,
2012 Bytes8 Bytes gespart dank Martin Ender
Probieren Sie es online!
Exaplanation
quelle
PHP, 194 Bytes
Probieren Sie es online!
Überhaupt nicht golfen, wie es B64-Quines sind.
quelle
Los ,
257254 BytesDas tut mir weh.
Probieren Sie es online!
quelle
Mikroskript II, 22 Bytes:
Microscript II, 20 Bytes (aber technisch ungültig, da es auf den Quellcode eines Codeblocks zugreift):
quelle
C
144116 Bytesquelle
Python 3, 69 Bytes
quelle
C # (Visual C # Interactive Compiler) , 115 Byte
Probieren Sie es online!
quelle
05AB1E , 17 Bytes
Änderung der Standard- Quine
0"D34çý"D34çý
durch Hinzufügen×?
.Probieren Sie es online aus.
Erläuterung:
quelle