拆分prolog中的list元素

时间:2016-02-23 14:10:38

标签: prolog dcg

我在分裂序言列表元素中有一个问题。我有一些原子列表。如果原子在我的序言列表中找到,那么它被两个单词分开。
我的代码

list-->[acar]|[avan]|[ajeep]|[abicycle].

%expected answer
?- split([i,have,acar],L2).
L2=[i,have,a,car];

?- split([there,is,avan,and,acar],L2).
L2=[there,is,a,van,and,a,car];

我无法改善。解决这个问题的任何想法。谢谢......

1 个答案:

答案 0 :(得分:1)

参考:

list(car)-->[acar].
list(van)-->[avan].
list(jeep)-->[ajeep].
list(bicycle)-->[abicycle].

split(In,X):-list(W,[L],[]),append(A,[L|T],In),append(A,[a,W|T],X1),split(X1,X),!.
split(L,L).

修改

split_a(X):-list([L],[]),atom_length(L,S),N is S-1,sub_atom(L,1,N,_,X).