PamGau
Web周り、サッカーの話、ときどきヌコ

RubyでProject Euler - Problem 49

Problem 49 (Project Euler) [原文]

項差3330の等差数列1487, 4817, 8147は次の2つの変わった性質を持つ。

  1. 3つの項はそれぞれ素数である。
  2. 各桁は他の項の置換で表される。

1, 2, 3桁の素数にはこのような性質を持った数列は存在しないが、4桁の増加列にはもう1つ存在する。

それではこの数列の3つの項を連結した12桁の数を求めよ。

「公差:3300で探せ」とはどこにも書かれていないにも関わらず、Project Eulerの掲示板では公差が3300であることを前提に正解に至っていると思しき人がいらっしゃって、ちょっと可笑しかったです。

以下のような手順で解くことにしました。

  1. 4桁の素数リストを作成
  2. 初項として、任意の4桁の素数をリストの中から選択
  3. 第二項として、初項よりも大きな4桁の素数を選択
  4. 両者が同じ数字だけで構成されているか否かを確認
  5. 第三項を初項・第二項の差に基づいて算出
  6. 第三項が4桁の素数であって、前の2項と同じ数字で構成されているかを確認

この順番でなんの工夫もなしに書いたプログラムを走らせると、20秒程度で正解にたどり着きました。考え方としては間違ってはいないし、そこそこできたものと思っていました。

ところが掲示板にはRubyで書かれたとても速い解答が書きこまれていました。小さなクラスを適切に作成し、素数リストを作成する段階で後の処理を簡単にするような工夫が施されていました。正解が表示されるまでの時間は、私の書いたコードと比べると実に100分の1であり、スキルが100倍劣るということですから、普通に凹みました。

この辺りのレベルの問題だと、スキルの差が大きく表れるようです。先のProblem 47で記載したコードなどは論外でお恥ずかしい限りで、消したい衝動に駆られたのでございます。


"RubyでProject Euler - Problem 48" « Home » "RubyでProject Euler - Problem 50"

TrackBack

ご注意
当分の間、トラックバックの受信を行わないことといたしました。過去に戴いたトラックバックのリストについてはそのまま保持いたします。
トラックバックはありません

Comments

コメントはありません。
ご注意
当分の間、JavaScript が有効でないとコメント投稿できないようにします。スパム対策であって、投稿される方の個人情報を取得する目的ではありません。悪しからずご了承ください。
Recent Entries
裸の英会話
RubyでProject Euler - Problem 59
RubyでProject Euler - Problem 58
RubyでProject Euler - Problem 57
RubyでProject Euler - Problem 55, 56
RubyでProject Euler - Problem 54
RubyでProject Euler - Problem 53
RubyでProject Euler - Problem 52
RubyでProject Euler - Problem 51
RubyでProject Euler - Problem 50
Links
PamGau 系
PamGau::Memo
PamGau::Dust
PamgauSigh Wiki
はてなブックマーク
パンパでガウチョ
kyorecobaのdel.icio.us
BLOGNAVI
XREA.COM
VALUE-DOMAIN
PHP ver 4.4.2
Powered by Nucleus CMS Creative Commons
feedberner banner この日記のはてなブックマーク数
BlogPeople
あわせて読みたい