1
我是Prolog的新手,并且遇到了这种练习练习。该问题要求定义一个谓词Prolog列表的交错元素
zipper([[List1,List2]], Zippered). //this is two lists within one list.
该谓词应该将List1的元素与List2的元素交错。
例如,
zipper([[1,3,5,7], [2,4,6,8]], Zippered) -> Zippered = [1,2,3,4,5,6,7,8].
zipper([[1,3,5], [2,4,6,7,8]], Zippered) -> Zippered = [1,2,3,4,5,6,7,8].
到目前为止,我有两个不同的列表中选择一个解决方案:
zipper ([],[],Z).
zipper([X],[],[X]).
zipper([],[Y],[Y]).
zipper([X|List1],[Y|List2],[X,Y|List]) :- zipper(List1,List2,List).
我不知道我怎么能对一个列表翻译这个解决方案。任何关于我可以开始的建议都会非常有帮助!
这似乎很容易,因为你已经把所有的成分。您只需要以正确的方式调用谓词:'zipper([[List1,List2]],Zippered): - 拉链(List1,List2,Zippered).'注意'[[List1,List2]]'是绝对的**不是**代表一对清单的好方法。要么使用单独的参数,要么使用习惯的'( - )/ 2'运算符来表示对:'List1-List2'。 – mat