これは関数型に導くための問題ですね。数学的にも解けますが、対角線上の数を内側から外側に4つずつ列挙します。
function g($n) { $m = ($n - 1) / 2 $v = 1 $v foreach($k in 1..$m) { foreach($l in 1..4) { $v += $k * 2 $v } } } $N = 1001 (g $N | measure -sum).sum
これは関数型に導くための問題ですね。数学的にも解けますが、対角線上の数を内側から外側に4つずつ列挙します。
function g($n) { $m = ($n - 1) / 2 $v = 1 $v foreach($k in 1..$m) { foreach($l in 1..4) { $v += $k * 2 $v } } } $N = 1001 (g $N | measure -sum).sum