2013-06-01から1ヶ月間の記事一覧

Project Euler 433

http://projecteuler.net/index.php?section=problems&id=43344着。 CUDAで10時間弱。 明日以降何とかする。

四捨五入

銀行丸めと四捨五入。 | みむらの手記手帳5を丸めるとき、偶数になるようにする。 2.5 -> 2 3.5 -> 4なぜそうするかというと、例えば、4.4445を丸めるとき、単純な四捨五入を次々と行っていくと、4.4445 -> 4.445 -> 4.45 -> 4.5 -> 5となってしまうからだ。…

リストのスライスの罠

リストの部分リストを得るとき、つぎのようにします。 a = range(5) # [0, 1, 2, 3, 4] a[1:3] # [1, 2] range(1, 3)に対応しています。同様にステップ幅も指定できます。 a[1:4:2] # [1, 3] a[3:0:-1] # [3, 2, 1] これもrange(1, 4, 2)、range(3, 0, -1)に…

Project Euler 432

http://projecteuler.net/index.php?section=problems&id=43242着。 昨日の夜あきらめて、Pythonのナイーブなコードを書き、それをC++翻訳した。3コアに分けて流す。しかし×を食らう。最後のほうだけをPythonと比べると、確かに合っていない。しかし、どこを…

Project Euler 431

http://projecteuler.net/index.php?section=problems&id=43118着。17秒。 久しぶりの20着以内。一時期は常連だったのに。 問題の意味が非常にわかりづらい。ふだんはもっと明確に求めるべきものを書いてあるのに。結局、半径が6で40度のときだけを求めれば…

in演算子

in演算子、便利ですよね。こんな感じです。 a = [ 1, 2, 3 ] print 2 in a # True C#なら、 var a = new int[] { 1, 2, 3 }; Console.WriteLine(a.Contains(2)); // True ちょっとうっとうしい。C++に至っては、 int a[] = { 1, 2, 3 }; std::cout << (std::…

Project Euler 430

http://projecteuler.net/index.php?section=problems&id=43023着。 最初わからなかったけど、E(3, 2)を手で解いていたらだいたいわかった。 O(NlogM)らしいのでPyPyでごり押ししてみると、30分以上かかりそう。しかたなく、これを回している間にC++のコード…

Project Euler 427(3)

http://projecteuler.net/index.php?section=problems&id=427フォーラム見たら、10日計算したという人もいたが、だいたいが同じ解法だった。 ただ、導出がほぼ書かれていなかったので、朝からそれを書いていた。 しかし、ノートを見てもあまりよくわからない…