1보다 큰 홀수 정수 N에 대해 N 문자 너비 N 높이의 텍스트의 정사각형 블록을 고려하십시오.
예를 들어 N = 5이고 텍스트는 다음과 같습니다.
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
왼쪽 하단에서 시계 반대 방향으로 나선형으로 표시된 알파벳 (Z 제외)입니다. 그것은 롤업 카펫과 같습니다.
텍스트를 시계 방향으로 1/4만큼 "압축 해제"하면 FGHI
다음과 같은 수준이됩니다 ABCDE
.
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
이 언 롤링은 텍스트가 한 줄이 될 때까지 7 번 더 수행 할 수 있습니다.
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
도전
문제는 언 롤링 패턴으로 재 배열되어 실행될 때 1/4 회전만큼 "언 롤링"된 횟수를 출력하는 N × N 텍스트 블록 인 프로그램을 작성하는 것입니다.
여기에는 실제로 두 가지 콘테스트가 있습니다. (아마도 너무 지저분하지 않습니다)
- 가장 작은 N을 사용 하여이 작업을 수행하십시오 (N = 3의 한계까지)
- 가장 큰 N으로이 작업을 수행하십시오 (제한 없음).
허용되는 답변은 없지만 각 범주의 승자는 최소 50 개의 현상금 담당자를받습니다. 동맹의 경우 가장 오래된 답변이 이깁니다.
예
코드 블록이
MyP
rog
ram
그대로 실행하면 0이 출력됩니다.
달리는
rM
oy
ramgP
1을 출력해야합니다.
달리는
or
ramgPyM
2를 출력해야합니다.
달리는
o
ramgPyMr
출력해야합니다 3.
마지막으로 running ramgPyMro
은 4를 출력해야합니다.
세부
- 출력은 자체적으로 stdout (또는 가장 가까운 대안)으로 인쇄되어야합니다. 입력이 없습니다.
- 코드 에는 인쇄 가능한 ASCII (공백이 포함 된 16 진 코드 20-7E) 만 사용할 수 있습니다 .
- 공간은 언 롤링 배열에서 빈 공간을 채 웁니다. (왼쪽으로 풀지 않는 한)
- 완전히 정사각형에서 완전히 평평한 배열에만 유효한 출력이 필요합니다. 다른 준비는 진행되지 않습니다.
- 당신은 당신의 자신의 소스를 읽을 수 없습니다.
- 당신은 의견을 사용할 수 있습니다.
- 많은 언어에서 프로그램
0
이 작동 하므로 N = 1은 제외됩니다 . 원하는 경우 오른쪽이 아닌 왼쪽으로 굴릴 수 있습니다. 예를 들어
MyP rog ram
된다
Pg yo Mrram
등등. 이 방법으로 굴릴 때 추가 공간이 추가되지 않습니다. 줄 끝
(관련 : 회전 횟수를 출력하는 직사각형 프로그램 작성 )