(in-package :cs325-user) (defparameter *plan* nil) (defparameter *map* nil) (defparameter *state* nil) (define-test go-test (assert-equal '((robot-1 . room-1)) (step-update '((robot-1 . room-2)) '(go room-1) 'robot-1)) (assert-equal '((robot-1 . room-2) (robot-2 . room-1)) (step-update '((robot-1 . room-2) (robot-2 . room-2)) '(go room-1) 'robot-2)) (assert-equal nil (step-update '((robot-1 . room-2)) '(go room-1) 'robot-2)) ) (defun step-update (state step robot) (cond ((null state) nil) ((eql (caar state) robot) (cons (cons robot (cadr step)) (cdr state))) (t (let ((result (step-update (cdr state) step robot))) (if (null result) nil (cons (car state) result)))))) (setq *plan* '(plan (go room-1) (pick-up box-3) (go room-4) (drop)))