Напишите функцию или программу, которая выводит номер каждого типа элемента (вершина, ребро, грань и т. Д.) N-мерного гиперкуба.
Например, трехмерный куб имеет 1 ячейку (т.е. 1 3-мерный куб), 6 граней (т.е. 6 2-мерных кубов), 12 ребер (т.е. 12 2-мерных кубов) и 8 вершин (т.е. 8 0-мерных куба).
Подробнее об элементах гиперкуба можно узнать здесь
Вы также можете взглянуть на следующую последовательность OEIS .
вход
Ваш код будет принимать в качестве входных данных (через STDIN или параметр функции или подобные вещи) целое число, большее или равное 0, которое является измерением гиперкуба.
Ваш код должен теоретически работать для любого ввода> = 0, не учитывая проблемы с памятью и временем (то есть скорость и потенциальные переполнения стека не являются проблемой для вашего ответа, если вход большой). Входные данные, приведенные в качестве контрольных примеров, не будут превышать 12.
Выход
Вы выведете список всех элементов гиперкуба, начиная с элемента «самый высокий размер». Например, для куба (input = 3) вы выведете список [1,6,12,8]
(1 ячейка, 6 граней, 12 ребер, 8 вершин).
Формат списка в выводе является относительно бесплатным, если он выглядит как список.
Вы можете вывести результат в STDOUT или вернуть его из функции.
Контрольные примеры
Input = 0
Output = [1]
Input = 1
Output = [1,2]
Input = 3
Output = [1,6,12,8]
Input = 10
Output = [1, 20, 180, 960, 3360, 8064, 13440, 15360, 11520, 5120, 1024]
Input = 12
Output = [1, 24, 264, 1760, 7920, 25344, 59136, 101376, 126720, 112640, 67584, 24576, 4096]
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.