アットウィキロゴ
S.O.W - SICPお勉強Wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

S.O.W - SICPお勉強Wiki

Exercises 2.2.1

最終更新:

jout

- view
メンバー限定 登録/ログイン

Chapter 2.2.1



Exercise 2.17

(define (last-pair ls) (if (null? (cdr ls)) (car ls) (last-pair (cdr ls))))
 

Exercise 2.18

(define (rev ls)
  (define (iter ls re)
    (if (null? (cdr ls))
        (cons (car ls) re)
        (iter (cdr ls) (cons (car ls) re))))
  (iter (cdr ls) (cons (car ls) '())))
 

Exercise 2.19

(define us-coins (list 50 25 10 5 1))
(define uk-coins (list 100 50 20 10 5 2 1 0.5))
(define (cc amount coin-values)
  (define (first-denomination coin) (car coin))
  (define (no-more? coin) (null? coin))
  (define (except-first-denomination coin) (cdr coin))
  (cond ((= amount 0) 1)
        ((or (< amount 0) (no-more? coin-values)) 0)
        (else
         (+ (cc amount
                (except-first-denomination coin-values))
            (cc (- amount
                   (first-denomination coin-values))
                coin-values)))))
 

Exercise 2.20

;排他的論理和を用いればもっと簡単に書ける
(define (same-parity x . z)
  (define (same-odd ls)
    (if (null? ls)
        '()
        (if (odd? (car ls))
            (cons (car ls) (same-odd (cdr ls)))
            (same-odd (cdr ls)))))
  (define (same-even ls)
    (if (null? ls)
        '()
        (if (even? (car ls))
            (cons (car ls) (same-even (cdr ls)))
            (same-even (cdr ls)))))
  (if (odd? x) (cons x (same-odd z)) (cons x (same-even z))))
 

Exercise 2.21

(define (square x) (* x x))
(define (square-list1 items)
  (if (null? items)
      '()
      (cons (square (car items)) (square-list1 (cdr items)))))
(define (square-list2 items) (map square items))
 

Exercise 2.22


Exercise 2.23

(define (for-each1 proc items) 
  (if (null? items)
  #t
  (begin (proc (car items)) (for-each proc (cdr items)))))
 

記事メニュー
最近更新されたスレッド
ウィキ募集バナー