In: Genug Speicher und eine positive ganze Zahl N
Out: N-dimensionales N ^ N-Array, gefüllt mit N, wobei N ^ N N-mal-N-mal-N-mal-N bedeutet ...
Beispiele:
1: [1]
Dies ist ein 1D-Array (eine Liste) der Länge 1, das eine einzelne 1 enthält
2: [[2,2],[2,2]]
Dies ist ein 2D-Array (eine Tabelle) mit 2 Zeilen und 2 Spalten, gefüllt mit 2s
3: [[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]
Dies ist ein 3D-Array (ein Würfel) mit 3 Ebenen, 3 Zeilen und 3 Spalten, gefüllt mit 3s
4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]]
5 und 6: Bitte sehen Sie eine der Antworten.
Antworten:
Python , 32 Bytes
Probieren Sie es online!
Erstellt einen String wie
"[[[n]*n]*n]*n"
bein
Multiplikationen und wertet ihn als Python-Code aus. Da die Auswertung innerhalb des Funktionsumfangs erfolgt, wird der Variablennamen
zur Funktionseingabe ausgewertet.quelle
J, 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
$~$~
was gleichwertig ist, während es sich wiederholt$~$~
übersetzt ins Englische ... GELD, bekomme mehr von, GELD, bekomme mehr von ...APL (Dyalog APL) , 4 Bytes
Probieren Sie es online!
quelle
⍴⍨⍴⍨
funktioniert auch, sieht aber cooler aus.Mathematica,
22-20Bytesquelle
R 26
Dies ist die offensichtliche Antwort, aber vielleicht gibt es etwas Klügeres?
quelle
scan()
notwendig?n=scan();
durch ,function(n)
aber es macht es mehr.n
innerhalb der Zuordnungarray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
44 bis40 ByteDemo
Code-Snippet anzeigen
quelle
Haskell , 52 Bytes
Probieren Sie es online!
Inspiriert von der Antwort von @ nimi , aber mit mehr vordefinierten Funktionen.
iterate
und!!
anstelle einer rekursiven Hilfefunktion.filter(>'"').show
zu erstellen, wird eine Liste mit Zeichenfolgen formatiert und die zusätzlichen"
Zeichen entfernt.quelle
05AB1E (Legacy) ,
65 Bytes-1 dank Kevin Cruijssen
Probieren Sie es online!
quelle
D
kann entfernt werden, da die Eingabe implizit wieder verwendet wird (nicht sicher, ob dies beim Veröffentlichen der Antwort der Fall war, aber Sie benötigen das expliziteD
Anführungszeichen jetzt nicht mehr).Oktave,
3533252320 BytesProbieren Sie es online!
Dank @LuisMendo 8 Bytes gespart
Probieren Sie es online!
Vorherige Antwort:
Probieren Sie es online!
quelle
Haskell, 62 Bytes
Anwendungsbeispiel:
f 2
->"[[2,2],[2,2]]"
. Probieren Sie es online! .Das strenge Typensystem von Haskell verhindert, dass eine Funktion verschachtelte Listen mit unterschiedlichen Tiefen zurückgibt. Daher konstruiere ich das Ergebnis als String.
Wie es funktioniert:
quelle
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? Nicht allzu vertraut mit Haskell(#)0=show
, aber alle Definitionen einer Funktion müssen die gleiche Anzahl von Argumenten haben. Die zweite Zeile (n#l='['...
) benötigt zwei Argumente, daher muss die erste Zeile auch zwei Argumente enthalten.MATL, 8 Bytes
Probieren Sie es bei MATL Online aus (ich habe einen Code hinzugefügt, der die tatsächliche Größe der Ausgabe anzeigt, da alle n-dimensionalen Ausgaben in MATL als 2D-Matrizen angezeigt werden, bei denen alle Dimensionen> 2 in die zweite Dimension abgeflacht sind).
Erläuterung
quelle
Zy
am Ende des Codes hinzufügen , wird die tatsächliche Größe angegebenPython 2 , 36 Bytes
-2 Bytes dank @CalculatorFeline
Probieren Sie es online!
quelle
~-n
==(n-1)
.CJam , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Wie?
quelle
Java
979695 BytesUngolfed:
quelle
i<=1
miti<2
?(n,i)->{...}
JavaScript (ES6), 38 Byte
Die speicherhungrige Version davon ist 45 Bytes:
quelle
Bash + GNU-Dienstprogramme, 117 Bytes
Probieren Sie es online!
Das Programm zählt im Wesentlichen von 0 bis (n ^ n) -1 in der Basis n, wobei n die Eingabe ist. Für jede Basis-n-Zahl k in der Zählung wird Folgendes ausgeführt:
(Für den Wert n = 1 müssen als Sonderfall Klammern hinzugefügt werden. Dieser Eingabewert generiert auch eine Ausgabe an stderr, die unter Standard-PPCG-Regeln ignoriert werden kann.)
Vielleicht gibt es einen kürzeren Weg, um diese Idee umzusetzen.
Probelauf:
quelle
Gelee , 4 Bytes
Probieren Sie es online!
Das Gleiche, aber mit einer einzigen Monade und ohne Kettenseparator:
4 Bytes
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 3 ,
57535038 BytesProbieren Sie es online!
-4 Bytes dank @CalculatorFeline
34 Bytes:
Muss aufgerufen werden als
f(4,4)
quelle
c>1
mitc
1 Byte zu speichern. (Markdown, hör auf, Leerzeichen in`
sc>0
in diesem speziellen Fall.<space>n
. Problem gelöst und Bonus - mehr Bytes gespart! : D (Leerzeichen am Ende des Inline-Codes sind möglich, aber nicht am Anfang? Das ist seltsam ...) TIO linkRuby,
2826 BytesVielen Dank an Cyoce für das Speichern von 2 Bytes!
Schamlos gestohlen xnor ‚s ausgezeichnete Antwort .
quelle
Ruby, 27 Bytes
Nur noch 1 Byte, aber mit einem anderen Ansatz als dem 'Eval'-Trick von xnors wundervoller Python-Antwort.
quelle
Perl 6 , 25 Bytes
Beginnt mit
n
den Transformationszeiten "n-mal wiederholen" und wendet diese iterativ ann
, wobei jedes Mal eine zusätzlicheList
Verschachtelungsebene erstellt wird.Probieren Sie es online!
quelle
$_
stattdessen, um ein Byte zu speichern$_
als Parameter des inneren Blocks, daher kann ich es auch nicht als Parameter des äußeren Blocks verwenden.$n
und$_
haben immer den gleichen Wert. Probieren Sie es online!PHP,
7062 BytesDies ist das einfachste, was ich mir vorstellen kann.
Nimmt die Eingabe als erstes Argument und druckt das resultierende Array auf dem Bildschirm.
Vielen Dank an @ user59178 für das Speichern von 8 Bytes !
quelle
$l
. Das Dropping$i=0,
& Ersetzen$l
mit$n
spart 7 Byte. Ein zusätzliches Byte kann nicht die Zuordnung gespeichert werden$F
, die Zuordnung$n
in der bedingten und unter Verwendung eines ternären$F?:$n
in derarray_fill()
Clojure, 36 Bytes
Iteriert eine Funktion, die ihre Argumentationszeiten wiederholt
n
, erzeugt sie eine unendliche Folge solcher Elemente und nimmt dann ihrn
th-Element.Sehen Sie es online
quelle
Rebol, 45 Bytes
quelle
Batch, 141 Bytes
Batch enthält eigentlich keine Arrays, daher wird nur die Zeichenfolgendarstellung eines Arrays gedruckt. Erläuterung: Die ersten beiden Zeilen bilden ein sich wiederholendes Muster von
N
.
s, dasN-1
,
in der Variablen durch s getrennt istt
. In der vierten Zeile wird dies dann als SubstitutionsmusterN
verwendet, um dasN
eindimensionale Array zu erstellen . Das Doppeltecall
ist notwendig, weil die Anweisungenfor
undset
funktionieren. Erstens ersetzt derfor
Befehl Variablen. Zufälligerweise werden alle meine%
Zeichen verdoppelt, was nichts anderes bewirkt, als sie alle zu entfernen, was zur Folge hatcall call set s=[%%t:.=%s%%%]
. Anschließend werden die resultierenden Anweisungszeiten wiederholtN
. Dercall
Befehl ersetzt jedes Mal Variablen. Zu diesem Zeitpunkt hat dies
Variable nur eine einzige Menge von%
s, also wird es ersetzt, was zu (zB) führtcall set s=[%t:.=[2,2]%]
. Der innere Aufruf ersetzt dann diet
Variable, was dazu führt, dass (z. B.)set s=[[2,2],[2,2]]
die gewünschte Zuweisung ausgeführt wird. Der Endwert vons
wird dann gedruckt.quelle
Clojure, 49 Bytes
Nicht das kürzeste Clojure-Beispiel, aber ich habe mich mit dem Zitieren und Nichtzitieren amüsiert.
quelle
ich , 7 Bytes
Das habe ich von meinem Kollegen bekommen, dem Schöpfer von I.
#Bb
die#
Kopierfunktion B ound b indinghp
h so schnell und das Argument (rechts von) der p ower Funktion (repeat)h~
h so schnell und das Argument nach links~
(der gesamte sich ergebende Funktion)Probieren Sie es online!
quelle
Common Lisp,
128 102 9579 BytesProbieren Sie es online!
quelle