태그 보관물: geometry

geometry

일반 폴리그램 보인다면, 아래

정점의 수 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

n = 30, m = 12에 대한 결과 :
에프 (30,12)


답변

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.

폴리그램


답변

Mathematica, 70 바이트

ListPolarPlot[Table[{2Pi(i+j#2)/#,1},{i,GCD@##},{j,#+1}],Joined->1>0]&

글쎄 … 이것은 지금까지 두 제출물을 능가하는 참조 구현입니다. 나는 내 자신의 도전에 이길 의도가 없으므로 누군가 이길 수 있기를 바라고있다.

출력은 여기서 축을 제거하지 않는 것을 제외하고는 챌린지 자체의 플롯과 같습니다.

여기에 이미지 설명을 입력하십시오


답변