簡體   English   中英

Prolog:比較列表中的數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM