僕が鼻ほじってたら思いついた円周率計算プログラムです。 旗を押したら円周率が一瞬で計算されます。 中を見てください。多分ブロックの少なさと美しさに感動すると思います。簡単に説明すると、バネの伸縮運動的なものをシミュレーションして、そのときに発生する正弦波の周期を計算することで円周率を求めてます。精度という変数を変えると精度を変えることができます。
これ円周率計算プログラムの究極体だろ。 再帰処理使うと変数aとbをなくせるから、最初は再帰処理でやろうと思ってた。そっちのが美しいから。でも、再帰処理の重大な欠点を見つけてしまった。それはメモリを圧迫すること。再帰処理って、関数の中で関数が実行されて、その中でまた関数が実行されることのループなんだけど、100回目の関数が実行されてるときも、1番最初の関数の処理は終了してないことになるから、関数が実行されるごとに、その関数の引数がメモリに保存されて、100回目の関数が実行されてるときには、1から100回目までの引数が全部メモリに保存されてるから、どんどん重くなってっちゃうんだよね。100回ならまだ全然いいんだけど、このプログラムを再帰でやると、精度10000000で実行したときでも、20000000以上の引数がメモリに保存されちゃう。限界まで数値が入ってるリスト100個分に相当するんだよね。まあ、それでもまだまともに動いたんだけど、精度をその10倍にしたら、リスト1000個分になって、サイトがクラッシュしちゃったんだよね。ブラウザアプリって、メモリの消費量に制限があって、それを超えるとクラッシュ(サイト上で実行されている処理を強制終了すること。)するようになってるんよ。なんで制限されてるかっていうと、あんまりメモリが消費されると、OSの動作に支障が出ちゃうんよ。だから、どれだけ重いサイトを開いてても、ホームボタン押したらすぐホーム画面に戻れるし、ブラウザアプリの処理を終了できるようにもなってる。もしこの制限がなかったら、メモリが限界になって、OS自体も動かなくなって、強制再起動するしかなくなっちゃうんだよね。以上、キノコのつぶやきでした。眠いので寝ます。 おや...す......m.........zzzZZZ