注意:这是基于两条道路在黄色的木头上分叉(第2部分),这是我的先前挑战。由于该问题的受欢迎程度,并且两条道路在黄色的树林中分叉(第1部分),所以我想提出第三条。但是前两个太简单了(第一个回答为2字节,第二个回答为15字节。)所以我做了一些更复杂的事情……
灵感来源
这一挑战的灵感来自罗伯特·弗罗斯特(Robert Frost)的著名诗作《未走的路》:
两条道路在黄色的树林中分叉,
对不起,我无法同时行进
,成为一个行人,我站了很久
,俯视着一条路,尽我所能
,一直到弯曲的灌木丛中。... 2段落已修剪...
我将叹息地告诉这个问题,因为它
在某个年代和年代都在变老:
两条路在树林中分叉,而我-
我走过的路少了,
这一切都改变了。
请注意倒数第二行I took the one less traveled by,
。
背景故事
您被分配帮助一位盲人冒险者,他们在道路上行走,并受到“未走的路”的启发。冒险家正在接近叉路,并希望走少走的路。您必须找到冒险家实际所在的位置,并告诉冒险家转弯的地方。
挑战
您的目标是在地图上找到岔路口最少经过的道路。您的地图是一个包含换行符(或\n
,如果愿意的话)的字符串,并且具有未知的宽度和高度。在地图中,道路由数字0到9组成,交叉点由#
s组成。您必须找到您当前所处的道路,以及其他道路中行驶最多的道路,以及盲人冒险者行驶较少的道路。地图中的树林由空格表示。这是一个简单的地图:
2 2
1 0
#
2
2
该地图宽5高5。注意路叉如何呈Y形。Y可以以任何方式定向,因此您必须能够理解“旋转”贴图。
什么#
意思
地图分叉的地方将有一个#
。这不会影响任何路径的分数。
数字实际上是什么意思
每条路径(一行数字,可能会有一个弯头)都有一个分数。路径的分数是通过将其数字相加来确定的,因此,对于第一个示例,第一条路径(从左上角,顺时针方向)的分数为2 + 1 = 3,第二条路径的分数为2 + 0 = 2,第三条路径有2 + 2 = 4。道路可能包含对角连接的数字。
找到你在哪里
您正在分数最高的道路上。其他2条路径是经过的道路较多,经过的道路较少。您需要找到分数最低的道路。
告诉你的旅行者去哪里
您必须告诉旅客“左”或“右”。请记住,方向是从旅行者的角度出发的(他正对着叉子。)
范例地图
14
9#
04
输出:“ right”(旅行者在9
路上,0 + 4 <1 + 4
9
9
9
9
9
#
8 8
8 8
88 88
8 7
输出:“向左”(旅行者在99999
路上,8 + 8 + 8 + 8 + 8> 8 + 8 + 8 + 8 + 7
02468
#98765
13579
输出:“右”(旅行者在98765
路上,0 + 2 + 4 + 6 + 8 <1 + 3 + 5 + 7 + 9)
4 2
4 2
#
4
4
2
2
输出:“ right”(旅行者在4422
路上,4 + 4> 2 + 2)
9
9
9
#
8 7
8 7
8 7
输出“左”(旅行者在999
路上,8 + 8 + 8> 7 + 7 + 7
要知道的东西:
- 地图将用空格填充,以使每行长度相同。
- 您必须将字符串
left
或输出到STDOUT / console /文件right
,并可以选择在其后跟一个换行符。 - 您必须将输入作为包含换行符
\n
s 的字符串或行的数组/列表(每行都是一个字符串)。输入的位置必须是函数,命令行参数,文件或STDIN,一次或类似一行。变量不是可接受的输入设备(除非它是函数参数。)同样,必须将JS和其他语言的函数表达式分配给变量。 - 这是代码高尔夫球,因此最短答案以字节为单位!
- 禁止标准漏洞
你可以假设的事情
- 您的输入将是有效的。不会对以下任何东西进行测试:
0 0 0 0 0 # 0 0
- 路径的分数永远不会被束缚。
- 输入的宽度或高度可以是任何长度,小于您的语言的字符串限制。
- 2条路径之间将始终至少有1个间隔。
- 路径可能有弯曲,转弯等。这些是道路,而不是高速公路。
#
始终处于水平方向的中心?