; 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)
OyBtYXJzIHJvdmVyCgooZGVmaW5lIChyb3ZlcnMgbGFuZGluZzEgbGFuZGluZzIpCiAgKGxldCBsb29wICgocm92ZXIxIGxhbmRpbmcxKSAocm92ZXIyIGxhbmRpbmcyKSkKICAgIChjb25kICgoPSByb3ZlcjEgcm92ZXIyKSByb3ZlcjEpCiAgICAgICAgICAoKD0gcm92ZXIxIGxhbmRpbmcyKQogICAgICAgICAgICAobGV0IHIxICgocm92ZXIxICgtIHJvdmVyMSAxKSkpCiAgICAgICAgICAgICAgKGlmICg9IHJvdmVyMSByb3ZlcjIpIHJvdmVyMQogICAgICAgICAgICAgICAgKHIxICgtIHJvdmVyMSAxKSkpKSkKICAgICAgICAgICgoPSByb3ZlcjIgbGFuZGluZzEpCiAgICAgICAgICAgIChsZXQgcjIgKChyb3ZlcjIgKC0gcm92ZXIyIDEpKSkKICAgICAgICAgICAgICAoaWYgKD0gcm92ZXIxIHJvdmVyMikgcm92ZXIxCiAgICAgICAgICAgICAgICAocjIgKC0gcm92ZXIyIDEpKSkpKQogICAgICAgICAgKGVsc2UgKGxvb3AgKC0gcm92ZXIxIDEpICgtIHJvdmVyMiAxKSkpKSkpCgooZGlzcGxheSAocm92ZXJzIDMgNikpIChuZXdsaW5lKQooZGlzcGxheSAocm92ZXJzIDYgMykpIChuZXdsaW5lKQ==