Universal Turing machine: Difference between revisions

m
Line 2,393:
0</pre>
 
<syntaxhighlight lang="lisp">;; 22.0611.2623 (Mise en forme du code)
 
(defun run (rulesprogram rightinput state halt blank)
(let ((left rule op matchnil)
(loop until (memberright state haltinput) do
(setf rule (cdr (assoc state rules)) matchoperand tnil)
(loop for token in rule(match donil))
(loop until (caseequal state tokenhalt)
(=do (setf matchroutine (eqlrest (carassoc right)state opprogram)))
(% (when match (rplacasetf rightmatch op))t)
(< (when match (pushdolist (pop left)token right))routine)
(> (when match (push (pop right)case left)))token
(@= (whensetf match (setfequal state(first opright) (returnoperand)))
(t% (when match (setfrplaca opright tokenoperand)))
(unless< (carwhen match (push (pop left) right)))
(setf right (cons> blank(when match (cdrpush (pop right))) left)))
(@ (when match (setf state operand) (return)))
(format t "Q = <~a ~{~a~}.~{~a~}>~%" state (reverse left) right)))</syntaxhighlight>
(t (setf operand token)))
(unless (first right)
(setf right (cons blank (rest right))))))
(format t "Q = <~a, ~{~a~}.~{~a~}>~%" state (reverse left) right)))</syntaxhighlight>
 
====Code====
422

edits