けど、ここ最近あまり意義を感じていないことに気がついたので、キリ番になった記念にやめることにした。
キリ番げっとした pic.twitter.com/ciAkzlGaaS
— りぃ🐧 / Yuji Sugiura (@leader22) 2022年6月1日
いちおう節目としてメモを残しておく。
なぜはじめたか
単純に仕事の波が引きまくっていて、なんか有意義に時間を使えないか?と思い。アルゴリズムとかそういうCSの基礎的なところはあまり得意ではない意識もあるので、多少マシにはなるかな?と。
コンスタントに1日1-2問くらいを朝一番にやるのを習慣にして、去年の秋くらいからちまちまやってた。
なぜやめるのか
理由は2つ。
まずは、近頃はあまり学びがなく、これは惰性でしかないな・・と気付いたから。
Easyな問題だけをやってるがゆえにか、400問もやると問題の質が気になってくる。
- 本質は単純なのに、説明文が無駄に難解なやつとか
- ただの文字列操作やん・・みたいなのとか
- 完全な使いまわしとか
- Easyではない!っていうコメントが噴出してるやつとか
Rustの勉強も兼ねてやってたけど、構文も決まったパターンばかりになってきてたし。
あとは、モチベーションと時間の都合。
Mediumとか違うレベルに手を出すという手もあったかもしれんけど、モチベーション的なところで疲れを感じてたのもあるし、複業に時間を割くための優先順位の問題もあり。
結局、なんのために?っていうモチベーションの源泉がないのが問題かな〜。この手の知識が仕事で役に立ったこともないし・・。(計算量に気を使うとかそういうのは、もともとやってるし)
Rustへの感想
`Iterator`がすごく便利で感動した。`windows()`とか`chunks()`とかがなかったらそれはもう面倒くさかったはず。
メソッドチェーンでコード並べても、コンパイル時に最適化してくれたりするし。
ただ不便だと思うところもあって。
コードをどこで書く?ってなった場合に、LeetCodeのページ内エディタでちょっと書こうとするけど、だいたいコンパイルが通らないし補完もないしでだいぶ厳しい。
なのでだいたいローカルにテストケースをコピーしてきて動かせるようにしてたけど、`TreeNode`とかテストケースを用意するのがめちゃめちゃ面倒なやつとか、既に実装してあるプライベートなコード使って解けみたいなのとか、そういうのが本当にだるくて、Rustで解くのを諦めることもあった。
作問の都合か知らんけど、なんでも`Vec`でなんでも`String`でなんでも`i32`って感じなので、なんかずっとキャストしてたイメージある。
これはRustのせいっていうか、LeetCodeのせい。
まとめ
- あまり勧められるやり方ではなかった
- もっと良質な問題だけを、集中的にやるほうがいい
- モチベーションが一番大事
また忘れた頃にやるか、もう二度とやらないか、どっちかな気がしてる。