このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/391
#  [1] 授業単元:プログラミング実験 
#  [2]1~30の整数の範囲で、3辺a, b, c(cを斜辺 a <= b <= c)の三角形のうち、直角三角形が成立する
#  場合の辺a,b,cをすべて見つける。
#  

'1~30の整数の範囲で、3辺a, b, c(cを斜辺 a <= b <= c)の三角形のうち、直角三角形が成立する場合の辺a,b,cをすべて見つける'(_直角三角形ならび) :-
        findall(N,for(1,N,30),L),
        findall([_a,_b,_c],直角三角形をひとつ取り出す(L,_a,_b,_c),_直角三角形ならび).

直角三角形をひとつ取り出す(L,_a,_b,_c) :-
        重複組み合わせ(L,3,[_a,_b,_c]),
        0 is _a * _a + _b * _b - _c * _c.