これはパスカルの三つ編みです。
1 4 15 56 209 780 2911 10864 40545 151316 564719
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719
完全に作り上げました。ブレイズ・パスカルは、私が知る限り編組を持っていませんでした。もしそうなら、おそらく数字ではなく髪でできていたでしょう。
次のように定義されます。
- 最初の列
1
の中央にはシングルがあります。 - 2番目の列には
1
、上部と下部にあります。 - 次に、中央に数字を置くか、上下に数字のコピーを2つ置くかを交互に選択します。
- 数字が上または下にある場合、2つの隣接する数字の合計になります(例:)
56 = 15 + 41
。頭を少し傾けると、Pascalの三角形のステップのようになります。 - 数値が中央にある場合、3つの隣接する数値すべての合計になります(例:)
41 = 15 + 11 + 15
。
あなたの仕事は、この三つ編み(の一部)を印刷することです。
入力
n
出力する最後の列のインデックスを提供する単一の整数を受け取るプログラムまたは関数を作成する必要があります。
最初の列(1
中央の行に1つだけ印刷する)がn = 0
またはに対応するかどうかを選択できますn = 1
。これは、可能なすべての入力にわたって一貫した選択である必要があります。
出力
パスカルの三つ編みをn
th列まで出力します。空白は上記のレイアウト例と正確に一致する必要がありますが、短い行を長い行の長さまでスペースで埋め、オプションで末尾の改行を出力できる点が異なります。
言い換えると、すべての列はその列の数(または同じ数のペア)と同じ幅でなければならず、連続する列の数は重複してはならず、列間にスペースがあってはなりません。
結果をSTDOUT(または最も近い代替)に出力するか、関数を記述する場合、同じ内容の文字列または3つの文字列のリスト(各行に1つ)を返すことができます。
詳細
あなたはそれn
が最初の列のインデックスより小さくないことを仮定するかもしれません(それで、あなたのインデックスより小さくない、0
または1
依存します)。また、組紐の最後の数が256未満、または言語のネイティブ整数型で表現可能な最大数のいずれか大きい方であると仮定することもできます。だからあなたのネイティブ整数型はバイトのみを保存することができれば、あなたは最大であることを前提とすることができn
ている9
か10
(ベース1あなたは0-かを使用するかに応じてn
)、それは32ビット符号付き整数を格納することができた場合、n
せいぜいでしょう33
か34
。
標準のコードゴルフ規則が適用されます。最短のコードが優先されます。
OEIS
関連するOEISリンクをいくつか示します。もちろん、これらには三つ編みの数字を生成するさまざまな方法のためのネタバレが含まれています:
テストケース
これらのテストケースでは、1ベースのインデックス付けを使用します。各テストケースは4行で、最初の行は入力で、残りの3行は出力です。
1
1
---
2
1
1
1
---
3
1
1 3
1
---
5
1 4
1 3 11
1 4
---
10
1 4 15 56 209
1 3 11 41 153
1 4 15 56 209
---
15
1 4 15 56 209 780 2911
1 3 11 41 153 571 2131 7953
1 4 15 56 209 780 2911
---
24
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560