我有一個6x6數字的矩陣,我正在編寫一個序言代碼,它給出了特定行,列或方塊中的數字。例如:在Prolog中從矩陣生成正方形
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的平方,然後矩陣作爲第二個參數,而方形參數作爲第三個參數。 有沒有人有任何提示?我在想我可能不得不再次使用頭部尾部圖案;得到給定的行/列的前三個數字,然後做三次,但我不知道如何或如果這是可能的和有效的。
任何意見,非常感謝!
無需在第一種情況下使用該模式。 Prolog有一個「nth1/3」謂詞。 –