【发布时间】:2018-04-19 05:00:57
【问题描述】:
今天早些时候我求助于在prolog中构建数据库以及如何按参数搜索,有人想出了这个:
您还可以为每个处理器添加术语列表,例如:
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).
而且效果很好,但是“member”命令似乎不适用于规则:
build(ProcSpecs, RamSpecs, MoboSpecs):-
processor(NameProc, PSpec), member(ProcSpecs, PSpec),
component_ram(NameRam, RSpec), member(RamSpecs, RSpec),
motherboard(NameMobo, MSpec), member(MoboSpecs, MSpec),
write("-----------------------------"), nl,
write("Processor: "), write(NomeProc), nl,
write("Ram: "), write(NomeRam), nl,
write("Motherboard: "), write(NomeMobo), nl.
如果我这样查询:
build(ram(ddr4), ram(ddr4), ram(ddr4)).
(或放置我想搜索的任何其他参数) 它回答了我与参数匹配的组件列表(这是我正在寻找的结果)。 但是,如果我尝试使用“成员”来设置多个参数,如下所示:
build(ProcSpecs, RamSpecs, MoboSpecs), member(socket('lga1151'), ProcSpecs), member(ram('ddr4'), ProcSpecs), member(ram('ddr41'), RamSpecs), member(socket('lga1151'), MoboSpecs), member(ram('ddr4'), MoboSpecs).
它开始列出数据库中的每个组件,并且似乎发生这种情况是因为没有为变量分配任何内容。 整个数据库在这里:https://pastebin.com/1Yy6cTV9
【问题讨论】:
标签: database variables prolog assign rule