【发布时间】:2016-01-18 04:22:08
【问题描述】:
我是 Prolog 的新手,我在编程作业的第一部分遇到了问题: 创建一个将三个参数作为输入的谓词拆分。第一个和第三个参数是列表,第二个参数是一个元素。您可以将第一个参数视为输入,将最后两个参数视为输出。该方法计算将列表拆分为元素和列表其余部分的所有可能方式。这是一个运行示例。
?- split([1,2,3,4,5],X,Y).
X = 1,
Y = [2, 3, 4, 5] ;
X = 2,
Y = [1, 3, 4, 5] ;
X = 3,
Y = [1, 2, 4, 5] ;
X = 4,
Y = [1, 2, 3, 5] ;
X = 5,
Y = [1, 2, 3, 4] ;
定义谓词有两条规则。第一条规则简单地获取列表的第一个元素并将其作为第二个参数返回,并将列表的其余部分作为第三个参数返回。第二条规则通过复制结果中列表的第一个元素(即第三个参数)来生成列表,然后将该方法递归地应用于其余元素。
【问题讨论】:
-
又名
select/3具有不同的参数顺序。参看。 complang.tuwien.ac.at/ulrich/iso-prolog/prologue#select -
你想做什么,
split([1,2,3,2,3,4], 2, Y).做什么?