list - 将数字列表拆分为对列表列表

标签 list prolog

假设我有一个列表[1, 2, 3, 4, 5, 6, 7, 8],我想要做的是输出[[1, 2], [3,4], [5,6], [7,8]].

这是我目前的尝试:

perms([X,Y], [X,Y], _).
perms(L, R, N) :-
   N > 1,
   N1 is N/2,
   split(L, X1, X2),
   perms(X1, R1, N1),
   perms(X2, R2, N1),
   append([R1], [R2], R).

split(L, R1, R2) :-
   append(R1, R2, L),
   length(L, N),
   N1 is N/2,
   length(R1, N1),
   length(R2, N1).

假设 N 是我将手动输入的列表的长度。

最佳答案

答案似乎太简单了,我很确定我没有理解您的要求。无论如何,你可以试试

pairs([X,Y],[[X,Y]]).
pairs([X,Y|R],[[X,Y]|T]) :- pairs(R, T).

关于list - 将数字列表拆分为对列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947208/

相关文章:

prolog - 对 Prolog 中的事实进行排序

Prolog:编译或解释语言或两者兼而有之?

string - 序言术语到字符串

list - 如何从两个已经排序的列表中创建一个排序列表

Prolog,从有序列表重建 BST 树

python - python中的映射方法

java - java中按子列表中的属性对列表进行排序

java - JComboBox 在 Java 中显示空白项

c++ - BFS 与 Dijkstra 的运行时间,值没有意义

java - Mockito When().thenReturn 返回一个迭代器