Viele Leute sind zu ihrem örtlichen Bowlingzentrum gegangen, um ein paar Bowlingspiele zu spielen, und viele kämpfen weiterhin darum, ihre Punktzahlen zu berechnen. World Bowling hat ein vereinfachtes Punktesystem eingeführt, um mehr Menschen für den Sport zu begeistern. Dieses Punktesystem wird in internationalen Spielen verwendet.
Das Punktesystem funktioniert wie folgt (aus Wikipedia ):
Das World Bowling Scoring-System, das als "Current Frame Scoring" [32] bezeichnet wird, vergibt die Pins folgendermaßen:
- Streik: 30 (unabhängig von den Ergebnissen der folgenden Würfe)
- spare: 10 plus pinfall beim ersten würfeln des aktuellen bildes
- open: Gesamt-Pinfall für den aktuellen Frame
Wenn Sie mit Bowling nicht vertraut sind, finden Sie hier eine Zusammenfassung.
Am Ende einer Bowlingbahn befinden sich 10 Kegel, mit denen alle mit einer Bowlingkugel niedergeschlagen werden sollen. Sie erhalten 2 Wurfbälle, um zu versuchen, sie alle niederzuschlagen, vorzugsweise mit dem ersten Wurf (bekannt als Schlag ). Wenn Sie einen Treffer erzielen, ist dieser Frame abgeschlossen und Sie müssen den Ball nicht ein zweites Mal rollen. Ein Streik ist 30 wert.
Wenn Sie nicht alle zehn umwerfen, erhalten Sie eine weitere Rolle. Wenn Sie alle verbleibenden Stifte umwerfen, spricht man von einem Ersatz . Die Punktzahl ist 10 Pins + die Anzahl der Pins, die beim ersten Wurf abgeworfen wurden. Wenn ich zum Beispiel 7 Pins umgestoßen und dann die restlichen 3 Pins umgestoßen hätte, wäre das 17 wert.
Wenn Sie nach Ihrem zweiten Wurf nicht alle zehn besiegen, spricht man von einem offenen Frame . Die Punktzahl ist die Gesamtzahl der Stifte wert, die für diesen Frame abgeworfen wurden.
Ein Spiel besteht aus 10 Bildern . Wenn Sie mit dem traditionellen Bowling-Scoring vertraut sind, erhalten Sie im 10. Frame beim World Bowling Scoring keine Extrarolle. Bei der traditionellen Bowling-Wertung sind 12 aufeinanderfolgende Schläge erforderlich, um eine perfekte Punktzahl von 300 zu erzielen, während bei der World Bowling-Wertung nur 10 aufeinanderfolgende Schläge erforderlich sind.
Herausforderung
Ihre Herausforderung besteht darin, die Punktzahl anhand eines Bewertungsbogens zu berechnen.
Auf einem Punkteblatt wird ein Fehler durch einen Strich ( - ), einen Schlag mit einem X und einen Ersatz mit einem Schrägstrich ( / ) angezeigt . Wenn diese nicht zutreffen, wird die Pinfall-Anzahl einfach mit einer Zahl (1-9) angegeben. Fouls und Splits werden ebenfalls auf den Spielberichten aufgezeichnet, aber Sie müssen sich nicht darum kümmern.
Eingang
Sie erhalten eine Zeichenfolge, die aus Punktzahlen für jedes Bild besteht und insgesamt zehn Bilder enthält. Jeder Frame hat bis zu zwei Werte oder nur 1 Wert, wenn ein Strike aufgetreten ist. Ihre Eingabe kann ein Zeichenfolgenparameter für eine Funktion sein, der aus einer Datei oder aus STDIN gelesen wird.
Wenn ich zum Beispiel bei meinem ersten Wurf 1 Nadel und dann 2 umgestoßen hätte, würde der Rahmen wie "12" aussehen. Dies bedeutet nicht 12 (zwölf), sondern 1 und 2 für insgesamt 3.
Wenn ich jeden Stift mit beiden Rollen (Rinnenkugeln) verpasst hätte, würde es so aussehen "-" (Punktzahl 0).
Jeder Frame wird durch ein Leerzeichen getrennt.
Probeneingabe
-- 9- -9 X -/ 8/ 71 15 44 X
Um dieses Beispiel aufzuschlüsseln,
- Frame 1 (-) - beide Rollen sind verpasst. erzielte 0
- Frame 2 (9-) - 9 auf der ersten Rolle niedergeschlagen, auf der zweiten Rolle verfehlt. Punktzahl 9
- Frame 3 (-9) - Verpasste alles beim ersten, bekam 9 beim zweiten. Punktzahl 9
- Frame 4 (X) - Strike, alle zehn niedergeschlagen. Ergebnis 30
- Frame 5 (- /) - Spare, verpasste alles beim ersten, warf alles mit dem zweiten Wurf nieder. Ergebnis 10 + 0 = 10
- Frame 6 (8 /) - Spare, 8 Stifte auf der ersten Rolle, die anderen 2 mit der zweiten Rolle niedergeschlagen. Ergebnis 10 + 8 = 18
- Rahmen 7 (71) - offener Rahmen, 7 Stifte auf der ersten Rolle, 1 Stift auf der zweiten Rolle. Ergebnis 7 + 1 = 8
- Die Rahmen 8, 9, 10 folgen denselben Beispielen wie oben.
Ausgabe
Die Ausgabe ist einfach ein Wert, der die Summe der Ergebnisse aller 10 Frames enthält. Bei Verwendung der Beispieleingabe ist die Ausgabe 128. Bei Ihrer Ausgabe kann es sich um eine Zeichenfolge oder einen numerischen Typ handeln. Dies kann ein Funktionsrückgabewert sein oder in STDOUT geschrieben werden.
Regeln
- Angenommen, die Eingabe ist immer gültig. Ein ungültiger Frame wäre beispielsweise "/ 8", "XX", "123", "0" usw.
- Sie müssen sich keine Gedanken über Splits oder Fouls machen.
- Ihr Code kann ein vollständiges Programm oder eine Funktion sein, die eine Zeichenfolge aufnimmt und die Punktzahl zurückgibt.
- Ihr Code darf keine Ausnahmen auslösen.
- Dies ist Codegolf, die Antwort mit der geringsten Anzahl von Bytes gewinnt.
- Sprachen, die Includes oder Importe verwenden, müssen die Importanweisungen als Teil ihres Codes enthalten und auf die Byteanzahl angerechnet werden.
Testfälle
"-- 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