Location : Home > Languages > Perl > Package
Title : Math::TriangularNumbers
Toolbox Logo

名称

 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

依存関係

 なし。


To Do

 現在実装しているものは全て 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 のそれ以降のバージョンで利用可能である。

Toolbox Logo
Updated : 2006/11/01