Prolog - Return 矩阵的第 n 列

Prolog - Return the n-th column of a matrix

我正在尝试编写谓词 columnN/3,其中 return 是矩阵的 "nth" 元素。

示例:

columnN([[1,2],[3,4],[5,6]], 1, CJ). 
CJ = [1,3,5];
No

在社区的帮助下,我能够尝试使用谓词 rowN/3 来获取列。

这是我目前拥有的:

rowN([H|_],1,H):-!.
rowN([_|T],I,X) :-
    I1 is I-1,
    rowN(T,I1,X).

columnN([],[],[]).
columnN([H|T], I, [R|X]):-
   rowN(H, I, R), 
columnN(T,I,X).

我只是弄错了。 rowN/3 谓词工作得很好,rowI([1,2,3,4], 2, RI). 将 return 2,所以我想使用它,我可以输入每一行,获取值并将其附加到列表. (我试图用 columnN 谓词来做)。

我的代码怎么错了?提前谢谢你。

感谢@lurker 上面的评论,此代码有效:

rowN([H|_],1,H):-!.
rowN([_|T],I,X) :-
    I1 is I-1,
    rowN(T,I1,X).

columnN([],_,[]).
columnN([H|T], I, [R|X]):-
   rowN(H, I, R), 
columnN(T,I,X).