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.
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.
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.Inscreve-te no Exercism para aprenderes e dominares Unison com 53 exercícios, e mentoria humana real, tudo grátis.