Prolog 拆分列表
Prolog Split list
我需要在 Prolog 中创建一个 split/4
函数,我很确定我已经接近了,但是有一个我看不到的错误。该程序将采用一个列表、一个键和两个输出列表(小和大)。如果列表中的元素小于键,则将其放入小,否则将其放入大。
所以我现在拥有的是:
split([H|T], Key, [H|ST], Big) :- H < Key, split(T, Key, ST, Big).
split([H|T], Key, Small, [H|BT]) :- H >= Key, split(T, Key, Small, BT).
我可以假定列表和键已实例化。如果有人能指出我的错误,那就太好了!我想了解我做错了什么。
您唯一缺少的是基本案例。当前,当输入列表为空时,您的谓词无法执行任何操作,这最终会在处理完列表的所有项目后对任何输入发生。
split([], _, [], []).
只需添加这条规则,它就会按预期工作。
我需要在 Prolog 中创建一个 split/4
函数,我很确定我已经接近了,但是有一个我看不到的错误。该程序将采用一个列表、一个键和两个输出列表(小和大)。如果列表中的元素小于键,则将其放入小,否则将其放入大。
所以我现在拥有的是:
split([H|T], Key, [H|ST], Big) :- H < Key, split(T, Key, ST, Big).
split([H|T], Key, Small, [H|BT]) :- H >= Key, split(T, Key, Small, BT).
我可以假定列表和键已实例化。如果有人能指出我的错误,那就太好了!我想了解我做错了什么。
您唯一缺少的是基本案例。当前,当输入列表为空时,您的谓词无法执行任何操作,这最终会在处理完列表的所有项目后对任何输入发生。
split([], _, [], []).
只需添加这条规则,它就会按预期工作。