Escreva uma função ou programa que produza o número de cada tipo de elemento (vértice, aresta, face etc.) de um hipercubo N-dimensional.
Como exemplo, o cubo tridimensional possui 1 célula (ou seja, 1 cubo tridimensional), 6 faces (ou seja, 6 cubos bidimensionais), 12 arestas (ou seja, 12 cubos bidimensionais) e 8 vértices (ou seja, 8 dimensões 0 cubos).
Mais detalhes sobre os elementos do Hypercube podem ser encontrados aqui
Você também pode dar uma olhada na seguinte sequência OEIS .
Entrada
Seu código terá como entrada (via STDIN ou um parâmetro de função ou algo semelhante) um número inteiro maior ou igual a 0, que é a dimensão do hipercubo.
Teoricamente, seu código deve funcionar para qualquer entrada> = 0, desconsiderando problemas de memória e tempo (ou seja, velocidade e estouros de pilha em potencial não são um problema para sua resposta se a entrada for grande). As entradas fornecidas como casos de teste não serão superiores a 12.
Resultado
Você emitirá uma lista de todos os elementos do hipercubo, começando com o elemento "maior dimensão". Por exemplo, para um cubo (entrada = 3), você exibirá a lista [1,6,12,8]
(1 célula, 6 faces, 12 arestas, 8 vértices).
O formato da lista na saída é relativamente livre, desde que pareça uma lista.
Você pode enviar o resultado para STDOUT ou retorná-lo de uma função.
Casos de teste
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]
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.