数値関数の再利用

1つの数値関数を用意し, それによりパーツを作るのが基本です.
数値関数の引数を調整することで, 複数種類のパーツを作ることも可能ですね.
例えば

a(X,T):XXa(sX,T-1)XX

という関数を用意した場合,

などとしてパーツが作れますね. このように, 1つの数値関数を複数の場所で使おうとするのは重要です.

このように, 再利用の基本は複数のパーツ作成での両立です.
それに加えて重要なのが, パーツを増やす際の利用です.

例えば上の数値関数ではa(-,1)とすると4倍関数が作れるので,

a(X,T):XXa(sX,T-1)XX
a(a(,3)a(,9)r,1)

のように4倍に増やすことが可能になります.


しかし, この考え方だとa(,1)が綺麗なN倍関数になっていないとパーツを増やしにくいですね.
他の例も見てみましょう.

a(X,T):a(sX,T-1)XX
b:a(,6)ra(r,6)b
b
[19B]

「たくさん直進して正方形を描き, 正方形の中央に移動する」というのを無限ループで増やしています.
これを, 一気に圧縮することができます:

a(X,T):a(sX,T-1)XX
a(ra(r,6),100)
[16B]

sが多量についた上で繰り返されますね. 場合によっては壁に向けて多量にsを付け加えることもありますが,
「十分多量の成長をした前提での繰り返し」を作るのは, かなり多くの数値関数でできます.
この再利用が上手く決まると, 多くの場合, 他の書き方に比べて非常に高い圧縮率を実現できます!

上手く使いこなすのはなかなか難しいですが,
数値でパーツを作り繰り返す場合には, とにかくこの再利用が出来ないか検討する癖をつけると,
だんだんと使えるようになってくるのではないでしょうか?


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS