【发布时间】:2015-01-31 12:02:08
【问题描述】:
我正在解决一个问题,即在 Prolog 中仅展平一个列表级别。例如,[[1],[2,3]] 会变成[1,2,3],但[[1,[2]],3] 只会变平为[1,[2],3]。我在网站上查看了其他一些问题,但没有人能彻底回答这个问题,我就是无法让我的代码在我的所有测试用例上运行。
更新:代码有效!这是我最终得到的答案:
my_flatten([], []).
my_flatten([A|B],L) :- is_list(A), my_flatten(B,B1), !, append(A,B1,L).
my_flatten([A|B],[A|B1]) :- my_flatten(B,B1).
【问题讨论】:
-
最好是use DCGs。
-
您所说的“只工作了大约一半的时间”是什么意思?
-
我的意思是我提出的测试用例不起作用,但其他人可以。对于一些——比如我在帖子中展示的那些,它只是输出空列表。
-
我无法用“输出”
[]复制示例