В: Достаточно памяти и положительное целое число N
Out: N-мерный массив N ^ N, заполненный N, где N ^ N означает N слагаемых N-by-N-by-N-by ...
Примеры:
1: [1]
массив 1D (список) длиной 1, содержащий один 1
2: [[2,2],[2,2]]
это двумерный массив (таблица) с 2 строками и 2 столбцами, заполненными 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]]]
трехмерный массив (куб) с 3 слоями, 3 строками и 3 столбцами, заполненный 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 и 6: пожалуйста, посмотрите один из ответов.
Ответы:
Python , 32 байта
Попробуйте онлайн!
Делает строку как
"[[[n]*n]*n]*n"
сn
умножением и оценивает ее как код Python. Поскольку оценка происходит в пределах области действия функции, имя переменнойn
оценивается на входе функции.источник
J, 4 байта
Попробуйте онлайн!
объяснение
источник
$~$~
что эквивалентно, а также повторяется$~$~
переведено на английский ... ДЕНЬГИ, получить больше, ДЕНЬГИ, получить больше ...APL (Dyalog APL) , 4 байта
Попробуйте онлайн!
источник
⍴⍨⍴⍨
тоже работает, хотя выглядит круче.Mathematica,
2220 байтисточник
Р, 26
Это очевидный ответ, но, может быть, есть что-то умнее?
источник
scan()
необходимо?n=scan();
,function(n)
но это делает его дольше.n
назначение внутрьarray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
4440 байтдемонстрация
Показать фрагмент кода
источник
Haskell , 52 байта
Попробуйте онлайн!
Вдохновлен ответом @ nimi , но использует больше предопределенных функций.
iterate
и!!
вместо рекурсивной справочной функции.filter(>'"').show
для форматирования списка строк, а затем для удаления лишних"
символов.источник
05AB1E (наследие) ,
65 байт-1 спасибо Кевину Круйссену
Попробуйте онлайн!
источник
D
может быть удален, потому что ввод снова используется неявно (не уверен, что это было так, когда вы опубликовали ответ, но вам больше не нужен явный ответD
).Октава,
3533252320 байтПопробуйте онлайн!
Благодаря @LuisMendo сэкономлено 8 байт
Попробуйте онлайн!
Предыдущий ответ:
Попробуйте онлайн!
источник
Haskell, 62 байта
Пример использования:
f 2
->"[[2,2],[2,2]]"
. Попробуйте онлайн! ,Система строгих типов в Haskell предотвращает функцию, которая возвращает вложенные списки различной глубины, поэтому я создаю результат в виде строки.
Как это устроено:
источник
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? Не слишком знаком с Haskell(#)0=show
, но все определения функции должны иметь одинаковое количество аргументов. Вторая строка (n#l='['...
) нуждается в двух аргументах, поэтому первая строка также должна иметь два аргумента.MATL, 8 байт
Попробуйте это в MATL Online (я добавил некоторый код, показывающий фактический размер выходных данных, поскольку все n-мерные выходные данные в MATL показаны в виде 2D-матриц, где все измерения> 2 сведены во второе измерение).
объяснение
источник
Zy
в конце кода, он говорит фактический размерPython 2 , 36 байт
-2 байта благодаря @CalculatorFeline
Попробуйте онлайн!
источник
~-n
==(n-1)
.CJam , 12 байт
Попробуйте онлайн!
объяснение
источник
Желе , 5 байт
Попробуйте онлайн!
Как?
источник
Java
979695 байтUngolfed:
источник
i<=1
наi<2
?(n,i)->{...}
JavaScript (ES6), 38 байт
Требуемая к памяти версия этого составляет 45 байтов:
источник
Утилиты Bash + GNU, 117 байт
Попробуйте онлайн!
Программа по существу считает от 0 до (n ^ n) -1 в базе n, где n - это ввод. Для каждого числа base-n k в подсчете выполняется следующее:
(Для значения n = 1 необходимо добавить скобки в качестве особого случая. Это входное значение также генерирует некоторый вывод в stderr, который можно игнорировать в соответствии со стандартными правилами PPCG.)
Может быть, есть более короткий способ реализовать эту идею.
Образец прогона:
источник
Желе , 4 байта
Попробуйте онлайн!
То же самое, но с одной монадой и без необходимости в разделителе цепей:
4 байта
источник
Желе , 5 байт
Попробуйте онлайн!
объяснение
источник
Python 3 ,
57535038 байтПопробуйте онлайн!
-4 байта благодаря @CalculatorFeline
34 байта:
Должен называться
f(4,4)
источник
c>1
на,c
чтобы сохранить 1 байт. (Уценка, прекратить дедупликацию пробелов через`
s)c>0
в этом конкретном случае.<space>n
. Проблема решена и бонус - больше байтов сохранено! : D (То есть пробелы в конце встроенного кода возможны, но не в начале? Это странно ...) Ссылка наРубин,
2826 байтСпасибо Cyoce за сохранение 2 байта!
Похищенные бесстыдно из XNOR «s отличного ответа .
источник
Рубин, 27 байт
Всего на 1 байт больше, но вместо трюка 'eval' из замечательного Python-ответа xnor используется другой подход.
источник
Perl 6 , 25 байт
Начинается с
n
и итеративно применяет времена преобразования «repeat n times»n
, каждый раз создавая дополнительный уровеньList
вложенности.Попробуйте онлайн!
источник
$_
вместо этого, чтобы сохранить байт$_
качестве параметра внутреннего блока, поэтому не могу использовать его и в качестве параметра внешнего блока.$n
и$_
всегда имеют одинаковое значение. Попробуйте онлайн!PHP,
7062 байтаЭто самое простое, что я могу придумать.
Принимает входные данные в качестве первого аргумента и печатает полученный массив на экране.
Спасибо @ user59178 за то, что сэкономили мне 8 байт !
источник
$l
. Удаление$i=0,
и замена$l
с$n
сохранением 7 байтов. Дополнительный байт можно сохранить, не назначая$F
, назначая$n
в условном$F?:$n
array_fill()
Clojure, 36 байт
Итерирует функцию, которая повторяет время своего аргумента
n
, создает бесконечную последовательность таких элементов, а затем принимает ееn
th-й элемент.Посмотри это онлайн
источник
Ребол, 45 байт
источник
Пакет, 141 байт
Batch на самом деле не имеет массивов, поэтому он просто печатает строковое представление массива. Объяснение: Первые две строки создают повторяющийся шаблон
N
.
s, разделенныхN-1
,
s в переменнойt
. Затем четвертая строка использует это в качествеN
времен подстановки для созданияN
массива -mensional. Двойникcall
необходим из-за того, как работают операторыfor
andset
. Сначалаfor
команда подставляет переменные. Как это происходит, все мои%
знаки удваиваются, так что это ничего не делает, кроме как заключить их в кавычки, что приводит кcall call set s=[%%t:.=%s%%%]
. Затем он повторяет итоговые значения операторовN
. Каждый разcall
команда подставляет переменные. На данный момент,s
переменная имеет только один набор%
s, поэтому он подставляется, что приводит к (например)call set s=[%t:.=[2,2]%]
. Внутренний вызов затем заменяетt
переменную, в результате чего (например)set s=[[2,2],[2,2]]
выполняется желаемое присваивание. Окончательное значениеs
затем печатается.источник
Clojure, 49 байтов
Не самый короткий пример Clojure, но я забавляюсь цитатами и цитатами.
источник
Я , 7 байт
Я получил это от моего коллеги, создателя I.
#Bb
копия#
функция B ound в б indinghp
ч ООК аргумент к (справа) р функции Ауэр (повтор)h~
ч ООК аргумент влево~
(всей полученной функции)Попробуйте онлайн!
источник
Common Lisp,
128 102 9579 байтПопробуйте онлайн!
источник