许多人去了当地的保龄球中心打了几场保龄球,而且许多人仍在努力计算分数。世界保龄球馆引入了简化的计分系统,以吸引更多的人参加这项运动。该计分系统用于国际比赛。
计分系统的工作方式如下(来自Wikipedia):
世界保龄球计分系统(称为“当前帧计分” [32])按以下方式授予图钉:
- 罢工:30(无论随后的掷骰结果如何)
- 备用:当前帧的第一卷上有10多个掉落
- 打开:当前帧的总落差
如果您不熟悉十针保龄球,这里有个回顾。
保龄球道的尽头有10个插脚,目标是用保龄球将它们全部击倒。您得到2卷球来尝试将它们全部击倒,最好是在第一卷时将它们全部击落(称为打击)。如果确实有罢工,则说明该帧已经完成,您无需再次掷球。罢工价值30。
如果您没有全部淘汰十人,您将获得一卷。如果您击倒所有其余的引脚,则称为备用。得分价值10针+第一卷击倒的针数。例如,如果我击倒7个针脚,然后设法击倒其余3个针脚,那将值17。
如果在第二次掷骰后未能击倒全部十个骰子,则称为开架。得分值相当于该帧被击倒的引脚总数。
一个游戏中有10帧。如果您熟悉传统的保龄球计分,那么在第10帧中,World Bowling Scoring并不会增加您的得分。在传统的保龄球计分中,需要12次连续击球才能获得300分的完美分数,而世界保龄球计分仅需要连续10次击球。
挑战
您的挑战是从分数表中计算给定值的分数。
在得分表上,未命中用破折号(-),带X的罢工和带斜杠(/)的备用项表示。如果这些都不适用,那么落下数量将简单地用数字(1-9)表示。犯规和分裂也会记录在得分表上,但是您不必担心这些。
输入项
系统会为您提供一个字符串,其中包含每帧的乐谱,总共有10帧。每个帧最多可以有两个值,如果有罢工,则每个帧将只有1个值。您的输入可能是函数的字符串参数,是从文件中还是从STDIN中读取的。
例如,如果我在第一卷上按了1个销,然后按了2个,则框架看起来像“ 12”。这并不意味着12(十二),而是意味着1和2,总计为3。
如果我错过了两个滚子(装订线球)的每个销钉,它将看起来像这样的“-”(0分)。
每个帧将由一个空格分隔。
样品输入
-- 9- -9 X -/ 8/ 71 15 44 X
为了分解这个例子,
- 框架1(-)-两个投掷都错过了。得分0
- 帧2(9-)-第一局9落败,第二局错过。得分9
- 赛局3(-9)-第一局全败,第二局9分。得分9
- 赛局4(X)-强袭,淘汰了全部10人。得分30
- 框架5(-/)-备用,第一个错过全部,第2个落下全部失败。得分10 + 0 = 10
- 框架6(8 /)-备用,第一卷上有8根针,第二卷上的另一根被击倒。得分10 + 8 = 18
- 框架7(71)-打开框架,第一卷上有7针,第二卷上有1针。得分7 + 1 = 8
- 框架8,9,10遵循与上述相同的示例。
输出量
输出将只是一个具有所有10帧得分总和的值。使用样本输入,输出将为128。您的输出可以是字符串或数字类型。它可以是函数返回值,也可以写入STDOUT。
规则
- 假设输入将始终有效。例如,无效的帧将是“ / 8”,“ XX”,“ 123”,“ 0”等。
- 您无需担心分裂或犯规。
- 您的代码可以是完整的程序,也可以是接受字符串并返回分数的函数。
- 您的代码不得引发任何异常。
- 这是代码高尔夫,以最少的字节数获胜。
- 使用包含或导入的语言必须将导入语句作为其代码的一部分包含在内,并计入字节数。
测试用例
"-- 9- -9 X -/ 8/ 71 15 44 X" -> 128
"-- -1 2- 12 22 5- 42 61 8- 72" -> 45
"X X X 1/ 2/ 3/ 4/ 5/ -- 9/" -> 174
"X X X X X X X X X X" -> 300
"-- -- -- -- -- -- -- -- -- --" -> 0