東京工業大学
デジタル創作同好会

2017年12月14日 | メンバーブログ

Project Eulerのすすめ

Ark

こんにちは。アークです。
この記事はtraP Advent Calendar 2017 12月14日の記事です。

何か技術的な話ができたらいいなと思ってたのですが、間に合わなかったのでとあるサイトの紹介をします。

Project Eulerです。

Project Eulerとは

数学的なプログラミングの問題を解くサイトです。

現時点(2017年12月)での問題数はざっと600600+α+\alphaあります。
今もなお新しい問題が時々追加されています。

簡単な問題から難しい問題まで色々あり、数学的な思考力や知識が試される問題が多いです。
例えば最初の問題はこんな感じ。

Problem 1:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.
[Project Euler: Multiples of 3 and 5]

要約すると「33の倍数 または 55の倍数 のうち、10001000より小さい数の和を求めなさい」となります。

Project Eulerにはこのような問題が大量にあります。これは第一問目なのでかんたんな問題なのですが、問題番号が上がるに連れてどんどん難易度も上がっていきます。

解答を提出するまでの流れ

1. アカウントを作る

自分の解いた解答があってるかどうかを確認するためには、まずアカウントを作る必要があります。サイト右上にある「Sign In」からアカウントを作ってください。ユーザ名とパスワードを登録するだけなので一瞬です。

2. 問題を選ぶ

メニューの「Archives」あるいは「Recent」から問題を物色します。「Archives」は過去の問題一覧があり、「Recent」には直近で追加された10問がリストされてます。最初のうちは「Archives」の問題1から順に解くといいでしょう。

3. 問題を読む

問題がすべて英語なのでつらいですが頑張って読みましょう。
ちなみに有志の方が問題の和訳をしてくださっているみたいなので、そちらを利用するのもありです。→Project Euler - PukiWiki - odz

4. 問題を解く

問題を解きます。言語はなんでもいいです。CでもJavaでもPythonでもHaskellでもDでも。

競プロみたいにジャッジサーバーがリモートにあるということではないので、手元で解答が出せさえすればいいです。
Mathematicaを使って解いている人もいるみたいです。東工大生ならTSUBAMEの力を使って並列計算で殴るのもありです。

5. 提出する

問題の下の方にあるフォームに答えを書いて提出します。
提出はログイン状態でしか現れないので注意してください。

どうでもいいけどProjectEulerのCAPTCHA、「1」と「7」の判別が難しい。

間違いなら

正解なら

こんな感じで表示されます。

6. 議論スレッドを見る or 参加する

問題に正解すると、その問題の議論スレッドを見ることができるようになります。
めちゃくちゃ頭の良い解法とかがあったりするので、読んでみるといいかもしれないです。

Project Eulerの各機能

Friends

あまり知られてないけどProject Eulerにはフレンド機能があります。
サイト上方のメニューの「Friends」から機能が使えます。

こんな感じでみんなの進捗が見れます。

Progress

サイト上方のメニューの「Progress」では、現在の進捗や得た勲章を見ることができます。

モチベ維持にいいです。

@projecteulerbot

Project Eulerのbotです。有志が作ったみたい(?)
100番以内に解くと名前付きでツイートしてくれます

おわりに

Project Eulerをすると

が鍛えられます。
数学とプログラミングが好きな人にはもちろんプログラミングの勉強をこれからはじめたいという人にもおすすめです。


明日はreireiさんとs_cyanさんの記事です。お楽しみに!

この記事を書いた人
Ark

ゲームを作ったり、競プロをしたり、なにか作ったりしてます。好きな言語はDです。

この記事をシェア

このエントリーをはてなブックマークに追加

関連する記事

2017年12月26日
Splatoon2~ボムの使い方~
shigurure
2017年12月25日
RustでMCMC(Metropolis-Hasting)
David
2017年12月25日
NinjaFlickerが完成しました
gotoh

活動の紹介

カテゴリ

タグ