我是prolog的新手,我正在寻找一些建议。我正在构建一个使用签名secondMin(list,Min2)定义谓词secondMin / 2的代码,其中Min2是某些数字列表中的第二个最低值元素。如果列表少于两个元素,那么您的谓词应显示以下内容,"错误:列表少于两个元素。"如果list的另一个elemenets不是数字,那么你的谓词应该显示以下" ERROR"元素不是数字"。 例子:
secondMin([17,29,11,62], Min2).
Min2 = 17
secondMin([512], Min2).
Error: List has fewer than two elements.
secondmin([12,2,b,7], Min).
Error: "b" is not a number.
我实现了一个代码,该代码在列表中找到最小的值,我只需要帮助来了解如何实现第二个smallets值以及如何检查错误。
x = integer.
l = integer*.
minlist(l,x).
min(x,x,x).
min(X,Y,Min) :-
X < Y,!,
Min = X.
min(X,Y,Min) :-
Min = Y.
minlist([],0).
minlist([X],X).
minlist([X,Y|List],Min) :-
min(X,Y,Min1),
minlist([Min1|List],Min).