Hatena::ブログ(Diary)

分け入ってもコード このページをアンテナに追加 RSSフィード Twitter

2011-05-19

Project Euler #1 with SQL

遅ればせながらno titleでもやってみようかと登録。

なるほど。プロフィールの代わりに使用する言語を登録するのか、プログラマはこういうところで自己主張するよな、とか思って見てみると

f:id:choplin:20110519214836p:image:w360

、、、SQLは?(;´Д`)

ということでSQLで解いてみました。第一問目。

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.

標準SQL以外にPostgreSQLの関数を使ってます。

SQLだと集合を集合として扱えるので美しいですね。ループを使っていいのは小学(ry*1

また気が向いた時に続きをSQLで解いていきたいと思います。

SETOF関数

問題を解くだけだと何なので簡単な解説を一つ。

解答の中のgenerate_series関数は、始まりと終わりの数を引数にとって、その「集合」を返す関数です。

このような集合を返す関数はPostgreSQLではSETOF関数と呼ばれています。

詳しくはここらへんを参照。

9.24. 集合を返す関数

SETOF関数のあれこれ - 象と戯れ - postgresqlグループ

generate_seriesを使うと連番の集合を簡単に生成できるので、Project Eulerのような問題向きですね。

なのでProject Eulerの管理者は早くSQLをLanguageから選べるようにするべきです!SQL!SQL!

*1:今時の言語ならmapを使うか

umitanukiumitanuki 2011/05/19 22:16 SQL!SQL!

choplinchoplin 2011/05/19 22:25 SQL! SQL!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証