이것은 8 가지 다른 동전 값으로 동전을 계산하는 통화 시스템입니다. 예 : 1 센트, 2 센트, 4 센트, 33 센트 등 ... 동전 중 하나에 '5'값이 있어야합니다. 그래서이 프로그램은 동전의 다른 7 가지 가치가 가져야 만하는 다른 개인적인 가치와 각 가치에 대해 얼마나 많은 동전이 1에서 99 센트 사이인지를 결정하려고합니다.Prolog를 위해 동전 카운터 통화 프로그램에 포함될 값을 어떻게 포함시킬 수 있습니까?
내 질문은, 프로그램에 수동으로 '5'를 삽입 할 필요없이 코드를 작성하는 방법이 있는지의 여부입니다 (예 : 값 = [_, _, _, _, _, _, _) , _] 또는 값 = [_, 5, _, _, _, _, _])? 어떤 도움에 감사드립니다
questionSix(Values, Coins) :-
init_vars(Values, Coins),
coin_cons(Values, Coins, Pockets),
clever_cons(Values, Coins),
Min #= sum(Coins),
minimize((labeling(Values), labeling(Coins), check(Pockets)), Min).
init_vars(Values, Coins) :-
length(Values, 8),
Values = [_, _, _, 5, _, _, _, _],
Values :: 1..99,
increasing(Values),
length(Coins, 8),
Coins :: 0..99.
increasing(List) :-
(fromto(List, [This, Next | Rest], [Next | Rest], [_])
do
This #< Next
).
clever_cons(Values, Coins) :-
(fromto(Values, [V1 | NV], NV, []),
fromto(Coins, [N1 | NN], NN, [])
do
(NV = [V2 | _]
-> N1*V1 #< V2;
N1*V1 #< 100
)
).
: 그래서 여기에 하나 개 이상의 솔루션 ...
여기에 코드 'S이 있어야합니다. 고맙습니다!
어커런스 행은 어디에 넣어야합니까? – user3390252
@ user3390252'Values = [_, _, _, 5, _, _, _, _] 대신'occurrences (5, Values, 1)'를 넣으십시오. 프로그램 시작 부분에': - lib (ic_global) .'을 추가하여'ic_global'을 포함하는 것을 잊지 마십시오. –
그래서 나는 프로그램을 돌렸다. 그러나 나는 8과 같은 동전을 더 넣습니다. 정말 느립니다. 코드 속도를 높이는 또 다른 방법이 있습니까? – user3390252