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

Windows PowerShellでProject Euler(10) 例外処理

Problem 4最初の一つだけほしいのでnextという関数を考えます。filterを使って、 filter next() { $_ break } 1個値を受け取ってそれを排出して、そのあとなんらかの方法で例外を投げます。ここではbreakしています。ここで終わってもいいですが、そのあとコ…

Windows PowerShellでProject Euler(9) SortedList

Problem 4この問題はPriorityQueueを使えばごく自然に書くことができます。PowerShellでは.NETのコンテナを使うことができます。System.Collectionsしかし、なぜかPriorityQueueが無いんですね。 しょうがないので代替を探しましょう。SortedListが使えそう…

Project Euler 390(2)

http://projecteuler.net/index.php?section=problems&id=390今朝ジョギングしてたら思いついた。さっき組んだら0.16秒だった。簡単なアイディアなのになぜ早く思いつかないのだろう。

Project Euler 390

http://projecteuler.net/index.php?section=problems&id=39040着。2時間以上かけて下準備してそれを使って0.36秒。

NumPyで多項式計算

Problem 389これは確率計算をする問題なので、いつものように母関数の計算をすることになります。しかし、多項式をリストとして計算すると、Pythonは非常に遅いんですよね。そんなとき、NumPyを使うと劇的に速くなります。ダウンロードはこのあたりから。 ht…

Windows PowerShellでProject Euler(8) 配列

Problem 4今回は回文数の判定を行います。そのために配列の使い方を覚えます。about_Arrays配列は次のように作成します。 $a = 3, 5, 7 $a[2] # 7 これでもOKです。 $a = @(3, 5, 7) 次のようにすると2次元配列のようになります。 $b = @(@(3, 4), @(5, 6)) …

Windows PowerShellでProject Euler(7) 再帰

Problem 3ふつうに再帰が使えます。 function last_prime($n, $p0 = 2) { for([long]$p = $p0; $p * $p -le $n; ++$p) { if($n % $p -eq 0) { return last_prime ($n / $p) $p } } $n } $n = 600851475143 last_prime $n どれくらいの深さまでOKなのでしょう…

Windows PowerShellでProject Euler(6) ジェネレータ

Problem 2秀丸でマクロを組んでいて、走らせるとコマンドプロンプトを立ち上げてそのマクロを走らせたファイルのディレクトリに移動するようにしているのですが、そこでpowershellと打つと、スタートメニューからPowerShellを立ち上げるより楽ですね。 入力…

Project Euler 389

http://projecteuler.net/index.php?section=problems&id=38959着。 素直に書くだけの問題。でも、Pythonだとこの手のコードは遅いので、最後に一工夫。ちょっと数学を使う。

Windows PowerShellでProject Euler(5) パイプ

Problem 1この問題はPythonではこう書くのが普通だと思います。 N = 1000 print sum(n for n in xrange(1, N) if n % 3 == 0 or n % 5 == 0) これに近い書き方を考えましょう。 Measure-Object 和を取るにはMeasure-Objectを使います。 1..999 | Measure-Obj…

Windows PowerShellでProject Euler(4) ループ

Problem 1包除原理を使うのはやめて、本来の書き方ではないのですがループを使いましょう。 while $n = 1000 $s = 0 $k = 1 while($k -lt $n) { if($k % 3 -eq 0 -or $k % 5 -eq 0) { $s += $k } $k += 1 } $s whileはCとだいたい同じです。ただ、比較演算子…

Project Euler 388(2)

http://projecteuler.net/index.php?section=problems&id=38888着。結局ぶん回して。

Windows PowerShellでProject Euler(3) 関数

Problem 1前回、いちおうProblem 1を解きましたが、同じようなコードが並んでいたので、そこを関数化しましょう。 function f($n, $d) { [int]$m = [math]::floor(($n - 1) / $d) $m * ($m + 1) / 2 * $d } $n = 1000 (f $n 3) + (f $n 5) - (f $n 15) こん…

Windows PowerShellでProject Euler(2) 型と演算

Problem 1さっそくProblem 1を解いていきましょう。 この問題を解く最も簡単な方法は、包除原理を使うことでしょう。すなわち、3の倍数の和と5の倍数の和を足して、15の倍数の和を引きます。まず、1000を変数に代入します。 > $n = 1000変数には頭に$をつけ…

Windows PowerShellでProject Euler(1) 準備

Windows PowerShellは従来のコマンドプロンプトの代替です。いろいろ便利になっていて、スクリプトもバッチファイルよりはかなりまともな言語になっているようです。例によってProject Eulerの問題を解きながらこの言語を学んでいきましょう。 まず、Windows…

Project Euler 388

http://projecteuler.net/index.php?section=problems&id=388昨日から考えているけど、できそうでできない。

√2を高精度で計算する

昨日はcos20°を求めましたが、今日は√2を求めます。100万桁を目標にしましょう。 √nの循環連分数になります。√2は、 √2 - 1 = 1 / (2 + 1 / (2 + ...)) = [ 0; 2, 2, ... ] となります。連分数を途中で打ち切ったときの分数をan / bnと置くと、 an+2 = 2an+1…

cos20°を高精度で計算する

数学ガール/ガロア理論 (数学ガールシリーズ 5)作者: 結城浩出版社/メーカー: SBクリエイティブ発売日: 2012/05/30メディア: 単行本購入: 8人 クリック: 310回この商品を含むブログ (57件) を見る昨日から読んでいる。P.164に、 cos が扱える計算機を使えば…

Project Euler 356

未解決問題を解こうシリーズ第3弾。http://projecteuler.net/index.php?section=problems&id=356235着。

Project Euler 387

http://projecteuler.net/index.php?section=problems&id=38748着。 慌ててバタバタと。落ち着いて書けばもうちょっと早く解けたんだろうけど。

Project Euler 326

未解決問題を解こうシリーズ第2弾。http://projecteuler.net/index.php?section=problems&id=326265着。 この問題が出題されたときなにを悩んでいたかは今となってはわからない。

Project Euler 324

http://projecteuler.net/index.php?section=problems&id=324300着。