【问题标题】:Prolog - Matrix to listProlog - 要列出的矩阵
【发布时间】:2014-04-01 23:21:09
【问题描述】:

这里有一个问题是将列表(任意长度)转换为矩阵(请参阅底部的链接),但我想做相反的事情,将矩阵递归地转换为列表。

Matrix = [[a,b,c],[d,e,f]]

定义谓词:

matrixToList(MyMatrix,NewList)

在哪里NewList = [a,b,c,d,e,f].

有人可以帮忙吗?
谢谢。

Turn a list into a matrix

【问题讨论】:

  • 你可以flatten/2列表吗?
  • 我想知道,现在所有的 Prolog 课程是否都在教授和推广使用驼峰式大小写作为 Prolog 函子名称?正如@aBathologist 建议的那样,matrix_to_list(MyMatrix, NewList) :- flatten(MyMatrix, NewList). 将是最干净的实现。
  • @mbratch 我不认为这是故意的,很可能是 Java 编程的习惯。如果您遵循此处很好地描述的编码约定:arxiv.org/abs/0911.2899,那么它也将是My_Matrix,甚至是My_matrix
  • @aBathologist:使用flatten/2 绝对是个坏主意:整数矩阵矩阵因此会被展平为整数列表,而不是整数矩阵列表。

标签: list recursion matrix prolog


【解决方案1】:

这是我解决同样问题的代码,但是是的,你也可以使用 flatten

getAllElements([],[]).
getAllElements([H|T], ElementsList) :- getAllElements(T, NewElementsList),
                                       append(NewElementsList, H, ElementsList).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多