Cel
Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą n
i losowo generuje prawidłową serię podziałek (odtąd zwaną łańcuchem podziałki) o długości n
.
Wejście
Niezerowa, dodatnia liczba całkowita n
<= 100
Wynik
Zwraca losowy ciąg znaków lub listę znaków, które reprezentują możliwy, prawidłowy ciąg długości tonu n
. Użyte postacie to:
- B - Piłka. Jeśli zgromadzisz 4 z nich, pałkarz idzie i kończy mrugnięcie.
- S - Uderzenie. Jeśli zgromadzisz 3 z nich, ciasto się skończy i zakończy mruganie.
- F - Faul. Zwiększy również liczbę uderzeń, ale nie może wydobyć pałkarza. To znaczy, że faul nie może być ostatnim rzutem w prawidłowym ciągu. Jakiekolwiek faule po dwóch uderzeniach / faulach nie zwiększą liczby uderzeń (pałkarz ma już w tym momencie 2 uderzenia, a 3 go wydostanie).
- H - Hit. Pałkarz uderzył piłkę w grę i zakończył mrugnięcie.
(Jest to nieco uproszczone, ale nie martw się o to)
Prawidłowe ciągi znaków to te, które kończą się przekreśleniem, spacerem lub trafieniem.
Tzn. Niepoprawny ciąg znaków ma albo
- dodatkowe boiska po 4. piłce, 3. uderzeniu lub trafieniu
- zakończone przed wygenerowaniem czwartej piłki, trzeciego strajku lub trafienia.
Zasady
- Twój program musi być w stanie wygenerować wszystkie możliwe wyniki dla danych wejściowych.
- Twój program nie musi być jednakowo losowy, ale nadal musi być zgodny z poprzednią regułą.
- To jest golf golfowy .
Przykłady
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
S