我有计算二次矩阵的维度的问题,例如[3x3]。
当我运行时dim([[1,2],[3,4]], D).
应该返回D=[1,4]
。
但是我得到一个错误,RowIndex是单例...但它是在dim函数的第一行中定义的...那里 - > dim(M,D):-dim(M,0,[],D).
和开头的RowIndex等于0,这是带累加器的函数的第二个参数。
能不能看一下并给我一些建议?提前谢谢。
:- use_module(library(lists)).
getElement(L,Index,Element):-
length(L,D),
( D>Index -> getElement(L,Index,Element,0)
; !,fail
).
getElement([H|L],Index,Element,Current):-
( Index =:=Current -> Element is H
; Current1 is Current + 1,
getElement(L,Index,Element,Current1)
).
dim(M,D):-
dim(M,0,[],D).
dim([],_,Acc,Acc).
dim([H|M],RowIndex,Acc,D):-
getElement(H,RowIndex,Element),
append(Acc,[Element],Acc1),
RowIndex1 is RowIndex + 1,
dim(M,RowIndex1,Acc1,D).