ページ 11

50時間以内に解けるかな?③

Posted: 2012年5月22日(火) 04:00
by Koch Curve
 整数nを入力し、深さnの再帰呼び出しによって作成されるコッホ曲線の頂点の座標を出力するプログラムを作成せよ。
プログラムはC, C++, JAVA, C++11, C#, Dいずれかの言語で作成すること。

コッホ曲線はフラクタルの一種として知られている。フラクタルとは再帰的な構造を持つ図形のことであり、多くの場合再帰的な関数の呼び出しを用いて描画することができる。
コッホ曲線を描く手順は以下の通りである:

線分を引く。(図左上)
線分を3等分し、中央の線分を1辺とする正三角形を描き、下の辺を消す。(図右上)
得られた4つの線分に対して同じ操作を繰り返す。(図左下)
得られた16の線分に対して同じ操作を繰り返す。(図右下)

この操作を無限に繰り返すとコッホ曲線になる。

画像

なお、初期状態は(0, 0), (100, 0)を端点に持つ線分とする。

入力
 1つの整数nが与えられる。
出力
 コッホ曲線の各頂点の座標(x, y)を出力せよ。1行に1点出力せよ。端点の1つ(0, 0)から開始し、一方の端点(100, 0)で終えるひと続きの線分の列となる順番に出力せよ。出力は小終点4桁以下の誤差を含んでいてもよい。

制約

0 ≤ n ≤ 6

入力例 1

1

出力例 1

0.00000000 0.00000000
33.33333333 0.00000000
50.00000000 28.86751346
66.66666667 0.00000000
100.00000000 0.00000000

入力例 2

2

出力例 2

0.00000000 0.00000000
11.11111111 0.00000000
16.66666667 9.62250449
22.22222222 0.00000000
33.33333333 0.00000000
38.88888889 9.62250449
33.33333333 19.24500897
44.44444444 19.24500897
50.00000000 28.86751346
55.55555556 19.24500897
66.66666667 19.24500897
61.11111111 9.62250449
66.66666667 0.00000000
77.77777778 0.00000000
83.33333333 9.62250449
88.88888889 0.00000000
100.00000000 0.00000000

Re: 50時間以内に解けるかな?③

Posted: 2012年5月22日(火) 10:57
by softya(ソフト屋)
50時間以内に解けるかな?①が片付くまで凍結させて頂きます。