# パスカルの三角形 Pascal's Triangle # 引数 段 ($n) # 戻り値 パスカルの三角形 (@PascalsTriangle) sub PASCALSTRIANGLE{ my ($n) = @_; my @PascalsTriangle = (); my $N = int($n); my $Start = 0; my $End = 0; my $Limit = 0; if($N < 0){ return 0; } # 計算 for(my $i = 0; $i <= $N; $i++){ # 配列の位置 $Start = 0; $End = $i; # 両端 $PascalsTriangle[$i][$Start] = $PascalsTriangle[$i][$End] = 1; # 中心まで $Limit = ($End - $Start) / 2; for(my $j = 1; $j <= $Limit; $j++){ # パスカルの三角形 Pascal's Triangle $PascalsTriangle[$i][$Start + $j] = $PascalsTriangle[$i][$End - $j] = $PascalsTriangle[$i - 1][$Start + $j] + $PascalsTriangle[$i - 1][$End - $j]; } } return @PascalsTriangle; }