- 580 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 21:11:17 ]
- >>579
% Prolog (その一) 金種計算(0,_,[]) :- !. 金種計算(_おつり残高,[],[]) :- _おつり残高 > 0,write('レジ不足です\n'),!,fail. 金種計算(_おつり残高,[_金種|R1],[(_金種,B)|R2]) :- _おつり残高 >= _金種, 金種が足りる(_おつり残高,_金種,N,B), _残り金額 is _おつり残高 mod _金種, 金種計算(_残り金額,R1,R2). 金種計算(_おつり残高,[_金種|R1],[(_金種,N)|R2]) :- _おつり残高 >= _金種, 金種が足りない(_おつり残高,_金種,N,B), _残り金額 is _おつり残高 - _金種 * N, 金種計算(_残り金額,R1,R2). 金種計算(_おつり残高,[_金種|R1],R2) :- _おつり残高 >= _金種, \+(レジの中(_金種,N)), 金種計算(_おつり残高,R1,R2). 金種計算(_おつり残高,[_金種|R1],R2) :- _おつり残高 < _金種, 金種計算(_おつり残高,R1,R2). 金種が足りる(_おつり残高,_金種,N,B) :- レジの中(_金種,N), B is _おつり残高 // _金種, N >= B,!. 金種が足りない(_おつり残高,_金種,N,B) :- レジの中(_金種,N), B is _おつり残高 // _金種, N < B,!.
|

|