Location : Home > Languages > Perl > Package Title : Math::TriangularNumbers |
![]() |
Math::TriangularNumbers - パスカルの三角形の数値(三角数)を計算
Version 0.03
use Math::TriangularNumbers qw(T Ti is_T); ##### 三角数を出力 "1, 3, 6, 10, 15, 21" print STDERR join(", ",T(1),T(2),T(3),T(4),T(5),T(6)), "\n"; ##### パスカルの三角形の数値を出力prints right Triangular indices "1, 2, 2, 3, 3, 3": print STDERR join(", ",Ti(1),Ti(2),Ti(3),Ti(4),Ti(5),Ti(6)), "\n"; ##### determines if the number 666 is triangular (it is): print STDERR is_T(666) ? "yes\n" : "no\n";
筆者はゲームのために以下のような関数を利用していた。
T(n) = 1 + 2 + ... + (n-1) + n = n * (n+1) / 2
たとえば
T(1) = 1 T(2) = 3 T(3) = 6 T(4) = 10 T(5) = 15 T(6) = 21 など
これらはパスカルの3角形にちなみ、三角数と呼ばれる。
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1
第3行を対角線でみると 1, 3, 6, 10, 15, 21 ... と並んでいる。本モジュールではこの並びを上記の式で表される関数 T(n) で 実装している。
またその逆で、次の式で表される T'(N) も実装している。
T'(N) = int( (1 + sqrt(1 + 8*(N-1))) / 2 )
たとえば必ずしも三角数でない所与の整数 N に対し T(n-1) < N <= T(n) を満たす n を見つけることもできる。筆者は三角数の定義を 0 及び及び負の整数にも拡張した。
デフォルトではなし。
T($n)
$n 番目の三角数を返す。
引数に非整数を渡すと文句を垂れる。
T(0) = 0 かつ T(-$n) = -T($n) であることに留意すること。
Ti($N)
$N のインデクスに対応する右三角数を返す。
引数に非整数を渡すと文句を垂れる。
Ti(0) = 0 かつ Ti(-$n) = -Ti($n) であることに留意すること。
is_T($N)
Returns true if $N が三角数であるか、$N が0であるか -$N が三角数である場合 true を返し、その他の場合は false を返す。
引数に非整数を渡すと文句を垂れる。
本モジュールをインストールするには以下のようにタイプする。
perl Makefile.PL make make test make install
なし。
現在実装しているものは全て Perl の標準のスカラーを利用しているため、浮動小数点の限界のために大きな値を適用するとエラーが発生する。
David Christensen, <dpchrist@holgerdanske.com>
Rob "Sisyphus" は "index" という用語の使い方を正してくれた。またある数字がパスカルの3角形の数値か否かを確認する関数を示唆してくれた。
Copyright 2005 by David Christensen <dpchrist@holgerdanske.com>
本ライブラリはフリーソフトウェアであり、 Perl 本体と同等の条件で修正/再配布することができる。Perl は バージョン 5.8.6 またはユーザの選択でPerl 5 のそれ以降のバージョンで利用可能である。
![]() |
Updated : 2006/11/01 |