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.
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.
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.Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.