; mars rover

(define (rovers landing1 landing2)
  (let loop ((rover1 landing1) (rover2 landing2))
    (cond ((= rover1 rover2) rover1)
          ((= rover1 landing2)
            (let r1 ((rover1 (- rover1 1)))
              (if (= rover1 rover2) rover1
                (r1 (- rover1 1)))))
          ((= rover2 landing1)
            (let r2 ((rover2 (- rover2 1)))
              (if (= rover1 rover2) rover1
                (r2 (- rover2 1)))))
          (else (loop (- rover1 1) (- rover2 1))))))

(display (rovers 3 6)) (newline)
(display (rovers 6 3)) (newline)