22 lines
857 B
Plaintext
22 lines
857 B
Plaintext
:- type busy_beaver_states ---> a ; b ; c ; halt.
|
|
:- type busy_beaver_symbols ---> '0' ; '1'.
|
|
|
|
:- func busy_beaver_config = config(busy_beaver_states, busy_beaver_symbols).
|
|
busy_beaver_config = config(a, % initial state
|
|
set([halt]), % set of terminating states
|
|
'0'). % blank symbol
|
|
|
|
:- pred busy_beaver(busy_beaver_states::in,
|
|
busy_beaver_symbols::in,
|
|
busy_beaver_symbols::out,
|
|
action::out,
|
|
busy_beaver_states::out) is semidet.
|
|
busy_beaver(a, '0', '1', right, b).
|
|
busy_beaver(a, '1', '1', left, c).
|
|
busy_beaver(b, '0', '1', left, a).
|
|
busy_beaver(b, '1', '1', right, b).
|
|
busy_beaver(c, '0', '1', left, b).
|
|
busy_beaver(c, '1', '1', stay, halt).
|
|
|
|
TapeOut = turing(busy_beaver_config, busy_beaver, []).
|