Я новичок в 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