【发布时间】:2014-10-18 11:04:43
【问题描述】:
我需要过滤列表 [#,d,e,#,f,g] 以便得到 [[d,e],[f,g]] 的输出,
每次遇到“#”时,我都会在创建新列表时卡住,有没有办法做到这一点?
我试过下面的代码,
filterL([],List) :-[].
filterL([Head|Tail],X) :-
( Head \='#'->
append(X,Head,List),
filterL(Tail,List)
; filterL(Tail,X)
).
【问题讨论】:
-
%是注释,因此请使用['%',d,e,'%',f,g]之类的引号 -
... 否则不清楚你的程序是什么意思。第一个子句中的
List没有任何意义。您可能想要一个 arity 3 而不是 2 的谓词。Prolog 中没有 return 语句。 -
@false 它应该只返回一个空列表。
-
所以
[],[#],[#,#],[#,#,#]...都给[]? -
@false 是的,如果输入是[#,a,b,#,#,c,d] 那么它应该给出[[a,b],[c,d]]。跨度>
标签: list prolog prolog-dif