Obbiettivo
Scrivi un programma o una funzione che accetta un numero intero positivo n
e genera in modo casuale una serie legale di passi (d'ora in poi chiamata stringa del passo) di lunghezza n
.
Ingresso
Un numero intero positivo diverso da zero n
<= 100
Produzione
Restituisce una stringa casuale, o un elenco di caratteri, che rappresentano una possibile stringa di lunghezza valida n
. I personaggi utilizzati saranno:
- B - Palla. Se ne accumuli 4, la pastella viene percorsa e finita la battuta.
- S - Colpisci. Se ne accumuli 3, la pastella è fuori e ha finito di battere.
- F - Fallo. Aumenterà anche il conteggio degli Strike ma non riuscirà a far uscire il battitore. Cioè, non puoi avere un Fallo come ultimo passo in una stringa valida. Qualsiasi fallo oltre due colpi / falli non aumenterà il conteggio degli Strike (il battitore ha già 2 colpi in quel punto e un terzo lo farebbe uscire).
- H - Hit. Il battitore ha colpito una palla in gioco e ha finito di battere.
(Questo è leggermente semplificato ma non ti preoccupare per quello)
Le stringhe di intonazione valide sono quelle che terminano in uno strike-out, una passeggiata o un colpo.
Cioè, una stringa di intonazione non valida ha entrambe
- tiri supplementari dopo la 4a palla, il 3 ° colpo o il colpo
- terminato prima di generare una quarta palla, un terzo colpo o un colpo.
Regole
- Il tuo programma deve essere in grado di produrre tutti i possibili risultati per un dato input.
- Il tuo programma non deve essere uniformemente casuale ma deve comunque seguire la regola precedente.
- Questo è code-golf .
Esempi
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
è uno strike-out