このディレクトリの索引

#  x^2+y^2=z^2を満たす正の整数をピタゴラス数と呼び、三つ組(x,y,z)で表す。
#  ピタゴラス数のリストを生成する関数pythsを定義せよ。
#  ただし、ピタゴラス数の要素は、与えられた上限以下であるとする。
#  

ピタゴラス数ならび(_ピタゴラス数要素の上限,_ピタゴラス数ならび) :-
        findall([_x,_y,_z],(
                    ピタゴラス数(_ピタゴラス数要素の上限,_x,_y,_z)),
                _ピタゴラス数ならび).

ピタゴラス数(_ピタゴラス数要素の上限,_x,_y,_z) :-
        '_x,_y,_zの候補は'(_要素値上限,_x,_y,_z),
        'ピタゴラス数は_zを直角三角形の斜辺_x,_yを直角の隣辺とした時の制約を持つ'(_x,_y,_z).

'_x,_y,_zの候補は'(_ピタゴラス数要素の上限,_x,_y,_x) :-
        for(1,_x,_ピタゴラス数要素の上限),
        for(1,_y,_ピタゴラス数要素の上限),
        for(1,_z,_ピタゴラス数要素の上限).

'ピタゴラス数は_zを直角三角形の斜辺_x,_yを直角の隣辺とした時の制約を持つ'(_x,_y,_z) :-
        ピタゴラスの定理を適用する(_x,_y,_z).

ピタゴラスの定理を適用する(X,Y,Z) :-
        Z * Z =:= X * X + Y * Y.