在我想要解决的问题中,定义良好的矩阵没有空行或列。
例如矩阵[[],[]]
无效。
当我调用函数first_column时,如果我作为参数发送的矩阵之前定义的无效,如何阻止执行它?
first_column([],[],[]).
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows).
答案 0 :(得分:1)
从技术上讲,您可以通过根据您提供的规范测试包含一个元素的列表的结束条件而不是空列表来完成您所要求的内容。
first_column([[H|T]],[H],[T]).
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows).
然而,除了您的规格之外,我怀疑您还需要转移"你最后的Col,Rows到end变量,比如:
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).