题目描述
Logo 语言命令可以指挥海龟在屏幕中爬行。本问题只使用 Logo 语言的三个语句:前进 FD
,倒退 BK
和重复 REPEAT
,因此,海龟只在一条直线上来回爬行。输入一行 logo 的命令行,输出海龟在屏幕中离开原来位子的距离(假设屏幕很大,可以让海龟移开 1000000010000000 的距离)。
例如:
-
输入
FD 100
,输出:100100。 -
输入
FD 100 BK 150
, 输出:5050。 -
输入
REPEAT 5[FD 100 BK 50]
, 输出:250250。 -
输入
REPEAT 5[ FD 50 REPEAT 10[FD 100]]
, 输出:52505250。
输入格式
一行,一个字符串,符合上述规定的 logo 命令行。(长度不超过 254254)
输出格式
一个数据,海龟离开原来位子的距离。
输入输出样例
输入 #1复制
FD 100
输出 #1复制
100
#include<bits/stdc++.h>
using namespace std;
int dg()
{
string s;
char c;
int k,l=0,v;
while (cin>>c)//回车+^z自动结束输入.
{
if (c==']') break;//特判像"REPEAT 1[] BK 1"这样的情况,不然只有90.
cin>>s>>k;
if (c=='R')
{
v=getchar();//读'['.
l+=k*dg();
v=getchar();//读']'后' '.
}
if (c=='B') v=getchar(),l-=k;
if (c=='F') v=getchar(),l+=k;
if (v==int(']')) break;//如果v==int(' ')就一直读
}
return l;//这里就不必多说了
}
int main()
{
cout<<abs(dg());//巨短主函数
return 0;
}