我想创建一个函数,我们将列表分成2,给定第一个的长度。我真的卡在它的开头。
{{1}}
有什么想法吗?
答案 0 :(得分:3)
首先考虑尝试描述您想要的结果。您可以将List
分为Start
和End
,Start
的长度应为Length
。
split(List, Length, Start, End) :-
length(Start, Length),
append(Start, End, List).
请注意,length
和append
的顺序会对效率产生影响。如果首先放置append
,那么追加将Start
与List
的前0个元素统一,并且在长度检查中失败,然后将Start
与第一个元素统一,然后是前两个,然后是三个,依此类推,直到它获得长度为List
的前缀Length
。您可以先将length
目标放在首位,以避开所有这些明显的死角,这将使您获得正确大小的列表。