コードを分かりやすくするために1 => "one", 2 => "two", ...という連想配列を作っておきます。
連想配列は次のように作ります。
$pt = @{ x = 1; y = 2 } $pt
Name Value ---- ----- y 2 x 1
個々にアクセスする方法は、
$pt.x # 1 $pt["y"] # 2
と二通りあります。JavaScriptと同じですね。
$words = @{ 1 = "one"; 2 = "two"; 3 = "three"; 4 = "four"; 5 = "five"; 6 = "six"; 7 = "seven"; 8 = "eight"; 9 = "nine"; 10 = "ten"; 11 = "eleven"; 12 = "twelve"; 13 = "thirteen"; 14 = "fourteen"; 15 = "fifteen"; 16 = "sixteen"; 17 = "seventeen"; 18 = "eighteen"; 19 = "nineteen"; 20 = "twenty"; 30 = "thirty"; 40 = "forty"; 50 = "fifty"; 60 = "sixty"; 70 = "seventy"; 80 = "eighty"; 90 = "ninety"; 100 = "hundred"; 1000 = "thousand" } function f($n) { if($n -eq 0) { 0 } elseif($n -le 20) { $words[$n].length } elseif($n -lt 100) { $r = $n % 10 $words[$n-$r].length + (f $r) } elseif($n -lt 1000) { $r = $n % 100 $q = ($n - $r) / 100 if($r -eq 0) { $words[$q].length + $words[100].length } else { $words[$q].length + $words[100].length + 3 + (f $r) } } else { $r = $n % 1000 $q = ($n - $r) / 1000 if($r -eq 0) { $words[$q].length + $words[1000].length } else { $words[$q].length + $words[1000].length + (f $r) } } } $N = 1000 (1..$N | foreach { f $_ } | measure -sum).sum