首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打保龄球

打保龄球
EN

Code Golf用户
提问于 2012-10-07 23:51:54
回答 2查看 2.9K关注 0票数 24

你的任务是总结和输出一个球员的得分在一个游戏的10脚保龄球后,最多21卷。

这些卷表示为优选输入法中的整数序列。每个整数对应于在该卷中被击倒的引脚数。

评分

每一轮之后,击倒在这一轮中的引脚数被计算到最后的分数中。如果一名球员在一轮的第一轮中击倒了所有的十个引脚,这就是一次打击,这一轮就结束了。否则,这一轮还会持续一轮。如果一轮的第二轮击倒了所有剩余的引脚,这是备用的。

对于每一次打击,都有一个加值,等于下两次击倒的销的总和。对于每一个备件,有一个奖金等于在下一卷中击倒的引脚数。

在第十轮,也就是最后一轮,球员可能会得到额外的奖励:如果有一次进攻,球员会得到两次额外的奖励。如果有备用的话,玩家会再得到一个滚球。

示例

代码语言:javascript
运行
复制
Input: 4 3 8 2 7 1 10 7 3 0 10 2 2 10 10 5 4
Output: 131

Input: 10 10 9 1 7 3 2 7 10 1 9 10 7 1 10 10 10
Output: 183

规则

  • 您可以假设输入是有效的。
  • 根据Mego的评论,我放宽了输入/输出方法的要求,以满足我们的现行标准
  • 允许使用比挑战新的语言进行回答。
  • 最短代码获胜!
EN

回答 2

Code Golf用户

发布于 2017-08-24 19:46:12

R,101个字节

我不知道为什么这个挑战会被撞到,但我喜欢它,所以无论如何我都会迟到回答。

代码语言:javascript
运行
复制
f=function(x,s=0,c=10)`if`(c&length(x),f(x[-(0:(x[1]!=10)+1)],sum(x[1:(2+(sum(x[1:2])>9))])+s,c-1),s)

在网上试试!

未高尔夫球:

代码语言:javascript
运行
复制
f <- function(throws, score = 0, count = 10){
  if(count != 0 & length(throws) != 0){
    IsStrike <- throws[1] == 10
    IsStrikeOrSpare <- sum(throws[1:2]) >= 10
    f(throws[-c(1, 2 * !IsStrike)],
      score + sum(throws[c(1:(2 + IsStrikeOrSpare))]),
      count - 1)
  } else {
    return(score)
  }
}

递归函数以x作为输入,它保存分数。初始化s核,c计算抛出的子弹数量。

if语句检查是否抛出10轮,或者x是否为空。如果是这样的话,则返回分数。否则,该函数将按如下方式调用自己:

它从x中删除抛出,方法是检查它是否是一次罢工。如果是这样,则删除第一个条目,否则删除前两个条目。(S=x[1]!=10)检查罢工情况。我们删除(-)索引0:S,其中如果是罢工,S是1,如果不是,则为0。然后我们添加一个:-(0:(x[1]!=10)+1)。我们将缩短的x传递到下一次呼叫。

至于得分,这是通过采取x[1:2],如果这是一个定期转弯,而x[1:3],如果它是一个打击或备战。我们检查sum(x[1:2])是否大于或等于10。如果是罢工,显然是这样。如果是备用的,那么这个也能用。如果这是真的,我们将x[3]加到和中。然后将其添加到s中。

票数 4
EN

Code Golf用户

发布于 2012-10-17 14:00:22

Ruby,252个字节

接受数组中的输入,首先添加所有元素,然后搜索备用和罢工奖金。

代码语言:javascript
运行
复制
s,p,t,r=0,0,1,1
o=ARGV
o.each_with_index do |m,n|
y=m.to_i
s+=y
if r<10
p+=y
if p==10&&t==1
r,p=(r+1),0
s+=o[n+1].to_i+o[n+2].to_i
elsif p<10&&t==1
t=2
elsif p<10&&t==2
t,p,r=1,0,(r+1)
elsif p==10&&t==2
t,p,r=1,0,(r+1)
s+=o[n+1].to_i
end end end
puts s
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/8634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档