Universal Turing machine: Difference between revisions
Content added Content deleted
(→{{header|Lambdatalk}}: minor edit) |
Alextretyak (talk | contribs) (Added 11l) |
||
Line 80: | Line 80: | ||
This machine runs for more than 47 millions steps. |
This machine runs for more than 47 millions steps. |
||
<br><br> |
<br><br> |
||
=={{header|11l}}== |
|||
{{trans|Python}} |
|||
<lang 11l>F run_utm(halt, state, Char blank; rules_in, [Char] &tape = [Char](); =pos = 0) |
|||
V st = state |
|||
I tape.empty |
|||
tape.append(blank) |
|||
I pos < 0 |
|||
pos += tape.len |
|||
V rules = Dict(rules_in, r -> ((r[0], Char(r[1])), (Char(r[2]), r[3], r[4]))) |
|||
L |
|||
print(st.ljust(4), end' ‘ ’) |
|||
L(v) tape |
|||
V i = L.index |
|||
I i == pos |
|||
print(‘[’v‘]’, end' ‘ ’) |
|||
E |
|||
print(v, end' ‘ ’) |
|||
print() |
|||
I st == halt |
|||
L.break |
|||
I (st, tape[pos]) !C rules |
|||
L.break |
|||
V (v1, dr, s1) = rules[(st, tape[pos])] |
|||
tape[pos] = v1 |
|||
I dr == ‘left’ |
|||
I pos > 0 |
|||
pos-- |
|||
E |
|||
tape.insert(0, blank) |
|||
I dr == ‘right’ |
|||
pos++ |
|||
I pos >= tape.len |
|||
tape.append(blank) |
|||
st = s1 |
|||
print("incr machine\n") |
|||
run_utm( |
|||
halt' ‘qf’, |
|||
state' ‘q0’, |
|||
blank' Char(‘B’), |
|||
rules_in' [‘q0 1 1 right q0’.split(‘ ’, group_delimiters' 1B), |
|||
‘q0 B 1 stay qf’.split(‘ ’, group_delimiters' 1B)], |
|||
tape' &[‘1’, ‘1’, ‘1’] |
|||
) |
|||
print("\nbusy beaver\n") |
|||
run_utm( |
|||
halt' ‘halt’, |
|||
state' ‘a’, |
|||
blank' Char(‘0’), |
|||
rules_in' |
|||
[‘a 0 1 right b’.split(‘ ’, group_delimiters' 1B), |
|||
‘a 1 1 left c’.split(‘ ’, group_delimiters' 1B), |
|||
‘b 0 1 left a’.split(‘ ’, group_delimiters' 1B), |
|||
‘b 1 1 right b’.split(‘ ’, group_delimiters' 1B), |
|||
‘c 0 1 left b’.split(‘ ’, group_delimiters' 1B), |
|||
‘c 1 1 stay halt’.split(‘ ’, group_delimiters' 1B)] |
|||
) |
|||
print("\nsorting test\n") |
|||
run_utm( |
|||
halt' ‘STOP’, |
|||
state' ‘A’, |
|||
blank' Char(‘0’), |
|||
rules_in' |
|||
[‘A 1 1 right A’.split(‘ ’, group_delimiters' 1B), |
|||
‘A 2 3 right B’.split(‘ ’, group_delimiters' 1B), |
|||
‘A 0 0 left E’.split(‘ ’, group_delimiters' 1B), |
|||
‘B 1 1 right B’.split(‘ ’, group_delimiters' 1B), |
|||
‘B 2 2 right B’.split(‘ ’, group_delimiters' 1B), |
|||
‘B 0 0 left C’.split(‘ ’, group_delimiters' 1B), |
|||
‘C 1 2 left D’.split(‘ ’, group_delimiters' 1B), |
|||
‘C 2 2 left C’.split(‘ ’, group_delimiters' 1B), |
|||
‘C 3 2 left E’.split(‘ ’, group_delimiters' 1B), |
|||
‘D 1 1 left D’.split(‘ ’, group_delimiters' 1B), |
|||
‘D 2 2 left D’.split(‘ ’, group_delimiters' 1B), |
|||
‘D 3 1 right A’.split(‘ ’, group_delimiters' 1B), |
|||
‘E 1 1 left E’.split(‘ ’, group_delimiters' 1B), |
|||
‘E 0 0 right STOP’.split(‘ ’, group_delimiters' 1B)], |
|||
tape' &‘2 2 2 1 2 2 1 2 1 2 1 2 1 2’.split(‘ ’).map(Char) |
|||
)</lang> |
|||
{{out}} |
|||
<pre style="height:30ex;overflow:scroll"> |
|||
incr machine |
|||
q0 [1] 1 1 |
|||
q0 1 [1] 1 |
|||
q0 1 1 [1] |
|||
q0 1 1 1 [B] |
|||
qf 1 1 1 [1] |
|||
busy beaver |
|||
a [0] |
|||
b 1 [0] |
|||
a [1] 1 |
|||
c [0] 1 1 |
|||
b [0] 1 1 1 |
|||
a [0] 1 1 1 1 |
|||
b 1 [1] 1 1 1 |
|||
b 1 1 [1] 1 1 |
|||
b 1 1 1 [1] 1 |
|||
b 1 1 1 1 [1] |
|||
b 1 1 1 1 1 [0] |
|||
a 1 1 1 1 [1] 1 |
|||
c 1 1 1 [1] 1 1 |
|||
halt 1 1 1 [1] 1 1 |
|||
sorting test |
|||
A [2] 2 2 1 2 2 1 2 1 2 1 2 1 2 |
|||
B 3 [2] 2 1 2 2 1 2 1 2 1 2 1 2 |
|||
B 3 2 [2] 1 2 2 1 2 1 2 1 2 1 2 |
|||
B 3 2 2 [1] 2 2 1 2 1 2 1 2 1 2 |
|||
B 3 2 2 1 [2] 2 1 2 1 2 1 2 1 2 |
|||
B 3 2 2 1 2 [2] 1 2 1 2 1 2 1 2 |
|||
B 3 2 2 1 2 2 [1] 2 1 2 1 2 1 2 |
|||
B 3 2 2 1 2 2 1 [2] 1 2 1 2 1 2 |
|||
B 3 2 2 1 2 2 1 2 [1] 2 1 2 1 2 |
|||
B 3 2 2 1 2 2 1 2 1 [2] 1 2 1 2 |
|||
B 3 2 2 1 2 2 1 2 1 2 [1] 2 1 2 |
|||
B 3 2 2 1 2 2 1 2 1 2 1 [2] 1 2 |
|||
B 3 2 2 1 2 2 1 2 1 2 1 2 [1] 2 |
|||
B 3 2 2 1 2 2 1 2 1 2 1 2 1 [2] |
|||
B 3 2 2 1 2 2 1 2 1 2 1 2 1 2 [0] |
|||
C 3 2 2 1 2 2 1 2 1 2 1 2 1 [2] 0 |
|||
C 3 2 2 1 2 2 1 2 1 2 1 2 [1] 2 0 |
|||
D 3 2 2 1 2 2 1 2 1 2 1 [2] 2 2 0 |
|||
D 3 2 2 1 2 2 1 2 1 2 [1] 2 2 2 0 |
|||
D 3 2 2 1 2 2 1 2 1 [2] 1 2 2 2 0 |
|||
D 3 2 2 1 2 2 1 2 [1] 2 1 2 2 2 0 |
|||
D 3 2 2 1 2 2 1 [2] 1 2 1 2 2 2 0 |
|||
D 3 2 2 1 2 2 [1] 2 1 2 1 2 2 2 0 |
|||
D 3 2 2 1 2 [2] 1 2 1 2 1 2 2 2 0 |
|||
D 3 2 2 1 [2] 2 1 2 1 2 1 2 2 2 0 |
|||
D 3 2 2 [1] 2 2 1 2 1 2 1 2 2 2 0 |
|||
D 3 2 [2] 1 2 2 1 2 1 2 1 2 2 2 0 |
|||
D 3 [2] 2 1 2 2 1 2 1 2 1 2 2 2 0 |
|||
D [3] 2 2 1 2 2 1 2 1 2 1 2 2 2 0 |
|||
A 1 [2] 2 1 2 2 1 2 1 2 1 2 2 2 0 |
|||
B 1 3 [2] 1 2 2 1 2 1 2 1 2 2 2 0 |
|||
B 1 3 2 [1] 2 2 1 2 1 2 1 2 2 2 0 |
|||
B 1 3 2 1 [2] 2 1 2 1 2 1 2 2 2 0 |
|||
B 1 3 2 1 2 [2] 1 2 1 2 1 2 2 2 0 |
|||
B 1 3 2 1 2 2 [1] 2 1 2 1 2 2 2 0 |
|||
B 1 3 2 1 2 2 1 [2] 1 2 1 2 2 2 0 |
|||
B 1 3 2 1 2 2 1 2 [1] 2 1 2 2 2 0 |
|||
B 1 3 2 1 2 2 1 2 1 [2] 1 2 2 2 0 |
|||
B 1 3 2 1 2 2 1 2 1 2 [1] 2 2 2 0 |
|||
B 1 3 2 1 2 2 1 2 1 2 1 [2] 2 2 0 |
|||
B 1 3 2 1 2 2 1 2 1 2 1 2 [2] 2 0 |
|||
B 1 3 2 1 2 2 1 2 1 2 1 2 2 [2] 0 |
|||
B 1 3 2 1 2 2 1 2 1 2 1 2 2 2 [0] |
|||
C 1 3 2 1 2 2 1 2 1 2 1 2 2 [2] 0 |
|||
C 1 3 2 1 2 2 1 2 1 2 1 2 [2] 2 0 |
|||
C 1 3 2 1 2 2 1 2 1 2 1 [2] 2 2 0 |
|||
C 1 3 2 1 2 2 1 2 1 2 [1] 2 2 2 0 |
|||
D 1 3 2 1 2 2 1 2 1 [2] 2 2 2 2 0 |
|||
D 1 3 2 1 2 2 1 2 [1] 2 2 2 2 2 0 |
|||
D 1 3 2 1 2 2 1 [2] 1 2 2 2 2 2 0 |
|||
D 1 3 2 1 2 2 [1] 2 1 2 2 2 2 2 0 |
|||
D 1 3 2 1 2 [2] 1 2 1 2 2 2 2 2 0 |
|||
D 1 3 2 1 [2] 2 1 2 1 2 2 2 2 2 0 |
|||
D 1 3 2 [1] 2 2 1 2 1 2 2 2 2 2 0 |
|||
D 1 3 [2] 1 2 2 1 2 1 2 2 2 2 2 0 |
|||
D 1 [3] 2 1 2 2 1 2 1 2 2 2 2 2 0 |
|||
A 1 1 [2] 1 2 2 1 2 1 2 2 2 2 2 0 |
|||
B 1 1 3 [1] 2 2 1 2 1 2 2 2 2 2 0 |
|||
B 1 1 3 1 [2] 2 1 2 1 2 2 2 2 2 0 |
|||
B 1 1 3 1 2 [2] 1 2 1 2 2 2 2 2 0 |
|||
B 1 1 3 1 2 2 [1] 2 1 2 2 2 2 2 0 |
|||
B 1 1 3 1 2 2 1 [2] 1 2 2 2 2 2 0 |
|||
B 1 1 3 1 2 2 1 2 [1] 2 2 2 2 2 0 |
|||
B 1 1 3 1 2 2 1 2 1 [2] 2 2 2 2 0 |
|||
B 1 1 3 1 2 2 1 2 1 2 [2] 2 2 2 0 |
|||
B 1 1 3 1 2 2 1 2 1 2 2 [2] 2 2 0 |
|||
B 1 1 3 1 2 2 1 2 1 2 2 2 [2] 2 0 |
|||
B 1 1 3 1 2 2 1 2 1 2 2 2 2 [2] 0 |
|||
B 1 1 3 1 2 2 1 2 1 2 2 2 2 2 [0] |
|||
C 1 1 3 1 2 2 1 2 1 2 2 2 2 [2] 0 |
|||
C 1 1 3 1 2 2 1 2 1 2 2 2 [2] 2 0 |
|||
C 1 1 3 1 2 2 1 2 1 2 2 [2] 2 2 0 |
|||
C 1 1 3 1 2 2 1 2 1 2 [2] 2 2 2 0 |
|||
C 1 1 3 1 2 2 1 2 1 [2] 2 2 2 2 0 |
|||
C 1 1 3 1 2 2 1 2 [1] 2 2 2 2 2 0 |
|||
D 1 1 3 1 2 2 1 [2] 2 2 2 2 2 2 0 |
|||
D 1 1 3 1 2 2 [1] 2 2 2 2 2 2 2 0 |
|||
D 1 1 3 1 2 [2] 1 2 2 2 2 2 2 2 0 |
|||
D 1 1 3 1 [2] 2 1 2 2 2 2 2 2 2 0 |
|||
D 1 1 3 [1] 2 2 1 2 2 2 2 2 2 2 0 |
|||
D 1 1 [3] 1 2 2 1 2 2 2 2 2 2 2 0 |
|||
A 1 1 1 [1] 2 2 1 2 2 2 2 2 2 2 0 |
|||
A 1 1 1 1 [2] 2 1 2 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 3 [2] 1 2 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 3 2 [1] 2 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 3 2 1 [2] 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 3 2 1 2 [2] 2 2 2 2 2 0 |
|||
B 1 1 1 1 3 2 1 2 2 [2] 2 2 2 2 0 |
|||
B 1 1 1 1 3 2 1 2 2 2 [2] 2 2 2 0 |
|||
B 1 1 1 1 3 2 1 2 2 2 2 [2] 2 2 0 |
|||
B 1 1 1 1 3 2 1 2 2 2 2 2 [2] 2 0 |
|||
B 1 1 1 1 3 2 1 2 2 2 2 2 2 [2] 0 |
|||
B 1 1 1 1 3 2 1 2 2 2 2 2 2 2 [0] |
|||
C 1 1 1 1 3 2 1 2 2 2 2 2 2 [2] 0 |
|||
C 1 1 1 1 3 2 1 2 2 2 2 2 [2] 2 0 |
|||
C 1 1 1 1 3 2 1 2 2 2 2 [2] 2 2 0 |
|||
C 1 1 1 1 3 2 1 2 2 2 [2] 2 2 2 0 |
|||
C 1 1 1 1 3 2 1 2 2 [2] 2 2 2 2 0 |
|||
C 1 1 1 1 3 2 1 2 [2] 2 2 2 2 2 0 |
|||
C 1 1 1 1 3 2 1 [2] 2 2 2 2 2 2 0 |
|||
C 1 1 1 1 3 2 [1] 2 2 2 2 2 2 2 0 |
|||
D 1 1 1 1 3 [2] 2 2 2 2 2 2 2 2 0 |
|||
D 1 1 1 1 [3] 2 2 2 2 2 2 2 2 2 0 |
|||
A 1 1 1 1 1 [2] 2 2 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 1 3 [2] 2 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 1 3 2 [2] 2 2 2 2 2 2 0 |
|||
B 1 1 1 1 1 3 2 2 [2] 2 2 2 2 2 0 |
|||
B 1 1 1 1 1 3 2 2 2 [2] 2 2 2 2 0 |
|||
B 1 1 1 1 1 3 2 2 2 2 [2] 2 2 2 0 |
|||
B 1 1 1 1 1 3 2 2 2 2 2 [2] 2 2 0 |
|||
B 1 1 1 1 1 3 2 2 2 2 2 2 [2] 2 0 |
|||
B 1 1 1 1 1 3 2 2 2 2 2 2 2 [2] 0 |
|||
B 1 1 1 1 1 3 2 2 2 2 2 2 2 2 [0] |
|||
C 1 1 1 1 1 3 2 2 2 2 2 2 2 [2] 0 |
|||
C 1 1 1 1 1 3 2 2 2 2 2 2 [2] 2 0 |
|||
C 1 1 1 1 1 3 2 2 2 2 2 [2] 2 2 0 |
|||
C 1 1 1 1 1 3 2 2 2 2 [2] 2 2 2 0 |
|||
C 1 1 1 1 1 3 2 2 2 [2] 2 2 2 2 0 |
|||
C 1 1 1 1 1 3 2 2 [2] 2 2 2 2 2 0 |
|||
C 1 1 1 1 1 3 2 [2] 2 2 2 2 2 2 0 |
|||
C 1 1 1 1 1 3 [2] 2 2 2 2 2 2 2 0 |
|||
C 1 1 1 1 1 [3] 2 2 2 2 2 2 2 2 0 |
|||
E 1 1 1 1 [1] 2 2 2 2 2 2 2 2 2 0 |
|||
E 1 1 1 [1] 1 2 2 2 2 2 2 2 2 2 0 |
|||
E 1 1 [1] 1 1 2 2 2 2 2 2 2 2 2 0 |
|||
E 1 [1] 1 1 1 2 2 2 2 2 2 2 2 2 0 |
|||
E [1] 1 1 1 1 2 2 2 2 2 2 2 2 2 0 |
|||
E [0] 1 1 1 1 1 2 2 2 2 2 2 2 2 2 0 |
|||
STOP 0 [1] 1 1 1 1 2 2 2 2 2 2 2 2 2 0 |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |