Escreva um programa ou função que, dado um número inteiro n, construa uma matriz com ndimensões de ncomprimento, em que cada elemento seja um identificador de suas próprias coordenadas. Ou seja, começando com uma matriz, preencha-a com nmatrizes, onde cada uma delas contém nmais matrizes, até uma profundidade de n-1. Os elementos das matrizes mais profundas são as coordenadas que descrevem onde estão na matriz completa.
Alguns exemplos, caso minha explicação seja confusa.
n = 1
["1"]
n = 2
[
["11", "12"],
["21", "22"]
]
n = 3
[
[
["111","112","113"],
["121","122","123"],
["131","132","133"]
],
[
["211","212","213"],
["221","222","223"],
["231","232","233"]
],
[
["311","312","313"],
["321","322","323"],
["331","332","333"]
]
]
Aqui, "321" significa que é o 1º elemento do 2º elemento da 3ª matriz.
Regras:
- As coordenadas e a dimensão (
n) podem ser 0 ou 1 indexadas - Você pode assumir que
né um dígito, abaixo de 10 para ambas as opções de indexação, para evitar resultados ambíguos - IO é flexível.
- Em particular, as coordenadas podem ser matrizes, seqüências de caracteres etc., desde que sejam claras. "321" => [3,2,1]
- A saída pode ser números inteiros na base 10 com ou sem zeros à esquerda.
- As coordenadas podem estar na ordem inversa, se desejar, desde que seja consistente. "321" => "123"
- A saída não precisa necessariamente ser uma estrutura de matriz no seu idioma. Desde que haja marcadores distintos e claros para o início de uma matriz, o fim de uma matriz e para a separação de elementos.
- A saída para
n=1pode ser apenas 1 - Se sua saída for atípica, certifique-se de explicar o formato.
- Isso é código-golfe, e a solução mais curta em cada idioma vence!
data L a = L [L a] | E a.
Int -> [String]ou Int -> [[String]]e assim por diante, dependendo do que a entrada é