首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在prolog中解决一个逻辑练习

在prolog中解决一个逻辑练习
EN

Stack Overflow用户
提问于 2013-01-05 10:50:16
回答 1查看 363关注 0票数 0

我正在努力学习Prolog,我在逻辑练习方面遇到了一些问题。

鲍勃,汤姆,山姆在银行有一份会计,出纳和经理的工作。以下是更多关于它们的事实:

  • 如果萨姆-出纳员比汤姆-经理。
  • 如果萨姆-经理,汤姆-会计。
  • 如果汤姆不是出纳员,鲍勃-不是经理。
  • 如果鲍勃-会计,山姆-经理。

找出汤姆,山姆和鲍勃的职业。

EN

回答 1

Stack Overflow用户

发布于 2013-01-05 22:29:25

给定较小的数据集,可以使用生成和测试来解决问题,请参阅排列/2。要方便地翻译每个规则,请用员工名称命名一个变量。我只给出第一个条件

代码语言:javascript
复制
q([sam=Sam, tom=Tom, bob=Bob]) :-
  ...,
  ( Sam = cashier -> Tom = manager ; true ),
  ....

有了这个,我得到了这些解决方案

代码语言:javascript
复制
?- q(X).
X = [sam=accountant, tom=cashier, bob=manager] ;
X = [sam=manager, tom=accountant, bob=cashier] ;
X = [sam=accountant, tom=manager, bob=cashier] ;
false.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14171024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档