43 lines
678 B
Text
43 lines
678 B
Text
BF(prog)={
|
|
prog=Vec(Str(prog));
|
|
my(codeptr,ptr=1,v=vector(1000),t);
|
|
while(codeptr++ <= #prog,
|
|
t=prog[codeptr];
|
|
if(t=="+",
|
|
v[ptr]++
|
|
,
|
|
if(t=="-",
|
|
v[ptr]--
|
|
,
|
|
if(t==">",
|
|
ptr++
|
|
,
|
|
if(t=="<",
|
|
ptr--
|
|
,
|
|
if(t=="[" && !v[ptr],
|
|
t=1;
|
|
while(t,
|
|
if(prog[codeptr++]=="[",t++);
|
|
if(prog[codeptr]=="]",t--)
|
|
);
|
|
);
|
|
if(t=="]"&&v[ptr],
|
|
t=1;
|
|
while(t,
|
|
if(prog[codeptr--]=="[",t--);
|
|
if(prog[codeptr]=="]",t++)
|
|
)
|
|
);
|
|
if(t==".",
|
|
print1(Strchr(v[ptr]))
|
|
);
|
|
if(t==",",
|
|
v[ptr]=Vecsmall(input)[1]
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
};
|