このディレクトリの索引
#  出典::いろんな言語で宿題 第五編
#  問題 
#   
#  三本のまっすぐな棒の長さ a, b, c (1<= a,b,c <=1000 の整数)が与えられたとき 
#  三本の棒で作ることの出来る三角形の最大面積を求めよ(計算誤差は 0.001以下とする) 
#  棒は切断したり曲げたりすることは出来ない 
#  また棒の太さは十分細く無視できるものとする 
# 

'三本のまっすぐな棒の長さ a, b, c (1<= a,b,c <=1000 の整数)が与えられたとき三本の棒で作ることの出来る三角形の最大面積を求めよ(計算誤差は 0.001以下とする)棒は切断したり曲げたりすることは出来ないまた棒の太さは十分細く無視できるものとする'(_a,_b,_c,_三角形の面積) :-
        最長辺の二乗が他の二辺のそれぞれの長さの二乗の和以下である(_a,_b,_c),
        ヘロンの公式(_a,_b,_c,_三角形の面積).
'三本のまっすぐな棒の長さ a, b, c (1<= a,b,c <=1000 の整数)が与えられたとき三本の棒で作ることの出来る三角形の最大面積を求めよ(計算誤差は 0.001以下とする)棒は切断したり曲げたりすることは出来ないまた棒の太さは十分細く無視できるものとする'(_a,_b,_c,_三角形の面積) :-
        最長辺の二乗が他の二辺のそれぞれの長さの二乗の和より大きい(_a,_b,_c,_最長辺,_辺_2,_辺_3),
        '最大面積の三角形は、長辺を直径として、頂点が円周上にある三角形つまり長編を斜辺とする直角三角形である'(_辺_2,_辺_3,_三角形の面積).

最長辺の二乗が他の二辺のそれぞれの長さの二乗の和以下である(_a,_b,_c) :-
        select(_最長辺,[_a,_b,_c],[_辺_2,_辺_3]),
        _最長辺 >= _辺_2,
        _最長辺 >= _辺_3,
        _最長辺 * _最長辺 =< _辺_2 * _辺_2 + _辺_3 * _辺_3,!.

最長辺の二乗が他の二辺のそれぞれの長さの二乗の和より大きい(_a,_b,_c,_最長辺,_辺_2,_辺_3) :-
        select(_最長辺,[_a,_b,_c],[_辺_2,_辺_3]),
        _最長辺 >= _辺_2,
        _最長辺 >= _辺_3,
        _最長辺 * _最長辺 > _辺_2 * _辺_2 + _辺_3 * _辺_3,!.

ヘロンの公式(_a,_b,_c,_三角形の面積) :-
        _周囲の半分 is (_a + _b + _c) / 2,
        _三角形の面積 is sqrt(_周囲の半分 * (_周囲の半分 - _a) * (_周囲の半分 - _b) * (_周囲の半分 - _c)).

'最大面積の三角形は、長辺を直径として、頂点が円周上にある三角形つまり長編を斜辺とする直角三角形である'(_辺_2,_辺_3,_三角形の面積) :-
        _三角形の面積 is _辺_2 * _辺_3 * 0.5.