スペースを除く印刷可能なASCII文字の空でない単一行の文字列を取り込むプログラムまたは関数を記述します。
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
入力が有効であると想定できます。
入力に基づいて、スペースとテキストのグリッド上に配置された新しい文字列を、亀のグラフィックに沿って描画します-亀は常に1つのグリッドスペースを占有し、基本方向のみに面することができる規則です。
入力文字列の最初の文字をテキストグリッドに出力します。カメは右を向いてここから始まります。入力文字列の残りの文字を繰り返し処理します(カメが動けなくなった場合のみ停止します)。このプロセスを繰り返します。
カメに直接隣接する4つのグリッドスペースがすべて満たされている場合(つまり、どれもスペースではない場合)、反復を停止します。カメが立ち往生しており、グリッドは可能な限り完全です。
前の文字と比較して、入力内の現在の文字を見てください。
現在のキャラクターが前のキャラクターよりも字句的に前にある場合、タートルを左に1/4回転させます。
現在のキャラクターが前のキャラクターよりも字句的に後であれば、タートルを右に1/4回転させます。
現在のキャラクターが前のキャラクターと等しい場合、タートルを回転させないでください。
カメが現在直面しているグリッド空間が空ではない場合(つまり、スペースではない場合)、空のグリッド空間に直面するまで、タートルを左に1/4回転させます。
亀を彼女が向いている方向に1グリッド先に移動し、亀の新しい場所のグリッドに現在のキャラクターを印刷します。
余計な行や列の空白なしで、結果のテキストグリッド文字列を印刷または返します。行には、右端の列までの間にスペースを含まない末尾スペースがありますが、それを超えてはなりません。単一の末尾の改行はオプションで許可されます。
バイト単位の最短コードが優先されます。
例
ここに入力のすべてのステップがあります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
、ルールの非対称性を強調するために対比されるので、テストケースを追加する必要があると思います。