プログラミング入門 第 13 回 レ ポ ー ト 課 題 提出方法:Moodle 上の「2014 前-プログラミング入門-二宮」にアクセスし、第 13 回講義の問題 37 ~39 に提出せよ。 締切り: 2014 年 7 月 25 日(金) 10:20 問題 37 𝑛𝑛番目のストリームの要素を𝑠𝑠𝑛𝑛 としたとき、 𝑠𝑠1 = 0 𝑠𝑠𝑛𝑛 = 𝑠𝑠𝑛𝑛−1 + 8 (4𝑛𝑛 − 7)(4𝑛𝑛 − 5) となる無限ストリーム pi を作成せよ。例えば、次のような結果になれば良い。 > (stream->list pi 5) (0.0 2.6666666666666665 2.895238095238095 2.976046176046176 3.017071817071817) > (stream-ref pi 10) 3.091623806667838 > (stream-ref pi 1000) 3.141092653621038 > (stream-ref pi 1000000) 3.141592153589902 ※このストリームは非常に遅いが𝜋𝜋に収束する。𝑠𝑠1を 0.0 とすれば、実数表示となって答えの確認が 容易になる。 (2 点) 1 問題 38 奇数列の無限ストリームを作ることを考える。補助関数の再帰呼び出しによる無限ストリ ームで実現すると次のようになる。 (define (odds-gen x) (cons x (delay (odds-gen (+ x 2))))) (define odds (odds-gen 1)) しかし、上の定義は長いし、odds-gen が必要であまり美しくない。そこで odds-gen のような補助関 数を用いずに integers から奇数列の無限ストリームを定義する方法について考えることにする。 stream-filter や stream-map 等を用いて integers から奇数列の無限ストリームを定義せよ。ones を用いても構わない。 (2 点) 問題 39 自分自身を用いて定義する方法で奇数列の無限ストリームを定義せよ。stream-map や ones を用いても構わない。 (2 点) 2
© Copyright 2025 ExpyDoc