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

'3角形の3辺の長さがあたえられたとき、正三角形、2等辺三角形、直角三角形か調べる'(_辺_1,_辺_2,_辺_3,_診断) :-
        正三角形か(_辺_1,_辺_2,_辺_3,_正三角形診断),
        直角三角形か(_辺_1,_辺_2,_辺_3,_直角三角形診断),
        '2等辺三角形か'(_辺_1,_辺_2,_辺_3,_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等辺三角形診断,'三角形'],_診断),!.


%
%  一つ問題なのは、「正三角形は直角三角形にはならない」という事を分かって
%  しまっている定義だということだ。課題のどこを見てもそんな記述はない。
%