Jump to content

Finite state machine: Difference between revisions

Added Prolog
(julia example)
(Added Prolog)
Line 1,224:
Machine is READY. (D)eposit or (Q)uit :Q
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>
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.