정점의 수 n ≥ 3
와 “단계 크기” 1 ≤ m < n/2
(두 개의 연결된 정점 사이의 거리를 나타냄)가 주어지면 해당하는 일반 폴리그램 의 그래픽 표현이 출력 됩니다. 폴리그램이 여러 개의 닫힌 루프로 구성된 경우 각 루프는 다른 선 색상으로 렌더링되어야합니다. (이것이 혼란스러워 보인다면, 아래 예제는 잘 정리되어 있어야합니다.)
규칙
문제에 대한 합리적인 해결책은 이러한 규칙을 자동으로 충족시킬 수 있습니다. “이 검은 색 블록은 완전히 폴리그램이지만 다음과 같은 응답을 방지하기 위해 출력 매개 변수에 일부 제한을두기 만하면됩니다. 선 너비를 9000 이상으로 설정했습니다. “
- 폴리그램을 파일 (디스크 또는 표준 출력 스트림에 기록 될 수 있음)로 렌더링하거나 화면에 표시 할 수 있습니다.
- 벡터 또는 래스터 그래픽을 사용할 수 있습니다. 출력이 래스터 화 된 경우 이미지의 크기는 400×400 픽셀 이상이어야하며 폴리그램 반경 (중심에서 각 정점까지의 거리)은 측면 길이의 35 %에서 50 % 사이 여야합니다.
- 폴리그램의 종횡비는 1이어야합니다 (정점이 올바른 원에 놓 이도록). 이미지의 캔버스는 직사각형 일 수 있습니다.
- 폴리그램의 선은 반지름의 5 %보다 두껍지 않아야합니다 (물론, 0이 아닌 두께를 가져야합니다).
- 폴리그램 외에 축이나 프레임을 렌더링 할 수 있지만 다른 것은 없습니다.
- (단색) 배경색을 선택할 수 있습니다.
- 여러 개의 닫힌 루프로 구성된 폴리그램의 경우 시각적으로 다른 6 가지 이상의 색을 지원해야합니다.이 색은 모두 배경과 달라야합니다. (그레이가 스펙트럼을 통해 충분히 퍼져 있다면 그레이 스케일은 괜찮습니다.) 코드는 여전히 6 개 이상의 루프에서 작동해야하지만 추가 루프에서 색상을 구별 할 필요는 없습니다 (즉, 재사용 할 수도 있음) 그 시점에서 이전 루프의 색상).
이것은 코드 골프이므로 가장 짧은 대답 (바이트)이 이깁니다.
예
모든 출력은 다음과 같습니다 n = 16
(열이 해당 n
하고 행이에 해당 m
).
더 큰 예를 들면 n
다음 (n, m) = (29, 11)
과 (30, 12)
같습니다.
답변
MATLAB, 85 81
이 기능은 화면에 플롯을 표시합니다.
function f(n,m)
hold all
axis equal
for k=1:gcd(m,n)
plot(i.^(4*(k:m:n^2)/n))
end
답변
CJam, 114
"P2"N400:ASAN6N0aA*aA*q~:M;:K{:CK,f{M*+K%P*2*K/_[mc)\ms)]199f*}_+2ew{~1$.-Af/A,\ff*\f.+{:mo~_3$=@C6%)tt}/}/}/Sf*N*
이미지를 ASCII PGM 형식으로 출력합니다.
온라인으로 시도 할 수 있지만 출력이 꽤 깁니다. 이미지 크기를 줄이려면 더 작은 숫자로 변경 400
하고 변경할 수 있습니다 199
.
CJam에는 이미지, 그림, 선 또는 모양에 대한 개념이 없으므로 픽셀 단위로 정사각 행렬로 이미지를 생성했습니다 (하나의 숫자는 각 픽셀의 회색 음영을 나타냄).
결과는 다음과 같습니다 30 12
.