공백을 제외하고 인쇄 할 수없는 ASCII 문자 로 구성된 비어 있지 않은 한 줄 문자열을 취하는 프로그램이나 함수를 작성하십시오 .
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
입력이 유효하다고 가정 할 수 있습니다.
입력을 기반으로 거북이가 항상 하나의 격자 공간을 차지하고 기본 방향을 향할 수있는 규칙 과 같은 거북이 그래픽 에 따라 텍스트 공간과 줄 바꿈에 배치 된 새 문자열을 그립니다 .
입력 문자열의 첫 번째 문자를 텍스트 격자에 인쇄하십시오. 거북이가 오른쪽을 향하여 여기에서 시작됩니다. 입력 문자열의 나머지 문자를 반복하고 (거북이 막힌 경우에만 중지)이 프로세스를 반복하십시오.
거북이에 직접 인접한 4 개의 그리드 공간이 모두 채워지면 (즉, 공간이없는 공간) 반복을 중지합니다. 거북이가 붙어 있고 그리드는 가능한 한 완벽합니다.
입력에서 현재 문자를 이전 문자와 비교하십시오.
현재 문자가 이전 문자보다 어휘 적으로 앞면 거북이를 1/4 바퀴 왼쪽으로 돌립니다.
이전 문자 다음에 현재 문자가 어휘 적으로 나오는 경우 거북이를 1/4 회전 오른쪽으로 돌립니다.
현재 문자가 이전 문자와 같으면 거북이를 회전시키지 마십시오.
거북이가 지금보고있는 격자 공간이 비어 있지 않은 경우 (즉, 공백이 아님), 거북이가 빈 격자 공간을 향할 때까지 거북이를 왼쪽으로 1/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
규칙의 비대칭 성을 강조하기 위해 대조되므로 테스트 사례를 추가해야한다고 생각합니다 .