Lisp系方言である Racket をやってみることにしました
こんにちわ。Daizo です。Lisper になりたい私は、Gauche を使っていたのですが、頭では分かっていましたが、やっぱり、処理速度が遅いね。頭では遅いと分かっていたつもりでしたが、実際はそれよりも遅かったです。別に、何億回ものループを回りたわけではないのですが、問題が、abcdef = a^5 + b^5 + c^5 + d^5 + e^5 + F^5となる、a,b,c,d,e,f を求める問題です。簡単な実験の結果、7桁以上は、どれだけ足しても、abcdef よりも桁違いに大きくなるので、検索から省いて、検索させたのですが、7秒近くかかりました。どうも、abcdef の数字を作るのに、文字として並べて、数字に変換していたのが悪いようで、最初から数字として、a*100,000 + b*10,000 + c*1,000 + d*100 + e*10 + fと、この計算式で数字を作れば、ほぼ一瞬で終わりました。この程度で、ここまで遅いとは・・・そこで、他の Lisp 系の言語を探していたら、Racket という言語を、Gemini から、教えてもらいました。裏では、前回止めた、Chez Scheme が動いているそうですが、素数探索とか、素因数分解とか、数学的なライブラリが豊富に有るらしい。また、さっきもいったけど、裏でChez Scheme が動いているので、処理が高速で終わるらしい。本当なのか、Gemini の力を借りて、さっきの7秒近くかかった処理を Racket に変換してもらって、実行してみた。内容は全く変わってないんだけど、1秒ちょっとで終わった。Racketは、Gauche に比べて、処理速度は速いみたいだね。私は、Lisper になるに当たり、Project Euler.net の問題を Lisp で解いて、使い方を覚えようとしてるんだけど、今後のことを考えると、探索範囲が広くなることが多いので、Gauche では処理しきれないらしい。なので、Gemini の教えに従って、Racket をやっていこうと思う。