如何做prolog中的第二最小值

时间:2017-07-19 04:58:17

标签: prolog

我需要帮助才能在prolog中解决这个问题,

  

使用签名secondMin定义谓词secondMin / 2(List,   Min2)其中Min2是某些中第二低的唯一值元素   列表,列表。如果列表中包含的元素少于两个,   那么你的谓词应该显示以下内容,“错误:列表有   少于两个唯一元素。“如果List的另外一个元素不是   数字,那么你的谓词应该为第一个显示以下内容   遇到一个非数字元素,“ERROR:”元素“不是一个   number。“,其中element是非数字元素的值。

当我写这篇文章时,在polog中写道:

secondMin([512], M2).

我必须收到这个:

ERROR: List has fewer than two unique elements.

但在我的代码中收到此

Unknown message: 'List has fewer than two unique elements'

必须是错误而不是未知消息

这就是我所拥有的

%4) Second Minimum
secondMin(L, M) :-
    (   ground(L)
    ->  (   is_list(L),
            maplist(number, L)
        ->  (   sort(L, [_,Second|_])
            ->  M = Second
            ;   throw('List has fewer than two unique elements')
            )
        ;   throw('"b" is not a number')
        )
    ;   throw(error(instantiation_error, _))
    ).

0 个答案:

没有答案