[英]Prolog : Comparing numbers in a list
我有這個數字塊:
num(1).
num(-2).
num(5).
num(50).
num(-3).
num(87).
我應該做一個給定數字的函數,應該檢查該數字是否為上面給出的數字“列表”中的最小數字。
例如:
not_smallest(5).
true.
not_smallest(X).
X = 1 ;
X = -2 ;
X = 5 ;
X = 50 ;
X = 87.
我認為是用上面的數字塊制作一個列表,並將給定的數字與列表中的所有元素進行比較。 但是每當我嘗試加載.pl doc時,都會出現此錯誤:
Syntax error: Operator expected
我到目前為止所做的是:
%increments the index of a List
incr(X, X1) :-
X1 is X + 1.
%L-list containing "list" of numbers, N - elements of that "list",
I-index , C-number X is going to be compared to, X- number to compare.
nao_menor(X) :-
findall(N, num(N), L),
num(X),
I is 0,
nth0(I, L, C),
X =< C,
incr(I,I).
開始了:
not_smallest(N) :-
num(N),
\+ \+ (num(M), M < N).
OP給出的示例查詢:
?- not_smallest(5).
true.
?- not_smallest(X).
X = 1
; X = -2
; X = 5
; X = 50
; X = 87.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.