平成27年度 III-13

科目: 専門科目 / 分野: 情報工学部門 / 年度: 平成27年度

III-13 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

forward(length)とleft(angle)が準備されたC言語で、引数nが100のときにコッホ曲線を描画する再帰関数kochの空欄ア〜エに入る値の組合せを選ぶ問題。

解説

この問題で問われていること

コッホ曲線の描画アルゴリズム(直線を3等分し、中央を三角形の山に置き換えることの再帰)を、コードの空欄に対応づける問題。

解き方

① コッホ曲線: 左60°→右120°(left(−120))→左60°で山を作る。再帰はnを3で割り、n>アの間続ける
② 角度から①③⑤に絞れる。図の最小の線分は全体の約1/27なので3回分割: 100→33→11→3で、11では再帰し3で止まる → 3≦ア<11
③ ア7・イ60・ウ−120・エ60(③)

正解が正しい理由

コッホ曲線は、線分を3等分し、中央の1/3を、正三角形の2辺で置き換える。それを再帰的に繰り返す。コードでは、「koch(n/3)で進み、左に60度回り、koch(n/3)で進み、右に120度回り(left(−120))、koch(n/3)で進み、左に60度回り、koch(n/3)で進む」という動作が、山の形を作る。したがって、イ=60、ウ=−120、エ=60である。ア(再帰の打切りの大きさ)は、n=100から、3で割っていく(100→33→11→3)。図では、最小の線分の長さが、全体の約1/27(約3)で、nが3になったところで直線を描く(forward)ので、n=11のときは、さらに再帰、n=3のときは打切りとなる必要がある。アが7なら、11>7で再帰、3≤7で直線になり、図と一致する。アが1では、さらに再帰して、より細かい図になり、アが13では、n=11で打切りとなり、粗い図になる。したがって、ア=7、イ=60、ウ=−120、エ=60の③が最も適切である。

各選択肢について

覚えるべきポイント

コッホ曲線=線分を3等分し、中央に正三角形の山をつくる操作の再帰。向きの変化は、+60度、−120度、+60度。再帰の深さは、打切り条件(nの閾値)で決まる。

キーワード: コッホ曲線、再帰、フラクタル、タートルグラフィックス、C言語、再帰関数、情報工学部門