Mieszkasz w terminalu o szerokości 80 znaków. Jesteś znudzony, więc decydujesz się na grę w domino. Nie, nie nudny rodzaj, który wygląda jak Scrabble, zabawny rodzaj, w którym spędzasz godzinę, ustawiając je, aby patrzyły, jak upadają w sekundę.
Domina w terminalach wyglądają tak:
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
Jak wszyscy wiemy, jeśli przechylone domino dotknie pionowego, drugie domino również zostanie przechylone. Jedynym wyjątkiem jest sytuacja, gdy dotkną go dwa przechylone domino:
|\ --> \\ /| --> // /|\ --> /|\
Dostosuj stałą grawitacyjną terminala, aby przejście to trwało 100 ms.
Jeśli przechylone domino jest obsługiwane przez inne domino lub ściany terminala, jego podróż się kończy.
Żadne z przechylonych domino w
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
Przesuną się (80 znaków), ponieważ dwa skrajnie nachylone domino są obsługiwane przez ściany terminala, a wszystkie inne są obsługiwane przez inne domino.
Jeśli jednak przestrzeń w kierunku przechylania jest pusta, domino spada:
| \\ --> |__\ // | --> /__|
Terminal. Stała grawitacyjna. Dostajesz punkt…
Wreszcie, po lewej stronie jest lekki wiatr, więc domina przechylone w prawo spadają szybciej niż domina pochylone:
|/ \| --> |__\|
Zadanie
Napisz program / funkcję, która pokazuje animację gry w domino w terminalu.
Twój kod powinien wykonać następujące czynności:
Odczytaj ciąg wejściowy reprezentujący początkowy stan domina.
Ciąg ten będzie zawierał nie więcej niż 80 znaków i będzie składał się wyłącznie z domino opisanych powyżej i pustych spacji.
Wydrukuj stan i poczekaj 100 ms.
Przekształć stan, jak wyjaśniono powyżej.
Jeśli stan się zmienił, wróć do 2.
Dodatkowe zasady
Długość ciągu wejściowego nie wpływa na szerokość terminala; nawet jeśli ciąg znaków jest krótszy niż 80 znaków, ściany terminala wciąż są od siebie oddalone o 80 znaków.
Za każdym razem, gdy wykonywany jest krok 2, stan powinien zostać wydrukowany w tej samej lokalizacji, zastępując poprzedni stan.
Ponieważ niektóre języki nie są w stanie czekać dokładnie 100 ms, możesz poczekać dowolną ilość między 50 a 1000 ms.
Obowiązują standardowe zasady gry w golfa .
Przykłady
Dla stanu początkowego
||\/||
wydrukuj następujące (jeden na drugim):
||\/|| |\\//| \\\/// __\\//__
Dla stanu początkowego
/||||\
wydrukuj następujące
/||||\ //||\\ ///\\\
Dla stanu początkowego
/|||\
wydrukuj następujące
/|||\ //|\\
Dla stanu początkowego
|/ \|/ \|/ \|/ \|
wydrukuj następujące:
|__\|__\|__\|__\|
Dla stanu początkowego (80 znaków)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
wydrukuj następujące
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
lub,/|
a zobaczysz, że kafelek nie spada całkowicie tak, jak powinien.