2016-11-21 38 views
1

在,我想解決一個定義良好的矩陣的問題有沒有空行或列。我如何防止過度空矩陣或空列或行矩陣操作?

例如基質[[],[]]無效。

當我調用該函數FIRST_COLUMN,如何防止執行它,如果定義如前,我作爲參數發送矩陣是不是有效?

first_column([],[],[]). 
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows). 

回答

1

從技術上說,你的要求可以通過測試列表的結束條件有一個元素,而不是一個空的列表,根據您所提供的規格進行。

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).