Quadrate sehen symmetrisch aus, ebenso wie die erforderlichen Codes.
Ziel : Schreiben Sie ein Programm, dessen Quellcode ein ausgefülltes Quadrat ist (N Zeilen mit N druckbaren Nicht-Leerzeichen pro Zeile) und druckt ein Quadrat gleicher Größe. Ein Programm (oder eine Ausgabe) mit inkonsistenter Breite und Höhe ist ungültig. (zB 6x5)
Beispiel (HQ9 +)
QAA
AAA
AAA
Bedarf
- Sowohl die Quelle als auch die Ausgabe müssen N Zeilen und N druckbare Zeichen pro Zeile enthalten, gefolgt von 1 Zeilenvorschub. Ihr Programm sollte nicht alle Steuerzeichen enthalten oder Ausgang (außer LF oder CR-LF) oder Leerzeichen (Leerzeichen, Tab, VTAB)
- Standardschlupflöcher sind langweilig, verwenden Sie sie nicht.
- Ein Programm (und eine Ausgabe) mit nur einem Zeichen ist im Grunde nichts. N muss mindestens zwei sein.
- Der Inhalt der Ausgabe spielt keine Rolle, solange er Regel 1 entspricht
- Sonderregel : Verwenden Sie keine Kommentare oder Codes, die sich nicht auf die Ausgabe auswirken, um Ihren Code zu "füllen".
Um klar zu sein, dürfen Siei++;i++;... i++;
statt verwendeni+=10;
, aber Sie sollten keine Variable definieren,string s="placeholder"
sondern sie später nie mehr verwenden. Es ist sehr einfach, diese Regel zu umgehen, seien Sie also nicht zu streng. - Wenn Sie vor allem anderen eine neue Zeile ausgeben möchten, ist dies in Ordnung. Bitte erklären Sie jedoch, dass Sie diese Regel verwenden.
Wenn Sie die letzte Zeile ohne nachfolgenden Zeilenvorschub ausgeben möchten, ist dies ebenfalls in Ordnung und Sie müssen sie nicht deklarieren. Dies hat jedoch keinen Einfluss auf die Wertung.
Zusätzlich : Bitte geben Sie die Nummer N (Breite / Höhe) an, die Ihr Programm verwendet. Geben Sie nach Möglichkeit Beschreibungen Ihres Codes an.
Es ist nicht erforderlich, die Länge (in Bytes) Ihres Programms anzugeben, da das N alles sagt.
Da dies ein Code-Bowling ist , gewinnt das Programm mit dem größten N und der höchsten Komplexität.
Antworten:
JavaScript (ES6), N = 5
Mit einer führenden Newline anstelle einer nachfolgenden Newline.
JavaScript (ES6), N = 6
JavaScript, N = 7
JavaScript, N = 202
quelle
N = 4
(Ich bin mir nur nicht sicher, ob die neue Zeile am Anfang erlaubt ist).Perl 5, 5 × 5
Dies ist sehr leicht verschleiert, um es interessanter zu machen, daher hier eine Erklärung:
q.u.
ist genau das gleiche wie'u'
. Das Folgendex
ist der Wiederholungsoperator , ebenso'u'
wie die Wiederholungszeiten$]
.$]
liegt zwischen 5 und 6 , wird also'u'
5 mal wiederholt. Sie hängen$/
dann die Newline undprint
das Ganze an. Dies alles wird einmal für jedes Mitglied der Liste getant..x
:t
undx
als Barewords sind die Werte zugewiesen't'
und'x'
sind, und die Liste ist so't','u','v','w','x'
. Die Ausgabe lautet also:quelle
Ruby, 3x3
Druckt
Probieren Sie es online aus!
Wie es funktioniert
p
ist eine Methode, die jedes ihrer Argumente druckt und dann den Wert (oder ein Array der Werte) zurückgibt, den sie gedruckt hat. Wenn es ohne Argument aufgerufen wird, druckt es nichts und kehrt zurücknil
. Somit werden allep
s in den Zeilen 2 und 3 ausgewertetnil
und das erstep
druckt diesenil
s aus.quelle
Python 3 , 29 Bytes
Probieren Sie es online aus!
5x5 kann gemacht werden. Drucke:
quelle
Holzkohle , n = 2
Langweilige Lösung (Charcoal druckt ASCII nur wörtlich):
Probieren Sie es online aus!
quelle
<?
/ beginnt<?php
.C, N = 7
Druckt ein 7x7-Raster von
%
, dhquelle
Brainfuck , 9x9
Probieren Sie es online aus!
Gibt ein Quadrat aus
+
(die grundlegendste Funktion von Brainfuck).Ich komme wieder, wenn ich herausfinde, wie ich das in eine Quine umwandeln kann, also ungefähr 3 Wochen ...
quelle
Haskell,
7x76x6Ausgänge
Probieren Sie es online aus!
Wie es funktioniert:
Mit zulässigen Compiler-Flags gibt es eine 5x5-Lösung:
Haskell, 5x5 (mit -cpp-Compiler-Flag)
Probieren Sie es online aus!
-cpp
ruft den cpp-Präprozessor auf, der das Falten von Zeilen über ermöglicht\
.quelle
SOGL V0.12 , N =
32Probieren Sie es hier aus!
Die erste Zeile -
H$
bedeutetin the continuing lines replace $ with H
, dass die nächste Zeile istHQ
. Das wird dann ausgeführt:Fand dies durch brutales Erzwingen durch alle Programme auf Länge 2 (da jedes Programm wie
..\n..
immer immer auf ein 2-Zeichen-Programm hinausläuft)quelle
Python 2 , n = 6
Probieren Sie es online aus!
Nicht so golfen wie es sein könnte, aber ... ich muss die Lücken irgendwie füllen, nicht wahr: P.
quelle
print
selbst 6 Bytes ist und 1 Byte '\' der niedrigste Zwang ist."print"
und danneval
es bauen, aber ich denke, Sie werden zu weit nach unten gehen, um in eine5x5
...Rubin , n =
6512 Bytes dank m-chrzan gespeichert
Probieren Sie es online aus!
Ja, ich habe vor, Leaky Nun dieseEDIT :: / source Einschränkungen sind schlimmer als ich dachte für die meisten Esolangs und auch für normale Sprachenquelle
puts
.> <> , N = 3
Es wird gedruckt
Probieren Sie es online aus oder schauen Sie es sich auf dem Fischspielplatz an !
Das ist ein bisschen knifflig, also nimm es mit mir. Der Fisch beginnt in der oberen linken Ecke und wechselt sofort in den String-Modus. Es schiebt die Zeichencodes von "v" und "n" auf den Stapel, die 118 bzw. 110 sind. Der Fisch wickelt sich dann ein und trifft
"
erneut auf den Saitenmodus. Dasv
schickt dann den Fisch nach unten und/
reflektiert ihn nach links:
, wodurch die Oberseite des Stapels dupliziert wird: Der Stapel ist jetzt 118, 110, 110.Der Fisch wickelt
^
ihn dann ein und sendet ihn in eine Schleife:Diese Schleife druckt den oberen Teil des Stapels als Zahl (
n
), umschließt und springt, drückta
= 10 = Zeilenvorschub auf den Stapel, druckt ihn dann als Zeichen (o
) und startet die Schleife erneut. Wenn der Stapel leer ist,n
verursacht dies einen Fehler und das Programm wird angehalten.In den Kommentaren wurde darauf hingewiesen, dass das Anhalten mit einem Fehler eher unbefriedigend ist. Ich gebe Ihnen daher eine Alternative, die auf natürliche Weise in einem 4x4-Quadrat anhält:
Es wird gedruckt
Probieren Sie es online aus!
quelle
something smells fishy...
nicht, da dies technisch gedruckt wird, wenn das Programm fehlerhaft ist (IIRC wird in STDOUT gedruckt).V , 11 Bytes
Probieren Sie es online aus!
Sollte eine gültige 5-Byte-Lösung sein, aber leider fehlt diese Funktionalität. :(
quelle
CJam, n = ∞
Root-Version: n = 2
Probieren Sie es online aus
Druckt
Kann auf jedes n erweitert werden, indem jeder Zeile Zahlen vorangestellt werden. Z.B:
n = 11
Druckt
Probieren Sie es online aus
quelle
Proton , N = 5
Probieren Sie es online aus!
quelle
Ly , 11 Bytes
Probieren Sie es online aus!
Eine Standard-Quine in Form eines Quadrats.
quelle
Perl 5 , 4x4
Probieren Sie es online aus!
Benötigt
-M5.010
in der Kommandozeile.quelle
-M5.010
den gleichen Effekt wie eine Zeile in einer Datei, die liestuse 5.010;
?use 5.010
oder-M5.010
als kostenlos angesehen, da auf die meisten von ihm importierten Funktionen zugegriffen werden kann, indem das Skript ausgeführt wird, über dasperl -E
stattdessenperl -e
dieselbe Länge verwendet wird.perlvar
sowieso sehen kann), sonst könnten Sie eine 3x3 mit so etwas bekommen ... Wird aber heute damit spielen!Gehirnfick , N = 6
Dies ist wahrscheinlich nicht gültig, da ich das Ausgabezeichen willkürlich um 3 Codepunkte niedriger gewählt habe, um das Quadrat zu reparieren ...
Probieren Sie es online aus!
quelle
Python 3 , N = 13 (181 Bytes)
Probieren Sie es online aus!
Ich verstehe nicht, warum dies nicht gültig ist, da es keine Regel gibt, die mich dazu zwingt, diese Technik nicht anzuwenden (glaube ich). Dies druckt ein 13x13-Gitter von Oktothorphen.
quelle
Aceto , 3 × 3
Verwandeln Sie die implizite Null in ein float (
0.0
), duplizieren, drucken, Zeilenumbruch, duplizieren, drucken, Zeilenumbruch, Drucken, Zeilenumbruch.Alte Version, die möglicherweise ungültig ist:
Aceto ist für diese Art von Herausforderung gemacht; Alle Programme sind zumindest intern Quadrate. Es kann gültig sein oder nicht, da in der Ausgabe die letzte Zeile nicht mit einem Zeilenvorschub endet. Wir berechnen einfach 2 ^ 7, aktivieren den Sticky-Modus und drucken dreimal mit dazwischen liegenden Zeilenumbrüchen.
quelle
Gaia , 3 x 3
Probieren Sie es online aus!
Erläuterung
Gaia, 2 x 2
Ich bin nicht sicher, ob dies gültig ist, da es sich um eine betrügerische Quine handelt (
Øg
liest die Quelldatei des Programms).quelle
PHP, n = ∞
Ich weiß nicht, ob dies eine Lücke ist, aber hier ist die
2
Version:Druckt
Probieren Sie es online aus!
Mit n = 10
Probieren Sie es online aus!
Kann auf eine beliebige Anzahl erweitert werden.
quelle
Python 3 , n = 6
Probieren Sie es online aus!
Fast das gleiche wie die Python 2-Antwort, nur mit parens: /
Ich kann es anders machen, wenn jemand will: P.
quelle
TI-BASIC, N = 2
Beachten Sie, dass
Disp
(einschließlich des Leerzeichens) undXmax
jeweils ein Zeichen sind. Da Xmax standardmäßig 10 ist, lautet die Ausgabe:quelle
WendyScript , 5x5
produziert:
Probieren Sie es online aus!
quelle
Python 2 , n = 5
Probieren Sie es online aus!
Python 2-Variante von Sisyphus 'Antwort
quelle
Excel VBA, n = 15
Deklarierte Unterroutine, die eine leere Eingabevariable (für die Ausgabe) aufnimmt und
[A1]
über eine Messagebox und das VBE-Sofortfenster sowie über die Eingabevariable in den Bereich ausgibtDie oben genannten Autoformate zu
und Ausgänge
quelle
Runenverzauberungen , n = ∞ (min 7x7)
Probieren Sie es online aus!
Nutzt die Fähigkeit von Runic, mehrere Anweisungszeiger gleichzeitig zu verarbeiten, in hohem Maße. Was ist eine Quine verdoppelt? Ein Quine ist doppelt so lang.
Bei allen
.
Befehlen kann der grundlegende Quine-Ausdruck"'<~S@|
auf eine beliebige Breite erweitert werden. Zusätzliche Kopien der Quine erweitern das Quadrat vertikal. Zeilenumbrüche und Ausgabe werden von der letzten Zeile verarbeitet, wobei alle Quine-IPs an einen einzelnen Terminatorausdruck weitergeleitet werdenRak@
, der ein Zeilenumbruchzeichen überträgt und dann den gesamten Stapel von oben nach unten zur Ausgabe ausgibt. Die letzte Zeile selbst erzeugt auch eine Ausgabezeile,.@kaR<00
um die erforderliche Strukturgröße beizubehalten. Da die letzte Zeile zuerst ausgegeben wird, gibt es keine führende oder nachfolgende neue Zeile.Es gibt kürzere Quines (nämlich
'<~@|"
), die letzte Zeile ist jedoch auf 7 Zeichen beschränkt oder kann keine Ausgabe mit der richtigen Breite erzeugen (@"<Rak
ist 6 Zeichen lang, gibt jedoch nur 5 Zeichen aus).Ich habe auch versucht, das kleinstmögliche Quadrat zu codieren . Das war das Beste, was ich tun konnte.
Runenverzauberungen , n = 6
Probieren Sie es online aus!
Klont wiederholt die Oberseite des Stapels, druckt ihn und tauscht die beiden oberen Elemente aus, um
100000
sechsmal mit 5 miteinander verwobenen Zeilenumbrüchen zu drucken .Und dann, weil ich konnte:
Runenverzauberungen , n = 9
Probieren Sie es online aus!
9x9-Quadrat-Programm, das eine 9x9-Quadrat-Quine ausgibt (mit führender Zeilenumbruch).
Dies wird erreicht, indem das 9-Byte-Quine als Zeichenfolge erstellt und dann
E
viermal bewertet wird. Anschließend wird die Zeichenfolge mit 5 ("abc"*3
->"abcabcabc"
) multipliziert und für die letzten 5 Kopien noch einmal ausgewertet. Dies geschieht auf diese Weise, um das 9x9-Quadrat bis zum Rand auszufüllen.quelle
Wolfram Language (Mathematica) , n = 5
Ausgänge
Angenommen, Sie zählen nicht,
>>
dass dies am kürzesten wäre, da nur die DruckfunktionPrint
und istEcho
. Außerdem müssen Sie nach der Funktion mindestens 1 Zeichen einfügen, um sie aufzurufen.Probieren Sie es online aus!
Ausgänge
mit einem nachgestellten Zeilenumbruch
n = 7
Probieren Sie es online aus!
Ausgänge
mit einem nachgestellten Zeilenumbruch
quelle
Perl 5, 9x9
Erläuterung
Die äußere
for
Schleife befindet sich über der Sequenz1 .. ($= / 7)
. $ = ist 60, also läuft die Schleife von 1 bis zum Boden von 60/7, was 8 ist.Die erste Anweisung in der äußeren Schleife
$qq = ($q=$_)**7
weist der Variablen$q
den Wert des Index$_
der Schleife zu und weist der siebten Potenz$qq
den Wert$q
zu.Dann kommt die innere Schleife, die über der Sequenz liegt
$qq % 7 .. $q / 7
(%
ist Modulo).Somit läuft die innere Schleife insgesamt dreimal: zweimal, wenn der äußere Schleifenindex 7 ist, und einmal, wenn der äußere Schleifenindex 8 ist.
Die innere Schleife macht
map{...} 0..2
eine andere Schleife, diesmal über die Sequenz0 .. 2
, also macht sie die folgenden drei Male:Die
qq
s sind der Operator in doppelten Anführungszeichen , daher werden nurqqq
und gedrucktqqqqqq<newline>
.Somit ist die Ausgabe
Probieren Sie es online aus.
quelle