(define ( (waterpot (lambda (crocka crockb goal) (slosh (quote (emptyb)) (list (quote (0.0)) (cons crocka crockb))))) (slosh (lambda (pour orp) (cond ((or (equal (cdar orp) goal) (equal (caar orp) goal)) (append pour (quote (goal)))) (t (cond ((member (filla (car orp)) orp) (cond ((member (transab (car orp)) orp) (cond ((member (emptyb (car orp)) orp) (quote suckarubberduck)) (t (slosh (append pour (quote (emptyb))) (cons (emptyb (car orp)) orp))))) (t (slosh (append pour (quote (transab))) (cons (transab (car orp)) orp))))) (t (slosh (append pour (quote (filla))) (cons (filla (car orp)) orp)))))))) (filla (lambda (x) (cons crocka (cdr x)))) (transab (lambda (x) (cond ((greaterp crockb (plus (car x) (cdr x))) (cons 0 (plus (car x) (cdr x)))) (t (cons (difference (car x) (difference crockb (cdr x))) crockb))))) (emptyb (lambda (x) (cons (car x) 0))) (difference (lambda (x y) (plus x (minus y)))) )) (stop 6)