Punteggio del bowling mondiale
Molte persone sono andate nel loro centro bowling locale per giocare a bowling e molte persone continuano a lottare per calcolare i loro punteggi. World Bowling ha introdotto un sistema di punteggio semplificato per attirare più persone allo sport. Questo sistema di punteggio viene utilizzato nei giochi internazionali.
Il sistema di punteggio funziona così (da Wikipedia ):
Il sistema di punteggio del bowling mondiale, descritto come "punteggio del frame corrente" [32], premia i pin come segue:
- strike: 30 (indipendentemente dai risultati dei tiri seguenti)
- riserva: 10 più pinfall sul primo rotolo del frame corrente
- aperto: pinfall totale per il frame corrente
Se non hai familiarità con il bowling a dieci pin, ecco un riepilogo.
Ci sono 10 perni alla fine di una pista da bowling dove l'obiettivo è quello di abbatterli tutti con una palla da bowling. Ottieni 2 tiri di una palla per tentare di abbatterli tutti, preferibilmente abbattendoli tutti con il primo lancio (noto come strike ). Se ricevi uno strike, quel frame è completato e non è necessario tirare la palla una seconda volta. Uno sciopero vale 30.
Se non abbatti tutti e dieci, ottieni un altro tiro. Se abbatti tutti i pin rimanenti, questo è noto come ricambio . Il punteggio vale 10 pin + il numero di pin eliminati al primo tiro. Ad esempio, se ho abbattuto 7 pin, quindi sono riuscito a abbattere i restanti 3, varrebbe la pena di 17.
Se dopo il tuo secondo tiro non riesci ad abbattere tutti e dieci, questo è noto come un frame aperto . Il punteggio vale il numero totale di pin eliminati per quel frame.
Ci sono 10 frame in un gioco . Se hai familiarità con il punteggio del bowling tradizionale, non ottieni un tiro extra nel decimo frame con il World Bowling Scoring. Nel punteggio del bowling tradizionale, sono necessari 12 colpi consecutivi per ottenere un punteggio perfetto di 300, mentre il punteggio del World Bowling richiede solo 10 colpi consecutivi.
Sfida
La tua sfida è quella di calcolare il punteggio dato valori da un foglio punteggio.
Su un foglio di punteggio, un errore è indicato da un trattino ( - ), uno strike con una X e uno di riserva con una barra ( / ). Se questi non si applicano, il conteggio delle cadute viene semplicemente indicato con un numero (1-9). Anche i falli e le divisioni vengono registrati sui fogli dei punteggi, ma non è necessario preoccuparsi di questi.
Ingresso
Ti verrà data una stringa composta da punteggi per ogni fotogramma e avrai un totale di dieci fotogrammi. Ogni fotogramma avrà fino a due valori, o anche solo 1 se si verifica un avvertimento. L'input può essere un parametro stringa per una funzione, letto da un file o da STDIN.
Ad esempio, se avessi abbattuto 1 perno sul mio primo lancio, quindi abbattuto 2, il fotogramma sarebbe simile a "12". Questo non significa 12 (dodici), ma significa 1 e 2, per un totale di 3.
Se avessi perso tutti i pin con entrambi i rulli (palle di grondaia), sarebbe simile a questo "-" (punteggio di 0).
Ogni fotogramma sarà separato da uno spazio.
Input di esempio
-- 9- -9 X -/ 8/ 71 15 44 X
Per scomporre questo esempio,
- Frame 1 (-) - mancano entrambi i tiri. segnato 0
- Frame 2 (9-): abbattuto 9 al primo tiro, mancato al secondo tiro. Punteggio 9
- Frame 3 (-9) - Ha perso tutto il primo, ha ottenuto 9 nel secondo. Punteggio 9
- Frame 4 (X) - Strike, abbattuto tutti e dieci. Punteggio 30
- Frame 5 (- /) - Ricambio, fallito tutto sul primo, abbattuto tutto con il 2 ° tiro. Punteggio 10 + 0 = 10
- Frame 6 (8 /) - Ricambio, 8 pin sul primo rotolo, abbattuto gli altri 2 con il 2 ° rotolo. Punteggio 10 + 8 = 18
- Frame 7 (71) - frame aperto, 7 pin sul primo rotolo, 1 pin sul secondo rotolo. Punteggio 7 + 1 = 8
- I frame 8,9,10 seguono gli stessi esempi di cui sopra.
Produzione
L'output sarà semplicemente un valore che ha la somma dei punteggi di tutti e 10 i frame. Utilizzando l'input di esempio, l'output sarà 128. L'output può essere una stringa o un tipo numerico. Può essere un valore restituito dalla funzione o scritto in STDOUT.
Regole
- Supponiamo che l'input sia sempre valido. Ad esempio, un frame non valido sarebbe "/ 8", "XX", "123", "0", ecc.
- Non devi preoccuparti di spaccature o falli.
- Il codice può essere un programma completo o una funzione che accetta una stringa e restituisce il punteggio.
- Il tuo codice non deve generare eccezioni.
- Questo è il codice golf, la risposta con il minor numero di byte vince.
- Le lingue che usano include o import devono includere le dichiarazioni di importazione come parte del loro codice e contare per il conteggio dei byte.
Casi test
"-- 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