にたまごほうれん草ブログ

はてなダイアリーから移行したブログ。以前のはこちら→http://d.hatena.ne.jp/emergent/

こつこつとコードを書き続けるためのプログラミング問題集

はじめに

半年ほど前に転職してから、ソフトウェアエンジニアとしてコードも書く立場となったのですが、やはり、長年コードを書き続けていた人とブランクのある私では、コーディングスピードが圧倒的に違ってきます。

もちろん、業務のバックグラウンドの知識の差もありますが、「コードを書くスキル」に関しては、ある程度は「どれだけの量、書いて動かしたか」だと思っていますので、極力毎日少しでもコードを書くようにしています。(書かないと覚えられないタイプ)

ただ、毎日とれる時間のばらつきや、ネタ切れなどありますので、手軽に書ける問題がたくさんあるサイトがあると重宝します。本記事では、私のよく使うサイトを紹介します。

Project Euler

projecteuler.net

コンピュータで解く数学の問題集サイト。アーカイブの最初は割と簡単なところから始まり、徐々に難易度が上がっていく。

私は50問を過ぎたぐらいから解くのに時間がかかるようになってしまい、別の言語で同じ問題を解く横展開ばかりしてしまって解答数の進捗が停滞気味…。

ただ、新しい言語を覚えるときは、ざっと言語仕様を眺めたあとは、実際に手を動かすために問題を解くというのが、最近の自分のお決まり手段になっているのでやってみるのがいいと思います。

上手くアルゴリズムを書ければ、1分以内には解けるように問題ができてる、と一応書いてある。

言語処理 100本ノック

www.cl.ecei.tohoku.ac.jp

言語処理、文字列処理に関する課題がステップ・バイ・ステップで列挙されています。私はまだ20問ほどしか解いていないですが、Project Eulerに疲れたら合間に言語処理100本ノックを、みたいな感じで少しずつ解いています。

AtCoder過去問

AtCoderの過去問を解くのもよいと思います。

非公式ですが、過去問をまとめているサイトや、最初に解くべき問題のリストをまとめてくれている人がいるので、参考にさせてもらっています。

ちなみに、筆者も何回かAtCoderに参戦したことはあるのですが、制限時間に追われて問題を解くのは苦手のようで、ズタボロでした。しかしそろそろ、半年ぶりぐらいにやってみてもいいかも。

qiita.com

今後やってみたいもの

画像処理100本ノック

GitHub - yoyoyo-yo/Gasyori100knock: 画像処理100本ノックして画像処理を画像処理して画像処理するためのもの For Japanese, English and Chinese

画像処理もあまりやったことがないので、体系的に経験できるといいなーと思っています。あと、音声処理もほしい(自分で作れ)。

Modern C++チャンレンジ

タイトルはC++ですが、Rustでもやってみたいと思います。

Modern C++チャレンジ ―C++17プログラミング力を鍛える100問

Modern C++チャレンジ ―C++17プログラミング力を鍛える100問

ディープラーニング∞本ノック!!(2019/05/12追記)

教えてもらいました。

github.com

おわりに

できる人はこういう問題集も一気にやっちゃうんだと思うのですが、最初はできなくても少し経ってから再度解くとわかるようになっていたり、てなことも多々ありますので、こつこつと忘れずに続けていくのが肝要です。

モチベーション維持のために私がやっているのは、進捗を見えるように、解いた分をスプレッドシートに記録していく、というものです。毎日一個ずつマルを付けていくと、だんだんマルの部分が増えていくのが楽しみになります。

さいごに、こういうのもあるよ、という問題集サイトの情報をお持ちの方がいらっしゃいましたら、情報いただければ小躍りします。