用一个字典记录BF符号和Python代码的对应关系,用变量k记录当前的缩进数。
逐字符读入BF源码,将其转译为Python源码并更新k的值,最后用exec执行Python源码。
最终代码有六行。
代码长度:212字节 vs. 全站第一:167字节。
from sys import*
c=dict(zip("><+-.[]","i+=1,i-=1,a[i]+=1,a[i]-=1,stdout.write(chr(a[i])),while a[i]:,".split(",")))
for x in argv:
s,a="",[0]*99;i=k=0
for y in x:s+=" "*k+c[y]+"\n";k+=(y=="[")-(y=="]")
exec(s)
|