Boliche

Boliche

Intermedia

Instrucciones

Puntúa una partida de bowling.

El bowling es un juego en el que los jugadores lanzan una bola pesada para derribar pinos dispuestos en forma de triángulo. Escribe código para llevar la cuenta de la puntuación de una partida de bowling.

Cómo se puntúa el bowling

La partida consta de 10 entradas. Una entrada se compone de uno o dos lanzamientos de bola con 10 pinos en pie al inicializarse la entrada. Hay tres casos al calcular la puntuación de una entrada.

  • Una entrada abierta es aquella en la que se registra una puntuación menor que 10. En ese caso, la puntuación de la entrada es el número de pinos derribados.

  • Un spare es aquel en el que los diez pinos se derriban con el segundo lanzamiento. El valor total de un spare es 10 más el número de pinos derribados en su siguiente lanzamiento.

  • Un strike es aquel en el que los diez pinos se derriban con el primer lanzamiento. El valor total de un strike es 10 más el número de pinos derribados en los dos lanzamientos siguientes. Si a un strike le sigue inmediatamente otro strike, el valor del primer strike no se puede determinar hasta que se lance la bola una vez más.

Aquí tienes un ejemplo de tres entradas:

Entrada 1 Entrada 2 Entrada 3
X (strike) 5/ (spare) 9 0 (entrada abierta)

La entrada 1 es (10 + 5 + 5) = 20

La entrada 2 es (5 + 5 + 9) = 19

La entrada 3 es (9 + 0) = 9

Esto significa que el total acumulado actual es 48.

La décima entrada de la partida es un caso especial. Si alguien lanza un spare o un strike, recibe una o dos bolas extra, respectivamente. Las bolas extra existen para calcular el total de la décima entrada. Anotar un strike o un spare en la bola extra no le da al jugador más bolas extra. El valor total de la décima entrada es el número total de pinos derribados.

Para una décima entrada de X1/ (un strike y un spare), el valor total es 20.

Para una décima entrada de XXX (tres strikes), el valor total es 30.

Requisitos

Escribe código para llevar la cuenta de la puntuación de una partida de bowling. Debe admitir dos operaciones:

  • Se llama a roll(pins : int) cada vez que el jugador lanza una bola. El argumento es el número de pinos derribados.
  • Se llama a score() : int solo justo al final de la partida. Devuelve la puntuación total de esa partida.
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
OCaml Exercism

¿Todo listo para empezar Boliche?

Regístrate en Exercism para aprender y dominar OCaml con 60 ejercicios y mentoría humana real, todo gratis.