问题标签 [zebra-puzzle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
417 浏览

prolog - 使用 prolog 解决船舶难题

我需要使用 prolog 解决以下问题。
这些是提供的事实。

我在网上搜索,但我无法找到 prolog 的解决方案。
那么如何用prolog解决这个问题呢?
谢谢你。

0 投票
2 回答
699 浏览

prolog - 为什么我无法通过 Prolog 获得 Ship Puzzle 的答案?

我需要使用 Prolog 来解决 Ship Puzzle 问题。以下是事实。

有5艘船。

  1. 希腊船六点出发,载着咖啡。
  2. 中间的船有一个黑色的烟囱。
  3. 英国船九点出发。
  4. 带有蓝色烟囱的法国船在运送咖啡的船的左侧。
  5. 载可可的船的右边是一艘前往马赛的船。
  6. 这艘巴西船正驶向马尼拉。
  7. 载米的船旁边是一艘带有绿色烟囱的船。
  8. 一艘去热那亚的船五点出发。
  9. 西班牙船七点出发,在前往马赛的船的右侧。
  10. 带有红色烟囱的船前往汉堡。
  11. 七点出发的船旁边是一艘带白色烟囱的船。
  12. 边境的船载着玉米。
  13. 黑烟囱的船八点出发。
  14. 运送玉米的船停泊在运送大米的船旁边。
  15. 六点开往汉堡的船。

哪艘船去塞得港?哪艘船运茶?

我在互联网上搜索答案,但我找不到任何答案。所以我参考了“斑马拼图”,因此我为这个问题安排了代码。所以这是我的Prolog代码的问题。

但是当我运行程序时,它会说“假”。
那么我该如何解决呢?
谢谢你

0 投票
2 回答
315 浏览

owl - 用 Stardog 推理机解决爱因斯坦之谜?

是否有可能用Stardog推理机解决爱因斯坦的谜语(又名斑马谜题)?即以下查询不会产生预期的结果einsteins_riddle_en:Old_Gold

0 投票
5 回答
1137 浏览

prolog - Prolog if else 语法

我似乎无法让我的 if else 语句起作用。

  1. 约翰、弗雷德和哈里是男性,玛丽、朱莉、苏珊和安妮是女性。
  2. 约翰有一头金发,而弗雷德和哈利有一头黑发。
  3. 朱莉和苏珊是金发女郎,玛丽和安妮是黑发女郎。
  4. Rich 是每个拥有黄金的人——在我们的例子中是 Fred 和 Julie。
  5. 男性只喜欢女性,反之亦然。此外,约翰和哈利喜欢有钱人,约翰喜欢金发女郎,弗雷德喜欢黑发女郎。
  6. 玛丽和朱莉都喜欢黑头发的人,朱莉同时也喜欢有钱人。

我认为(语句)->(如果为真,则运行此语句);(如果为假,则运行此语句)。在 Prolog 中是正确的方法。为什么不管我写什么

它返回true?

0 投票
2 回答
342 浏览

prolog - Prolog 中的“建筑”之谜

我正在尝试解决 Prolog 中的一个谜语。谜底是:有两栋楼,每栋都有树公寓(每层公寓):一套3室,一套4室,一套5室。

Dana、Joni 和 Noah 住​​在 1 号楼。Ron、Gale 和 Aron 住在 2 号楼。

Joni 的公寓比 Dana 和 Noah 高。这意味着他住在 1 号楼的三楼。诺亚和盖尔住在同一层(在不同的建筑物中)。Ron 比 Aron 多一个房间。罗恩住在盖尔楼上。2号楼最高的公寓是5室公寓。

我需要找出每个人住在哪一层。

我写了这段代码:

但是当我执行查询时:

我得到:

任何人?我不明白我做错了什么。

0 投票
0 回答
154 浏览

logic - 在 DLV/Prolog 中映射谓词和命题

我无法理解如何做某事

想象一下,我有 3 头驴,每头驴都有最喜欢的布,并在它最喜欢的游乐场玩耍。

如果我给这些驴子限制哪个操场可能是它最喜欢的操场,例如操场 A、B 或 C,或者甚至通过诸如 Donkey humphey 最喜欢的布绝对不是T 恤我该怎么做。

IE 到目前为止我的想法是

我使用 dlv 作为我的答案集求解器

0 投票
1 回答
281 浏览

prolog - 给定特定线索,在 Prolog 中填写表格(爱因斯坦谜语)

假设有五个办公室的表格。每个办公室都有颜色、部门、电脑、饮料、手机和从 1 到 5 的特定位置:

桌子在这里

我试图为 Prolog 提供以下线索,以便它可以正确填写表格:

  1. 喝牛奶的人在 3 号办公室。
  2. 在公共关系('pubrel')部门工作的人在办公室#1。
  3. 公关部的人在蓝色办公室旁边。
  4. 绿色办公室在粉红色办公室的右侧。
  5. 绿色办公室的人正在喝咖啡。
  6. 黄色办公室里的人有一部黑莓手机,黄色办公室就在那个拥有windows7 pc的人的办公室旁边。
  7. 在红色办公室工作的人来自'cs'部门。
  8. 'ode' 部门的人有 mac_pro 电脑。
  9. 财务('fin')部门的人正在喝茶。
  10. 拥有 iphone 的人也拥有 mac_air 电脑。
  11. 拿着诺基亚手机的男人旁边是有上网本的男人。
  12. 拥有安卓手机的男人正在喝橙汁。
  13. 供应部门的人有一部爱立信电话。

我在用着

其中 X 是一个办公室的属性,Y 是该办公室的位置。例如:

我将这些线索定义为“规则”,它们都应该同时起作用。

然后将它们全部提供给谓词“办公室”,如果它们都可以一起应用,则该谓词应该为真,以便正确形成表格。

我定义perm(X,Y)为当属性X被允许捕获特定点时变为真的术语Y,这意味着X没有捕获另一个因此被允许。

最后,of(X,Y)如果该位置Y尚未被另一个X. 例如,of(color(red),3)如果没有其他颜色捕获点 3,则应该为真。

因此,perm(X,Y)并且of(X,Y)应该在每个规则中同时为真。

它不起作用,可能是因为它确实有任何具体的开始。它不知道什么时候

将是真的。但我被困住了,想不出一种方法来定义特定的开始。任何人都可以帮助如何使它工作?

0 投票
2 回答
197 浏览

prolog - Prolog 中的逻辑谜题 - 使用列表

我正在尝试在 Prolog 中解决以下问题,并且我认为我的编码是正确的,但是我的查询只是返回 false。关于改变什么的任何建议?问题如下:

“Bagel Alley 是当地的百吉饼店,在早上上下班途中总是热闹非凡,因为人们在上班路上停下来买咖啡和百吉饼。每天早上在现场新鲜制作,百吉饼非常受欢迎,而且事实上,这家店的咖啡也很棒,简直是锦上添花!在 Bagel Alley 工作的人都很开朗友好,而且能干,所以尽管顾客数量众多,但等待的时间从不漫长或不愉快。乔和他的四个同事今天早上过来看看大家都在说什么,惊喜地发现这家店名不虚传。确定每个同事的名字,什么样的百吉饼配上馅料,味道和大小每个点的咖啡(小、中或大)。”

  1. 布拉德拿到了他的百吉饼,不是小麦,上面什么都没有。沃尔特点了一杯咖啡。

  2. 得到中型咖啡的两个同事一个得到了榛子味,另一个得到了他的百吉饼加花生酱。

  3. 得到洋葱百吉饼但没有加黄油的人还得到了法国香草咖啡,但不是小尺寸。

  4. 五个同事是乔,一个是大杯咖啡,一个是杏仁味咖啡,一个是小麦百吉饼,还有一个是在百吉饼上放鸡蛋和培根。

  5. 里克没有点蓝莓百吉饼,但他点了哥伦比亚咖啡。Amaretto 咖啡是和切达面包圈一起点的,但不是 Walt 点的。

  6. 奶油芝士没有配蓝莓百吉饼,但配了一大杯咖啡。芝麻百吉饼配黄油,但卡洛斯没有点。

我写的Prolog代码在这里:

我相信运行查询“百吉饼(X)”。应该给我解决问题的方法,但它返回错误。我错过了什么吗?提前谢谢了!

0 投票
2 回答
299 浏览

prolog - 爱因斯坦谜语与术语列表

我在 Prolog 中实现了 Einstein Riddle,我试图找出谁在家里养了一条鱼。
我在此代码中找不到错误,并且跟踪选项无助于解决此问题;)

规则:

  1. 挪威人住在第一所房子里
  2. 英国人住在一座红房子里。
  3. 温室直接位于白宫的左侧。
  4. 丹麦人喝茶。
  5. 轻度吸烟者住在猫的饲养者旁边。
  6. 黄色房子的居民抽着雪茄。
  7. 德国人抽水烟。
  8. 中心房屋的居民喝牛奶。
  9. 轻度吸烟者有一个喝水的邻居。
  10. 没有过滤嘴的香烟会繁殖鸟类。
  11. 瑞典人饲养的狗。
  12. 挪威人住在蓝屋旁边。
  13. 饲养马的人住在黄色房子旁边。
  14. 抽薄荷醇喝啤酒。
  15. 他们在温室里喝咖啡。

这是我的代码:

我尝试了很多组合,但是:

?- 鱼(谁)。
错误的。

编辑:
代码现在可以工作,我改变了什么:

1* 来自:

至:

2* 来自:

至:

如果您正在阅读这篇文章,请查看关于辅助谓词中结构的@Enigmativity 评论。

0 投票
1 回答
728 浏览

prolog - 爱因斯坦谜语使用 Prolog

我正在尝试使用 Prolog 解决爱因斯坦之谜。当我试图通过房屋(Hs)运行时,它显示否。任务是

  1. 英国人住在红房子里。
  2. 瑞典人养狗作为宠物。
  3. 丹麦人喝茶。
  4. 绿房子就在白宫的左边。
  5. 温室的主人喝咖啡。
  6. 抽 Pall Mall 烟的店主养鸟。
  7. 黄色房子的主人抽登喜路。
  8. 住在中心屋的主人喝牛奶。
  9. 挪威人住在第一间房子里。
  10. 抽 Blends 的主人住在养猫的主人旁边。
  11. 养马的主人住在抽登喜路的主人旁边。
  12. 抽 Bluemasters 的老板喝啤酒。
  13. 德国人抽王子烟。
  14. 挪威人住在蓝屋旁边。
  15. 抽 Blends 的主人住在喝水的人旁边。

我不知道出了什么问题。谢谢