Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -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)
)