Вы живете внутри терминала шириной 80 символов. Вам скучно, поэтому вы решили играть в домино. Нет, не скучный вид, похожий на Скрэббл, забавный вид, где вы проводите час, заставляя их смотреть, как они падают за секунду.
В терминалах домино выглядит так:
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
Как мы все знаем, если наклонное домино касается вертикального, второе домино также наклоняется. Единственное исключение из этого, если два наклонных домино касаются этого:
|\ --> \\ /| --> // /|\ --> /|\
Настройте гравитационную постоянную вашего терминала так, чтобы этот переход занимал 100 мс.
Если наклонное домино поддерживается другим домино или стенами терминала, его путешествие заканчивается.
Ни одно из наклоненных домино в
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
(80 символов) будет двигаться, так как два самых наклонных домино поддерживаются стенами терминала, а все остальные поддерживаются другими домино.
Однако, если пространство в направлении наклона пусто, домино падает:
| \\ --> |__\ // | --> /__|
Терминал. Гравитационная постоянная. Вы понимаете, суть ...
Наконец, слева слегка дует ветер, поэтому домино с правым наклоном падают быстрее, чем левое:
|/ \| --> |__\|
задача
Напишите программу / функцию, которая показывает анимацию игры в домино в терминале.
Ваш код должен сделать следующее:
Прочитайте строку из ввода, представляющую начальное состояние домино.
Эта строка будет содержать не более 80 символов и состоит исключительно из описанных выше домино и пустых мест.
Напечатайте состояние и подождите 100 мс.
Измените состояние, как описано выше.
Если состояние изменилось, вернитесь к 2.
Дополнительные правила
Длина входной строки не влияет на ширину терминала; даже если строка короче 80 символов, стены терминала по-прежнему находятся на расстоянии 80 символов.
Каждый раз, когда выполняется шаг 2, состояние должно быть напечатано в том же месте, перезаписывая предыдущее состояние.
Поскольку некоторые языки не могут ждать ровно 100 мс, не стесняйтесь ждать любую сумму от 50 до 1000 мс.
Применяются стандартные правила игры в гольф .
Примеры
Для начального состояния
||\/||
напечатать следующее (одно поверх другого):
||\/|| |\\//| \\\/// __\\//__
Для начального состояния
/||||\
напечатать следующее
/||||\ //||\\ ///\\\
Для начального состояния
/|||\
напечатать следующее
/|||\ //|\\
Для начального состояния
|/ \|/ \|/ \|/ \|
распечатайте следующее:
|__\|__\|__\|__\|
Для начального состояния (80 символов)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
напечатать следующее
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
или,/|
и вы увидите, что плитка не падает полностью, как следует.