Bowling

Bowling

Medio

Istruzioni

Assegna il punteggio a una partita di bowling.

Il bowling è un gioco in cui i giocatori lanciano una palla pesante per abbattere dei birilli disposti a triangolo. Scrivi il codice per tenere traccia del punteggio di una partita di bowling.

Come si calcola il punteggio

La partita è composta da 10 frame. Un frame è formato da uno o due lanci della palla, con 10 birilli in piedi all'inizio del frame. Ci sono tre casi per il calcolo del punteggio di un frame.

  • Un frame aperto è un frame in cui si registra un punteggio inferiore a 10. In questo caso il punteggio del frame è il numero di birilli abbattuti.

  • Uno spare è un frame in cui tutti e dieci i birilli vengono abbattuti con il secondo lancio. Il valore totale di uno spare è 10 più il numero di birilli abbattuti nel lancio successivo.

  • Uno strike è un frame in cui tutti e dieci i birilli vengono abbattuti con il primo lancio. Il valore totale di uno strike è 10 più il numero di birilli abbattuti nei due lanci successivi. Se a uno strike segue immediatamente un secondo strike, il valore del primo strike non può essere determinato finché la palla non viene lanciata un'altra volta.

Ecco un esempio con tre frame:

Frame 1 Frame 2 Frame 3
X (strike) 5/ (spare) 9 0 (frame aperto)

Il frame 1 è (10 + 5 + 5) = 20

Il frame 2 è (5 + 5 + 9) = 19

Il frame 3 è (9 + 0) = 9

Questo significa che il totale corrente è 48.

Il decimo frame è un caso speciale. Se si fa uno spare o uno strike, si ottengono rispettivamente uno o due tiri supplementari. I tiri supplementari servono a calcolare il totale del decimo frame. Fare strike o spare con il tiro supplementare non dà al giocatore altri tiri supplementari. Il valore totale del decimo frame è il numero totale di birilli abbattuti.

Per un decimo frame di X1/ (strike e spare), il valore totale è 20.

Per un decimo frame di XXX (tre strike), il valore totale è 30.

Requisiti

Scrivi il codice per tenere traccia del punteggio di una partita di bowling. Deve supportare due operazioni:

  • roll(pins : int) viene chiamata ogni volta che il giocatore lancia la palla. L'argomento è il numero di birilli abbattuti.
  • score() : int viene chiamata solo alla fine della partita. Restituisce il punteggio totale di quella partita.
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
OCaml Exercism

Vuoi iniziare Bowling?

Iscriviti a Exercism per imparare e padroneggiare OCaml con 60 esercizi e il mentoring di persone reali, tutto gratis.