
教育用プログラミング言語「Pascal」の開発者、ニクラウス・ヴィルト氏によるプログラミング言語教科書「アルゴリズムとデータ構造」は、現代にも通じる入門書の元祖。ヴィルト氏が開発した言語「
Modula-2」で解説されています。

「アルゴリズムとデータ構造 by N.ヴィルト 著 / 浦空昭二・國府方久歴 共訳」
表紙のフラクタルな図形がかっこいいですね!

本文中「再帰的アルゴリズム」にて解説と参考プログラムがありました。

「ヒルベルト曲線アニメーション 1次〜8次 on ES-Jam」
1次から8次の曲線を消さずに描き重ねています。62行のclearを有効にすれば、各次数ごとのヒルベルト曲線を見ることができます。
教科書にに習って記述したヒルベルト曲線 in JavaScriptは下記の通り
const hilbert = (funcs, dirs, i) => {
if (i > 0) {
funcs[0](i - 1);
line(dirs[0], u);
funcs[1](i - 1);
line(dirs[1], u);
funcs[2](i - 1);
line(dirs[2], u);
funcs[3](i - 1);
}
};
const a = i => hilbert([d, a, a, b], [4, 6, 0], i);
const b = i => hilbert([c, b, b, a], [2, 0, 6], i);
const c = i => hilbert([b, c, c, d], [0, 2, 4], i);
const d = i => hilbert([a, d, d, c], [6, 4, 2], i);
角度を使えば、もっとシンプルに記述することもできそうです。表紙の曲線とちょっと違うので、そちらの再現も含めて今度は、新しい教育用プログラミング言語「Wirth」にも移植してみたいと思います。
フラクタル、初めて知ったのは、福井高専1年生の頃、ジュラシックパークの小説版!
links
- Pascalリスペクトの教育用構造化プログラミング言語「Wirth」