TI-83+のマニュアルには、Sierpinski gaskets を「乱数を使う手法」で描くプログラムが掲載されています。
Sierpinski gasketsは「再帰図形」なので、再帰処理によって描く事が出来るのですが、TI-83+には再帰処理のメカがないため、乱数を使う手法を例示していたのでした。
HP50GでRPLを使うと、再帰処理のプログラムを作成できます。今回も懲りずにSysRPLで書いたプログラムを示します (もちろん、UserRPLでも書けます)。
ユーザーが使える「スタック」を用意する事で、BASICでも再帰処理のプログラムは書けると思います。Androidの「BASIC !」には、スタックのメカが用意されておりました。3DSのプチコンにもスタックのメカがあるそうです(藤堂様、多謝 !)から、再帰処理プログラムの作成は可能です、多分。
(こちゃこちゃしてしまい、当方、着手出来ず。申し訳ない。loadがガンガン上がって、頭から湯気が出ております ...)
!NO CODE
!RPL
::
'
::
{
LAM ax LAM ay LAM bx LAM by LAM cx LAM cy LAM d
} BIND
LAM d #0= ITE
::
LAM ax 80 LAM ay #- LAM bx 80 LAM by #- DRAWLINE#3
LAM ax 80 LAM ay #- LAM cx 80 LAM cy #- DRAWLINE#3
LAM bx 80 LAM by #- LAM cx 80 LAM cy #- DRAWLINE#3
;
::
LAM ax LAM ay
LAM ax LAM bx #+ #2/ LAM ay LAM by #+ #2/
LAM ax LAM cx #+ #2/ LAM ay LAM cy #+ #2/
LAM d #1- LAM sier EVAL
LAM ax LAM bx #+ #2/ LAM ay LAM by #+ #2/
LAM bx LAM by
LAM bx LAM cx #+ #2/ LAM by LAM cy #+ #2/
LAM d #1- LAM sier EVAL
LAM ax LAM cx #+ #2/ LAM ay LAM cy #+ #2/
LAM bx LAM cx #+ #2/ LAM by LAM cy #+ #2/
LAM cx LAM cy
LAM d #1- LAM sier EVAL
;
ABND
;
{ LAM sier } BIND
CLEARLCD
TURNMENUOFF
80 131 MAKEGROB
GROB>GDISP
TOGDISP
65 80 25 1 105 1 4
LAM sier EVAL
SetDAsTemp
ABND
;
@
0 件のコメント:
コメントを投稿