rewrite execute usiung accumulate, add second test case

main
Daniel Barlow 2023-01-22 18:19:04 +00:00
parent 574c982368
commit 67bfda490e
1 changed files with 9 additions and 5 deletions

View File

@ -43,11 +43,10 @@
:l {:direction (turn-left rover.direction)}
_ (assert false (. "unrecognised command " string)))))
(fn execute [rover [cmd & cmds]]
(let [r1 (command rover cmd)]
(if (next cmds)
(execute r1 cmds)
r1)))
(fn execute [rover cmds]
(accumulate [rover rover
_ c (ipairs cmds)]
(merge rover (command rover c))))
(fn rover [x y direction]
{: x
@ -99,5 +98,10 @@
(expect "Rotates to north when pointing west and asked to turn right"
(execute r [:r]) {:x 2 :y 4 :direction :n}))
(let [r (rover 1 1 :s)]
(expect "Multiple commands are executed in the right order"
(execute r [:l :l :f :f :f :r :f])
{:x 2 :y 4 :direction :e}))
(print "OK")