Project Eulerを始めましたという話を先日したのですが、
先日最初の50問を解き終わりました。
ようやくProject Eulerの最初の50問がすべて解けた。しかし、1問目は97万人が正解してるけど、50問目まですべて解いた人は6万人弱とかまで減るんだなぁ。 pic.twitter.com/18yXOvy5gX
— わみ (@i_whammy_) 2023年10月12日
自分のリポジトリの最初のコミットの日付から、おおよそ1ヶ月前くらいから始めたことがわかります。
節目っちゃ節目なので、後でふりかえれるように記録として残しておきます。
雑感
何だかんだ毎日続いてる
現在育児休業中(4ヶ月目)で、最近だと保育園探しなどの生活の諸々が慌ただしくなってきました。育児も慣れてきたものの、それなりに時間は必要になります。
そんな生活の中でも、毎日1問は必ず解ききる、というのは習慣として続いています。
ここまでの問題はそこまで難しくはないものが多かったのですが、新しい習慣が定着しつつあるのは純粋に嬉しいですね。
分からない時の見切りが早くなった
ごく初期は、どんな問題も多少の時間をかけてでも自力で解ききることを大事にしていました。
とはいえ、生活の諸々が慌ただしくなったことと、他にもやりたいことはたくさんあるのとで、見切りをつけるタイミングを以前より早くすることにしました。
今では分からない問題は、以下のリポジトリを参考にさせていただいて自分の手で解ききるようにしています。
コードを見て、なんとなくこうだなぁ、で止めるよりも、手を動かして、問題と解法を体感することは大事だなぁと思います。
Kotlinの標準ライブラリのありがたみを感じる
問題を解いていく中で、頻出する処理が出てきます。具体的には、ループ処理、条件分岐、コレクション操作、ソートなど。これらの処理の大部分は、Kotlinに標準ライブラリとして実装されています。例えば、コレクション操作であれば、map、reduce、fold、filter。条件分岐は定番のif/else以外にも、when、takeIfなど。
ただ問題を解くだけではなく、Kotlinの標準ライブラリと機能(特に拡張関数)を使って、KotlinのいうExpressivenessを少しずつ体現できるようになってきたような気がします。
後はDSL等を使って、Kotlinの提供する機能をもう少しフルに使っていきたいですね。
0! = 1と知った
0の階乗って1なんすね......初めて知った......
— わみ (@i_whammy_) 2023年10月8日
確かに0!(not equalではなく階乗)=1にしておかないと1!より先が成り立たなくなるのか
はい。
これから
続けられる限りは毎日解き続けて行こうと思います。問題の難易度はこれからどんどん上がっていくと思うので、今からとても楽しみです。
最近子の成長をひしひしと感じるので、負けないように、地道に地道にやっていきます。