背景
几个月前,您的人生冒险才刚刚开始。现在,在这个确切的时刻(是的,现在),经过几个月的苦难和辛勤工作,您和一群朋友正站在世界之巅。是的,你是对的,你在萨加玛塔山的山顶上。
但是,事情进展得并不理想。浓雾笼罩着您,一场令人难以置信的糟糕风暴即将来临。您没有在向上固定任何绳索,并且脚印已被雪覆盖。如果要生存(至少到今天为止),则需要尽快离开那里,但是您必须首先找到一种方法来知道那座山的哪一面应该降落。
幸运的是,您带来了旅行前修改过的卫星电话,因此您可以在其中编程和执行程序。
挑战
您已经能够以ASCII老式,无法在世界顶上看的方式将山脉的地图下载到手机上。您的任务是确定哪座山面的下降最容易,因此您可以增加生存的机会。为此,您有一个绝妙的主意,那就是在手机上编写一个程序,该程序将告诉您最简单的方法。(免责声明:这些活动是由专业人员完成的。在叙述中没有程序员受到伤害。请不要在家中尝试。)
地图仅由字符/
和\
(以及空格和换行符)组成。在任何地图中,山顶始终以
/\
\/
从山顶的每一侧(1,2,3
或4
),您总会在山上找到“可能”的方式。
1 /\ 2
3 \/ 4
路线总是以以下方式显示:
\
Steep-> / /
/ / <-Flat
/ \
Flat-> \ \
/ \ <-Steep
/\
\/
每个新角色都位于其前任角色的左/右位置。每个字符的含义是:
- 如果斜线/反斜线与其顶峰侧平行->视为“陡峭”部分。
- 如果斜线/反斜线垂直于其顶峰侧->视为“平坦”部分。
*有关更多参考,请参见上图。
注意:边的长度可以不同,构成峰顶的字符也算作边的一部分。万一抽签,您可以选择其中任何一个。
不允许出现标准漏洞。
输入项
代表山脉地图或包含相同信息的纯文本文件的字符串。
要么
C:\....\file.txt
要么
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
作为字符串是有效输入。
输出量
作为输出,您应该以纯文本形式生成文件,或者通过stdout 生成侧面的ASCII轮廓表示法,以最小的平均陡度将_
平面部分和/
陡峭的部分与 side 的平均陡度一起使用(number of "/")/(total chars)
。
上面地图的输出示例:
/
___/
/
AS:0.5
格式并不重要,只要您具有轮廓和平均陡度即可。
计分
什么?您想获得比挽救您和您的朋友的生命并成为有史以来第一位在世界之巅进行编程的程序员更好的回报吗?好的...这是代码高尔夫,所以最短的程序以字节为单位。
测试用例
输入:
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
输出:
/
___/
/
AS=0.5
输入:
/
\ /
/ /
\ /
\ /
/ /
/\
\/
\ /
\ \
\ \
\ \
/ /
/
/
输出:
______/
AS=0.143 (1/7)
输入:
/ \
\ \
/ /
/ \
/\
\/
\ /
\ /
\ /
/ \
输出:
/
/
/
_/
AS=0.8