我想知道如何確定Prolog中兩個列表的交集是否爲空。據我所知,這是他們沒有共同點。我是Prolog的新手(截至昨晚)。任何幫助是極大的讚賞。序言:確定兩個列表的交集是否爲空
這裏是我的嘗試:
% returns true if head is not a member of List?
intersection([],_).
intersection([Head|Tail],List) :-
\+ member(Head,List),
intersection(Tail,List).
第二次嘗試:
?- intersect([A,B,C,D],[E,F,G,H]).
intersect(L1,L2) :-
intersection(L1,L2,[]).
mbratch的決議解決了這個問題。
解決方案:
?-intersect([a,b,c,d],[e,f,g,h]).
intersect(L1,L2):-
intersection(L1,L2,[]).
感謝您的回覆。我仍然是虛假的,不知道我缺少什麼。我更新了這篇文章。謝謝。 – pdf2e
你正在使用變量而不是原子。嘗試'intersect([a,b,c,d],[e,f,g,h])。'如果使用變量,Prolog會說他們可以相交,因爲它可以將'A'與'E '例如,他們是變數。變量以大寫字母開頭。原子(「常數」)以小寫字母開頭。 – lurker
這是問題所在。謝謝。 – pdf2e