挑战
给定一个像下面这样的面包板:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
您的任务是将“投掷”列表转化为得分。
木板将始终为20个字符(加上2个边)宽,但高度可变。每个“掷球”都是一个数字,代表球落入棋盘的位置,从最左边的0开始到最右边的19。除非遇到a /
或a 球,否则每个球都会掉落\
。碰到一个/
球会将球向左移动一列,而\
将球向右移动一列。转移后,球仍然像以前一样一直笔直向下。罚球得分取决于球击中棋盘底部的位置。
每个完成位置的分数如下:
| |
----------------------
01234567899876543210
并且对于所有板都是相同的。第一行和最后一行将始终为空。球是保证到达底部,无论它是从哪里落下的,所以不会有板在那里可以供被困\/
,\|
或|/
组合。
输入值
输入将在STDIN上,并且由木板组成,后跟一个空白行,然后是一个空格分隔的代表投掷的数字列表。
输出量
Ouput应该是给定游戏的总分。
几个例子
输入值
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
输出量
9
输入值
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
输出量
72
输入值
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
输出量
18
测试脚本
我使用了Joey和Ventero编写的一些测试脚本(希望他们不要介意...)来为此任务创建一些测试:-
用法: ./test [your program and its arguments]
这是代码高尔夫-最短的解决方案胜出。
您也可以为他们提供我的生成脚本:-)。我最终希望将其公开,但是只要它仍然需要针对许多我不想做的任务进行调整。
—
乔伊,
@Joey生成脚本将是一个有用的工具。
—
加雷斯
两组测试现在都应该修复。
—
加雷斯