;; very simple unit test function (define (check-equal expected actual str) (define (!= a b) (not (= a b))) (if (!= expected actual) (display (string-append "\n check failed! \n" "[" str "] \nexpected != actual\n " (number->string expected) " != " (number->string actual) "\n")))) ;(check-equal 1 2 "test1 for tester") ;(check-equal 1 1 "test2 for tester") ; ver-1 (define (square-sum-larger a b c) (define sum (+ (* a a) (* b b) (* c c))) (define min (if (< a b) (if (< a c) a c) (if (> b c) c b))) (- sum (* min min))) ; ver-2 (define (square-sum-larger a b c) (define sum (+ (* a a) (* b b) (* c c))) (define (get-min min args) (if (null? args) min (if (< min (car args)) (get-min min (cdr args)) (get-min (car args) (cdr args))))) (define min (get-min a (list a b c))) (- sum (* min min))) ;;======================= test-cases ======================= (check-equal (square-sum-larger 1 1 1) (+ 1 1) "all same") (check-equal (square-sum-larger 1 1 3) (+ 1 9) "two same 1") (check-equal (square-sum-larger 1 3 1) (+ 1 9) "two same 2") (check-equal (square-sum-larger 3 1 1) (+ 1 9) "two same 3") (check-equal (square-sum-larger 1 3 8) 73 "1.1") (check-equal (square-sum-larger 1 8 3) 73 "1.2") (check-equal (square-sum-larger 3 1 8) 73 "3.1") (check-equal (square-sum-larger 3 8 1) 73 "3.2") (check-equal (square-sum-larger 8 3 1) 73 "8.1") (check-equal (square-sum-larger 8 1 3) 73 "8.2")



게에에에에엑


데슾보다 리슾이 더 재밌네

ㅎㅎ;