保龄球

保龄球

中等

说明

给一场保龄球比赛计分。

保龄球是一项运动:球员投出沉重的球,击倒排成三角形的球瓶。 编写代码,记录一场保龄球比赛的得分。

保龄球计分

一场比赛由 10 局组成。 每局由 1 次或 2 次投球组成,每局开始时都有 10 个球瓶立着。 一局的计分有以下 3 种情况。

  • 开放局是指该局记录到的得分低于 10 分的情况。 此时该局的得分就是击倒的球瓶数。

  • 补中是指第 2 次投球击倒了全部 10 个球瓶。 补中的总分为 10 加上下一次投球击倒的球瓶数。

  • 全中是指第 1 次投球就击倒了全部 10 个球瓶。 全中的总分为 10 加上接下来 2 次投球击倒的球瓶数。 如果一次全中之后紧接着又是一次全中,那么在再投 1 次球之前,无法确定第 1 次全中的分值。

下面是一个 3 局的例子:

第 1 局 第 2 局 第 3 局
X(全中) 5/(补中) 9 0(开放局)

第 1 局为 (10 + 5 + 5) = 20。

第 2 局为 (5 + 5 + 9) = 19。

第 3 局为 (9 + 0) = 9。

也就是说,当前的累计总分是 48。

比赛的第 10 局是一个特殊情况。 如果球员投出补中或全中,就能分别获得 1 次或 2 次补充投球。 补充投球用于计算第 10 局的总分。 在补充投球中投出全中或补中,并不会让球员获得更多补充投球。 第 10 局的总分就是击倒球瓶的总数。

第 10 局如果是 X1/(全中和补中),总分为 20。

第 10 局如果是 XXX(3 次全中),总分为 30。

要求

编写代码,记录一场保龄球比赛的得分。 代码应支持 2 种操作:

  • roll(pins : int)在球员每次投球时调用。 参数是击倒的球瓶数。
  • score() : int只在比赛完全结束时调用。 它返回该场比赛的总分。
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
PowerShell Exercism

准备好开始 保龄球 了吗?

注册 Exercism,借助 136 个练习 和真人导师指导,学习并掌握 PowerShell,全部免费。