PowerShell

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を立ち上げるより楽ですね。 入力…

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とだいたい同じです。ただ、比較演算子…

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…