O triângulo de Seidel é uma construção matemática semelhante ao triângulo de Pascal e é conhecido por sua conexão com os números de Bernoulli.
As primeiras linhas são:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
Cada linha é gerada da seguinte maneira:
Se o número da linha for par (indexado 1):
Reduza o primeiro item da linha anterior
Cada próximo item é a soma do item anterior e o item acima dele
Duplicar o último item
Se o número da linha for ímpar:
Reduza o último item da linha anterior
Indo para trás , cada item é a soma do item anterior e o item acima dele
Duplique o que agora é o primeiro item.
Basicamente, construímos o triângulo em um padrão em zig-zag:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
Para mais informações, consulte a página da Wikipedia sobre números de Bernoulli.
O desafio:
Dado n
, como argumento de função ou a partir de STDIN, imprima ou retorne a n
quinta linha do triângulo Seidel ou as primeiras n
linhas. Você pode usar a indexação 0 ou 1.
Você não precisa manipular entradas negativas ou não inteiras (nem 0, se indexadas em 1). Você não precisa lidar com saídas maiores que2147483647 = 2^31 - 1
Como isso é código-golfe, faça isso no menor número de bytes possível.
Exemplos:
Nestes exemplos, o valor de retorno é a n
linha th, indexada em 0.
Input -> Output
0 1
1 1 1
2 2 2 1
6 272 272 256 224 178 122 61
13 22368256 44736512 66750976 88057856 108311296 127181312 144361456 159575936 172585936 183194912 191252686 196658216 199360981 199360981