我是谁?我在哪?我为什么在这里?这些都是千百年来让哲学家们困扰不已的难题。但当谈到“我在哪?”时,现代智能手机和 GPS 卫星已经让这个问题失去了神秘感。
但如果你手头没有 GPS 怎么办?在 2021 年世界总决赛的一道题目中,即时制图定位公司 (ICPC) 展示了一种通过螺旋运动和观察周围环境来确定当前位置的方法。遗憾的是,他们的方法只能在可以自由移动且没有障碍物的开阔区域使用。如果你需要在一个封闭空间内确定自己的精确位置,该怎么办?现在,是时候找出答案了。
你将获得一张由单位正方形组成的区域地图,每个正方形要么是空地,要么被墙壁占据。起初,你被放置在其中一个空地正方形中,但你不知道具体是哪一个,也不知道你面向哪个方向。任何两个单独的空地都是无法区分的,墙壁也是如此。你可以在区域内走动,每一步都要观察你所面向方向上到下一堵墙的距离。目标是确定你在地图上的精确位置。
交互
输入的第一行包含两个整数 $r$ 和 $c$ ($1 \le r, c \le 100$),指定地图的大小。接下来是 $r$ 行,每行包含 $c$ 个字符。每个字符要么是点(.),表示空地正方形;要么是井号(#),表示被墙壁占据的正方形。
至少有一个正方形是空地。你知道你从地图上的某个空地开始,面向四个基本方向之一,但你的位置和方向在输入中并未给出。地图区域之外的所有正方形都被视为墙壁。
交互随后按轮次进行。在每一轮中,你会获得一行输入,包含一个整数 $d$ ($0 \le d \le 99$),表示你看到前方距离为 $d$ 处有一堵墙。这意味着在你当前位置和当前方向上最近的墙之间,恰好有 $d$ 个空地正方形。然后你应该输出一行,包含以下内容之一:
left:向左转 90 度。right:向右转 90 度。step:沿当前方向向前移动一个正方形。yes i j:声称你当前的位置是第 $i$ 行,第 $j$ 列 ($1 \le i \le r, 1 \le j \le c$)。no:声称无论你做什么,都不可能可靠地确定你的位置。
如果你输出 yes 或 no,交互停止,你的程序应该终止。否则,新的一轮交互开始。为了被接受,你的解决方案绝不能走进墙壁,并且最多可以运行 $100\,000$ 轮交互(报告 yes 或 no 的最后一轮也计入此限制)。
样例
样例输入 1
3 3 ##. #.. ... 1
样例输出 1
right 1 step 0 left 0 right 0 right 1 yes 2 2
样例输入 2
3 5 ##.## ###.# .#.## 0
样例输出 2
left 0 no
样例输入 3
2 1 # . 0
样例输出 3
yes 2 1