rurururururumin’s diary

勉強の備忘録

SICP 問題1.3

問題 1.3

三つの数を引数としてとり, 大きい二つの数の二乗の和を返す手続きを定義せよ.

やっとプログラミングっぽい問題。
condの練習かな?

(require (lib "racket/trace.ss"))
(define a 1)
(define b 7)
(define c 5)

(define sumofsquare ;「二乗の和」の定義
(cond ( (and (> a c)(> b c))(+ (* a a)(* b b)) )   
   ;aとbがcより大きいとき、a^2+b^2
( (and (> b a)(> c a))(+ (* b b)(* c c)) )
;bとcがaより大きいとき、b^2+c^2
( (and (> a b)(> c b))(+ (* a a)(* c c)))))
;aとcがbより大きいとき、a^2+c^2

sumofsquare

>74

でいけてる~と思ってたけど、これ手続きじゃなかった。
traceに怒られちゃった。

(define (sum-of-square x y)
(+ (* x x)(* y y)))
;二乗の和の定義
(define (hikisuu a b c)
(cond ( (and (> a c)(> b c))(sum-of-square a b))
;aとbがcより大きいとき、a^2+b^2
( (and (> b a)(> c a))(sum-of-square b c))
;bとcがaより大きいとき、b^2+c^2
    (else
(sum-of-square a c))))
;aとcがbより大きい とき、a^2+c^2


(trace hikisuu)
(hikisuu 1 7 5)


>(hikisuu 1 7 5)
<74

手続き名がダサいな、、
はてな記法でracketないから見にくい~~~
せめて色だけでも変えれたらな

8/22 色だけ変えてみた
引用にしたら位置がずれるずれる(;;`)