【发布时间】:2015-10-12 14:56:34
【问题描述】:
我决定学习 prolog 只是为了好玩,我正在看一些视频教程。另外,我在互联网上搜索了一些尝试解决的问题,但找不到解决此问题的方法。
我能够在纸上解决这个难题,但我无法将其传递给代码。
问题:
我有 8 位候选人(Lia、Mel、Nanda、Olga、Rute、Sara、Tina、Pilar)。
他们都将在周一至周五的 8:00 和 9:00 进行测试。
我有一些规则,例如:
Sara 必须在周三 9 点接受测试。
周三 8 点不会对女孩进行测试。
Pilar 必须在 Nanda 之前进行测试。
奥尔加必须在梅尔的同一天进行测试。
如果 Lia 在任何一天的 8 点进行测试,那么 Rute 必须在另一天的 8 点进行测试。
我不想要完整的解决方案,我只是想要一些帮助来开始。
我想写点东西,但没有成功。
% Facts %
candidate(lia).
candidate(mel).
candidate(nanda).
candidate(olga).
candidate(pilar).
candidate(rute).
candidate(sara).
candidate(tina).
day(monday).
day(tuesday).
day(wednesday).
day(thursday).
day(friday).
time(8).
time(9).
/*Sara HAS TO be tested on Wednesday at 9*/
tested_on(sara, wednesday, 9).
/*No test will happen on Wednesday at 8*/
no_test(X, wednesday, 8) :- X == none.
我什至试图建立一个struct
cand(
sara,
date(wednesday, 9)
).
之后我的程序必须回答一些问题,例如:
在周一至周五的 8:00 测试的候选人名单是正确的?
我的主要想法是开始编写规则和事实,然后我会通过所有规则测试每个规则。但是我连facts和rules都写不出来对……
【问题讨论】: