Muitas pessoas foram ao centro de boliche local para jogar alguns jogos de boliche e muitas continuam lutando para calcular suas pontuações. O World Bowling introduziu um sistema de pontuação simplificado para atrair mais pessoas para o esporte. Este sistema de pontuação é utilizado em jogos internacionais.
O sistema de pontuação funciona assim (da Wikipedia ):
O sistema de pontuação do World Bowling - descrito como "pontuação atual de quadros" [32] - possui pinos da seguinte maneira:
- strike: 30 (independentemente dos resultados dos testes seguintes)
- sobressalente: 10 mais pinfall no primeiro rolo do quadro atual
- aberto: pinfall total para o quadro atual
Se você não conhece o boliche, aqui está uma recapitulação.
Existem 10 pinos no final de uma pista de boliche, onde o objetivo é derrubar todos eles com uma bola de boliche. Você recebe 2 jogadas de bola para tentar derrubá-las todas, de preferência derrubando-as todas com a primeira jogada (conhecida como golpe ). Se você receber uma tacada, esse quadro estará completo e você não precisará rolar a bola uma segunda vez. Uma greve vale 30.
Se você não derrubar todos os dez, terá mais uma jogada. Se você derrubar todos os pinos restantes, isso é conhecido como sobressalente . A pontuação vale 10 pinos + o número de pinos derrubados no primeiro rolo. Por exemplo, se eu derrubasse 7 pinos, conseguiria derrubar os 3 restantes, que valeriam 17.
Se após a sua segunda jogada você não derrubar todas as dez, isso é conhecido como um quadro aberto . A pontuação vale o número total de pinos derrubados para esse quadro.
Existem 10 quadros em um jogo . Se você conhece a pontuação tradicional de boliche, não recebe um rolo extra no 10º quadro com a Pontuação Mundial de Boliche. Na pontuação tradicional de boliche, são necessários 12 acertos consecutivos para obter uma pontuação perfeita de 300, enquanto a pontuação no boliche mundial exige apenas 10 acertos consecutivos.
Desafio
Seu desafio é calcular a pontuação fornecida pelos valores de uma planilha de pontuação.
Em uma planilha de pontuação, uma falta é indicada por um traço ( - ), uma batida com um X e uma reposição com uma barra ( / ). Se estes não se aplicarem, a contagem de pinfall é simplesmente indicada com um número (1-9). Faltas e divisões também são registradas nas fichas, mas você não precisa se preocupar com isso.
Entrada
Você receberá uma sequência composta por pontuações para cada quadro e terá um total de dez quadros. Cada quadro terá até dois valores, ou apenas 1 valor, se houver uma ocorrência. Sua entrada pode ser um parâmetro de string para uma função, ler de um arquivo ou de STDIN.
Por exemplo, se eu derrubar 1 pino no meu primeiro rolo e depois derrubar 2, o quadro parecerá "12". Isso não significa 12 (doze), mas significa 1 e 2, para um total de 3.
Se eu perdesse todos os pinos com os dois rolos (bolas de sarjeta), ficaria assim "-" (pontuação 0).
Cada quadro será separado por um espaço.
Entrada de amostra
-- 9- -9 X -/ 8/ 71 15 44 X
Para detalhar esse exemplo,
- Quadro 1 (-) - ambos os rolos foram perdidos. marcou 0
- Quadro 2 (9-) - derrubou 9 no primeiro rolo e perdeu no segundo. Pontuação 9
- Quadro 3 (-9) - Perdeu tudo no primeiro, conseguiu 9 no segundo. Pontuação 9
- Quadro 4 (X) - Greve, derrubou todos os dez. Pontuação 30
- Quadro 5 (- /) - Spare, perdeu tudo no primeiro, derrubou todos com o 2º rolo. Pontuação 10 + 0 = 10
- Quadro 6 (8 /) - Sobressalente, 8 pinos no primeiro rolo, derrubou os outros 2 com o 2º rolo. Pontuação 10 + 8 = 18
- Estrutura 7 (71) - estrutura aberta, 7 pinos no primeiro rolo, 1 pino no segundo rolo. Pontuação 7 + 1 = 8
- Os quadros 8,9,10 seguem os mesmos exemplos acima.
Saída
A saída será simplesmente um valor que possui a soma das pontuações de todos os 10 quadros. Usando a entrada de amostra, a saída será 128. Sua saída pode ser uma sequência ou um tipo numérico. Pode ser um valor de retorno da função ou gravado em STDOUT.
Regras
- Suponha que a entrada sempre seja válida. Por exemplo, um quadro inválido seria "/ 8", "XX", "123", "0" etc.
- Você não precisa se preocupar com divisões ou faltas.
- Seu código pode ser um programa completo ou uma função que recebe uma string e retorna a pontuação.
- Seu código não deve gerar nenhuma exceção.
- Isso é código de golfe, a resposta com o menor número de bytes ganha.
- Os idiomas que usam inclusões ou importações devem incluir as instruções de importação como parte de seu código e contar para a contagem de bytes.
Casos de teste
"-- 9- -9 X -/ 8/ 71 15 44 X" -> 128
"-- -1 2- 12 22 5- 42 61 8- 72" -> 45
"X X X 1/ 2/ 3/ 4/ 5/ -- 9/" -> 174
"X X X X X X X X X X" -> 300
"-- -- -- -- -- -- -- -- -- --" -> 0