文字置換の応用 L-system
L-systemはフラクタルを応用した自動生成システムの一つ
function Lsys(O, P, n){
while (n--) O=O.replace(P.reg, function(m, $1){ return P[$1] });
return O;
}
// 藻類
WScript.echo(Lsys("A", {"A":"AB","B":"A","reg":/([AB])/g}, 4));
// フィボナッチ
WScript.echo(Lsys("A", {"A":"B","B":"AB","reg":/([AB])/g}, 7));
// カントール集合
WScript.echo(Lsys("A", {"A":"ABA","B":"BBB","reg":/([AB])/g}, 3));
// コッホ曲線
WScript.echo(Lsys("F", {"F":"F+F-F-F+F","reg":/(F)/g}, 3));
// シェルピンスキーの三角形
WScript.echo(Lsys("A", {"A":"B-A-B","B":"A+B+A","reg":/([AB])/g}, 8));
O:初期状態の文字列
P:書き換えルール
n:繰り返し回数
P.reg:置換する文字
L-systemの書き換え自体は2行の関数で済む
これに結果として出てきた文字列を描画する部分を追加すればL-systemが完成する
この記事が気に入ったらサポートをしてみませんか?