Цель
Напишите программу или функцию, которая принимает положительное целое число n
и случайным образом генерирует допустимый ряд шагов (далее называемый строкой высоты звука) длины n
.
вход
Ненулевое, положительное целое число n
<= 100
Выход
Возвращает случайную строку или список символов, которые представляют возможную, допустимую строку основного тона длины n
. Используемые символы будут:
- Б - мяч. Если вы накопите 4 из них, жидкое тесто пройдено и закончено ватин.
- S - Страйк. Если вы накопите 3 из них, жидкое тесто закончится и закончите ватин.
- F - Фол. Также увеличит количество ударов, но не сможет вытащить тесто. То есть, вы не можете иметь Фол, чтобы быть последним шагом в допустимой строке. Любые фолы после двух ударов / фолов не будут увеличивать количество ударов (у бьющего уже есть 2 удара в этот момент, и 3-й получит его).
- H - Хит. Бьющий выбил мяч в игру и закончил бить.
(Это немного упрощено, но не беспокойтесь об этом)
Допустимые строки высоты тона - те, которые заканчиваются зачеркнутым, прогулкой или ударом.
Т.е. неверная строка основного тона имеет
- дополнительные шаги после 4-го шара, 3-го удара или удара
- прекращается до создания 4-го шара, 3-го удара или удара.
правила
- Ваша программа должна быть в состоянии произвести все возможные результаты для данного входа.
- Ваша программа не обязательно должна быть случайной, но все же должна следовать предыдущему правилу.
- Это код-гольф .
Примеры
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
- удар