如何在prolog中转置多维(3D)矩阵

时间:2016-05-03 10:34:12

标签: matrix prolog transpose

我想在Prolog中转置矩阵。我是Prolog的新手,到目前为止我知道如何为二维矩阵

做到这一点
transpose([], []).
transpose([H|T], Ts) :- transpose(H, [H|T], Ts).

transpose([], _, []).
transpose([_|T1], L, [H1|T2]) :- lfr(L, H1, M), transpose(T1, M, T2).

lfr([], [], []).
lfr([[H3|T4]|R], [H3|T5], [T4|O]) :- lfr(R, T5, O).

但不是更多。我在谷歌上找不到任何东西,所以任何提示或提示将不胜感激。 例如:

输入[[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]。

输出[[[1,4],[7,10]],[[2,5],[8,11]],[[3,6],[9,12]]]。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您有2D矩阵的转置谓词,则可以按以下步骤完成3D矩阵的转置:

  1. 转置3D矩阵的每个2D矩阵元素(您可以使用matrix_3d_transposed(Matrix, TransMatrix) :- maplist(matrix_2d_transposed, Matrix, TMatrices), matrix_2d_transposed(TMatrices, TransMatrix).
  2. 将生成的3D矩阵转换为列表的2D矩阵。
  3. 在Prolog:

          ...
          return response.text();
    
        }).then(function(body) {
          res.send(body);
          ...
    
相关问题