計算機科学概論演習(課題2) 岸本 今日の課題 • 再帰呼び出しの練習 – 課題A-1 竹内関数 – 課題A-2 星形を描く – 課題B-1 ギャスケット図形 – 課題B-2 石取りゲーム • 課題Aの〆切は今日中 • 課題Bの〆切は来週の金曜日まで (ゴールデンウィークのため) 課題A-1 竹内関数 • 実装は簡単なはず • 計算時間のかかるx,y,zを見つけること • なぜそんなに計算時間がかかるのかを述べること – 正確に述べようとすると多分難しいので、2-3行の 簡単な説明でよい • 計算量という概念を体感することが目的 • デバッガーで振る舞いを確認するのもよい 課題A-2 • (turtles)は1回だけ呼ぶこと • 課題のページ通りに実装すると次のように描 くはず(n=2の場合) • タートルの向きに注意 課題B-1 • (draw-one-gasket size)を用意すること – 描画後のタートルの向きに注意(描き始めの方向 と一致させる) • 再帰呼び出し部分では – sizeのone-gasketを描いた後 – 3カ所で再帰呼び出しを行って size / 2のn-1次のギャスケットを 描く 課題B-2 • 教科書1.2.2の木構造再帰を参考にすること • 実装の一例 – (nim2 n): メイン関数 – (nim-rec n player str): 再帰呼び出し用 – (append-move player num str):各指し手の文字列 (“S1”,”G2”など)を返す という3つの関数を用意する • 注意点: (string-append str1 str2)は、str1にstr2を 追加した文字列を新たに返す関数 – 文字列str1, str2は変更されない
© Copyright 2024 ExpyDoc