我是 prolog 的新手,我真的不明白事情是如何运作的。
从简化的社交网络中提供以下知识库:
% user(nickname,email,city,friends_list)
user(nick0,mail0,lisbon,[nick1,nick8]).
user(nick1,mail1,lisbon,[nick0,nick3, nick5, nick9]).
user(nick2,mail2,london,[nick5,nick7,nick8]).
user(nick3,mail3,madrid,[nick1,nick4]).
user(nick4,mail4,paris,[nick1, nick3, nick2, nick5, nick6]).
user(nick5,mail5,madrid,[nick1, nick4, nick2]).
user(nick6,mail6,lisbon,[nick3,nick2]).
user(nick7,mail7,berlin,[nick3, nick5]).
user(nick8,mail8,berlin,[nick3, nick5, nick7]).
user(nick9,mail9,london,[nick1, nick4]).
我需要一个谓词places(NU,LC)
来生成城市列表(LC),其中用户数量大于或等于(NU)的城市。
例子:
地方(0,LC)。
LC = [(里斯本,3), (伦敦,2), (马德里,2), (巴黎,1), (柏林,2)]
我有以下代码,但它不起作用,如果你们能帮助我,我将不胜感激:
places(NU,LC):-
findall(X,user(_,_,X,_),List),
findall(Z,(user(_,_,Z,_),member(Z,List), Z>=NU),LC).
这可能是一个简单的问题,但我仍在学习prolog。