Prolog 中的 ListsfromList 函数 [英] ListsfromList function in Prolog
本文介绍了Prolog 中的 ListsfromList 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 prolog 中编写了一个谓词,其中我给出了两个参数 listsFromL(X,B)
.X
将是一个在该列表中包含列表的列表,B
将是一个包含来自 X
的列表的新列表.
I writing a predicate in prolog in which I give two parameters listsFromL(X,B)
. X
would be a list with lists within that list and B
would be a new list with the lists from X
.
因此,例如,如果我调用 listsFromL([1,2,[d,a]],X).
返回将是 B = [[d,a]].
并且如果我要向 X
添加更多列表,我会得到一个更长的列表,其中列表为 X
.
So, for example, if I would call listsFromL([1,2,[d,a]],X).
the return would be B = [[d,a]].
and if I would add more lists to X
I would get a longer list with lists as X
.
我该怎么做?
推荐答案
listsFromList([],[]) .
listsFromList([HEAD|SOURCEs],[HEAD|TARGETs])
:-
is_list(HEAD) ,
listsFromList(SOURCEs,TARGETs)
.
listsFromList([HEAD|SOURCEs],TARGETs)
:-
\+ is_list(HEAD) ,
listsFromList(SOURCEs,TARGETs)
.
/*
?- listsFromList([1,2,3,4,[a,b]],X).
X = [[a, b]] ;
false.
?- listsFromList([1,[a,b],2,[c,d],3],X).
X = [[a, b], [c, d]] ;
false.
?- listsFromList([],X).
X = [].
?-
*/
这篇关于Prolog 中的 ListsfromList 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文