2016-05-30 12 views
1

データベースからリストのリストに再帰的に要素を追加したいと考えています。 、[[1, max, 1500], [1, max, 1500], [1, max, 1500] 私は[[1, max, 1500], [2, peter, 2100], [3, tom, 3900]]をしたい:prolog - リストのリストの用語から要素を追加する

employee(1, max, 1500). 
employee(2, peter, 2100). 
employee(3, tom, 3900). 


bigearners([]). 
bigearners([Head|Lists]):- employee(Id,Name,Salary), append([Id,Name,Salary],[], Head), bigearners(Lists). 

彼は、このようなリストを作成します。私はそれが再帰的な方法では不可能だと思いますか?私は再帰的な解決策を見つけることができません。

ありがとうございます!

答えて

0

のfindAll/3

bigearners(L) :- findall([A,B,C], employee(A,B,C), L). 

またはアキュムレータを使用するように組み込みを使用します。

bigearners(L) :- bigearners([],L), !. 

bigearners(S,L) :- 
employee(A,B,C), 
H=[A,B,C], 
\+ memberchk(H,S), 
bigearners([H|S],L). 
bigearners(L,L). 

PS:append([Id,Name,Salary],[], Head)がより通常Head = [Id,Name,Salary]

+0

のように書かれている第二の溶液は、私の作品、ありがとう! – StephanEr

関連する問題