私は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の2乗を与え、次に行列を2番目に、3番目の引数として正方形の数字を与えます。 誰にもヒントはありますか?私は再び頭の尾のパターンで作業しなければならないかもしれないと思っていた。与えられた行/列の最初の3つの数値を取得してから、これを3回実行しますが、これが可能で効果的かどうか、またはわかりません。
すべてのコメントをいただければ幸いです!
最初のケースでもそのパターンで作業する必要はありません。 Prologには 'nth1/3'述語があります。 –