このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/850
#  3角形の3辺の長さがあたえられたとき、 
#  正三角形、2等辺三角形、直角三角形か調べるプログラムをつくりなさい 
#  ってな問題がでたことあるんだけど・・・ 
#  結構むずいよね。 
# 
# 

'3角形の3辺の長さがあたえられたとき、正三角形、2等辺三角形、直角三角形か調べる'(_辺_1,_辺_2,_辺_3,_診断) :-
        正三角形か調べる(_辺_1,_辺_2,_辺_3,_),
        2等辺三角形か調べる(_辺_1,_辺_2,_辺_3,_2等辺三角形診断),
        直角三角形か調べる(_辺_1,_辺_2,_辺_3,_直角三角形診断),
        診断を編集する(_直角三角形診断,_2等辺三角形診断,_診断).

正三角形か調べる(_辺_1,_辺_2,_辺_3,_) :-
        正三角形は2等辺三角形に属するからそちらで診断する.

正三角形は2等辺三角形に属するからそちらで診断する.

'2等辺三角形か調べる'(_辺,_辺,_辺,'正') :- !.
'2等辺三角形か調べる'(_辺,_辺,_,'2等辺') :- !.
'2等辺三角形か調べる'(_,_辺,_辺,'2等辺') :- !.
'2等辺三角形か調べる'(_辺,_,_辺,'2等辺') :- !.
'2等辺三角形か調べる'(_,_,_,'').

直角三角形か調べる(_辺_1,_辺_2,_辺_3,直角) :-
        select(_長辺,[_辺_1,_辺_2,_辺_3],[_短辺_1,_短辺_2]),
        _長辺 * _長辺 =:= _短辺_1 * _短辺_1 + _短辺_2 * _短辺_2,!.
直角三角形か調べる(_,_,_,'').

診断を編集する('','','正三角形、2等辺三角形、直角三角形の何れでもない') :- !.
診断を編集する(_直角三角形診断,_2等辺三角形診断,_診断) :-
        atomic_list_concat([_直角三角形診断,_2等辺三角形診断,'三角形'],_診断).