gpt4 book ai didi

prolog - 如何在两个列表中找到相等的元素

转载 作者:行者123 更新时间:2023-12-02 05:03:54 24 4
gpt4 key购买 nike

我有以下一组事实:

lc('Dr. Smith', 'Algorithms').
lc('Dr. Jones', 'Models & Analysis').
lc('Dr. Smith', 'Operating Systems').
lc('Dr. Jones', 'Artificial Intelligence').
lc('Dr. Smith', 'Models of Computation').
lc('Dr. Smith', 'Discrete Math').
lc('Dr. Jones', 'Information Retrieval').
lc('Dr. Jones', 'Computer Vision').

ctl('Algorithms', 'MWF, 9:00 - 11:00 a.m.', 'McB 209').
ctl('Models & Analysis', 'MWF, 9:00 - 11:00 a.m.', 'McB 211').
ctl('Operating Systems', 'TTH, 9:00 - 11:00 a.m.', 'McB 306').
ctl('Artificial Intelligence', 'TTH, 3:00 - 5:00 p.m.', 'McB 311').
ctl('Models of Computation', 'TTH, 11:00 - 1:00 p.m.', 'McB 204').
ctl('Discrete Math', 'TTH, 3:00 - 5:00 p.m.', 'McB 204').
ctl('Information Retrieval', 'MWF, 3:00 - 5:00 p.m.', 'McB 205').
ctl('Computer Vision', 'MWF, 1:00 - 3:00 p.m.', 'NEB 2182').

我已经能够写出以下内容,这为我提供了讲师的时间表:

schedule(Lecturer, X, Y, Z) :- ctl(X, Y, Z), lc(Lecturer, X).

但现在我正在尝试编写一条规则来查找 Jones 博士和 Smith 博士何时同时授课。有什么想法吗?

最佳答案

您可以使用自己的函数来扩展此实用程序,方法是:

same_time(X, Y, R) :-
schedule(X, _, B, _),
schedule(Y, _, B, _),
X \= Y,
R = B.

这只是简单地告诉您 XY 老师同时教授什么 B,如列表 中所返回R.

而且,如果你只想要在教学计划中同时出现多个老师的时间,你可以简单地删除初始变量 XY,并且甚至将 R 替换为最终结果本身,如下所示:

same_time(B) :-
schedule(X, _, B, _),
schedule(Y, _, B, _),
X \= Y.

当不止一位老师在上课时,返回的仍然是B的次数。

对于冲突,您可以保留语句中有效的部分,并将其简单地扩展为:

same_teachertime(X) :-
schedule(X, V1, B, _),
schedule(X, V2, B, _),
V1 \= V2.

schedulingconflict(X, Y, X):- ctl(X, A, B), ctl(Y, A, B), X \= Y.
schedulingconflict(_, _, X):- same_teachertime(X).

这认为作为同一位老师,在同一时间教授不同的科目,是一种冲突,因为房间冲突正在用您写的语句解决。

问候!

关于prolog - 如何在两个列表中找到相等的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com