feature image

2017年12月14日 | ブログ記事

Project Eulerのすすめ

この記事はtraP Advent Calendar 2017 12月14日の記事です。

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

Project Eulerです。

Project Eulerとは

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

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

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

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]

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

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 icon
この記事を書いた人
Ark

<marquee>いえーい!</marquee>

この記事をシェア

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

関連する記事

2017年11月14日
IBIS2017参加報告
Keijan icon Keijan
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2023年4月27日
Vulkanのデバイスドライバを自作してみた
kegra icon kegra
2021年12月8日
C++ with JUCEでステレオパンを作ってみた【AdC2021 26日目】
liquid1224 icon liquid1224
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
記事一覧 タグ一覧 Google アナリティクスについて