Prolog - 返回矩阵的第n列

时间:2015-12-09 23:10:58

标签: matrix prolog logic

我正在尝试编写谓词columnN/3,它返回" 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).将返回2,所以我在考虑使用它,我可以输入每一行,获取值并将其附加到列表中。 (我尝试使用columnN谓词)。

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

1 个答案:

答案 0 :(得分:2)

感谢@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).