Mục tiêu
Viết chương trình hoặc hàm lấy số nguyên dương n
và tạo ngẫu nhiên một chuỗi các nốt hợp pháp (từ đó được gọi là chuỗi sân) có độ dài n
.
Đầu vào
Một số nguyên khác không, dương n
<= 100
Đầu ra
Trả về một chuỗi ngẫu nhiên hoặc danh sách các ký tự đại diện cho một chuỗi độ dài hợp lệ có thể, hợp lệ n
. Các ký tự được sử dụng sẽ là:
- B - Bóng. Nếu bạn tích lũy được 4 trong số này, người đánh bóng được đi bộ và đánh xong.
- S - Tấn công. Nếu bạn tích lũy được 3 trong số này, người đánh bóng đã ra ngoài và đánh xong.
- F - hôi. Cũng sẽ tăng số lần tấn công nhưng không thể đánh bại. Tức là, bạn không thể có một lỗi là nốt cuối cùng trong một chuỗi hợp lệ. Bất kỳ pha phạm lỗi nào trong hai lần tấn công / phạm lỗi sẽ không làm tăng số lần Đột kích (người đánh bóng đã có 2 lần tấn công vào thời điểm đó và lần thứ 3 sẽ khiến anh ta bị loại).
- H - Trúng. Người đánh bóng đã đánh một quả bóng vào chơi và kết thúc trận đấu.
(Điều này được đơn giản hóa một chút nhưng bạn không lo lắng về điều đó)
Các chuỗi cao độ hợp lệ là những chuỗi kết thúc bằng một cú đánh, đi bộ hoặc một cú đánh.
Tức là, một chuỗi pitch không hợp lệ có một trong hai
- các nốt bổ sung sau Quả bóng thứ 4, Đột kích thứ 3 hoặc Lượt
- chấm dứt trước khi tạo ra quả bóng thứ 4, cú đánh thứ 3 hoặc Hit.
Quy tắc
- Chương trình của bạn phải có khả năng tạo ra tất cả các kết quả có thể cho một đầu vào nhất định.
- Chương trình của bạn không nhất thiết phải ngẫu nhiên nhưng vẫn phải tuân theo quy tắc trước đó.
- Đây là môn đánh gôn .
Ví dụ
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
giây và S
là một cuộc đình công