temperature(thessaloniki,january,24,1).
temperature(thessaloniki,january,25,-2).
temperature(katerini,january,24,3).
temperature(loutsa,feb,25,1).
temp([],[],[]).
temp([H|T],L2,L3) :-
temp(T,L4,L5),
temperature(H,january,_,Te),
Te>0,
append([H],L4,L2),
L3=L5.
temp([H|T],L2,L3) :-
temp(T,L4,L5),
temperature(H,january,25,Te),
Te<0,
append([H],L5,L3),
L2=L4.
temp([H|T],L2,L3) :-
temp(T,L4,L5),
L2=L4,
L3=L5.
我们有温度和日期的城镇。我们需要将它们添加到正确的列表中。我认为规则是正确的,但是当我使用 TkEclipse 运行它时,我得到了这个:
?- temp([thessaloniki, thessaloniki, katerini, loutsa], L2, L3).
L2 = [thessaloniki, thessaloniki, katerini]
L3 = []
并且正如我在程序的跟踪器中看到的那样,只需要前temperature(thessaloniki,january,24,1).
2 次而不是第二次 temperature(thessaloniki,january,25,-2).
如果将第二次的名称更改为 thessaloniki2 运行正常,但练习给出了相同的名称。