เป้าหมาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เป็นจำนวนเต็มบวกnและสุ่มสร้างซีรีส์ทางกฎหมายของสนาม (ต่อจากนี้ไปเรียกว่าสตริงลาด) nของความยาว
อินพุต
จำนวนเต็มบวกที่ไม่เป็นศูนย์n<= 100
เอาท์พุต
nกลับสตริงแบบสุ่มหรือรายการของตัวละครที่เป็นตัวแทนของความเป็นไปได้สตริงสนามที่ถูกต้องของความยาว ตัวละครที่ใช้จะเป็น:
- B - บอล หากคุณสะสม 4 สิ่งเหล่านี้แป้งจะถูกเดินและตีบอลจนหมด
- S - สไตรค์ หากคุณสะสม 3 สิ่งเหล่านี้แป้งจะหมดและลูกบอลหมด
- F - เหม็น จะเพิ่มจำนวนการโจมตี แต่ไม่สามารถทำการโจมตีได้ คือคุณไม่สามารถมี Foul เป็น pitch สุดท้ายในสตริงที่ถูกต้อง การฟาล์วที่ผ่านมาสองครั้ง / การฟาล์วจะไม่เพิ่มจำนวนการตี (การปะทะมี 2 ครั้ง ณ จุดนั้นและครั้งที่ 3 จะพาเขาออกไป)
- H - Hit ปะทะได้ตีลูกเข้าสู่การเล่นและเสร็จสิ้นการตี
(สิ่งนี้ง่ายเล็กน้อย แต่คุณไม่ต้องเป็นห่วง)
สายพิทช์ที่ถูกต้องคือสตริงที่จบในการนัดหยุดงานการเดินหรือการตี
นั่นคือสตริงพิทช์ไม่ถูกต้องเช่นกัน
- สนามเพิ่มเติมหลังจากบอลลูกที่ 4, นัดที่ 3 หรือ Hit
- ถูกยกเลิกก่อนที่จะสร้างลูกที่ 4, การโจมตีครั้งที่ 3 หรือการเข้าชม
กฎระเบียบ
- โปรแกรมของคุณจะต้องสามารถสร้างผลลัพธ์ที่เป็นไปได้ทั้งหมดสำหรับการป้อนข้อมูลที่กำหนด
- โปรแกรมของคุณไม่จำเป็นต้องสุ่มอย่างสม่ำเสมอ แต่ยังคงต้องปฏิบัติตามกฎก่อนหน้า
- นี่คือรหัสกอล์ฟ
ตัวอย่าง
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
FS