将列表拆分为两部分,其中第一部分的长度为
答
从考虑描述你想要的结果开始。您可以将分解为Start
和End
,并且Start
的长度应为Length
。
split(List, Length, Start, End) :-
length(Start, Length),
append(Start, End, List).
作为注,length
和append
订单将使效率的差异。如果append
被放在第一位,那么追加将统一Start
与List
的第一个零元素,并将在长度检查上失败,然后将统一Start
与第一个元素,然后前两个,然后三个,依此类推,直到它到达前缀为List
,长度为Length
。您可以首先将length
目标放在第一位,这样可以避免所有这些明显的死胡同,这将以一个正确大小的列表开始。
使用长度/ 2并追加/ 3 – CapelliC
优雅! (我参考之前的评论)。递归解决方案很好,但使用长度和附加方式更容易。 –