우리는 울람 나선에 대해 몇 가지 도전 을 했습니다 . 그러나 충분하지 않습니다.
이 도전에서 우리는 삼각형 Ulam 나선 (일반적인 사각형 Ulam 나선과 반대로)을 그릴 것입니다. 다음은 나선 모양의 스케치입니다.
우리가 알고 있듯이, Ulam 나선 은 모든 자연수를 바깥 쪽 나선으로 정렬 하고 소수만 표시합니다. 위의 스케치에서 검은 색 (소수점)으로 표시되는 숫자 만 표시됩니다.
도전
숫자 N 을 입력으로 받아들이고 해당 숫자까지 삼각형 Ulam 나선을 표시합니다.
- 입력은 stdin 또는 함수 인수 일 수 있습니다.
- 위 그림에서와 같이 나선은 양의 방향 (시계 반대 방향)으로 회전해야합니다.
- 위 그림의 120도 회전은 유효하며 입력에 따라 회전이 다를 수 있습니다. 그러나 허용되는 유일한 회전이 120도이므로 암시 적 삼각형의 가장 낮은면은 수평이어야합니다.
- 코드는 기본 데이터 유형으로 수행하는 중간 계산에서 허용되는 N 까지 이론적으로 (충분한 시간과 메모리가 제공됨) 실행되어야합니다 .
double
충분하다; 큰 정수 유형이 필요하지 않습니다. - 모든 내장 기능이 허용됩니다.
- 나는 내 자신의 대답을 받아들이지 않을 것입니다 (어쨌든 그것이 가장 짧을 것이라고 생각하지는 않습니다 ...).
출력 형식
다음 중 하나를 선택하십시오.
소수에 마커 (점, 원, 십자형, 원하는 것)가 있고 그래프 에 숫자가 아닌 그래프 는 표시하지 않습니다. 두 축의 스케일이 같을 필요는 없습니다. 즉, 내포 된 삼각형은 등변 일 필요는 없습니다. 축, 격자 선 및 축 레이블은 선택 사항입니다. 소수의 마커 만 필요합니다.
N = 12의 출력 예 는 다음과 같습니다 (위의 스케치와 비교). 두 번째 줄거리는 N = 10000에 해당하는 더 흥미로운 예 입니다.
- 위에서 알려진 이미지 형식 (예 : png, tiff, bmp) 으로 이미지 파일 을 생성하십시오.
같은 행에서 숫자 위치를 구분하기위한 공백과 함께 소수와 소수를위한 공백을 선택한 소수 자릿수를 사용하여 나선을 ASCII art 로 표시합니다 . 선행 또는 후행 공백 또는 줄 바꿈이 허용됩니다. 예를 들어, 문자로 사용 하는 N = 12의 경우
o
o · · · o · o · · · o · o
물론
o
소수 의 마크 만 실제로 표시됩니다. 기본·
이 아닌 at는 참조 용으로 여기에 표시됩니다.
승리 기준
실제 보상은 놀라운 패턴 코드 골프, 가장 짧은 코드 승리 를 직접 보는 것입니다 .