締切 11月18日(火)
宛先 ruby-11-14@e.koeki-u.ac.jp
以下のうちどれか1題を選んで解答せよ。
1〜nまでの整数の和を
の両方で示した上で、再帰的な定義にもとづいて
和を求めるプログラムr-add.rb
を作成せよ。
(標準最高点: C)
積木を三角形に積み上げた家を作る。2段の家を作るときは 2つの積木の上に1個の積木を載せて完成、3段の家を作るときは 3個の積木の上に2個の積木を載せさらにその上に1個の積木を 載せて完成。以下同様にn段の家を作るときは n個の積木から組み上げるルールで作るものとする。
このとき、n段の積木の家を作るときに 必要な積木の個数は何個か求めたい。
brick.rb
を作成せよ。(標準最高点: B)
円盤型の積木を三角錐のように積み上げた塔を作る。 2段の塔を作るときは1辺が2個の正三角形状に並べた3個の積木の 上に1個の積木を 載せて完成。3段の塔を作るときは1辺が3個の正三角形状に 並べた6個の積木の上に3個の積木を正三角形状に並べ、 さらにその上に1個の積木を載せて完成。 以下同様にn段の塔を作るときは1辺がnの 正三角形状に並べた積木の上に1辺がn-1個の 正三角形状の積木を置いて行って組み上げるものとする。
問題2と同様の考え方で、n段の塔を
作るのに必要な積木の個数を求めるプログラム
tower.rb
を作成せよ。
(標準最高点: A)
ハノイの塔を解くプログラムを完成させよ。
(標準最高点: B)
再帰的な考え方を用いて解く問題を設定し それをプログラムにせよ(上限なし)。
※注意※
再帰的な考え方を使わないプログラムは不正解とする。
今回のプログラムは無限ループに陥り、止まらなくなるものを つくってしまう可能性がきわめて高い。プログラムを動かしてもすぐに反 応が返らないときはキーボードで C-c を押してすぐに止める ようにする。プログラムを暴走させたままだと、システムが重くなり他人 に迷惑がかかるので十分に注意すること。
プログラムが完成しなくても、途中まで粘った過程のものを つけて提出せよ。なぜ動かないかの予想を説明に書くこと。 予想が的確であれば完成したのと同等の評価となる。ただし、 文法エラーのないものに限る。
Subjectに
再帰 解いた番号
と書き、本文の先頭に
氏名: | 公益太郎 |
学籍番号: | c114xxx |
クラス: | XX |
のように自分の氏名番号クラスを入れて上記宛先に送ること。 レポート本体は以下のようにすること。
ただし、実行結果については 1種類だけでなく、3種類程度の数で実験したもの を載せること。ただし、出力結果が50行を超えるものは適宜中略すること。