作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在序言中编写了一个谓词,其中给出了两个参数listsFromL(X,B)
。 X
将是一个列表,其中包含该列表中的列表,B
将是一个新列表,其中包含来自 X
的列表。
例如,如果我调用 listsFromL([1,2,[d,a]],X).
,返回结果将为 B = [[d,a ]].
如果我向 X
添加更多列表,我会得到一个更长的列表,其中列表为 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函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64894058/
我是一名优秀的程序员,十分优秀!