eachconfig = [['a', ['blank', ['p1', 'r', 'r'], ['b']]], ['b', ['blank', ['p0'], ['c']]], ['c', ['blank', ['r', 'r'], ['a']]]]
def turingmachine(data):
a = 0
tape = []
finalmc = data[0][0]
for z in range(1,40):
tape.append(' ')
mcName = []
m = 0
for emc in range(1,len(data)+1):
goal = data[m][0]
mcName.append(goal)
m+=1
mcNumber = [h-1 for h in range(1,len(mcName)+1)]
mcNameNumber = dict(zip(mcName,mcNumber))
d = 0
tapeposition = d
tapescan = tape[d]
for process in range(1,len(tape)):
b = 0
c = 0
cconfig = data[a][b]
if cconfig == finalmc:
b += 1
scannedsymbol = data[a][b][c]
if isinstance(scannedsymbol, str):
if scannedsymbol.lower() in ('any', 'blank'):
c += 1
operations = data[a][b][c]
for cycle in operations:
if cycle[0] in ('p','P'):
tape[tapeposition] = cycle[1:]
elif cycle[0] in ('r', 'R'):
tapeposition += 1
elif cycle[0] in ('l', 'L'):
tapeposition -= 1
elif cycle[0] in ('e', 'E'):
tape[tapeposition] == ' '
finalmc = data[a][b][-1][0]
a = mcNameNumber[finalmc]
return tape
print turingmachine(eachconfig)
私の効率は、このコードでは驚くべきものではないかもしれませんし、完全でもないかもしれません。これは、現在の「eachconfig」リスト内の設定データのフレームワークにすぎません。ただし、そうは言っても、プログラムの出力はまだ[1, ' ', ' ', ' ', ...]
、あるべき場所にあるだけです[1, ' ' , 0 , ' ' , 1 , ' ' , 0 , ...]
私はコードを何十回も読み返し、各行を印刷してバグチェックを行い、ループを 1 回しか反復しないという問題を発見しました (問題のループはfor process in range(1,len(data)+1):
ループです)。その前のループは単に初期化のためのものです)が、その理由がわかりません。なぜこうなった?