このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1357191974/400
#  お題:一辺の長さがmの正三角形がある。ひとつの頂点に 
#  長さnの糸がつながっている。まず糸をすべて正三角形に巻きつける。 
#  糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを 
#  巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。 
#  例 
#  m=100, n=200, -> 1466 
# 
# 

'一辺の長さがmの正三角形がある。ひとつの頂点に
長さnの糸がつながっている。まず糸をすべて正三角形に巻きつける。
糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを
巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。'(_糸の長さ,_辺の長さ,_軌跡の長さ) :-
        '糸をすべて正三角形に巻きつける。'(_糸の長さ,_辺の長さ,[],_糸の状態),
        '糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを
巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。'(_糸の状態,0,0,_四捨五入前の軌跡の長さ),
        四捨五入(_四捨五入前の軌跡の長さ,_軌跡の長さ).

'糸をすべて正三角形に巻きつける。'(_糸の長さ,_辺の長さ,L1,[_糸の長さ|L1]) :-
        _糸の長さ =< _辺の長さ,!.
'糸をすべて正三角形に巻きつける。'(_糸の長さ,_辺の長さ,L1,L) :-
        _残りの糸の長さ is _糸の長さ - _辺の長さ,
        '糸をすべて正三角形に巻きつける。'(_残りの糸の長さ,_辺の長さ,[_辺の長さ|L1],L).

'糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを
巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。'([_],_,_,_軌跡の長さ,_軌跡の長さ) :- !.
'糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを
巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。'(_追加できる糸の長さ|R1],_これまでの糸の長さ,_軌跡の長さ_1,_軌跡の長さ) :-
        _アームの長さ is _追加できる糸の長さ + _これまでの糸の長さ,
        _軌跡の長さ_2 is  _アームの長さ * 2 * 3.14 / 3 + _軌跡の長さ_1,
        '糸をピンと張った状態でほどいていき、そのまま逆向きにすべてを
巻きつけた時の糸の先端の軌跡の長さを求める。小数点以下四捨五入。'(R,_アームの長さ,_軌跡の長さ_2,_軌跡の長さ).

四捨五入(_数,_四捨五入した整数) :-
        _四捨五入した整数 is truncate(_数 + 0.5).