In: Memória suficiente e um número inteiro positivo N
Fora: N-dimensional N ^ N matriz preenchida com N, onde N ^ N significa N termos de N-por-N-por-N-por ...
Exemplos:
1: [1]
que é uma matriz 1D (uma lista) de comprimento 1, contendo um único 1
2: [[2,2],[2,2]]
que é uma matriz 2D (uma tabela) com 2 linhas e 2 colunas, preenchida com 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]]]
que é uma matriz 3D (um cubo) com 3 camadas, 3 linhas e 3 colunas, preenchidas com 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 e 6: Veja uma das respostas.
Respostas:
Python , 32 bytes
Experimente online!
Cria uma string como
"[[[n]*n]*n]*n"
comn
multiplicações e avalia como código Python. Como a avaliação ocorre no escopo da função, o nome da variável én
avaliado na entrada da função.fonte
J, 4 bytes
Experimente online!
Explicação
fonte
$~$~
que é equivalente ao mesmo tempo que se repete$~$~
traduzidas para Inglês ... DINHEIRO, obter mais de, dinheiro, obter mais de ...APL (Dyalog APL) , 4 bytes
Experimente online!
fonte
⍴⍨⍴⍨
funciona também, enquanto parece mais frio.Mathematica,
2220 bytesfonte
R, 26
Esta é a resposta óbvia, mas talvez haja algo mais inteligente?
fonte
scan()
necessário?n=scan();
por,function(n)
mas o torna mais longo.n
atribuição dentro dearray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
4440 bytesDemo
Mostrar snippet de código
fonte
Haskell , 52 bytes
Experimente online!
Inspirado na resposta de @ nimi , mas usando funções mais predefinidas.
iterate
e, em!!
vez de uma função de ajuda recursiva.filter(>'"').show
para formatar uma lista de seqüências de caracteres e, em seguida, retira os"
caracteres extras .fonte
05AB1E (herdado) ,
65 bytes-1 graças a Kevin Cruijssen
Experimente online!
fonte
D
pode ser removido porque a entrada é usada implicitamente novamente (não tenho certeza se isso foi algo quando você postou a resposta, mas você não precisa mais do explícitoD
agora).Oitava,
3533252320 bytesExperimente online!
Graças a @LuisMendo salvou 8 bytes
Experimente online!
Resposta anterior:
Experimente online!
fonte
Haskell, 62 bytes
Exemplo de uso:
f 2
->"[[2,2],[2,2]]"
. Experimente online! .O sistema de tipo estrito de Haskell evita uma função que retorna listas aninhadas de diferentes profundidades; portanto, construo o resultado como uma string.
Como funciona:
fonte
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? Não(#)0=show
, mas todas as definições de uma função devem ter o mesmo número de argumentos. A segunda linha (n#l='['...
) precisa de dois argumentos; portanto, a primeira linha também deve ter dois argumentos.MATL, 8 bytes
Experimente no MATL Online (adicionei algum código que mostra o tamanho real da saída, pois todas as saídas n-dimensionais no MATL são mostradas como matrizes 2D, onde todas as dimensões> 2 são achatadas na segunda dimensão).
Explicação
fonte
Zy
no final do código, ele informará o tamanho real.Python 2 , 36 bytes
-2 bytes graças a @CalculatorFeline
Experimente online!
fonte
~-n
==(n-1)
.CJam , 12 bytes
Experimente online!
Explicação
fonte
Gelatina , 5 bytes
Experimente online!
Quão?
fonte
Java
979695 bytesUngolfed:
fonte
i<=1
comi<2
?(n,i)->{...}
JavaScript (ES6), 38 bytes
A versão que requer muita memória é de 45 bytes:
fonte
Utilitários Bash + GNU, 117 bytes
Experimente online!
O programa conta essencialmente de 0 a (n ^ n) -1 na base n, onde n é a entrada. Para cada número de base n na contagem, ele faz o seguinte:
(O valor n = 1 precisa ter colchetes adicionados como um caso especial. Esse valor de entrada também gera alguma saída para o stderr, que pode ser ignorada pelas regras padrão do PPCG.)
Talvez haja uma maneira mais curta de implementar essa ideia.
Exemplo de execução:
fonte
Gelatina , 4 bytes
Experimente online!
A mesma coisa, mas com uma única mônada e sem a necessidade do separador de correntes:
4 bytes
fonte
Gelatina , 5 bytes
Experimente online!
Explicação
fonte
Python 3 ,
57535038 bytesExperimente online!
-4 bytes graças a @CalculatorFeline
34 bytes:
Precisa ser chamado como
f(4,4)
fonte
c>1
porc
para salvar 1 byte. (Markdown, pare de desduplicar espaços em`
s)c>0
neste caso particular.<space>n
. Problema resolvido e bônus - mais bytes salvos! : D (Portanto, os espaços no final do código embutido são possíveis, mas não o começo? Isso é estranho ...) Link TIORuby,
2826 bytesAgradecimentos a Cyoce por economizar 2 bytes!
Roubado descaradamente a partir xnor 's excelente resposta .
fonte
Ruby, 27 bytes
Apenas 1 byte a mais, mas usando uma abordagem diferente em vez do truque 'eval' da maravilhosa resposta Python do xnor.
fonte
Perl 6 , 25 bytes
Inicia
n
e aplica iterativamente os tempos de transformação "repetir n vezes"n
, sempre criando um nível adicional deList
aninhamento.Experimente online!
fonte
$_
vez disso, use para salvar um byte$_
como o parâmetro do bloco interno, então não posso usá-lo como o parâmetro do bloco externo também.$n
e$_
sempre tem o mesmo valor. Experimente online!PHP,
7062 bytesEste é o mais simples que eu posso apresentar.
Pega a entrada como o primeiro argumento e imprime a matriz resultante na tela.
Obrigado a @ user59178 por me salvar 8 bytes !
fonte
$l
. Descartar$i=0,
e substituir$l
por$n
salva 7 bytes. Um byte adicional pode ser salvo por não atribuir$F
, atribuindo$n
no condicional e usando um ternário$F?:$n
naarray_fill()
Clojure, 36 bytes
Repete a função que repete seus
n
tempos de argumento , produz uma sequência infinita de tais elementos e, em seguida, pega seun
th elemento.Veja on-line
fonte
Rebol, 45 bytes
fonte
Lote, 141 bytes
O lote não possui matrizes, portanto, isso apenas imprime a representação de sequência de uma matriz. Explicação: As duas primeiras linhas constroem um padrão repetido de
N
.
s separado porN-1
,
s na variávelt
. A quarta linha usa isso como um padrão de substituiçãoN
vezes para criar aN
matriz -dimensional. O duplocall
é necessário por causa de como as instruçõesfor
eset
funcionam. Primeiro, ofor
comando substitui variáveis. Por acaso, todos os meus%
sinais são duplicados, então isso não faz nada, exceto para citar todos eles, resultando emcall call set s=[%%t:.=%s%%%]
. Em seguida, repete osN
tempos de instrução resultantes . Cada vez, ocall
comando substitui variáveis. Nesse ponto, as
variável possui apenas um único conjunto de%
s, para que seja substituído, resultando em (por exemplo)call set s=[%t:.=[2,2]%]
. A chamada interna substitui at
variável, resultando em (por exemplo)set s=[[2,2],[2,2]]
, executando a atribuição desejada. O valor final des
é então impresso.fonte
Clojure, 49 bytes
Não é o exemplo mais curto de Clojure, mas me diverti com as citações e as citações.
fonte
I , 7 bytes
Eu recebi isso do meu colega, o criador de I.
#Bb
a cópia#
função B ound para b indinghp
h ook o argumento de (a direita) da p função ower (repetição)h~
h ook o argumento para a esquerda~
(de toda a função resultante)Experimente online!
fonte
Lisp comum,
128 102 9579 bytesExperimente online!
fonte