编写一个程序或函数,该程序或函数采用非空单行字符串,该字符串包含可打印的ascii字符(不包括空格):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
您可以假设输入有效。
根据输入,按照乌龟图形-像这样的规则,在乌龟始终占据一个栅格空间并且只能面对基本方向的情况下,在文本空间和换行符的文本网格上绘制新的字符串。
将输入字符串中的第一个字符打印到文本网格中。乌龟从这里开始朝右。遍历输入字符串中的其余字符(仅在乌龟被卡住时才停止),重复此过程:
如果与海龟直接相邻的4个网格空间都被填充了(即它们都不是一个空间),请停止迭代。乌龟被卡住,网格已尽可能完整。
查看输入中的当前字符与前一个字符的比较:
如果当前角色在词汇上比前一个更早,将乌龟向左旋转四分之一圈。
如果当前角色在词汇上在前一个之后,则将乌龟向右旋转四分之一圈。
如果当前角色与前一个角色相同,请不要旋转乌龟。
如果乌龟现在面对的网格空间不为空(即不是一个空间),请反复将乌龟向左旋转四分之一圈,直到乌龟面对一个空的网格空间。
将乌龟朝着她所面对的方向向前移动一个格,并在乌龟的新位置将当前角色打印在格上。
打印或返回结果文本网格字符串,没有多余的行或列的空白。行的行尾空格可以一直到最右边的列,且不能有空格,但不能超过。可选地允许单条尾随换行符。
以字节为单位的最短代码获胜。
例
这是输入的所有步骤spattuuxze
。所述^V<>
字符显示龟面对的方向,他们是不输入或输出的一部分。
s>
^
p
s
<ap
s
^
t
ap
s
^
t
t
ap
s
tu>
t
ap
s
tuu>
t
ap
s
tuu
t x
apV
s
tuu
<zx
ap
s
此时,乌龟被卡住了,所以e
永不打印,最终输出为:
tuu
tzx
ap
s
以下是类似但无效的输出,因为它具有不必要的空白前导列:
tuu
tzx
ap
s
测试用例
spattuuxze
tuu
tzx
ap
s
spattuuxxze
tuu
t x
apx
sze
1111111
1111111
ABCDEFGHIJKLMNOP
PEFG
ODAH
NCBI
MLKJ
`_^]\[ZYXWVUTSR
^_RS
\]`UT
[ZWV
YX
Woo!
W
o
o!
woo!
!o
o
w
Wheeee
W
heeee
banana
a
an
an
b
Turtle
T
ure
tl
turTle
e
tTl
ur
(如果其中任何一个看起来不对,请立即告诉我。)
PONMLKJIHGFEDCBA
,因为结果不只是一个正方形,而且与ABCDEFGHIJKLMNOP
进行对比以突出规则中的不对称性。