MATLAB, 264 262 161 바이트
이것은 기본적으로 힐버트 커브의 "유도"를 계산 한 다음 "cumsum"을 통해 "통합"한다는 점을 제외하고는 여전히 거의 동일하게 작동합니다. 이것은 꽤 많은 바이트로 코드 크기를 줄입니다.
function c;plot(cumsum([0,h(1,1+i,4)]));axis equal;end function v=h(f,d,l);v=d*[i*f,1,-i*f];if l;l=l-1;D=i*d*f;w=h(f,d,l);x=h(-f,D,l);v=[x,D,w,d,w,-D,-x];end;end
구 버전
이것은 단순한 재귀 접근 방식입니다. 단순성을 위해 벡터 정보를 저장하기 위해 복소수를 사용했습니다. 파트에서 커브를 변경할 수 있습니다 h(0,1,1+i,4)
. 첫 번째 인수 p=0
는 초기 위치이고 두 번째 인수 f
는 방향 ( +1
또는 -1
)에 대한 플래그 이며, 세 번째 인수 d
는 곡선을 그려야하는 방향 / 회전이며 네 번째 인수 는 l
재귀 깊이입니다.
function c;hold on;h(0,1,1+i,4);axis equal;end function p=h(p,f,d,l);q=@plot;if l;l=l-1;d=i*d*f;p=h(p,-f,d,l);q(p+[0,d]);p=p+d;d=-i*d*f;p=h(p,f,d,l);q(p+[0,d]);p=p+d;p=h(p,f,d,l);d=-i*d*f;q(p+[0,d]);p=p+d;p=h(p,-f,d,l);else;q(p + d*[0,i*f,1+i*f,1]);p=p+d;end;end
이전 버전에서는 다음과 같습니다.
이것은 2015b에서 보이는 모습입니다.
->