Prolog 中的 ListsfromList 函数 [英] ListsfromList function in Prolog

查看:44
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆