Universal Turing machine: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
(Updated to work with Nim 1.4: replaced “split” with “splitWhiteSpace”. Also other minor changes. Added output.) |
||
Line 6,022: | Line 6,022: | ||
pos = 0 |
pos = 0 |
||
tape = tape |
tape = tape |
||
rulesTable |
rulesTable: Table[tuple[s0, v0: string], tuple[v1, dr, s1: string]] |
||
if tape.len == 0: tape = @[blank] |
if tape.len == 0: tape = @[blank] |
||
Line 6,033: | Line 6,033: | ||
while true: |
while true: |
||
stdout.write st,'\t' |
stdout.write st, '\t' |
||
for i, v in tape: |
for i, v in tape: |
||
if i == pos: |
stdout.write if i == pos: '[' & v & ']' else: ' ' & v & ' ' |
||
echo() |
|||
else: stdout.write ' ',v,' ' |
|||
echo "" |
|||
if st == halt: break |
if st == halt: break |
||
Line 6,057: | Line 6,056: | ||
tape = "1 1 1".split, |
tape = "1 1 1".split, |
||
blank = "B", |
blank = "B", |
||
rules = @["q0 1 1 right q0". |
rules = @["q0 1 1 right q0".splitWhitespace, |
||
"q0 B 1 stay qf". |
"q0 B 1 stay qf".splitWhitespace]) |
||
echo "\nbusy beaver\n" |
echo "\nbusy beaver\n" |
||
Line 6,064: | Line 6,063: | ||
state = "a", |
state = "a", |
||
blank = "0", |
blank = "0", |
||
rules = @["a 0 1 right b". |
rules = @["a 0 1 right b".splitWhitespace, |
||
"a 1 1 left c". |
"a 1 1 left c".splitWhitespace, |
||
"b 0 1 left a". |
"b 0 1 left a".splitWhitespace, |
||
"b 1 1 right b". |
"b 1 1 right b".splitWhitespace, |
||
"c 0 1 left b". |
"c 0 1 left b".splitWhitespace, |
||
"c 1 1 stay halt". |
"c 1 1 stay halt".splitWhitespace]) |
||
echo "\nsorting test\n" |
echo "\nsorting test\n" |
||
Line 6,076: | Line 6,075: | ||
blank = "0", |
blank = "0", |
||
tape = "2 2 2 1 2 2 1 2 1 2 1 2 1 2".split, |
tape = "2 2 2 1 2 2 1 2 1 2 1 2 1 2".split, |
||
rules = @["A 1 1 right A". |
rules = @["A 1 1 right A".splitWhitespace, |
||
"A 2 3 right B". |
"A 2 3 right B".splitWhitespace, |
||
"A 0 0 left E". |
"A 0 0 left E".splitWhitespace, |
||
"B 1 1 right B". |
"B 1 1 right B".splitWhitespace, |
||
"B 2 2 right B". |
"B 2 2 right B".splitWhitespace, |
||
"B 0 0 left C". |
"B 0 0 left C".splitWhitespace, |
||
"C 1 2 left D". |
"C 1 2 left D".splitWhitespace, |
||
"C 2 2 left C". |
"C 2 2 left C".splitWhitespace, |
||
"C 3 2 left E". |
"C 3 2 left E".splitWhitespace, |
||
"D 1 1 left D". |
"D 1 1 left D".splitWhitespace, |
||
"D 2 2 left D". |
"D 2 2 left D".splitWhitespace, |
||
"D 3 1 right A". |
"D 3 1 right A".splitWhitespace, |
||
"E 1 1 left E". |
"E 1 1 left E".splitWhitespace, |
||
"E 0 0 right STOP". |
"E 0 0 right STOP".splitWhitespace])</lang> |
||
{{out}} |
|||
<pre>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|Pascal}}== |
=={{header|Pascal}}== |