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

Project Euler 373

未解決問題を解こうシリーズ第5弾。http://projecteuler.net/index.php?section=problems&id=373214着。4500秒かかった。当時はたぶん外接円の半径の公式を見てお手上げになっていたのだろう。公式を捨てて逆から考えたら、すなわち半径がある整数なら辺の長…

Windows PowerShellでProject Euler(37)

Problem 30これは重複組合せを生成する問題です。PowerShellの関数はほぼジェネレータなので、簡単に生成できます。 22秒かかりました。 PowerShellのシリーズはここまでです。

Windows PowerShellでProject Euler(36)

Problem 29これは手計算でできる問題です。べき乗の計算をしてはいけません。

Windows PowerShellでProject Euler(35)

Problem 28これは関数型に導くための問題ですね。数学的にも解けますが、対角線上の数を内側から外側に4つずつ列挙します。

Windows PowerShellでProject Euler(34) 連想配列

Problem 27素数判定のメモ化のために連想配列を使います。連想配列にキーが存在するかの判定は、こうすればいいようですね。 $a = @{ 2 = $true; 3 = $true; 4 = $false } $a[5] -ne $null 無いキーを参照すると$nullが返るようです。 5分弱かかりました。

Windows PowerShellでProject Euler(33)

Problem 26剰余類群で10が生成元になる最も大きい素数を求めればよいのですが、なるべく手抜きすることを考えます。10と互いに素で、gp-1で初めて1になればよいです。これを素直に書きました。

Windows PowerShellでProject Euler(32)

Problem 25この問題はlogを求めてもよいですが、正確に求めてみました。 38秒かかりました。

Windows PowerShellでProject Euler(31)

Problem 24この問題は本当は一瞬で解けるのですが、あえて順列を出します。PowerShellの関数はほとんどジェネレータなので、Pythonのように再帰で簡単にpermutationsを書くことができます。その中で foreach($c in permutations $b) { ,(@($h) + $c) } こう…

Windows PowerShellでProject Euler(30)

Problem 23この問題は6の剰余で分類すると速いです。なぜなら、12以上の6の倍数はすべて過剰数だからです。 144秒かかりました。

Windows PowerShellでProject Euler(29) ファイルを読む

Problem 22テキストファイルを読むにはcatコマンドですね。typeでも同じです。シェルスクリプトだからこういうこともできます。 ソートはsortコマンドで。

Windows PowerShellでProject Euler(28)

Problem 21エラトステネスのふるい的に約数の和を求めるだけですね。

Windows PowerShellでProject Euler(27)

Problem 20当然ですが、掛けていくだけですね。数字を配列にすれば最後も簡単です。

Windows PowerShellでProject Euler(26)

Problem 19年月日から曜日を調べるのも簡単です。