我正在尝试编写一个谓词,用于识别以下转换目标。
可以改变航班的地方是阿姆斯特丹,曼谷,伦敦,纽约,旧金山和悉尼。因此,在进行查询切换时,我应该得到以下结果:
?- changeover(X).
X = amsterdam ;
X = bangkok ;
X = london ;
X = new_york ;
X = san_francisco ;
X = sydney.
我目前有这个:
changeover(X):- destinations(X).
按预期打印所有目的地,但如何仅打印所需目的地?我认为我需要递归是正确的吗?
我有一个prolog数据库,其中包含以下内容:
destinations([abidjan, abu_dhabi, amsterdam, aruba, athens, baltimore,
bangkok, bermuda, brisbane, buenos_aires, colombo, dakar, dubai,
hamburg, harare, hong_kong, honolulu, johannesburg, lagos, lima,
lisbon, london, mahe, nairobi, new_york, panama, perth, quito,
rio, san_francisco, santiago, singapore, sydney, tokyo]).
答案 0 :(得分:3)
您可以通过指定关系所包含的所有实例来直接定义changeover/1
:
changeover(amsterdam).
changeover(bangkok).
changeover(london).
changeover(new_york).
changeover(san_francisco).
changeover(sydney).
答案 1 :(得分:0)
如果目的地是一个列表,那么你需要做类似的事情
changeover(X) :- destinations(D), member(X, D), required(X).
required
是一个确定所需目的地的谓词 - 它不是很清楚你想做什么