演習を解いてみる
いいもの見つけた。しばらくは、これを解いて慣れていこう。
5つの整数を引数として受け取り、そのうち偶数が奇数より多い場合は#tを返し、奇数が偶数より多い場合は#fを返す述語even>odd?を定義せよ。当然、いろいろな定義の仕方がある。
> (even>odd? 1 2 3 4 5) #f > (even>odd? 2 -3 4 5 -6) #tScheme演習 第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のみを頼りに作ってみた。
あまりにも冗長な気がするが、これが今の学習状況。
もう少し勉強したら書き直してみる。