にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

演習を解いてみる

いいもの見つけた。しばらくは、これを解いて慣れていこう。

5つの整数を引数として受け取り、そのうち偶数が奇数より多い場合は#tを返し、奇数が偶数より多い場合は#fを返す述語even>odd?を定義せよ。当然、いろいろな定義の仕方がある。

> (even>odd? 1 2 3 4 5)
#f
> (even>odd? 2 -3 4 5 -6)
#t
Scheme演習 第1回

で、やってみた。

(define (even>odd? a b c d e)
  (define (over3? v w x y z)
    (if (>= (+ v (+ w (+ x (+ y (+ z))))) 3)
        #t #f))
  (over3? (if (even? a) 1 0)
          (if (even? b) 1 0)
          (if (even? c) 1 0)
          (if (even? d) 1 0)
          (if (even? e) 1 0)))

とりあえず、ループを使わない(知らない)状態で、defineとifのみを頼りに作ってみた。
あまりにも冗長な気がするが、これが今の学習状況。
もう少し勉強したら書き直してみる。