あなたは80文字幅の端末内に住んでいます。あなたは退屈しているので、ドミノをプレイすることにします。いいえ、Scrabbleのように見える退屈な種類ではなく、1時間をかけてそれらを見るためにそれらを設定する楽しい種類です。
ターミナルでは、ドミノは次のようになります。
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
ご存知のように、傾斜したドミノが直立したドミノに触れると、2番目のドミノも傾斜します。唯一の例外は、2つの傾斜したドミノがそれに触れる場合です。
|\ --> \\ /| --> // /|\ --> /|\
この遷移に100ミリ秒かかるように、端末の重力定数を調整します。
傾斜したドミノが別のドミノまたはターミナルの壁に支えられている場合、その旅は終了します。
傾斜ドミノはありません
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
(80文字)が移動します。これは、最も外側に傾いた2つのドミノがターミナルの壁でサポートされ、他のすべてが他のドミノでサポートされているためです。
ただし、傾斜方向のスペースが空の場合、ドミノは落下します。
| \\ --> |__\ // | --> /__|
ターミナル。重力定数。あなたはポイントを得る...
最後に、左からわずかな風が吹いているので、右に傾いたドミノは左に傾いたドミノよりも速く落下します。
|/ \| --> |__\|
仕事
ターミナルでドミノをプレイするアニメーションを表示するプログラム/関数を作成します。
コードは次のことを行う必要があります。
入力から文字列を読み取り、ドミノの初期状態を表します。
この文字列は80文字以下で、上記のドミノと空のスペースのみで構成されます。
状態を印刷し、100ミリ秒待機します。
上記で説明したように状態を変換します。
状態が変更された場合は、2に戻ります。
追加のルール
入力文字列の長さは、端末の幅には影響しません。文字列が80文字より短い場合でも、端末の壁は80文字離れています。
ステップ2が実行されるたびに、状態は同じ場所に印刷され、前の状態が上書きされます。
一部の言語では正確に 100ミリ秒待機することはできないため、50ミリ秒から1000ミリ秒までの間は自由に待機してください。
標準のコードゴルフ規則が適用されます。
例
初期状態
||\/||
以下を印刷します(重ねて):
||\/|| |\\//| \\\/// __\\//__
初期状態
/||||\
以下を印刷する
/||||\ //||\\ ///\\\
初期状態
/|||\
以下を印刷する
/|||\ //|\\
初期状態
|/ \|/ \|/ \|/ \|
次を印刷します。
|__\|__\|__\|__\|
初期状態(80文字)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
以下を印刷する
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
または/|
を試してみると、タイルが本来のように完全に落ちないことがわかります。