回声机器人
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
回声机器人
题目描述
机器人站在无限二维网格上,初始位置为 ,朝向北。
所有格子的灯初始都是灭的。
给定一个命令串 ,字符串中只包含 F、L、R、E 四种字符。你需要从左到右依次执行每个命令。
命令含义如下:
F:向当前朝向前进一步;L:向左转 ;R:向右转 ;E:执行“上一次非E命令”的反向命令。
反向命令的规则如下:
F的反向:沿当前朝向后退一步;L的反向:向右转 ;R的反向:向左转 。
如果在某个 E 之前没有出现过非 E 命令,那么这个 E 什么也不做。
注意,E 本身不会更新“上一次非 E 命令”。
E 只根据“上一次非 E 命令的类型”执行反向操作,不记录那条命令执行时的位置或朝向。也就是说,E 不是撤销操作。
每处理完一个字符后,机器人当前所在格子的灯会翻转一次:
- 如果当前格子的灯是灭的,则变亮;
- 如果当前格子的灯是亮的,则熄灭。
最后请输出机器人的最终坐标,以及亮着的格子数量。
输入格式
第一行输入一个整数 ,表示测试数据组数。
接下来 行,每行输入一个字符串 。
数据范围
对于所有测试数据,保证:
所有测试数据的 之和不超过 。
字符串 仅包含 F、L、R、E。
输出格式
对于每组测试数据,输出一行三个整数:
x y k
表示机器人最终所在坐标为 ,最后亮着的格子数量为 。
输入输出样例 #1
输入 #1
3
FEFL
EEE
FLER
输出 #1
0 1 2
0 0 1
0 1 0
说明/提示
对于第一组数据 FEFL:
F:走到 ,翻转 ;E:上一个非E命令是F,所以沿当前朝向后退到 ,翻转 ;F:走到 ,翻转 ;L:左转,位置仍为 ,翻转 。
最终机器人在 ,亮着的格子有 个。
对于第二组数据 EEE,三个 E 都没有可执行的回声命令,但每次仍然会翻转当前位置 的灯。
被翻转三次,最后亮着,所以输出:
0 0 1
对于第三组数据 FLER:
F后到达 ,翻转一次;L只改变方向,不移动,在 翻转一次;E执行L的反向,也只改变方向,在 翻转一次;R只改变方向,在 翻转一次。
四次翻转都发生在 ,偶数次翻转后灯熄灭,所以亮灯数为 。