Boliche

Boliche

Difícil

Instruções

Calcule a pontuação de uma partida de boliche.

Boliche é um jogo em que os jogadores lançam uma bola pesada para derrubar pinos dispostos em um triângulo. Escreva um código que acompanhe a pontuação de uma partida de boliche.

Pontuação no boliche

A partida consiste em 10 frames. Um frame é composto por um ou dois lançamentos de bola, com 10 pinos em pé no início do frame. Há três casos na tabulação de um frame.

  • Um frame aberto é aquele em que se registra uma pontuação menor que 10 para o frame. 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 seguido imediatamente por um segundo strike, o valor do primeiro strike não pode ser determinado até que a bola seja lançada mais uma vez.

Veja 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

Isso significa que o total acumulado até aqui é 48.

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

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

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

Requisitos

Escreva um código que acompanhe a pontuação de uma partida de boliche. Ele deve dar suporte a duas operações:

  • roll(pins : int) é chamado sempre que o jogador lança uma bola. O argumento é o número de pinos derrubados.
  • score() : int é chamado apenas no final da partida. Ele retorna a pontuação total daquela partida.
Editar via GitHub O link abre em uma nova janela ou aba
JavaScript Exercism

Tudo pronto para começar Boliche?

Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.