Sie wohnen in einem Terminal mit einer Breite von 80 Zeichen. Sie langweilen sich und entscheiden sich, Domino zu spielen. Nein, nicht die langweilige Art, die aussieht wie Scrabble, die lustige Art, in der Sie eine Stunde damit verbringen, sie einzustellen, um zu sehen, wie sie in einer Sekunde fallen.
In Terminals sehen Dominosteine folgendermaßen aus:
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
Wie wir alle wissen, wird, wenn ein geneigter Domino einen aufrechten berührt, auch der zweite Domino geneigt. Die einzige Ausnahme ist, wenn zwei geneigte Dominosteine es berühren:
|\ --> \\ /| --> // /|\ --> /|\
Passen Sie die Gravitationskonstante Ihres Terminals so an, dass dieser Übergang 100 ms dauert.
Wenn ein geneigter Domino von einem anderen Domino oder den Wänden des Terminals gestützt wird, endet seine Reise.
Keiner der gekippten Dominosteine
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
(80 Zeichen) werden verschoben, da die beiden äußersten geneigten Dominosteine von den Wänden des Terminals und alle anderen von anderen Dominosteinen unterstützt werden.
Wenn jedoch der Raum in der Kipprichtung leer ist, fällt der Domino herunter:
| \\ --> |__\ // | --> /__|
Terminal. Gravitationskonstante. Sie verstehen, worum es geht ...
Schließlich gibt es einen leichten Wind von links, so dass nach rechts geneigte Dominosteine schneller fallen als nach links geneigte:
|/ \| --> |__\|
Aufgabe
Schreiben Sie ein Programm / eine Funktion, die eine Animation zum Spielen von Dominosteinen in einem Terminal zeigt.
Ihr Code sollte Folgendes tun:
Liest eine Zeichenfolge aus der Eingabe, die den Anfangszustand der Dominosteine darstellt.
Diese Zeichenfolge enthält nicht mehr als 80 Zeichen und besteht ausschließlich aus den oben beschriebenen Dominosteinen und leeren Leerzeichen.
Drucken Sie den Status und warten Sie 100 ms.
Transformiere den Zustand wie oben beschrieben.
Wenn sich der Status geändert hat, kehren Sie zu 2 zurück.
Zusätzliche Regeln
Die Länge der Eingabezeichenfolge wirkt sich nicht auf die Breite des Terminals aus. Auch wenn die Zeichenfolge kürzer als 80 Zeichen ist, sind die Wände des Terminals immer noch 80 Zeichen voneinander entfernt.
Bei jeder Ausführung von Schritt 2 sollte der Status an derselben Stelle gedruckt werden und den vorherigen Status überschreiben.
Da einige Sprachen nicht in der Lage sind, genau 100 ms zu warten, können Sie zwischen 50 und 1000 ms warten.
Es gelten die Standardregeln für Code-Golf .
Beispiele
Für den Ausgangszustand
||\/||
drucke folgendes (übereinander):
||\/|| |\\//| \\\/// __\\//__
Für den Ausgangszustand
/||||\
Drucken Sie Folgendes aus
/||||\ //||\\ ///\\\
Für den Ausgangszustand
/|||\
Drucken Sie Folgendes aus
/|||\ //|\\
Für den Ausgangszustand
|/ \|/ \|/ \|/ \|
drucke folgendes aus:
|__\|__\|__\|__\|
Für den Ausgangszustand (80 Zeichen)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
Drucken Sie Folgendes aus
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
oder/|
und Sie werden sehen, dass die Kacheln nicht so fallen, wie sie sollten.