我是新來的Prolog和我有麻煩搞清楚如何找到包含數字和字母列表中的第二個最低尋找第二最小值。當它包含一個字母時,它應該顯示一個錯誤,當它有一個數字時,它應該顯示一個錯誤。到目前爲止,我有這個,但我不知道如何開始我的編碼具有信件...SWI-Prolog的:在列表中
secondMin([_]) :-
print("ERROR: List has fewer than two unique elements."),
!.
secondMin(List, M2) :-
min_list(List, M1),
delete(List, M1, List1),
min_list(List1, M2).
輸出應該是這樣的:
?- secondMin([17,29,11,62,37,53], M2).
M2 = 17
?- secondMin([512], M2).
ERROR: List has fewer than two unique elements.
?- secondMin([7,5.2,3,6,-3.6,9,-2], M2).
M2 = -2
?- secondMin([12,2,b,7], M2).
ERROR: "b" is not a number.
?- secondMin([3,3,3], M2).
ERROR: List has fewer than two unique elements.
如果它所具有既不是一個整數,也不是字母元素?例如'abc'或'1.23'? – lurker
對不起,我不是故意說整數只是任何唯一的數字 – tadashi
「第二最小」聽起來很好定義。然而,secondMin([1,1,2,3],M)'現在是'M = 1'還是'M = 2'? – false