2016-12-05 5 views
3

私はPrologを学習しています。コースのエクササイズでは、リスト内のすべての原子要素を削除するように指示されています。 私はPrologリスト内の空リスト

clean([1,[2,[3],4],5],L). 

をお持ちの場合はそれが

L = [[[]]] 

どのようにそれを行うことができますか?になるべき

答えて

0

これを解決する方法は、あなたが遭遇するかもしれないリストのそれぞれの事例を通して考えることです。たとえば、空のリストに遭遇した場合、その答えは何ですか?答えは単に空のリストです。

clean([],[]). 

ここで、最初の要素がアトム(別のリストではない)の場合はどうなりますか?次に、要素を削除します。つまり、要素を結果リストに追加しません。

clean([H|T],L):- \+ is_list(H), clean(T,L). 

最後に、最初の要素が別のリストの場合はどうなりますか?次に、リストを回答に追加しますが、それを掃除した後です。回答リストに追加する方法は、回答リストの先頭に「あらかじめ保留」することです。「[Empty | L]」です。

clean([H|T],[Empty|L]):- is_list(H), clean(H,Empty), clean(T,L). 

上記の節を1つのプログラムにまとめてください。これがあなたの答えです。