Напишите программу или функцию, которая, учитывая целое число n
, создает массив с n
измерениями n
длины, где каждый элемент является идентификатором своих собственных координат. То есть, начиная с одного массива, заполняйте его n
массивами, каждый из которых содержит n
больше массивов, вплоть до глубины n-1
. Элементами самых глубоких массивов являются координаты, описывающие, где они находятся в полном массиве.
Несколько примеров на случай, если мое объяснение сбивает с толку.
n = 1
["1"]
п = 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"]
]
]
Здесь «321» означает, что это 1-й элемент 2-го элемента 3-го массива.
Правила:
- Координаты и измерение (
n
) могут быть проиндексированы либо 0, либо 1 - Вы можете предположить, что
n
это одна цифра, ниже 10 для обоих вариантов индексирования, чтобы предотвратить неоднозначные результаты - IO гибкий.
- В частности, координаты могут быть массивами, строками и т. Д., Если они свободны. "321" => [3,2,1]
- Выходные данные могут быть целыми числами в базе 10 с или без начальных нулей.
- Координаты могут быть в обратном порядке, если вы хотите, если это не противоречит. "321" => "123"
- Вывод не обязательно должен быть структурой массива на вашем языке. Пока есть четкие четкие маркеры для начала массива, конца массива и для разделения элементов.
- Выход для
n=1
может быть просто 1 - Если ваш вывод нетипичен, обязательно объясните формат.
- Это код-гольф, поэтому выигрывает самое короткое решение на каждом языке!
data L a = L [L a] | E a
,
Int -> [String]
или Int -> [[String]]
и так далее, в зависимости от того, что является вводом