您住在一个80字符宽的终端中。您很无聊,所以决定玩多米诺骨牌。不,不是像Scrabble这样的无聊类型,它是一种有趣的类型,您花一个小时设置它们,以观察它们在一秒钟内掉落。
在终端中,多米诺骨牌如下所示:
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
众所周知,如果倾斜的多米诺骨牌碰到一个直立的多米诺骨牌,那么第二个多米诺骨牌也会倾斜。唯一的例外是两个倾斜的多米诺骨牌碰到它:
|\ --> \\ /| --> // /|\ --> /|\
调整终端的重力常数,使此转换过程需要100毫秒。
如果倾斜的多米诺骨牌是由另一个多米诺骨牌或航站楼的墙壁支撑的,则旅程结束。
没有倾斜的多米诺骨牌
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
(80个字符)将移动,因为两个最向外倾斜的多米诺骨牌由终端墙支撑,而所有其他倾斜的多米诺骨牌均由其他多米诺骨牌支撑。
但是,如果倾斜方向上的空间为空,则多米诺骨牌会掉落:
| \\ --> |__\ // | --> /__|
终奌站。引力常数。你明白了……
最终,左边有一点风,所以右倾斜的多米诺骨牌下降得比左倾斜的多米诺骨牌快:
|/ \| --> |__\|
任务
编写一个程序/函数,以显示在终端中播放多米诺骨牌的动画。
您的代码应执行以下操作:
从输入中读取一个字符串,该字符串表示多米诺骨牌的初始状态。
该字符串最多包含80个字符,并且仅由上述多米诺骨牌和空格组成。
打印状态并等待100毫秒。
如上所述,转换状态。
如果状态改变,请返回2。
附加规则
输入字符串的长度不影响终端的宽度;即使字符串少于80个字符,终端的墙壁仍然相隔80个字符。
每次执行步骤2时,都应将状态打印到同一位置,并覆盖先前的状态。
由于某些语言无法精确地等待100毫秒,因此请随时等待50到1000毫秒之间的任何时间。
适用标准代码高尔夫球规则。
例子
对于初始状态
||\/||
打印以下内容(一个在另一个上):
||\/|| |\\//| \\\/// __\\//__
对于初始状态
/||||\
打印以下
/||||\ //||\\ ///\\\
对于初始状态
/|||\
打印以下
/|||\ //|\\
对于初始状态
|/ \|/ \|/ \|/ \|
打印以下内容:
|__\|__\|__\|__\|
初始状态(80个字符)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
打印以下
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
或/|
,您将看到磁贴并未完全跌落。