【发布时间】:2015-10-16 18:16:42
【问题描述】:
我有这个数字块:
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 文档时,我都会收到此错误:
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).
【问题讨论】:
-
%字符指定注释行(不能有换行符),因此您应该在'I-index....'行的开头添加 % 或将这两行放在一个中 -
您的
nao_menor/1程序也不会像您预期的那样工作。 (例如incr(I,I)总是会失败) -
我现在刚刚添加了 % 来指定变量是什么,它不在原始代码中,但谢谢你的提醒。
-
为什么incr(I,I)总是失败?
-
incr(I,I)是什么意思?
标签: list prolog compare comparison