ノードが重心座標を使用してラベル付けされている標準の正三角形を考えてみましょう。
この3つのノードの三角形を6つのノードの三角形に変えるには、3つの頂点の新しい線(元の3つのノードの三角形の側面にあるものよりも多く)を追加し、内部エッジ(内部ノードではなく)を削除し、座標を正規化する:
(再び、一つ以上のオリジナル6ノード三角形の側に存在していた)、4つの頂点の行を追加し、10ノードの三角形に6ノード三角形から行くためのプロセスを繰り返すこと、任意の内部エッジ(ただし、削除しない内部ノードを)座標を再正規化します:
このプロセスは無期限に繰り返すことができます。このチャレンジの目標には、N
このプロセスが実行された回数を表す整数が与えられ、重心座標で関連する三角形のすべてのノードが出力されます。
入力
プログラム/関数は、N
このプロセスが適用された回数を表す単一の負でない整数を入力として受け取る必要があります。N=0
では、3つのノードを持つ元の三角形を出力する必要があることに注意してください。
入力は、任意のソース(関数パラメーター、stdioなど)から取得できます。
出力
プログラム/関数は、すべてのノードを正規化された重心座標で出力する必要があります。ノードの順序は関係ありません。数値は、分数(分数の削減は不要)または浮動小数点数として指定できます。「スケーリングされた」ベクトルを出力してノードを指定することもできます。たとえば、次の3つの出力はすべて同等であり、許可されます。
0.5,0.5,0
1/2,2/4,0
[1,1,0]/2
浮動小数点出力を使用する場合、出力は1%以内の精度である必要があります。出力は、必要なシンク(stdio、戻り値、戻りパラメーターなど)になります。重心座標はノードごとに2つの数値によってのみ一意に決定されますが、ノードごとに3つの数値すべてを出力する必要があることに注意してください。
例
サンプルケースの形式は次のとおりです。
N
x0,y0,z0
x1,y1,z1
x2,y2,z2
...
ここで、最初の行は入力N
であり、後続のすべての行x,y,z
は、出力に1回だけ存在するノードを形成します。すべての数値は、近似浮動小数点数として与えられます。
0
1,0,0
0,1,0
0,0,1
1
1,0,0
0,1,0
0,0,1
0.5,0,0.5
0.5,0.5,0
0,0.5,0.5
2
1,0,0
0,1,0
0,0,1
0.667,0,0.333
0.667,0.333,0
0.333,0,0.667
0.333,0.333,0.333
0.333,0.667,0
0,0.333,0.667
0,0.667,0.333
3
1,0,0
0.75,0,0.25
0.75,0.25,0
0.5,0,0.5
0.5,0.25,0.25
0.5,0.5,0
0.25,0,0.75
0.25,0.25,0.5
0.25,0.5,0.25
0.25,0.75,0
0,0,1
0,0.25,0.75
0,0.5,0.5
0,0.75,0.25
0,1,0
得点
これはコードゴルフです。バイト単位の最短コードが優先されます。標準の抜け穴が適用されます。必要なビルトインを使用できます。
[1,2,3]/6
どうですか?