#lang plait ;(define (middle-of-three a b c) ; (cond ; [(and (> a b) (< a c)) a] ; [(and (> b a) (< b c)) b] ; [(and (> c a) (< c b)) c] ; [(and (< a b) (> a c)) a] ; [(and (< b a) (> b c)) b] ; [(and (< c a) (> c b)) c] ; )) (define (middle-of-three a b c) (cond [(eq? (max (max a b) c) a) (max b c)] [(eq? (max (max a b) c) b) (max a c)] [(eq? (max (max a b) c) c) (max a b)] )) (test (middle-of-three 1 2 3) 2) (test (middle-of-three 1 3 2) 2) (test (middle-of-three 2 1 3) 2) (test (middle-of-three 2 3 1) 2) (test (middle-of-three 3 1 2) 2) (test (middle-of-three 3 2 1) 2)