많은 사람들이 볼링 게임을하기 위해 지역 볼링 센터에 갔으며, 많은 사람들이 점수를 계산하기 위해 계속 노력하고 있습니다. 월드 볼링은 더 많은 사람들을 스포츠에 끌어 들이기 위해 간단한 점수 시스템을 도입했습니다. 이 스코어링 시스템은 국제 게임에서 활용됩니다.
스코어링 시스템은 다음과 같이 작동합니다 ( Wikipedia에서 ).
"현재 프레임 스코어링"[32]으로 설명되는 월드 볼링 스코어링 시스템은 다음과 같이 핀을 수여합니다.
- 스트라이크 : 30 (롤 결과에 관계없이)
- 스페어 : 현재 프레임의 첫 번째 롤에 10 플러스 핀폴
- 열림 : 현재 프레임의 총 핀폴
10 핀 볼링에 익숙하지 않다면 여기에 요약되어 있습니다.
볼링 레인 끝에는 볼링 공으로 핀을 모두 쓰러 뜨리는 10 개의 핀이 있습니다. 당신은 볼 2 롤은 바람직하게는 그들에게 (A로 알려진 최초의 롤 모두 쓰러 뜨린 그들에게 모두 아래로 노크를 시도 얻을 파업을 ). 타격을 가하면 해당 프레임이 완성되고 공을 다시 굴릴 필요가 없습니다. 파업의 가치는 30입니다.
열 개를 모두 쓰러 뜨리지 않으면 한 번 더 굴립니다. 남은 핀을 모두 쓰러 뜨리면 여분이라고 합니다. 점수는 10 핀 + 첫 번째 롤에서 쓰러진 핀 수입니다. 예를 들어, 내가 7 핀을 쓰러 뜨렸다면 나머지 3 개를 쓰러 뜨렸다면 17의 가치가 있습니다.
두 번째 롤 후 10 개를 모두 쓰러 뜨리지 않으면 오픈 프레임이라고 합니다. 점수는 해당 프레임에서 녹아웃 된 총 핀 수에 해당합니다.
게임 에는 10 개의 프레임 이 있습니다 . 전통적인 볼링 득점에 익숙하다면 월드 볼링 득점으로 10 번째 프레임에 추가 롤을 얻지 못합니다. 전통적인 볼링 점수에서는 300 점을 달성하기 위해 12 번의 연속 타격이 필요한 반면 월드 볼링의 득점은 10 번의 연속적인 타격 만 필요합니다.
도전
당신의 도전은 점수 시트에서 주어진 값을 계산하는 것입니다.
점수 시트에, 미스가 대시로 표시됩니다 ( - )하는 파업 와 X 및 예비 슬래시 ( / ). 이러한 사항이 적용되지 않으면, 낙상 횟수는 단순히 숫자 (1-9)로 표시됩니다. 파울과 스플릿도 스코어 시트에 기록되지만 이에 대해 걱정할 필요는 없습니다.
입력
각 프레임에 대한 점수로 구성된 문자열이 제공되며 총 10 개의 프레임이 있습니다. 각 프레임은 최대 2 개의 값을 가지거나 스트라이크가있을 경우 1 개의 값을 갖습니다. 입력은 함수에 대한 문자열 매개 변수이거나 파일에서 읽거나 STDIN에서 읽을 수 있습니다.
예를 들어, 첫 번째 롤에서 1 핀을 내리고 2를 쓰러 뜨렸다면 프레임은 "12"처럼 보일 것입니다. 이것은 12 (12)를 의미하는 것이 아니라 1과 2를 의미하며 총 3입니다.
두 롤 (홈통 공)이있는 모든 핀을 놓치면이 "-"(점수 0)와 같습니다.
각 프레임은 공백으로 구분됩니다.
샘플 입력
-- 9- -9 X -/ 8/ 71 15 44 X
이 예제를 분석하려면
- 프레임 1 (-)-두 롤 모두 누락되었습니다. 0 점
- 프레임 2 (9-)-첫 번째 롤에서 9를 쓰러 뜨 렸고 두 번째 롤에서 놓쳤습니다. 9 점
- 프레임 3 (-9)-처음에 모두 놓 쳤고 두 번째에 9를 얻었습니다. 9 점
- 프레임 4 (X)-스트라이크, 10 개 모두 쓰러졌습니다. 30 점
- 프레임 5 (-/)-스페어, 처음에는 모두 빠졌고 두 번째 롤로 모두 쓰러졌습니다. 점수 10 + 0 = 10
- 프레임 6 (8 /)-예비, 첫 번째 롤에 8 개의 핀이 있고 두 번째 롤로 다른 2 개를 쓰러 뜨 렸습니다. 10 + 8 = 18 점
- 프레임 7 (71)-열린 프레임, 첫 번째 롤의 7 핀, 두 번째 롤의 1 핀. 점수 7 + 1 = 8
- 프레임 8,9,10은 위와 동일한 예를 따릅니다.
산출
출력은 단순히 10 개 프레임의 점수 합계를 갖는 값입니다. 샘플 입력을 사용하면 출력은 128이됩니다. 출력은 문자열 또는 숫자 유형일 수 있습니다. 함수 반환 값이거나 STDOUT에 기록 될 수 있습니다.
규칙
- 입력이 항상 유효하다고 가정하십시오. 예를 들어, 유효하지 않은 프레임은 "/ 8", "XX", "123", "0"등입니다.
- 분열이나 파울에 대해 걱정할 필요가 없습니다.
- 코드는 전체 프로그램이거나 문자열을 받아 점수를 반환하는 함수일 수 있습니다.
- 코드에서 예외를 발생시키지 않아야합니다.
- 이것은 코드 골프이며, 가장 적은 수의 바이트로 승리합니다.
- 포함 또는 가져 오기를 사용하는 언어는 코드의 일부로 import 문을 포함하고 바이트 수에 포함되어야합니다.
테스트 사례
"-- 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