Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,82 @@
|
|||
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)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue