このディレクトリの索引
#  出典 :: スレ立てるまでもない質問はここで 135匹目 #894
#  
#  鶴と亀合わせて頭数にして100いました
#  足の数が全部で285ありました
#  鶴と亀はそれぞれいくらずついましたか
#  p.s.全盛期の王貞治が打つ構えだったらしいです
#  

一本脚の鶴のまじった鶴亀算(_全部の足の数,_鶴と亀合わせて頭数,_鶴の数,_亀の数) :-
        全部を亀だと考えよう(_鶴と亀合わせて頭数,_全部亀だとしての足の数),
        実際の足の数との差が(_全部亀だとしての足の数,_全部の足の数,_実際の足の数との差),
        '鶴がまじっていることによって生じた差だから、
一匹一羽の亀と鶴の足数の差で割れば良いのだが、
ここでは一本足の鶴もいる想定だから、
足の差を2と3の組み合せで考える'(_鶴と亀合わせて頭数,_実際の足の数との差,_鶴の数,_亀の数).

全部を亀だと考えよう(_鶴と亀合わせて頭数,_全部亀だとしての足の数) :-
        _全部亀だとしての足の数 is 4 * _鶴と亀合わせて頭数.

実際の足の数との差が(_全部亀だとしての足の数,_全部の足の数,_実際の足の数との差) :-
        _実際の足の数との差 is abs(_全部亀だとしての足の数 - _全部の足の数).

'鶴がまじっていることによって生じた差だから、
一匹一羽の亀と鶴の足数の差で割れば良いのだが、
ここでは一本足の鶴もいる想定だから、
足の差を2と3の組み合せで考える'(_鶴と亀合わせて頭数,_実際の足の数との差,_鶴の数,_亀の数) :-
        二本足と一本足の鶴の数候補を得る(_鶴と亀合わせて頭数,_二本足の鶴の数,_一本足の鶴の数),
        '実際の足の数との差と一致したら、
鶴の数、亀の数が決まる'(_鶴と亀合わせて頭数,_実際の足の数との差,_二本足の鶴の数,_一本足の鶴の数,_鶴の数,_亀の数).

二本足と一本足の鶴の数候補を得る(_鶴と亀合わせて頭数,_二本足の鶴の数,_一本足の鶴の数) :-
        between(0,_鶴と亀合わせて頭数,_二本足の鶴の数),
        between(0,_鶴と亀合わせて頭数,_一本足の鶴の数).

'実際の足の数との差と一致したら、
鶴の数、亀の数が決まる'(_鶴と亀合わせて頭数,_実際の足の数との差,_二本足の鶴の数,_一本足の鶴の数,_鶴の数,_亀の数) :-
        _実際の足の数との差 is (4 - 2) * _二本足の鶴の数 + (4 - 1) * _一本足の鶴の数,
        _鶴の数 is _二本足の鶴の数 + _一本足の鶴の数,
        _亀の数 is _鶴と亀合わせて頭数 - _鶴の数.