在担心自己超重的吃豆人女士的建议下,吃豆人决定跟踪自己每天的吃豆点摄入量。帮助他计算迷宫中给定路径上的点点数!
迷宫
为了帮助您构建自己的迷宫编码,您可以在此处获取一些原始数据。
吃豆人的旅程
在此挑战的背景下,适用以下规则:
- 首先,好消息是:幽灵不在。
- 吃豆人总是在上图所示的位置开始比赛,向东方行驶。起始位置没有Pac-Dot。
- 只要他一直走直线路,他就会一直前进到下一个方块。
- 当他遇到90°转弯而没有其他可用路径(地图上的橙色正方形)时,他会自动而系统地转弯。
- 当他遇到路口时多个路径可用(地图上的绿色正方形)时,他可以沿相同的方向继续行驶(如果适用),也可以选择其他方向(包括掉头)。
- 当吃豆人穿过迷宫左中或右中出口的其中一个出口时,他立即在对面再次出现。
- 吃豆人会在他遵循的路径上吃掉所有吃豆点。一旦吃了一点点,就将其从迷宫中取出。
挑战
输入值
您将得到一个字符串,描述吃豆人在他将要到达的路口的行为。此字符串将由以下字符组成:
L
:向左旋转90度R
:向右旋转90度F
:前进(方向不变)B
:向后走(掉头)
处理完所有字符后,Pac-Man在遇到的下一个路口停下来。
输出量
您必须打印或输出沿输入路径吃掉的点点数。
规则
- 您可以编写完整的程序或函数。
- 您可以输入大写或小写形式的字符串或字符数组。您也可以在中使用其他字符(每个方向只能使用一个字符)或整数
[0 .. 9]
。如果这样做,请在答案中明确指出。 - 您可以假定输入始终有效。(下面的jsFiddle将检测到错误,但您不应这样做。)
- 这是代码高尔夫球,因此以字节为单位的最短代码获胜。
- 禁止出现标准漏洞。
暗示
存储迷宫的确切形状可能不是必需的,也不是最佳的。
测试案例和演示
可以在此jsFiddle中测试以下测试用例(或任何其他输入)。
1. Input : ""
Output : 1
Comment: Pac-Man just advances to the first junction, eats the Pac-Dot on it and stops.
2. Input : "L"
Output : 7
3. Input : "FFR"
Output : 13
4. Input : "LFLR"
Output : 17
Comment: Pac-Man will exit on the middle right side and re-appear on the left side.
5. Input : "BBBB"
Output : 2
6. Input : "BRRFFFL"
Output : 15
7. Input : "LFFRLFFFFRF"
Output : 50
8. Input : "BRFRLRFRLFR"
Output : 54
Comment: Pac-Man will exit on the middle left side and re-appear on the right side.
9. Input : "FFLRLFFLLLLFFBFLFLRRRLRRFRFLRLFFFLFLLLLFRRFBRLLLFBLFFLBFRLLR"
Output : 244
Comment: All cleared!
1
以下是一些有助于您解决问题的数据:pastebin.com/G4MnbVww。这是每个路口的清单,以及通往下一个路口的道路上pac点的数量,具体取决于您走的方向(0 =向上,1 =左,2 =向下,3 =右)。可能会有一些错误,请记住,结点12、13、15、16、18和19在中间没有点,而所有其他结点都在中间。
—
硕果累累
@ Challenger5,这看起来不错。由于移动是相对的,因此您可能还想在到达下一个交叉路口时跟踪吃豆人的新方向。
—
Arnauld
顺便说一句,在游戏中,吃豆人无法掉头
—
马修·鲁
@SIGSEGV通过“掉头”,我的意思是转向相反的方向,这在原始的街机游戏和我所知道的所有克隆中都可以随时进行。我应该使用另一个术语吗?
—
Arnauld
我很确定吃豆人开始在街机游戏中向左走,而不是向右走。
—
mbomb007 '17