Bolos

Bolos

Media

Instrucciones

Puntúa una partida de bolos.

Los bolos son un juego en el que los jugadores lanzan una bola pesada para derribar unos bolos dispuestos en triángulo. Escribe código para llevar la cuenta de la puntuación de una partida de bolos.

Cómo se puntúa en los bolos

La partida consta de 10 turnos. Un turno se compone de una o dos tiradas, con 10 bolos en pie al iniciarse el turno. Hay tres casos a la hora de calcular la puntuación de un turno.

  • Un turno abierto es aquel en el que se registra una puntuación inferior a 10. En este caso, la puntuación del turno es el número de bolos derribados.

  • Un semipleno se da cuando se derriban los diez bolos con la segunda tirada. El valor total de un semipleno es 10 más el número de bolos derribados en la siguiente tirada.

  • Un pleno se da cuando se derriban los diez bolos con la primera tirada. El valor total de un pleno es 10 más el número de bolos derribados en las dos tiradas siguientes. Si a un pleno le sigue inmediatamente otro pleno, el valor del primer pleno no puede determinarse hasta que se lance la bola una vez más.

Aquí tienes un ejemplo de tres turnos:

Turno 1 Turno 2 Turno 3
X (pleno) 5/ (semipleno) 9 0 (turno abierto)

El turno 1 es (10 + 5 + 5) = 20

El turno 2 es (5 + 5 + 9) = 19

El turno 3 es (9 + 0) = 9

Esto significa que el total acumulado actual es 48.

El décimo turno de la partida es un caso especial. Si alguien hace un semipleno o un pleno, obtiene una o dos bolas de relleno, respectivamente. Las bolas de relleno sirven para calcular el total del décimo turno. Hacer un pleno o un semipleno con la bola de relleno no da al jugador más bolas de relleno. El valor total del décimo turno es el número total de bolos derribados.

Para un décimo turno de X1/ (un pleno y un semipleno), el valor total es 20.

Para un décimo turno de XXX (tres plenos), el valor total es 30.

Requisitos

Escribe código para llevar la cuenta de la puntuación de una partida de bolos. 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 bolos derribados.
  • Se llama a score() : int solo al final del todo de la partida. Devuelve la puntuación total de esa partida.
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
OCaml Exercism

¿Listo para empezar Bolos?

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