【问题标题】:Lists conversion列出转换
【发布时间】:2011-10-03 07:10:33
【问题描述】:

我是 prolog 的新手,我正在尝试扁平化一个列表,如下所示:

X = [[[0,0,1],[1,0,2]],[[0,1,3],[0,2,2]],[[0,3,5],[0,4,4]],[[0,5,4],[0,6,5]]]

想要的输出是:

X = [[0,0,1],[1,0,2],[0,1,3],[0,2,2],[0,3,5],[0,4,4],[0,5,4],[0,6,5]]

我该怎么做?

【问题讨论】:

    标签: prolog flatten gnu-prolog


    【解决方案1】:

    使用递归:-)

    myflatten([], []).
    myflatten([[A, B]|T], [A|[B|FlattenedT]]) :- myflatten(T, FlattenedT).
    

    然后查询:

    ?- myflatten([[[0,0,1],[1,0,2]],[[0,1,3],[0,2,2]],[[0,3, 5],[0,4,4]],[[0,5,4],[0,6,5]]], X)。

    【讨论】:

    • 这里有一个简单的经验法则:每当您在程序中看到|[,您都可以将其替换为,。因此,myflatten 头部的第二个参数可以改为 [A,B|FlattenedT] 代替 [A|[B|FlattenedT]]
    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2013-11-27
    • 2014-03-07
    • 1970-01-01
    相关资源
    最近更新 更多