extract common call to merge

main
Daniel Barlow 2023-01-22 18:11:43 +00:00
parent 94325e53a0
commit db552b8c11
1 changed files with 10 additions and 10 deletions

View File

@ -31,17 +31,17 @@
}
(. direction)))
(fn command [rover string]
(match string
:f (match rover.direction
:n (merge rover {:y (+ rover.y 1)})
:s (merge rover {:y (- rover.y 1)})
:w (merge rover {:x (- rover.x 1)})
:e (merge rover {:x (+ rover.x 1)}))
:r (merge rover {:direction (turn-right rover.direction)})
:l (merge rover {:direction (turn-left rover.direction)})
_ (assert false (. "unrecognised command " string))))
(merge rover
(match string
:f (match rover.direction
:n {:y (+ rover.y 1)}
:s {:y (- rover.y 1)}
:w {:x (- rover.x 1)}
:e {:x (+ rover.x 1)})
:r {:direction (turn-right rover.direction)}
:l {:direction (turn-left rover.direction)}
_ (assert false (. "unrecognised command " string)))))
(fn execute [rover [cmd & cmds]]
(let [r1 (command rover cmd)]