2016-11-21 11 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]],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([[H|T]],[H],[T]). 
first_column([[H|T]|Tail],[H|Col],[T|Rows]):- first_column(Tail,Col,Rows). 

しかし、あなたのスペックを超えて、私はあなたにも、何かのように「転送」あなたの最後のコルは、行が変数を終了する必要がありますことを疑います初期条件付き、

first_column(List,[],[],Col,Rows). 
関連する問題