基于prolog中条件原子的分裂列表

时间:2016-01-07 17:46:59

标签: prolog swi-prolog

我有一个清单

X = [-n,-b,-s,hello,world]

我需要的输出

Z1 = [-n,-b,-s]
Z2 = [hello,world]

如果字符串以 - 开头,它应该是Z1列表的一部分,否则是Z2列表的一部分。

有人可以为我提供一些基本的直觉来实现吗?

1 个答案:

答案 0 :(得分:1)

与图书馆(申请)和图书馆(yall)立即:

?- partition([E]>>(E = - _), [-n,-b,-s,hello,world], N, P).
N = [-n, -b, -s],
P = [hello, world].

在旧的,简单的Prolog中实施,访问列表和' cons'所需列表中的元素:

divide_dashed([], [], []).
divide_dashed([-E|R], [-E|Ds], Ps) :- !, divide_dashed(R, Ds, Ps).
divide_dashed([E|R], Ds, [E|Ps]) :- divide_dashed(R, Ds, Ps).