获取二次矩阵中的维数

时间:2014-11-23 12:56:38

标签: prolog

我有计算二次矩阵的维度的问题,例如[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).

0 个答案:

没有答案