例如,有一个像这样的“数据库”:
processor(pentium_g4400) :-
brand('intel'),
family('pentium'),
series('g4400'),
clock(3.3),
socket('lga1151'),
ram('ddr4'),
cores(2),
threads(2),!.
例如,如果我只想搜索“pentium”系列或“lga1151”处理器。
最佳答案
这不是数据库。您在这里写的是:
pentium_g4400
is aprocessor
, given'intel'
is a brand,'pentium'
is afamily
,'g4400'
is a series, etc.
数据库是一组事实。所以你可以写成:
processor(pentium_g4400,'intel','pentium','g4400',3.3,'lga1151','ddr4',2,2).
现在您可以查询 'pentium'
的处理器家庭例如:
processor(Proc, _, 'pentium', _, _, _, _, _, _).
哪里_
意味着您对结果不感兴趣(如果您也想了解这些事实,可以使用变量)。
如果某些属性是可选的等,这种方法当然会很不方便。您还可以向每个处理器添加术语列表,例如:
processor(pentium_g4400, [brand('intel'), family('pentium'),
series('g4400'), clock(3.3),
socket('lga1151'), ram('ddr4'),
cores(2), threads(2)]).
在这种情况下,您可以使用以下方式查询:
processor(Proc, Specs), member(family('pentium'), Specs).
所以现在我们寻找处理器Proc
这样family('pentium')
是 Specs
的成员列表。
关于database - 如何在Prolog中进行参数搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47135216/