Finite state machine: Difference between revisions
Content added Content deleted
(julia example) |
(Added Prolog) |
||
Line 1,224: | Line 1,224: | ||
Machine is READY. (D)eposit or (Q)uit :Q |
Machine is READY. (D)eposit or (Q)uit :Q |
||
Thank you, shutting down now. |
Thank you, shutting down now. |
||
</pre> |
|||
=={{header|Prolog}}== |
|||
<lang Prolog>state(ready, deposit, waiting). |
|||
state(ready, quit, exit). |
|||
state(waiting, select, dispense). |
|||
state(waiting, refund, refunding). |
|||
state(dispense, remove, ready). |
|||
message(ready, 'Please deposit coins.~n'). |
|||
message(waiting, 'Please select an item, or refund coins.~n'). |
|||
message(dispense, 'Please remove your item.~n'). |
|||
message(refunding, 'Coins have been refunded~n'). |
|||
act :- act(ready). |
|||
act(exit). |
|||
act(refunding) :- |
|||
print_message(refunding), |
|||
act(ready). |
|||
act(State) :- |
|||
dif(State, exit), |
|||
print_message(State), |
|||
read(Action), |
|||
state(State, Action, NextState), |
|||
act(NextState). |
|||
print_message(State) :- message(State, Message), format(Message).</lang> |
|||
{{out}} |
|||
<pre> |
|||
2 ?- act. |
|||
Please deposit coins. |
|||
|: deposit. |
|||
Please select an item, or refund coins. |
|||
|: select. |
|||
Please remove your item. |
|||
|: remove. |
|||
Please deposit coins. |
|||
|: deposit. |
|||
Please select an item, or refund coins. |
|||
|: refund. |
|||
Coins have been refunded |
|||
Please deposit coins. |
|||
|: quit. |
|||
true . |
|||
</pre> |
</pre> |
||