例えば、Problem 1ですが、Pythonでふつうに書くとこうでしょう。
N = 1000 print sum(n for n in xrange(1, N) if n % 3 == 0 or n % 5 == 0)
実質1行で書けます。
しかし、Pythonは書きやすいけど遅いんですよね。C++の200倍くらい遅いことがあります。PyPyで動かすとたいてい3〜8倍速くなりますが、それでも非常に厳しい問題でごり押ししたいときはC++で書き直すことになります。
ここで問題が。C++やJavaは確かに速いのですが、Pythonを翻訳しにくいです。例えば、上のようなコードを書くのは難しいです。Javaならこんな感じでしょうか。
public class e001 { public static void main(String args[]) { int s = 0; int N = 1000; for(int n = 1; n < N; ++n) { if(n % 3 == 0 || n % 5 == 0) s += n; } System.out.println(s); } }
手続き型で書かなければなりません(将来のJavaならそうでもないらしい)。
しかし、C#ならPythonをほとんどそのまま翻訳できます。そして、C++やJavaとそれほど変わらない速度を出すこともできます。
これは、Pythonで遅くてどうしようもないとき、C#に翻訳するための講座です。
インストール
この辺からVisual Studio Express 2012 for Windows Desktopをインストールします。C#のバージョンは5.0らしいです。