Bowling

Bowling

Difícil

Instruções

Pontua um jogo de bowling.

O bowling é um jogo em que os jogadores lançam uma bola pesada para derrubar pinos dispostos em triângulo. Escreve código para acompanhar a pontuação de um jogo de bowling.

Como pontuar o bowling

O jogo é composto por 10 frames. Um frame é composto por um ou dois lançamentos da bola, com 10 pinos de pé no início do frame. Há três casos na contabilização de um frame.

  • Um frame aberto é aquele em que se regista uma pontuação inferior a 10. Nesse caso, a pontuação do frame é o número de pinos derrubados.

  • Um spare é quando os dez pinos são derrubados no segundo lançamento. O valor total de um spare é 10 mais o número de pinos derrubados no lançamento seguinte.

  • Um strike é quando os dez pinos são derrubados no primeiro lançamento. O valor total de um strike é 10 mais o número de pinos derrubados nos dois lançamentos seguintes. Se um strike for imediatamente seguido de outro strike, o valor do primeiro strike não pode ser determinado enquanto a bola não for lançada mais uma vez.

Aqui está um exemplo com três frames:

Frame 1 Frame 2 Frame 3
X (strike) 5/ (spare) 9 0 (frame aberto)

O frame 1 é (10 + 5 + 5) = 20

O frame 2 é (5 + 5 + 9) = 19

O frame 3 é (9 + 0) = 9

Isto significa que o total acumulado atual é 48.

O décimo frame do jogo é um caso especial. Se alguém fizer um spare ou um strike, recebe uma ou duas bolas adicionais, respetivamente. As bolas adicionais existem para calcular o total do 10.º frame. Fazer um strike ou um spare na bola adicional não dá ao jogador mais bolas adicionais. O valor total do 10.º frame é o número total de pinos derrubados.

Num décimo frame de X1/ (um strike e um spare), o valor total é 20.

Num décimo frame de XXX (três strikes), o valor total é 30.

Requisitos

Escreve código para acompanhar a pontuação de um jogo de bowling. Deve suportar duas operações:

  • roll(pins : int) é chamado sempre que o jogador lança a bola. O argumento é o número de pinos derrubados.
  • score() : int é chamado apenas no final do jogo. Devolve a pontuação total desse jogo.
Editar via GitHub A ligação abre numa nova janela ou separador
Unison Exercism

Estás pronto para começar Bowling?

Inscreve-te no Exercism para aprenderes e dominares Unison com 53 exercícios, e mentoria humana real, tudo grátis.