我是一个班级的学生,我们简要地看几种编程语言,并且必须用其中一些编写小程序。我们这次正在使用Prolog。这是我第一次使用Prolog,我很困惑(我已经习惯了Java或C#)。
我完成了第一个程序,但我们要做的第二个程序"创建一个程序,其中P(X)为真,如果X是一个包含n a'然后是n b&#的列表39; s表示某个整数n"。 (P([a,a,b,b])为真,而P([a,b,b])为假。)
我的想法是:P(X)将检查并确保X是一个列表,并且X是偶数(如果它是一个奇怪的长度,它永远不会是真的)。然后它调用另一个事实检查" check_element"如果它不到列表的一半,它会检查一个,如果超过一半,它会检查b。
这是我的代码:
check_element([], len, count). %Terminate, list is empty
check_element([H|T], len, count) :- count =< len/2, H == a,
count0 is count + 1, check_element(T, len, count0);
count > len/2, H == b,
count0 is count + 1, check_element(T, len, count0).
p(X) :- is_list(X), length(X, len),
mod(len/2) =:= 0, %Makes sure length is even. If odd, auto fail.
check_element(X, len, 1).
我收到以下错误:
算术:`count&#39;不是一个功能
算术:`mod(len / 2)&#39;不是一个功能
有人可以帮我弄清楚我做错了吗?