system)は形式文法の一種で、植物の成長プロセスを初めとした様々な自然物の構造を記述・表現できるアルゴリズムである。IFS)のようないわゆる自己相似図形やフラクタル図形を生成する場合にも用いられる。https://ja.wikipedia.org/wiki/L-systemつまりは、再帰曲線を描く言語ですね。例としてまず「コッホ曲線」を描いてみましょう。前に一定の長さ進むコマンドを「F」とします。開始手続きも「F」としましょう。これだけでと直線が一本引かれます。つぎに、再帰的な「置き換え」の規則を定めます。それを「F→F-F++F-F」とします。これは開始手続きの「F」を「F-F++F-F」で置き換えるということになります。「-」は左60度、「+」は右60度の回転とします。よって、新たな手続きも「F-F++F-F」となります。これを図示するととなります。置き換えを続けましょう。すると「F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F」となります(ややこしいですね)。一度置き換えてみます。今度は「F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F-F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F」ですよ。再帰的な「コッホ曲線」が描けています。これはこんなコードで描けます。インストールして下さい。置き換えの規則の指定です。3回施したものを描画します。コマンド「-」が何をするのか、ブロック内に記述します。左60度回転ということですね。タートルグラフィックスの機能を使っているので、そのメソッドを書きます。(0.0.3)などを参考にして下さい。使用したすべてのコマンドについて設定して下さい。何もしない場合でも空のブロックが必要です。変換規則が指定されていないコマンドは、そのまま持ち越されます。置き換えるコマンドを二種類以上にすることもできます。置き換えの規則は「A→A+B+」「B→-A-B」と二種類になっています。これを実行するととなります。いわゆる「ドラゴン曲線」ですね。他のメソッドも簡単に説明しておきましょう。ペンの開始位置を指定します。これはキャンバスの中心です。y方向は上がプラスの向きです。ブロック内で初期処理をします。背景色や色の指定をすることが多いです。指定することになります(あとで説明します)。コマンド「[」「]」でスタックのプッシュ、ポップを表します。元の状態に復帰します。"F[+F-F-F]F[--F+F+F]")l.draw(4)こんな風です。開始時の方向をベクトルで指定しています。)になるようにして下さい。この結果はとなります。回の繰り返しになります。ブロックはクロージャなので、変数を使ったサンプル。「ヒルベルト曲線」の色を描画しながら替えていきます。"+AF-BFB-FA+")l.draw(5)結果。