이 과제의 목적은 평면에서의 보행을 그래픽으로 묘사하는 것입니다. 각 단계 의 방향 은 우선 성과 이진 확장의 패리티에 의해 결정됩니다 . 구체적으로
- 초기 방향은 고정되어 있습니다 (예 : 북쪽).
- 모든 단계의 길이 는 같습니다 .
- 단계 k 의 방향 은 북쪽, 서쪽, 남쪽 또는 동쪽 일 수 있으며 다음과 같이 결정됩니다.
- 가 소수가 아닌 경우 방향이 변경되지 않습니다.
- 경우 소수와의 바이너리 확장 사람의 짝수 번호가 우회전.
- 경우 소수와의 바이너리 확장 사람의 홀수 번호가, 좌회전합니다.
A와 가공 한 예를 들어 , 초기 방향이 북한이라고 가정합니다. 첫 단계는 다음과 같습니다.
- 은 소수가 아닙니다. 따라서 현재 방향 인 북쪽으로 한 단계 이동합니다.
- 는 소수이고 이진 확장
10
은이며 홀수입니다. 그래서 우리는 좌회전하여 이제 서쪽을 향하고 있습니다. 우리는 그 방향으로 한 걸음 움직입니다. - 은 소수이고 이진 확장
11
은이며 짝수입니다. 우린 우회전하고 이제 북쪽을 향하고 있습니다 우리는 그 방향으로 한 걸음 움직입니다. - 는 소수가 아닙니다. 따라서 현재 방향 인 북쪽으로 한 단계 이동합니다.
도전
입력 : 양의 정수 .
출력 : 위에서 정의 된 스텝 보행 플롯 .
추가 규칙
- 초기 방향을 자유롭게 (반드시 노스) 선택 될 수 있지만, 모두 동일해야 .
- 선회 규칙 오른쪽 홀수 패리티 설정과 심지어 방치이라고 상술과 반대 일 수있다; 그러나 모든 대해 동일해야합니다 .
- 출력은 보행을 그래픽으로 보여야 합니다. 예를 들어 :
- 선분으로 보행을 그릴 수 있습니다.
- 방문 지점은 점과 같은 마커로 표시 될 수 있습니다. 선 세그먼트 연결 유무에 관계없이.
- 방문한 지점에 해당하는 색상과 방문하지 않은 다른 색상으로 2 색 래스터 이미지를 제공 할 수 있습니다.
- 가로 축과 세로 축의 축척이 같을 필요는 없습니다. 또한 축 레이블 및 유사한 요소는 선택 사항입니다. 보행을 명확하게 볼 수있는 한 음모가 유효합니다.
- 일부 포인트는 두 번 이상 방문합니다. 줄거리는 이것에 민감하지 않습니다. 예를 들어, 선분이 플롯에 표시되면 각 단위 선분은 횡단 횟수에 관계없이 동일하게 표시됩니다.
- 코드는
N
주어진 무제한 리소스에 대해 작동해야 합니다. 실제로N
시간, 메모리 또는 데이터 유형 제한으로 인해 실제로 실패하면 허용됩니다 . - 입력과 출력은 평소처럼 유연합니다. 특히, 이미지를 출력하기위한 임의의 표준 수단 이 사용될 수있다.
- 바이트 단위의 가장 짧은 코드가 이깁니다.
테스트 사례
다음 그림은 북쪽을 초기 방향으로 사용합니다. 심지어 패리티조차도 바뀝니다. 그리고 보행은 선분으로 표시됩니다.
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
허용 되는 이유 가 있습니까? 현재 삭제 된 숯불 답변과 같이 ASCII 출력이 허용되지 않는 이유는 무엇입니까?