2011年6月アーカイブ

会社の一部の開発メンバーでプログラミング部をやろうという事になって、その中の一人がProject Eulerが面白いよということで、皆で始めたのがきっかけ。

数学の問題が難易度順に並んでいて、プログラムを書いて解を求めるっていうのが目的です。
ユーザ登録をすると答え合わせができるようになります。

使用するプログラミング言語は一応プロフィールに登録する事になっていますが、おそらく皆さん色々な言語でやっていると思いますね。やはり問題によって解きやすい言語、解きづらい言語がありますからね。

解の値を入力するだけの答え合わせなので、実は解を求められれば方法は何でもありではあります。

私は最初Scalaの勉強のために問題1と2はScalaで解いたのですが、問題3でまずお題の値がIntを超えていて、BigIntと再帰呼び出しで書くのが面倒になり、常に多倍長整数を使えるRubyに切り替えました(弱)RubyいいよRuby。

始めた頃は正直もういい歳なんだし面倒だなぁと思ってましたが(笑)クリアした問題が増えてくると1問解くごとに達成感があって楽しいんです。

英語のサイトなのでまず問題の理解が難しいのですが、日本語訳をしているサイトがあります!

問題数は今でも少しずつ増えていて現時点の直近では最後に2011年5月29日にProblem 340が登録されています。さすがに超難問の匂いがプンプンしますねw

プロフィールから自分の解いた数が記載されたバナーを取得することができて、このブログのサイドバー上に貼ってあります。これです。

はい、まだ20問しか解けてません(´・ω・`) ま、空いた時間でちょいちょいやってるだけなので少しずつ増やしていこうと思います。


次に書いたプログラムをどう管理しているかって言うと、もちろんローカルディスクのファイルとしては保存したあるのですが、誰かに見せたり意見を聞いたりするためにgist.githubを使っています。

gist.githubはコードスニペットを管理するツールとしては最高に使いやすいサービスです。

ただ、プロジェクト・オイラーだとそう簡単に答えが探せたらツマラナイので一応Privateで保存してあります。

Privateとは言ってもURLを知っていれば、誰でも見られます。例えばProblem 20の解を求める私の書いたプログラムはURLを知っていれば見られるはずです。おそらくPrivateは

・URLが複雑
・クローラにインデックスされない
・Embedタグが使えない

以外はPublicと変わらないんだと思います。

Publicで保存してEmbedタグを使えばブログのサンプルコード表示にも最適ですよ。


さて、プロジェクト・オイラーのProblem 20を解いてからもう1ヶ月も経ってしまったので、そろそろ21をやっつけるかな〜。しかしこのペースでは新しく増える問題(しかも難問)の方が多くて全く追いつけまてん!

分かりやすいのかどうなのかイマイチ判断しづらいが面白い例えw

SHA-1 の衝突を見るにはどうしたらいいのか、ひとつの例をごらんに入れましょう。地球上の人類 65 億人が全員プログラムを書いていたとします。そしてその全員が、Linux カーネルのこれまでの開発履歴 (100 万の Git オブジェクト) と同等のコードを一秒で書き上げ、馬鹿でかい単一の Git リポジトリにプッシュしていくとします。これを五年間続けたとして、SHA-1 オブジェクトの衝突がひとつでも発生する可能性がやっと 50% になります。それよりも「あなたの所属する開発チームの全メンバーが、同じ夜にそれぞれまったく無関係の事件で全員オオカミに殺されてしまう」可能性のほうがよっぽど高いことでしょう。

Pro Git - Pro Git 6.1 Git のさまざまなツール リビジョンの選択より引用

このアーカイブについて

このページには、2011年6月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年5月です。

次のアーカイブは2011年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。