Prolog Second列表中的最小值

时间:2015-11-29 04:07:53

标签: prolog logic

我是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).

0 个答案:

没有答案