【发布时间】:2015-12-07 20:12:15
【问题描述】:
考虑到矩阵是行列表,如何检查我的矩阵是否真的是矩阵。
我需要写一个谓词size(M, Row, Col)。
如果不是矩阵,它应该失败。
如果是矩阵,应该计算行数和列数。
带有预期答案的示例查询:
?- size([[1,2],[3,4],[5,6]], Rows, Cols).
Rows = 3, Cols = 2.
?- size([[1,2],[3,4,5]], Rows, Cols).
no
我已经编写了下一个代码,其中我只是简单地获取了行数和列数,但我不知道如何比较每一行。如果行的长度不同,那么它应该返回“no”并且不打印行数和列数。
代码:
size([], 0, 0).
size(M, R, C) :-
length(L, R).
size([H|T], R, N) :-
length(H, N),
!.
【问题讨论】:
-
是的,所以我想我这样做的原因
size(M, R, C) :- length(L, R).因为我需要获取行的长度(因为每个列表都是一行)。正如你所说,我尝试实现same length,但我不知道如何比较每个内部列表并在它们不同时退出。