我正在努力学习Prolog,我在逻辑练习方面遇到了一些问题。
鲍勃,汤姆,山姆在银行有一份会计,出纳和经理的工作。以下是更多关于它们的事实:
找出汤姆,山姆和鲍勃的职业。
发布于 2013-01-05 22:29:25
给定较小的数据集,可以使用生成和测试来解决问题,请参阅排列/2。要方便地翻译每个规则,请用员工名称命名一个变量。我只给出第一个条件
q([sam=Sam, tom=Tom, bob=Bob]) :-
...,
( Sam = cashier -> Tom = manager ; true ),
....有了这个,我得到了这些解决方案
?- q(X).
X = [sam=accountant, tom=cashier, bob=manager] ;
X = [sam=manager, tom=accountant, bob=cashier] ;
X = [sam=accountant, tom=manager, bob=cashier] ;
false.https://stackoverflow.com/questions/14171024
复制相似问题