- 809 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 10:43:56 ID:1EbHilyf0]
- ブロックリストincrement
( $TST(num=([0-9]++)\09) $SET(num=\0) $SET(num2=0$GET(num2)) $LST(increment) | $TST(num=([0-9]++)\0$LST(num+1)) $SET(num=\0\@$GET(num2)) 動作を検証してみる。 再帰的なブロックリストincrementを構成。 まずは初期値としてnumに19を代入してみる。 テストをしてnumの下一桁が9の場合には下一桁以外の数字をnum変数にリセットするのでnum変数が1になる。 と同時にnum2変数に0がセットされる。 そして最後に$LST(increment)が繰り返される。 最初に戻って、テストをしてnumの下一桁が9であるかを調べるが、この時点でnum変数は1なのでTSTの結果は偽。 よってOR関数の後者に移動する。 まずテストをしてnumの下一桁を$LST(num+1)で取り出し一つ大きな値をスタックに代入する。 ここではスタックに2が代入される。 次にnumの下一桁以外+スタックに入っている一桁の数字+今までにnum2に入った数字が代入される。 ここで最初の値は空値であり、次の値は2であり、最後の値は0である。 以上から初期値19に対して1だけ大きい20がセットされる。 こんなブロックリストが実際に動くかはまだ検証していません。 時間がある人が居れば試してみてください。
|

|