【发布时间】:2017-10-08 12:49:37
【问题描述】:
我有一个由 6x6 数字组成的矩阵,我正在编写一个序言代码,它可以为我提供特定行、列或正方形中的数字。例如:
0n 1n 2n 3n 4n 5n
0n [[1,2,3,4,5,6]
1n [2,3,4,5,6,1]
2n [3,4,5,6,1,2]
3n [4,5,6,1,2,3]
4n [5,6,1,2,3,4]
5n [6,1,2,3,4,5]]
我已经有行和列的代码,类似于:
row(1,[A|_],A).
row(Y,[_|B],X) :-
Y-1 is Y1,
row(Y1,B,X).
但现在我被困在如何生成 3x3 正方形上。我想使用坐标,所以第一个参数应该类似于 (1,3),它将给出第 1n 行和第 3n 列的平方,然后将矩阵作为第二个参数,将正方形中的数字作为第三个参数。 有没有人有任何提示?我在想我可能不得不再次使用头尾模式;获取给定行/列的前三个数字,然后执行此操作 3 次,但我不知道如何或是否可行且有效。
非常感谢任何cmets!
【问题讨论】:
-
在第一种情况下也不需要使用该模式。 Prolog 有一个
nth1/3谓词。