Trójkąt Seidela jest konstrukcją matematyczną podobną do Trójkąta Pascala i jest znany z połączenia z liczbami Bernoulliego.
Pierwsze kilka wierszy to:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
Każdy wiersz jest generowany w następujący sposób:
Jeśli numer wiersza jest parzysty (indeksowany 1):
Opuść pierwszy element z poprzedniego rzędu
Każdy następny element jest sumą poprzedniego elementu i elementu nad nim
Zduplikuj ostatni element
Jeśli numer wiersza jest nieparzysty:
Opuść ostatni element poprzedniego rzędu
Cofając się , każdy element jest sumą poprzedniego elementu i elementu nad nim
Zduplikuj pierwszy element.
Zasadniczo budujemy trójkąt w zygzakowaty wzór:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
Aby uzyskać więcej informacji, zobacz stronę w Wikipedii na temat liczb Bernoulli.
Wyzwanie:
Biorąc pod uwagę n
, albo jako argument funkcji, albo z STDIN, wypisz lub zwróć albo n
th wiersz trójkąta Seidela, albo pierwszyn
rzędy. Możesz użyć indeksowania 0 lub 1.
Nie musisz obsługiwać danych wejściowych ujemnych lub niecałkowitych (ani 0, jeśli indeksowane 1). Nie musisz obsługiwać wyników większych niż2147483647 = 2^31 - 1
Ponieważ jest to kod-golf, zrób to w jak najmniejszej liczbie bajtów.
Przykłady:
W tych przykładach zwracaną wartością jest n
th wiersz z indeksowaniem 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