我有一个整数列表,键,并希望将其拆分为两个列表ListOfReqKeys和ListOfRewKeys,如标题中所述。
Keys =[1, 1, 3, 9, 1, 15]
ReqK = 3
ListOfReqKeys = [1, 1, 3], ListOfRewKeys = [9, 1, 15]
这两个列表的长度是已知的,分别是ReqK和RewK。
append(ListOfReqKeys, ListOfRewKeys, Keys),
atom_codes(At, ListOfReqKeys),
atom_number(At, ReqK).
是否有内置谓词或更快的方法?
答案 0 :(得分:2)
没有分裂。只有附加。
将长度N
的列表拆分为长度为K
的前缀,必然会留下长度为N-K
的后缀 - 无需衡量/ 创建 1 就是这样。它只是 所以,通过构造。
因此,
split( K, L, A, B):-
append( A, B, L),
length(A, K).
简单,不是。但等等,可以改进吗?没有添加或删除任何东西?我们还能用它做什么呢?
1 提示:你有没有试过length(X, 2)
? length(X, N)
子>