정말 (지루있을 때 가끔, 정말 지루), I는 선분을 그리고 그 위에 점을 그리는 것을 좋아합니다.
먼저, 특정 크기의 선분을 그립니다. N의 값은 2 ^ N입니다. 선은 일련의 .
문자 로 표시됩니다 .
................
그런 다음 왼쪽 끝에 점을 그립니다. 포인트는 X
문자 로 표시됩니다 .
X...............
그런 다음 패턴을 따릅니다. 가장 최근에 플롯 된 지점 (A라고 부름)에서 시작하여 라인에서 다음 플롯 지점 (B)으로 이동합니다 (필요에 따라 줄 바꿈). 그런 다음 선 (C) 에서 다음 플롯 포인트로 이동합니다. 그런 다음이 세 번째 점 (C)과 다음에 이미 표시된 점 (D) 사이의 중간에 새 점을 플로팅합니다.
줄을 감쌀 때마다 "중간"이 줄 바꿈 방식으로 결정됩니다. 새로 그려진 점은 항상 C의 오른쪽에 있습니다.
다음 줄이 현재 줄이라고 가정 해 봅시다. 다음 두 점을 그리는 방법은 다음과 같습니다. 이 예에서는 각 중요한 점에 문자를 표시합니다.
X...A...X.X...X.
^
X...A...B.X...X.
^
X...A...B.C...X.
^
X...A...B.C...D.
^
X...X...X.X.A.X.
^
X...X...X.X.A.B.
^
C...X...X.X.A.B.
^
C...D...X.X.A.B.
^
X.A.X...X.X.X.X.
^
이전 예제로 돌아 가면 다음 점이 선의 중간에 그려집니다.
X.......X.......
이것은 아마도 특별한 경우 일 것입니다. 다음 단계로 넘어 가면 시작한 곳을 떠나게됩니다. 유일하게 유용한 중간 지점은 "순환"중간 지점 (선의 중간 지점)이며 그 위에 점을 플로팅하는 것과는 반대입니다.
아래는 여기서 끝까지 선에 그리는 일련의 점입니다.
X.......X.......
X.......X...X...
X.......X.X.X...
X...X...X.X.X...
X...X...X.XXX...
X.X.X...X.XXX...
X.X.X...XXXXX...
인접한 두 점 사이에 끼워 져야하므로 다음 점을 그릴 공간이 더 이상 없으므로 주어진 값 N = 4의 최대 깊이에 도달했습니다. 위 목록의 마지막 줄은 "완료"입니다. "
도전
목표는 주어진 N 값에 대해 완성 된 줄을 인쇄 / 반환하는 가장 짧은 프로그램 / 명명 된 함수를 작성하는 것입니다. 위의 내용은 N = 4입니다.
입력
입력은 음이 아닌 단일 정수 N이됩니다. 생성 된 라인의 길이는 2 ^ N입니다.
산출
출력에 의해 형성된 길이 ^ N (2)의 완성 라인 것 .
및 X
캐릭터. 후행 줄 바꿈은 중요하지 않습니다.
예제 I / O
0
X
1
XX
2
X.XX
3
X.X.XXX.
4
X.X.X...XXXXX...
5
X.X.X...X...X...X.XXX.XXX.......
(c%b+b)%b
? 당신은c
부정적인 것으로 기대하고 있습니까?