雑に描いた餅

餅は餅屋、わたしは技術屋、と言いたかった。

Project Eulerを始めて1ヶ月が経ち50問解き終わった話

Project Eulerを始めましたという話を先日したのですが、

i-whammy.hatenablog.com

先日最初の50問を解き終わりました。

自分のリポジトリの最初のコミットの日付から、おおよそ1ヶ月前くらいから始めたことがわかります。

github.com

節目っちゃ節目なので、後でふりかえれるように記録として残しておきます。

雑感

何だかんだ毎日続いてる

現在育児休業中(4ヶ月目)で、最近だと保育園探しなどの生活の諸々が慌ただしくなってきました。育児も慣れてきたものの、それなりに時間は必要になります。

そんな生活の中でも、毎日1問は必ず解ききる、というのは習慣として続いています。

ここまでの問題はそこまで難しくはないものが多かったのですが、新しい習慣が定着しつつあるのは純粋に嬉しいですね。

分からない時の見切りが早くなった

ごく初期は、どんな問題も多少の時間をかけてでも自力で解ききることを大事にしていました。

とはいえ、生活の諸々が慌ただしくなったことと、他にもやりたいことはたくさんあるのとで、見切りをつけるタイミングを以前より早くすることにしました。

今では分からない問題は、以下のリポジトリを参考にさせていただいて自分の手で解ききるようにしています。

github.com

コードを見て、なんとなくこうだなぁ、で止めるよりも、手を動かして、問題と解法を体感することは大事だなぁと思います。

Kotlinの標準ライブラリのありがたみを感じる

問題を解いていく中で、頻出する処理が出てきます。具体的には、ループ処理、条件分岐、コレクション操作、ソートなど。これらの処理の大部分は、Kotlinに標準ライブラリとして実装されています。例えば、コレクション操作であれば、map、reduce、fold、filter。条件分岐は定番のif/else以外にも、when、takeIfなど。

ただ問題を解くだけではなく、Kotlinの標準ライブラリと機能(特に拡張関数)を使って、KotlinのいうExpressivenessを少しずつ体現できるようになってきたような気がします。

後はDSL等を使って、Kotlinの提供する機能をもう少しフルに使っていきたいですね。

0! = 1と知った

はい。

これから

続けられる限りは毎日解き続けて行こうと思います。問題の難易度はこれからどんどん上がっていくと思うので、今からとても楽しみです。

最近子の成長をひしひしと感じるので、負けないように、地道に地道にやっていきます。