在 Prolog 中旋转矩阵

Jar*_*vis 5 list matrix prolog

如何在 Prolog 中围绕其中心点旋转 4 x 4 矩阵?在 4 x 4 矩阵的情况下,我可以简单地重新排列元素,但是对于像 N x N 这样的一般情况如何做到这一点?

rep*_*eat 4

你想要的不完全是矩阵转置......但几乎!

:- use_module(库(clpfd) )。

矩阵旋转(Xss,Zss):-
   转置(Xss,Yss),
   映射列表反向,Yss,Zss)。

示例查询:

?- 矩阵旋转([[ a1 , a2 , a3 , a4 ],
                   [b1,b2,b3,b4],
                   [c1,c2,c3,c4]],Xss)。
Xss = [[c1,b1, a1 ],
       [c2,b2, a2 ],
       [c3,b3,a3 ],
       [c4,b4,a4 ]]。

  • @鲍里斯。它确实值得!运行时不是我主要关心的问题:“*过早的优化是根源......*” (2认同)
  • @鲍里斯。很公平。我不是有意要光顾你的!相反,将我的评论视为对自己的诚实建议:毕竟,我是一个过早的恢复中的优化成瘾者:) (2认同)
  • 我并没有感到受到光顾。正如我试图指出的,这与运行时无关,而是与问题定义有关。看来我将被迫自己写一个答案:) (2认同)