我是Prolog新手,我的代码遇到了一些麻烦。
我正在尝试使用输入的元素将列表分为两部分。该列表将拆分为一个左侧列表,该列表将在元素之前包含所有内容,而右侧列表则将在元素之后包含所有内容,包括元素
我知道split(List, Split, Left, Right) :- append(Left, [Split | Right], List),
带有回报
?- split( [3,5,6,8,10,4,5], 10, Left, Right).
Left = [3, 5, 6, 8],
Right = [4, 5]
但是,我想要的结果是:
?-split( [3,5,6,8,10,4,5], 10, Left, Right).
Left = [3,5,6,8]
Right = [**10**,4,5]
我尝试使用附加项将“ 10”添加到“权限列表”的开头,但是它返回false,我不知道为什么。这是我尝试过的代码:
split(List, Split, Left, Right) :-
append(Left, [Split | RightTemp], List),
append(Split, RightTemp, Right).
答案 0 :(得分:1)
我想您会惊讶于解决方案的简单性。 :)
split(List, Split, Left, [Split|Right]) :-
append(Left, [Split|Right], List).