0

我是 Prolog 的新手,请协助。Hunter、Laura、Jim、Sally 和 Jack 在与五个相邻办公室的同一栋大楼内工作。亨特不在第五办公室工作,劳拉不在第一办公室工作。Jim 不在第一个或最后一个办公室工作,而且他不在 Jack 或 Laura 旁边的办公室。莎莉在比劳拉更高的办公室工作。谁在什么办公室工作?

编写一个 Prolog 程序来解决这个问题。定义什么是邻接,然后是什么办公室,然后创建一个布局(X),允许您放入所有规则。每个人都被安置在一个不违反任何规定的办公室里。

4

1 回答 1

0

在这个答案中,我们使用。阅读关于 clpfd 的教程以获取详细信息!

:- 使用模块(库(clpfd))。

拼图(P):-
   拼图变量(P,Zs),
   标签([],Zs)。

拼图变量(P,Zs):-
   P = [猎人-猎人,杰克-杰克,吉姆-吉姆,
         劳拉-劳拉,莎莉-莎莉],
   Zs = [猎人,劳拉,吉姆,莎莉,杰克],
   Zs ins 1..5,
   all_different(Zs),
   猎人#\= 5,
   劳拉 #\= 1,
   吉姆 #\= 1,
   吉姆 #\= 5,
   绝对(吉姆-杰克)#\= 1,
   绝对(吉姆-劳拉)#\= 1,
   莎莉#>劳拉。

谁在什么办公室工作?让我们问Prolog!

?- puzzle(P).
   P = [hunter-3, jack-1, jim-4, laura-2, sally-5]
;  false.
于 2019-03-13T11:04:04.080 回答