Objectif
Écrivez un programme ou une fonction qui prend un entier positif net génère aléatoirement une série légale de pas (désormais appelée chaîne de pas) de longueur n.
Contribution
Un entier positif non nul n<= 100
Production
Renvoie une chaîne aléatoire ou une liste de caractères qui représentent une chaîne de longueur de pas valide et possible n. Les caractères utilisés seront:
- B - Balle. Si vous en accumulez 4, le frappeur est promené et a terminé le bâton.
- S - Strike. Si vous en accumulez 3, le frappeur est retiré et a terminé le bâton.
- F - Faute. Augmentera également le nombre de frappes mais ne pourra pas retirer le frappeur. C'est à dire, vous ne pouvez pas avoir un Foul être le dernier pitch d'une chaîne valide. Toute faute au-delà de deux frappes / fautes n'augmentera pas le nombre de frappes (le frappeur a déjà 2 frappes à ce moment-là et une troisième le ferait sortir).
- H - Frappé. Le frappeur a frappé une balle en jeu et a terminé le bâton.
(Ceci est légèrement simplifié, mais ne vous inquiétez pas à ce sujet)
Les chaînes de pitch valides sont celles qui se terminent par un retrait, une marche ou un coup.
Autrement dit, une chaîne de hauteur non valide a soit
- lancers supplémentaires après la 4e balle, la 3e frappe ou la frappe
- terminé avant de générer une 4e balle, une 3e frappe ou un coup.
Règles
- Votre programme doit être capable de produire tous les résultats possibles pour une entrée donnée.
- Votre programme ne doit pas être uniformément aléatoire mais doit toujours suivre la règle précédente.
- C'est du code-golf .
Exemples
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 et a Sest une grève