1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def interp(code):
data=[0 for _ in range(30000)]
pc=0
ptr=0
st=[]#list模拟stack
while(pc<len(code)):
c=code[pc]
print("正在处理字符'{}'".format(c))
if c=='<':
ptr-=1

elif c=='>':
ptr+=1

elif c=='+':
data[ptr]+=1

elif c=='-':
#print('ptr:',ptr)
data[ptr]-=1

elif c=='.':
print(data[ptr])

elif c==',':
data[ptr]=input()

elif c=='[':
if data[ptr]!=0:#要做循环
print('{}不为0,开始循环'.format(data[ptr]))
st.append(pc)
print('入栈',pc)
else:
print('不循环了')
cnt=0
fx=0#记录从当前位置到对应匹配的']'要走的步数
for i in code[pc:]:
fx+=1
if i=='[':
cnt+=1
if i==']':
cnt-=1
if cnt==0:
break
if cnt==0:#括号匹配
print('匹配')
pc=pc+fx-1#pc去往匹配的']'位置
print('pc前往下标',pc)

elif c==']':
pc=st.pop()-1
pc+=1

#########测试样例1##############
print('\n\n测试样例1:\n\n')
interp('+[+--].')
#########测试样例2##############
print('\n\n测试样例2:\n\n')
interp('++++.>+--.')

1606996538447