골
양의 정수를 취하고 n
length의 유효한 일련의 피치 (이하 피치 문자열)를 임의로 생성 하는 프로그램이나 함수를 작성하십시오 n
.
입력
0이 아닌 양의 정수 n
<= 100
산출
length의 유효한 피치 문자열을 나타내는 임의의 문자열 또는 문자 목록을 반환합니다 n
. 사용되는 문자는 다음과 같습니다.
- B- 공. 이 중 4 개를 모으면 타자가 걷고 타자가 끝납니다.
- S- 스트라이크. 이 중 3 개를 축적하면 타자가 나오고 타자가 완료됩니다.
- F- 파울 또한 스트라이크 수를 늘리지 만 타자를 꺼낼 수는 없습니다. 즉, 유효한 문자열에서 마지막 음정이 될 수 없습니다. 두 번의 스트라이크 / 파울을 지난 파울은 스트라이크 수를 증가시키지 않습니다 (타자는 이미 그 시점에서 2 번의 스트라이크를 가졌으며 3 번은 그를 때릴 것입니다).
- H- 맞다. 타자가 공을 쳐서 타자가 끝났습니다.
(이것은 약간 단순화되었지만 걱정하지 마십시오)
유효한 피치 스트링은 스트라이크 아웃, 워크 또는 히트로 끝나는 스트링입니다.
즉, 유효하지 않은 피치 문자열은
- 4 번째 공, 3 번째 타격 또는 명중 후 추가 투구
- 4 번째 공, 3 번째 타격 또는 명중을 생성하기 전에 종료되었습니다.
규칙
- 프로그램은 주어진 입력에 대해 가능한 모든 결과를 생성 할 수 있어야합니다.
- 프로그램은 균일하게 무작위 일 필요는 없지만 여전히 이전 규칙을 따라야합니다.
- 이것은 code-golf 입니다.
예
Input => Possible Outputs
1 => [H] #Can only end with a hit
2 => [S,H], [B,H], [F,H] #Can only end with a hit
3 => [S,S,S], [F,F,S], [B,B,H], ... #Can now strike-out, otherwise must end with a hit
4 => [B,B,B,B], [S,B,S,S], [B,F,S,S], [B,B,B,H], ... #Can now be walked, struck-out, or get a hit
6 => [S,B,S,B,B,H], [F,F,F,F,F,S], ... #Can now have a full-count (3 balls, 2 strikes) before finishing
Input => Invalid Outputs
1 => [S], [B] #Not enough for a strike-out/walk
2 => [S,S] #Not enough for a strike-out/walk
2 => [H,H] #Batter has already scored a hit
3 => [S,S,F] #Fouls will not cause a strike-out
4 => [S,S,S,H] #Batter has already struck out
5 => [B,B,B,B,B] #Batter has already walked
F
들하고는 S
스트라이크 아웃입니다