Wiele osób poszło do lokalnego centrum gry w kręgle, aby zagrać w kilka gier w kręgle, a wiele osób nadal próbuje wyliczyć swoje wyniki. World Bowling wprowadził uproszczony system punktacji, aby przyciągnąć więcej osób do sportu. Ten system punktacji jest wykorzystywany w grach międzynarodowych.
System punktacji działa w następujący sposób (z Wikipedii ):
System punktacji World Bowling - opisany jako „bieżąca punktacja klatek” [32] - przyjmuje następujące piny:
- strajk: 30 (niezależnie od wyników rzutów)
- spare: 10 plus pinfall przy pierwszym rzucie bieżącej ramy
- open: całkowity pinfall dla bieżącej ramki
Jeśli nie jesteś zaznajomiony z kręgielnią na 10 pinów, oto podsumowanie.
Na końcu toru do gry w kręgle znajduje się 10 kręgli, których celem jest powalenie ich wszystkich kulą do kręgli. Dostajesz 2 rzuty piłki, aby spróbować powalić je wszystkie, najlepiej powalić je wszystkie pierwszym rzutem (znanym jako uderzenie ). Jeśli dostaniesz ostrzeżenie, ta rama jest zakończona i nie musisz ponownie rzucać piłką. Strajk jest wart 30.
Jeśli nie powalisz wszystkich dziesięciu, otrzymasz jeszcze jeden rzut. Jeśli powalisz wszystkie pozostałe szpilki, jest to znane jako zapasowe . Wynik jest wart 10 pinów + liczba pinów powalonych podczas pierwszego rzutu. Na przykład, jeśli powaliłem 7 szpilek, a następnie udało mi się powalić pozostałe 3, byłoby to warte 17.
Jeśli po drugim rzucie nie uda Ci się powalić wszystkich dziesięciu, nazywa się to otwartą ramą . Wynik jest wart całkowitej liczby wyrzuconych szpilek dla tej ramki.
Gra zawiera 10 klatek . Jeśli jesteś zaznajomiony z tradycyjną punktacją w kręgle, nie uzyskasz dodatkowego rzutu w 10. klatce dzięki World Bowling Scoring. W tradycyjnych punktach do gry w kręgle potrzeba 12 kolejnych uderzeń, aby uzyskać doskonały wynik 300, podczas gdy punktacja w World Bowling wymaga tylko 10 kolejnych uderzeń.
Wyzwanie
Twoim wyzwaniem jest obliczenie podanych wartości z arkusza wyników.
Na karcie wyników chybienie jest oznaczone kreską ( - ), uderzeniem za pomocą X i rezerwowym ukośnikiem ( / ). Jeśli nie mają zastosowania, liczba pinfall jest po prostu oznaczana liczbą (1-9). Faule i podziały są również zapisywane na kartach wyników, ale nie musisz się o to martwić.
Wkład
Otrzymasz ciąg znaków składający się z wyników dla każdej klatki i będziesz miał w sumie dziesięć klatek. Każda ramka będzie miała maksymalnie dwie wartości lub 1 wartość, jeśli wystąpi ostrzeżenie. Dane wejściowe mogą być ciągiem parametrów funkcji, odczytanym z pliku lub ze STDIN.
Na przykład, jeśli przewróciłem 1 kołek przy pierwszym rzucie, a następnie przewróciłem 2, ramka wyglądałaby jak „12”. Nie oznacza to 12 (dwanaście), ale oznacza 1 i 2, w sumie 3.
Gdybym nie trafił w każdy kołek przy obu rolkach (kule rynnowe), wyglądałoby to tak: „-” (wynik 0).
Każda ramka będzie oddzielona spacją.
Przykładowe dane wejściowe
-- 9- -9 X -/ 8/ 71 15 44 X
Aby rozbić ten przykład,
- Ramka 1 (-) - brak dwóch rzutów. zdobył 0
- Frame 2 (9-) - powalony na 9 przy pierwszym rzucie, pominięty przy drugim rzucie. Ocena 9
- Ramka 3 (-9) - Nieodebrane wszystkie za pierwszym razem, otrzymałem 9 za drugim. Ocena 9
- Ramka 4 (X) - Uderzenie, powalenie wszystkich dziesięciu. Ocena 30
- Ramka 5 (- /) - Zapasowa, spudłowała za pierwszym razem, powalona za wszystko przy drugim rzucie. Ocena 10 + 0 = 10
- Ramka 6 (8 /) - Zapasowa, 8 szpilek na pierwszym rolce, powalona na pozostałe 2 za pomocą drugiej rolki. Ocena 10 + 8 = 18
- Rama 7 (71) - otwarta rama, 7 pinów na pierwszym rolce, 1 pin na drugim rolce. Wynik 7 + 1 = 8
- Ramki 8,9,10 przedstawiają te same przykłady, co powyżej.
Wydajność
Wynik będzie po prostu wartością, która ma sumę wyników ze wszystkich 10 klatek. Przy użyciu przykładowego wejścia wynik będzie wynosił 128. Wynik może być ciągiem lub typem liczbowym. Może to być wartość zwracana przez funkcję lub zapisana w STDOUT.
Zasady
- Załóż, że dane wejściowe zawsze będą prawidłowe. Na przykład niepoprawna ramka to „/ 8”, „XX”, „123”, „0” itd.
- Nie musisz się martwić rozłamami lub faulami.
- Kod może być pełnym programem lub funkcją, która pobiera ciąg znaków i zwraca wynik.
- Twój kod nie może zgłaszać żadnych wyjątków.
- To jest golf golfowy, odpowiedź z najmniejszą liczbą bajtów wygrywa.
- Języki, które używają obejmują lub importują, muszą zawierać instrukcje importu jako część kodu i liczyć się do liczby bajtów.
Przypadki testowe
"-- 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