problem 9

a^2 + b^2 = c^2 かつ a + b + c = 1000 を満たす a, b, c の積 abc を求める問題

(define (p9)
  (define square (lambda (x) (* x x)))
  (define (p9-iter a b)
    (let1 c (- 1000 a b)
          (if (= (+ (square a) (square b)) (square c))
            (* a b c)
            (p9-iter (if (= b 999) (+ a 1) a)
                     (if (= b 999) 1 (+ b 1))))))
  (p9-iter 1 1))

(print (p9))

ループが冗長な気がしますが、答えが見つかったらループから抜けるので気にしないことにしました。