記事を書いた背景
大学2年生の時、プログラミング授業の課題として定期的に出されていたプロジェクトオイラー。プログラミングは動けば良いという考えが通じない問題たちに打ちのめされた苦い思い出があります。しかし、面白く100問近く解答を導くほどハマっていたんです...((´∀`))
さて3年程の時が経ち、Qiitaで記事を書く題材として、プロジェクトオイラーの問題と解法の解説をやってみよう!と思いました。
今回の記事ではプロジェクトオイラーって何?ということに主眼を置いて記事を書くことにしました!
ためになったらいいね、おかしなところがあればコメントよろしくお願いいたします(m´・ω・`)m
プロジェクトオイラー(Project Euler)とは
一言でいえば「数学の問題をプログラムミングでちょちょいと解を求めましょう」という問題の宝庫です。言語を問わずに、プログラミングで解を求める経験ができるので、「プログラム言語を勉強したけど、アウトプットできる手軽な教材ないかな...」という人にはとてもおすすめです!アルゴリズムを強く意識しないと、計算がなかなか終わらないコードを書いてしまうという経験もできるので、駆け出しのプログラマは特におすすめだと思います!
公式サイトで気になった点
Project Euler
公式でプロジェクトオイラーについてまとめられていますので、詳しくは読んでみてください。特に気になったことをまとめていきます。
各問題は「1分ルール」で設計されている
プログラムを書いても、答えが出るまでに1分はかからないという前提で問題がつくられていることになります。それゆえ、過去の私のようにまずいアルゴリズムでプログラムを組むと、痛い目を見ることになります...しかし、裏を返せば「効率的なアルゴリズムを実装する」ということを常に意識できるので、プログラマにとっては良い演習になります!
答えをネットから拾ってくることの是非
問題の研究のためにネットを使うことは奨励されていますが、答えをコピペすることは無意味だよ!ということが書かれています。ですので、これから記事として投稿する場合は、「こういうの良かったよ!」とか「ここはこうじゃない?」のようなコメントを通して問題への理解やアルゴリズムの実装を確認することが重要になると思うので、皆様よろしくお願いいたします!
問題をしっかり考えよう!
問題を解くプログラムが書けないと悩むことはありますが、その時間は決して無駄でありません。考えることがとても大事であると書かれています。心にぐっと来た表現がありまして、
But more importantly, you will begin to learn that the journey is as important as the final destination.
Project Eulerより引用
つまり、「最も重要なのは最終目的地と同じくらいその旅が重要であるということを学び始めることである」です。この気づきは全エンジニアにとって財産になるものだと私は考えます!
LevelsとAwards
25問解答を解くごとに上がるレベルとある条件を達成することで得られるアワードというものがあります。これで、プロジェクトオイラーを使って学び続けるモチベーションが視覚化されますね!
問題の解を発表する是非
最初の100問はプロジェクトオイラー外で発表してもよいと記されていました。私にとって実際に説明能力を養いたく、第三者の目があるQiitaで投稿をしたいと考えたため、100問の解説を載せていきたいと考えています。また、プロジェクトオイラーへの新たな扉を開く人のためのきっかけの記事になれるよう尽力します!