How to transpose a matrix in prolog

后端 未结 8 1904
悲&欢浪女
悲&欢浪女 2020-12-06 18:40

How can I transpose a list like [[1,2,3][4,5,6][6,7,8]] to [[1,4,6],[2,7,8],[3,6,9]]?

To depict it: I\'d like to flip the matrix 90 degree

8条回答
  •  春和景丽
    2020-12-06 19:11

    Another approach:

    delete_one_list([], []).
    delete_one_list([[_|L]|LLs], [L|Ls]) :-
      delete_one_list(LLs, Ls).
    
    transpose_helper([], []).
    transpose_helper([[X|_]|Xs], [X|Ys]) :-
      transpose_helper(Xs, Ys).
    
    transpose([[]|_], []).
    transpose(List, [L|Ls]) :-
      transpose_helper(List, L),
      delete_one_list(List, NewList),
      transpose(NewList, Ls).
    

提交回复
热议问题