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))) (. direction)))
(fn command [rover string] (fn command [rover string]
(match string (merge rover
:f (match rover.direction (match string
:n (merge rover {:y (+ rover.y 1)}) :f (match rover.direction
:s (merge rover {:y (- rover.y 1)}) :n {:y (+ rover.y 1)}
:w (merge rover {:x (- rover.x 1)}) :s {:y (- rover.y 1)}
:e (merge rover {:x (+ rover.x 1)})) :w {:x (- rover.x 1)}
:r (merge rover {:direction (turn-right rover.direction)}) :e {:x (+ rover.x 1)})
:l (merge rover {:direction (turn-left rover.direction)}) :r {:direction (turn-right rover.direction)}
_ (assert false (. "unrecognised command " string)))) :l {:direction (turn-left rover.direction)}
_ (assert false (. "unrecognised command " string)))))
(fn execute [rover [cmd & cmds]] (fn execute [rover [cmd & cmds]]
(let [r1 (command rover cmd)] (let [r1 (command rover cmd)]