7
線上のフラクタル点
時々、私が本当に退屈している(本当に退屈している)とき、線分を描き、その上に点を描くのが好きです。 まず、特定のサイズの線分を描画します。これは、Nの値に対して2 ^ Nです。線は、一連の .文字でます。 ................ 次に、左端にポイントをプロットします。ポイントはX文字ます。 X............... 次に、パターンに従います。最後にプロットしたポイント(これをAと呼びます)から開始し、ライン上の次のプロットポイント(B)に進みます(必要に応じて折り返します)。次に、に進みますライン(C)上の次のプロットポイントます。次に、この3番目のポイント(C)と既にプロットされている次のポイント(D)の中間に新しいポイントをプロットします。 行を折り返すたびに、「中間」は折り返しの方法で決定されます。新しくプロットされたポイントは、常にCの右側にあります。 次の行が現在の行だったとしましょう。次の2点をプロットする方法を次に示します。この例では、重要な各ポイントに文字でラベルを付けます。 X...A...X.X...X. ^ X...A...B.X...X. ^ X...A...B.C...X. ^ X...A...B.C...D. ^ X...X...X.X.A.X. ^ X...X...X.X.A.B. ^ C...X...X.X.A.B. ^ C...D...X.X.A.B. ^ X.A.X...X.X.X.X. ^ 前の例に戻ると、次の点が線の中央にプロットされます。 X.......X....... これはおそらく少し特殊なケースです。次のポイントに進むと、開始した場所がそのまま残ります。唯一の有用な中間点は、それ自体の上に点をプロットするのとは対照的に、「循環」中間点(線上の中間点)です。 以下は、ここから最後までの線にプロットする一連のポイントです。 X.......X....... X.......X...X... X.......X.X.X... X...X...X.X.X... X...X...X.XXX... X.X.X...X.XXX... X.X.X...XXXXX... 次のポイントをプロットする余地はもうありません。隣接する2つのポイントの間に挟まれる必要があるため、N = 4の指定された値の最大深度に達しました。上記のリストの最後の行は「complete 」 チャレンジ 目標は、指定されたNの値に対して完了した行を出力/返す最短のプログラム/名前付き関数を作成することです。上記はN = 4を示しています。 入力 入力は単一の非負整数Nになります。生成された行の長さは2 …
12
code-golf