En: Suficiente memoria y un entero positivo N
Fuera: N-N N ^ N matriz llena de N, donde N ^ N significa N términos de N-por-N-por-N-por ...
Ejemplos:
1: [1]
que es una matriz 1D (una lista) de longitud 1, que contiene un solo 1
2: [[2,2],[2,2]]
que es una matriz 2D (una tabla) con 2 filas y 2 columnas, llenas de 2
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]]]
que es una matriz 3D (un cubo) con 3 capas, 3 filas y 3 columnas, llenas de 3
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 y 6: Vea una de las respuestas.
Respuestas:
Python , 32 bytes
Pruébalo en línea!
Hace una cadena como
"[[[n]*n]*n]*n"
conn
multiplcaciones, y la evalúa como código Python. Como la evaluación se realiza dentro del alcance de la función, el nombre de la variable sen
evalúa como entrada de la función.fuente
J, 4 bytes
Pruébalo en línea!
Explicación
fuente
$~$~
hay un equivalente que también se repite$~$~
traducido al inglés ... DINERO, obtener más, DINERO, obtener más de ...APL (Dyalog APL) , 4 bytes
Pruébalo en línea!
fuente
⍴⍨⍴⍨
funciona también, mientras se ve más fresco.Mathematica,
2220 bytesfuente
R, 26
Esta es la respuesta obvia, pero ¿quizás hay algo más inteligente?
fuente
scan()
necesario?n=scan();
porfunction(n)
pero lo hace más largo.n
asignación interna dearray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
4440 bytesManifestación
Mostrar fragmento de código
fuente
Haskell , 52 bytes
Pruébalo en línea!
Inspirado por la respuesta de @ nimi , pero usando más funciones predefinidas.
iterate
y en!!
lugar de una función de ayuda recursiva.filter(>'"').show
para formatear una lista de cadenas y luego se eliminan los"
caracteres adicionales .fuente
05AB1E (heredado) ,
65 bytes-1 gracias a Kevin Cruijssen
Pruébalo en línea!
fuente
D
puede eliminarse porque la entrada se usa implícitamente de nuevo (no estoy seguro si esto fue algo cuando publicaste la respuesta, pero ya no necesitas el explícitoD
).Octava,
3533252320 bytesPruébalo en línea!
Gracias a @LuisMendo ahorró 8 bytes
Pruébalo en línea!
Respuesta anterior:
Pruébalo en línea!
fuente
Haskell, 62 bytes
Ejemplo de uso:
f 2
->"[[2,2],[2,2]]"
. Pruébalo en línea! .El sistema de tipo estricto de Haskell impide una función que devuelve listas anidadas de diferentes profundidades, por lo que construyo el resultado como una cadena.
Cómo funciona:
fuente
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? No muy familiarizado con Haskell(#)0=show
, pero todas las definiciones de una función deben tener el mismo número de argumentos. La segunda línea (n#l='['...
) necesita dos argumentos, por lo que la primera línea también debe tener dos argumentos.MATL, 8 bytes
Pruébelo en MATL Online (he agregado un código que muestra el tamaño real de la salida ya que todas las salidas n-dimensionales en MATL se muestran como matrices 2D donde todas las dimensiones> 2 se aplanan en la segunda dimensión).
Explicación
fuente
Zy
al final del código, indica el tamaño realPython 2 , 36 bytes
-2 bytes gracias a @CalculatorFeline
Pruébalo en línea!
fuente
~-n
==(n-1)
.CJam , 12 bytes
Pruébalo en línea!
Explicación
fuente
Jalea , 5 bytes
Pruébalo en línea!
¿Cómo?
fuente
Java
979695 bytesSin golf:
fuente
i<=1
coni<2
?(n,i)->{...}
JavaScript (ES6), 38 bytes
La versión de esto que necesita mucha memoria es de 45 bytes:
fuente
Bash + utilidades GNU, 117 bytes
Pruébalo en línea!
El programa esencialmente cuenta de 0 a (n ^ n) -1 en la base n, donde n es la entrada. Para cada número base-n k en el recuento, hace lo siguiente:
(El valor n = 1 necesita tener corchetes agregados como un caso especial. Este valor de entrada también genera algo de salida para stderr, que puede ignorarse bajo las reglas estándar de PPCG).
Quizás haya una forma más corta de implementar esta idea.
Ejecución de muestra:
fuente
Jalea , 4 bytes
Pruébalo en línea!
Lo mismo pero con una sola mónada y sin necesidad del separador de cadena:
4 bytes
fuente
Jalea , 5 bytes
Pruébalo en línea!
Explicación
fuente
Python 3 ,
57535038 bytesPruébalo en línea!
-4 bytes gracias a @CalculatorFeline
34 bytes:
Necesita ser llamado como
f(4,4)
fuente
c>1
conc
para guardar 1 byte. (Markdown, deje de deduplicar espacios en`
s)c>0
en este caso particular.<space>n
. Problema resuelto y bonificación: ¡más bytes guardados! : D (¿Entonces los espacios al final del código en línea son posibles, pero no el comienzo? Eso es extraño ...) Enlace TIORubí,
2826 bytes¡Gracias a Cyoce por guardar 2 bytes!
Robado descaradamente de la excelente respuesta de xnor .
fuente
Rubí, 27 bytes
Solo 1 byte más pero usando un enfoque diferente en lugar del truco 'eval' de la maravillosa respuesta de Python de xnor.
fuente
Perl 6 , 25 bytes
Comienza con
n
, y aplica iterativamente los tiempos de transformación "repetir n veces"n
, creando cada vez un nivel adicional deList
anidamiento.Pruébalo en línea!
fuente
$_
lugar para guardar un byte$_
como parámetro del bloque interno, por lo que no puedo usarlo también como parámetro del bloque externo.$n
y$_
siempre tienen el mismo valor. Pruébalo en línea!PHP,
7062 bytesEsto es lo más simple que se me ocurre.
Toma la entrada como primer argumento e imprime la matriz resultante en la pantalla.
¡Gracias a @ user59178 por salvarme 8 bytes !
fuente
$l
. Descartar$i=0,
y reemplazar$l
con$n
ahorra 7 bytes. Un byte adicional puede ser salvado por no asignar$F
, la asignación$n
de la condicional y el uso de un ternario$F?:$n
en elarray_fill()
Clojure, 36 bytes
Itera la función que repite sus
n
tiempos de argumento , produce una secuencia infinita de tales elementos y luego toma sun
elemento th.Véalo en línea
fuente
Rebol, 45 bytes
fuente
Lote, 141 bytes
Batch en realidad no tiene matrices, por lo que solo imprime la representación de cadena de una matriz. Explicación: Las dos primeras líneas crean un patrón repetido de
N
.
s separado porN-1
,
s en la variablet
. La cuarta línea luego usa esto como un patrón de sustituciónN
veces para crear laN
matriz dimensional. El doblecall
es necesario debido a cómo funcionan las declaracionesfor
yset
. Primero, elfor
comando sustituye variables. Como sucede, todos mis%
signos se duplican, por lo que esto no hace nada más que ponerlos entre comillas, lo que resulta encall call set s=[%%t:.=%s%%%]
. Luego repite losN
tiempos de declaración resultantes . Cada vez, elcall
comando sustituye variables. En este punto, las
variable solo tiene un único conjunto de%
s, por lo que se sustituye, lo que resulta en (por ejemplo)call set s=[%t:.=[2,2]%]
. La llamada interna luego sustituye lat
variable, lo que resulta en (por ejemplo)set s=[[2,2],[2,2]]
, realizar la asignación deseada.s
Luego se imprime el valor final de .fuente
Clojure, 49 bytes
No es el ejemplo más corto de Clojure, pero me divertí con las citas y las citas.
fuente
I , 7 bytes
Obtuve esto de mi colega, el creador de I.
#Bb
la copia#
función B ound a ab ncontrarhp
h ook el argumento para (la derecha) de la p función ower (repetición)h~
h ook el argumento a la izquierda~
(de la totalidad de la función resultante)Pruébalo en línea!
fuente
Lisp común,
128102 9579 bytesPruébalo en línea!
fuente