- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在网上找到的一个非常简单的谜题,我在网上找不到任何解决方案。规则很简单:
我们知道:- M.Meatman 的儿子是面包师- M.Baker 与 M.Carpenter 的儿子做同样的工作
我实现了这个谓词:
% swipl prolog
% M.Meatman's son is baker
% M. Baker do job of M. Carpenter's son
% jobs
job(baker).
job(meatman).
job(carpenter).
% fathers
artisan(fatherbaker).
artisan(fathercarpenter).
artisan(fathermeatman).
% sons
artisan(sonbaker).
artisan(soncarpenter).
artisan(sonmeatman).
% some links
father(fatherbaker, sonbaker).
father(fathermeatman, sonmeatman).
father(fathercarpenter, soncarpenter).
son(S, F) :- father(F, S).
same_name(fathercarpenter, soncarpenter, carpenter).
same_name(fathermeatman, sonmeatman, meatman).
same_name(fatherbaker, sonbaker, baker).
% rules:
do_job(Artisan, Job) :-
Artisan==sonmeatman,!,
artisan(Artisan),
job(Job),
Job=baker. % M.Meatman's son is baker (rule 1)
do_job(Artisan, Job) :-
Artisan==fatherbaker,!,
artisan(Artisan),
job(Job),
do_job(soncarpenter, Job). % M.Baker do M.Carpenter's son job
% not relevant...
%do_job(Artisan, Job) :-
% Artisan == soncarpenter,!,
% job(Job),
% artisan(Artisan),
% do_job(fatherbaker, Job). % rule 2 inverted
% checking if father job is not the same and name are not forgotten
do_job(Artisan, Job) :-
artisan(Artisan),
job(Job),
father(Father, Artisan),
do_job(Father, JobFather),
Job \== JobFather,
not(same_name(Artisan,_,Job)).
% checking if son job is not the same and name are not forgotten
do_job(Artisan, Job) :-
artisan(Artisan),
job(Job),
son(Artisan, Son),
do_job(Son, JobSon),
Job \== JobSon,
not(same_name(_, Artisan, Job)).
然后我试试:
swipl
?- do_job(sonmeatman, X).
X = baker ;
false.
?- do_job(fatherbaker, X).
false.
你能告诉我哪里错了吗
最佳答案
你过度设计了,reifying太多的问题(典型的 Prolog 初学者错误)。你需要写的是一个六参数谓词
jobs(BakerSrJob, BakerJrJob,
CarpenterSrJob, CarpenterJrJob,
MeatmanSrJob, MeatmanJrJob) :-
...
在正文中,对这些变量的约束。例如
member(BakerJrJob, [carpenter, meatman])
表示 Baker jr。要么是木匠要么是肉人,并且
BakerJrJob \= BakerSrJob
表示贝克父子从事不同的工作。这些 member
调用和 \=
约束中的几个应该足以对所有必要的知识进行编码。 (只需在变量名称中硬编码人员的身份,而不是将名称表示和检查为原子。如果您刚刚开始,请不要尝试编写通用的解谜器。)
关于Prolog puzzle baker、meatman 和 carpenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782129/
我有一个以某种方式设计样式的模板。我有多个内容想要在该模板中显示每个内容。可以用烘焙来做到这一点吗? https://github.com/MathiasPaumgarten/grunt-bake 例
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
这是我在网上找到的一个非常简单的谜题,我在网上找不到任何解决方案。规则很简单: 有 6 位工匠,M.Baker 父子,M.Carpenter 父子,M.Meatman 父子 每个工匠都可以是面包师、木
Baker Ebook Framework依靠 hpub 格式的书籍。我正在尝试创建一个针对外部书籍的书籍链接,并在their instruction之后尝试 .hpub (只需将书文件夹重命名为bo
我是面包师框架的新手,但是我知道我必须创建 hpub 文件我们是否还必须压缩我们的图像、CSS 和 jquery 文件,或者我们只需要压缩 html 文件? 另外,如何创建 book://而不是 ht
我是一名优秀的程序员,十分优秀!