ゴール
正の整数を取り、n
lengthの正当な一連のピッチ(以下、ピッチストリングと呼ぶ)をランダムに生成するプログラムまたは関数を作成しn
ます。
入力
ゼロ以外の正の整数n
<= 100
出力
長さの可能な有効なピッチ文字列を表すランダム文字列または文字のリストを返しn
ます。使用される文字は次のとおりです。
- B-ボール。これらの4つを蓄積する場合、打者は歩き、打撃を終えた。
- S-ストライク。これらのうち3つを蓄積すると、打者は出てバッティングを終了します。
- F-ファウル。また、ストライク数を増やしますが、打者を出すことはできません。つまり、有効な文字列の最後のピッチをファウルにすることはできません。2回のストライク/ファウルを過ぎたファウルは、ストライクカウントを増加させません(打者はその時点ですでに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
秒やa S
はストライクアウトです