Matrix 如何防止对空矩阵或具有空列或空行的矩阵进行操作?
在我要解决的问题中,定义良好的矩阵没有空行或空列 例如,矩阵Matrix 如何防止对空矩阵或具有空列或空行的矩阵进行操作?,matrix,prolog,Matrix,Prolog,在我要解决的问题中,定义良好的矩阵没有空行或空列 例如,矩阵[[],[]]无效 当我调用函数first_column时,如果我作为参数发送的矩阵不是以前定义的有效矩阵,我如何防止执行它 first_column([],[],[]). first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows). 从技术上讲,您所要求的可以通过测试一个元素列表的结束条件来完成,而不是根据您给出的规范测试一个空列表 first_
[[],[]]
无效
当我调用函数first_column时,如果我作为参数发送的矩阵不是以前定义的有效矩阵,我如何防止执行它
first_column([],[],[]).
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows).
从技术上讲,您所要求的可以通过测试一个元素列表的结束条件来完成,而不是根据您给出的规范测试一个空列表
first_column([[H|T]],[H],[T]).
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows).
但是,除了您的规范之外,我怀疑您还需要“传输”最终列、行到结束变量,类似于:
first_column([[H|T]],C,R,[H|C],[T|R]).
first_column([[H|T]|Tail],[H|C],[T|R],Col,Rows):-
first_column(Tail,C,R,Col,Rows).
修改后的谓词将使用初始条件调用,如
first_column(List,[],[],Col,Rows).