我正试图让它如此预测不会删除我拥有的任何重复对象,我想我知道其中的逻辑,但我似乎无法让它工作。我一直试图调用以前的谓词,当找到重复项时按另一项排序,但是当我尝试这个时我会收到错误。
process(3, X) :-
nl,
sort(X, Q),
show_records(Q),
nl, nl, menu(Q).
process(4, X) :-
nl,
predsort(sortName,X,Q),
show_records(Q),
nl, nl, menu(Q).
sortName(T, [_,E,_], [_,R,_]) :-
(compare(T, E, R)
->process(3, X)
).
process(5, X) :-
nl,
predsort(sortGrade,X,Q),
show_records(Q),
nl, nl, menu(Q).
sortGrade(T, [_,_,E], [_,_,R]) :-
(compare(T, E, R)
->process(4,X)
).
进程3按子列表中的第一个值排序,4表示第二个值,5表示最后一个值。我试图让它在5找到重复的地方,它将转到4,如果需要,从4到3。
答案 0 :(得分:0)
无论如何,即使你发现自己是解决方案,我也会回答,因为我不清楚ditto解决方案是否与我的匹配。
我的意思是:前一段时间我写了我自己的predmsort / 3(以明显模式出现在sort / msort的术语中),原因与您报告的完全相同。
在我意识到我的问题有一个多更好的解决方案之前,时间过去了:
只是从不返回=。
就是这么简单......