Das Seidel-Dreieck ist eine mathematische Konstruktion, die dem Pascal-Dreieck ähnelt und für seine Verbindung mit den Bernoulli-Zahlen bekannt ist.
Die ersten paar Zeilen sind:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
Jede Zeile wird wie folgt generiert:
Wenn die Zeilennummer gerade ist (1-indiziert):
Bringen Sie das erste Element der vorherigen Zeile nach unten
Jeder nächste Artikel ist die Summe des vorherigen Artikels und des Artikels darüber
Dupliziere das letzte Element
Wenn die Zeilennummer ungerade ist:
Bringen Sie das letzte Element der vorherigen Zeile nach unten
Wenn Sie rückwärts gehen , ist jeder Artikel die Summe des vorherigen Artikels und des Artikels darüber
Dupliziere das, was jetzt der erste Gegenstand ist.
Grundsätzlich konstruieren wir das Dreieck in einem Zick-Zack-Muster:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
Weitere Informationen finden Sie auf der Wikipedia-Seite zu Bernoulli-Zahlen.
Die Herausforderung:
Gegeben n
, entweder als Funktionsargument oder aus STDIN, drucke oder gib entweder die dritte n
Zeile des Seidel-Dreiecks oder die ersten n
Zeilen zurück. Sie können entweder 0 oder 1 Indexierung verwenden.
Sie müssen keine negativen oder nicht ganzzahligen Eingaben (oder 0, wenn 1-indiziert) verarbeiten. Sie müssen keine Ausgaben verarbeiten, die größer als sind2147483647 = 2^31 - 1
Da dies Codegolf ist, tun Sie dies in so wenigen Bytes wie möglich.
Beispiele:
In diesen Beispielen ist der Rückgabewert die n
dritte Zeile mit dem Index 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