[英]Write a function that takes two lists, and returns True if the first list is the reverse of the same elements in the second list, and False otherwise
[英]Prolog: take a list of two elements, return true if and only if the first element is same as second
我是一名新手Prolog程序员,对于一项作业,我必须拥有一个基本程序,该程序必须且仅当list X是两个元素的列表且第一个元素与第二个元素相同时才能成功。
从我的序言的角度来看,程序似乎很小,所以我输入了以下内容:
firstPair(x,x).
当我在swipl下运行它时,我将其作为输出:
Syntax error: Operator expected
还有什么需要做的吗? 我以为如果我用firstPair(1,2)执行此操作。 这就是知道它为假所需要的全部。
首先,小写的x
不是变量,它是一个atom 。 使x
大写可解决此问题:
firstPair(X,X).
其次,您不要在解释器中键入此内容。 而是将其写入文件firstPair.pl
,然后将该文件读取到Prolog中。
在命令提示符下,键入:
['firstPair.pl'].
按回车。 现在,您可以使用firstPair/2
规则。
最后,由于作业讨论的是列表,所以我认为讲师希望您编写firstPair/1
,而不是firstPair/2
:
firstPair([X,X]).
您的程序/事实
firstPair(X,X).
如果给定的两个参数可以统一 (无论它们是列表,原子,变量等),则将成功。为了满足您的规范,
且仅当list X是两个元素的列表且第一个元素与第二个元素相同时,程序才会成功。
您需要这样的东西:
list_of_two_elements( [X,X] ).
如果传递的单个术语是(或可以与之统一)两个元素的列表,或者可以通过统一使两个元素相同,那么这将成功。 例如,以下所有都会成功:
list_of_two_elements( X ).
成功后,变量X
将与包含相同未绑定变量的两个元素的列表统一,例如[V1,V1]
。
list_of_two_elements( [1,1] ).
list_of-two_elements( [1,X] ).
(成功后,此处的X
将与整数1
统一。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.