Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,89 @@
|
|||
#include <hopper.h>
|
||||
#proto UniversalTuringMachine(_X_)
|
||||
|
||||
main:
|
||||
.ctrlc
|
||||
|
||||
stbegin=0,stEnd=0,state=0,ptr=0
|
||||
tape=0,states=0,rules=0,long=0,tapeSize=0
|
||||
file="turing/prg03.tm"
|
||||
|
||||
// load program, rules & states:
|
||||
jsub(load Archive)
|
||||
|
||||
// RUN Universal Turing Machine program:
|
||||
i=1
|
||||
__TURING_RUN__:
|
||||
_Universal Turing Machine ([i,1:end]get(rules))
|
||||
++i,{long,i}gt? do{ i=1 }
|
||||
jt(__TURING_RUN__)
|
||||
println
|
||||
exit(0)
|
||||
|
||||
.locals
|
||||
|
||||
printTape:
|
||||
#hl{
|
||||
print(tape[1:(ptr-1)],"\R",tape[ptr],"\OFF",tape[(ptr+1):end],"\n")
|
||||
//sleep(0.1)
|
||||
}
|
||||
up(1)
|
||||
clear mark
|
||||
back
|
||||
|
||||
Universal Turing Machine(rules)
|
||||
cont=1
|
||||
clear mark
|
||||
|
||||
#hl{
|
||||
if( rules[1] == state )
|
||||
if( tape[ptr] == rules[2] )
|
||||
tape[ptr] = rules[3]
|
||||
ptr += rules[4]
|
||||
if(ptr==0)
|
||||
}
|
||||
++tapeSize
|
||||
{0,1,tape}, array(INSERT), ++ptr
|
||||
#hl{
|
||||
else if(ptr>tapeSize)
|
||||
}
|
||||
++tapeSize
|
||||
{tapeSize,tape},array(RESIZE),
|
||||
[tapeSize]{0},put(tape),clear mark
|
||||
#hl{
|
||||
endif
|
||||
state = rules[5]
|
||||
if(state == stEnd)
|
||||
cont=0
|
||||
endif
|
||||
}
|
||||
jsub(print Tape)
|
||||
#hl{
|
||||
endif
|
||||
endif
|
||||
}, {cont}
|
||||
back
|
||||
|
||||
load Archive:
|
||||
{","}tok sep
|
||||
{file} stats file
|
||||
[1,1:end],{file},!(5),load, mov(tape)
|
||||
[2,1:3], !(5),load, mov(states)
|
||||
[3:end,1:5], load, mov(rules)
|
||||
clear mark
|
||||
[1:end,4]get(rules),colMoving=0, mov(colMoving)
|
||||
{"1","RIGHT",colMoving} transform, mov(colMoving)
|
||||
{"-1","LEFT",colMoving} transform, mov(colMoving)
|
||||
{"0","STAY",colMoving} transform, xtonum, put(rules)
|
||||
clear mark
|
||||
{0}reshape(tape)
|
||||
size(tape),lengthTape=0,mov(lengthTape),[2]get(lengthTape),mov(tapeSize)
|
||||
#hl{
|
||||
stbegin=states[1,1]
|
||||
stEnd=states[1,2]
|
||||
ptr=states[1,3]
|
||||
state=stbegin
|
||||
}
|
||||
data rules=0, size(rules), mov(datarules), [2]get(data rules), mov(long)
|
||||
{""}tok sep
|
||||
back
|
||||
Loading…
Add table
Add a link
Reference in a new issue