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
は初期位置、2番目の引数f
は方向(+1
または-1
)のフラグ、3番目の引数d
は曲線を描画する方向/回転、4番目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では次のようになります。
->