将列表拆分为两个,其中给出了第一个长度

时间:2017-04-17 13:07:57

标签: prolog

我想创建一个函数,我们将列表分成2,给定第一个的长度。我真的卡在它的开头。

{{1}}

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先考虑尝试描述您想要的结果。您可以将List分为StartEndStart的长度应为Length

split(List, Length, Start, End) :-
    length(Start, Length),
    append(Start, End, List).

请注意,lengthappend的顺序会对效率产生影响。如果首先放置append,那么追加将StartList的前0个元素统一,并且在长度检查中失败,然后将Start与第一个元素统一,然后是前两个,然后是三个,依此类推,直到它获得长度为List的前缀Length。您可以先将length目标放在首位,以避开所有这些明显的死角,这将使您获得正确大小的列表。