SICP Exercise 1.3

연습문제 1.3: 세 숫자를 인자로 받아 그 가운데 큰 숫자 두 개를 제곱한 다음,
그 두 값을 덧셈하여 내놓는 프로시저를 정의하라.

(ver 1) 시퀀스로 만들어 정렬한 다음 값을 뽑아내도 되겠지만, 지금은 SICP도
clojure도 다 초급이니 가장 간단한 (그리고 무식한) 버전으로 만들어보자.

(defn ex-1-3  [a b c]
  (if  (and  (> a b)  (> b c))
    (+  (* a a)  (* b b))
    (if  (and  (> a b)  (> c b))
      (+  (* a a)  (* c c))
      (if  (and  (> a c)  (> b c))
        (+  (* a a)  (* b b))
        (+  (* b b)  (* c c))))))

(ver 2) sort 함수를 사용한 예.

(defn ex-1-3 [a b c]
  (let [[x y] (sort > [a b c])]
    (+ (* x x) (* y y))))

고백하자면, 이 세 줄 짜는데 30분 걸렸다.