Tujuan
Tulis program atau fungsi yang mengambil bilangan bulat positif n
dan secara acak menghasilkan serangkaian nada (untuk selanjutnya disebut string Pitch) panjangnya n
.
Memasukkan
Bilangan bulat nol tidak nol n
<= 100
Keluaran
Mengembalikan string acak, atau daftar karakter, yang mewakili string panjang nada yang mungkin dan valid n
. Karakter yang digunakan adalah:
- B - Ball. Jika Anda mengumpulkan 4 dari ini, adonan berjalan dan selesai memukul.
- S - Strike. Jika Anda mengumpulkan 3 dari ini, adonan keluar dan selesai memukul.
- F -Foul. Akan juga meningkatkan jumlah Strike tetapi tidak bisa mengeluarkan adonan. Yaitu, Anda tidak dapat memiliki pelanggaran menjadi nada terakhir dalam string yang valid. Setiap pelanggaran melewati dua serangan / pelanggaran tidak akan meningkatkan jumlah Serangan (adonan sudah memiliki 2 serangan pada saat itu dan yang ketiga akan mengeluarkannya).
- H - Hit. Adonan telah memukul bola untuk dimainkan dan selesai memukul.
(Ini sedikit disederhanakan tapi jangan khawatir tentang itu)
Senar nada yang valid adalah yang berakhir dengan mogok, jalan-jalan, atau pukulan.
Yaitu, string pitch yang tidak valid memiliki salah
- pitch tambahan setelah Ball 4, Strike ke-3, atau Hit
- dihentikan sebelum menghasilkan bola ke-4, serangan ke-3, atau Hit.
Aturan
- Program Anda harus dapat menghasilkan semua hasil yang mungkin untuk input yang diberikan.
- Program Anda tidak harus acak, tetapi masih harus mengikuti aturan sebelumnya.
- Ini adalah kode-golf .
Contohnya
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
detik dan S
a strike-out