Escriba un programa o función que, dado un número entero n, construya una matriz con ndimensiones de nlongitud, donde cada elemento es un identificador de sus propias coordenadas. Es decir, comenzando con una matriz, llénela con nmatrices, donde cada una de ellas contiene nmás matrices, hasta una profundidad de n-1. Los elementos de las matrices más profundas son las coordenadas que describen dónde están en la matriz completa.
Algunos ejemplos en caso de que mi explicación fuera 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"]
]
]
Aquí, "321" significa que es el primer elemento del segundo elemento de la tercera matriz.
Reglas:
- Las coordenadas y la dimensión (
n) pueden ser 0 o 1 indexadas - Puede suponer que
ntiene un solo dígito, debajo de 10 para ambas opciones de indexación para evitar salidas ambiguas - IO es flexible.
- En particular, las coordenadas pueden ser matrices, cadenas, etc., siempre que estén claras. "321" => [3,2,1]
- La salida puede ser enteros en base 10 con o sin ceros a la izquierda.
- Las coordenadas pueden estar en orden inverso si lo desea, siempre que sea coherente. "321" => "123"
- La salida no necesariamente tiene que ser una estructura de matriz en su idioma. Siempre y cuando haya claros marcadores distintos para el inicio de una matriz, el final de una matriz y para separar elementos.
- La salida
n=1puede ser solo 1 - Si su salida es atípica, asegúrese de explicar el formato.
- Este es el código de golf, por lo que gana la solución más corta en cada idioma.
data L a = L [L a] | E a.
Int -> [String]o Int -> [[String]]etc., dependiendo de cuál sea la entrada