このディレクトリの索引
#  出典 :: C/C++の宿題片付けます 140代目 #558
#  [1] 授業単元:プログラミング基礎  
#  [2]  TAR(x,y,z) 
#  ={y (x<=y) } 
#   {TAR(TAR(x-1,y,z),TAR(y-1,z,x),TAR(z-1,x,y) (other)} 
#  上記の計算をするプログラムを組んで、 
#  xyzに指定された数値を代入したときの答えを表示する。 
#   
#  

'_甲 _乙 _丙 に指定された数値を代入したときの答えを表示する' :-
        write('三つの数を空白で区切って入力してください : '),
        get_split_line([' ',','],[_甲,_乙,_丙]),
        たらい回し(_甲,_乙,_丙,_丁),
        writef('答えは%tです。\n',[_丁]).

たらい回し(_甲,_乙,_丙,_乙) :- _甲 =< _乙,!.
たらい回し(_甲-1,_乙,_丙,_丁) :-
        _甲の一 is _甲 - 1,
        たらい回し(_甲の一,_乙,_丙,_丁),!.
たらい回し(_甲,_乙,_丙,_丁) :-
        たらい回し(_甲-1,_乙,_丙,_丁の一),
        たらい回し(_乙-1,_丙,_甲,_丁の二),
        たらい回し(_丙-1,_甲,_乙,_丁の三),
        たらい回し(_丁の一,_丁の二,_丁の三,_丁).



% get_split_lines/3