问题标签 [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 回答
231 浏览

prolog - 不确定代码片段为何起作用/它对逻辑谜题的作用

我正在查看一些序言示例并偶然发现http://www.anselm.edu/internet/compsci/faculty_staff/mmalita/HOMEPAGE/logic/bufalo.txt

在这个代码示例中,我对它的工作原理有一个大致的了解,但我真的不确定具体细节

我理解将提示定义为原子列表,第一个字段是名字,第二个字段是姓氏,第三个字段是年龄,下划线显示缺失信息。但是我不太确定为什么在 Sol 数组上使用 member 来调用它。不确定它在这种情况下会做什么

此外,我不太了解此代码中 set_equal 和 F= 的用途。似乎它设置了三个根本没有引用的变量?

谢谢你的帮助!

0 投票
2 回答
193 浏览

prolog - 有人可以帮助我使用序言中的这个小程序吗?

当我用这句话运行我的程序时:

结果是:

结果很好,但最后有一个“|A”,我不知道出了什么问题???这是我的代码:

0 投票
1 回答
183 浏览

prolog - Prolog 代码中的错误 - 未定义的过程:唯一/1

%三种动作变体。我有 3 只动物,它可以驾驶飞机、汽车或错过 %step。我知道,第一步猴子坐飞机,狼坐汽车。在第二个 %step 狼乘坐飞机。我们需要知道剩余的一致性。并且每只动物只准时乘坐 %每辆车

%我声明乘客在我的函数解决之外

0 投票
2 回答
182 浏览

prolog - Writing a simple "process of elimination" Prolog code using DCGs

I have simplified a more complex problem to the following: there are three houses on a street with three different colours (no colour repeated); red, blue, green. Write a program using DCGs to simulate all permutations/possibilities. My code won't run and I'm struggling to see why. Any corrections would really help.

0 投票
1 回答
327 浏览

prolog - Prolog 中的谜题

任何人解决这个难题:

使用给出的线索找出每个人的名字、酒、主菜和价格。以下是此拼图中使用的所有类别和选项。

名字:琳达、尼克、罗宾、弗吉尼亚 葡萄酒:波尔多、基安蒂、梅洛、设拉子 主菜:炒牛肉、柑橘鸡肉、菲力牛排、红鲷鱼 价格:24.99 美元、25.99 美元、26.99 美元、27.99 美元

线索:

  1. 点红鲷鱼的餐厅没有波尔多。
  2. 琳达付的钱比拥有波尔多酒的人少。
  3. 喝波尔多酒的人和喝基安蒂酒的人都不是支付 26.99 美元的人。
  4. 点了炒牛肉的小餐馆点了基安蒂。
  5. 点了柑橘鸡的食客比点了基安蒂的食客少付了 1 美元。
  6. 点了菲力牛排的食客比点了设拉子的食客少付了钱。
  7. 弗吉尼亚要么是点了炒牛肉的食客,要么是点了红鲷鱼的食客。
  8. 喝梅洛的人比罗宾少付 1 美元。

资源:

逻辑拼图.org

0 投票
2 回答
349 浏览

prolog - 罗森格兰茨夫人的杰西查询(斑马拼图)在 Prolog 中表达

Jess in Action - Rule-Based Systems in Java(写于 10 多年前;我认为 Drools 是今天使用的系统?)一书中,Ernest Friedman-Hill 使用 Jess(一种 OPS5 风格)解决了下面给出的约束问题用Java编写的前向链生产系统。我想用 Prolog 解决它。

问题是:我能正确解决它吗?

问题

四个高尔夫球手站在发球台前,从左到右排成一排。每个高尔夫球手都穿着不同颜色的裤子;一个穿着红色裤子。美联储右边的高尔夫球手穿着蓝色裤子。乔排在第二位。鲍勃穿着格子裤。汤姆不在一号或四号位,他也没有穿那条丑陋的橙色裤子。

四个高尔夫球手将按什么顺序开球,每个高尔夫球手的裤子是什么颜色的?

这是斑马拼图的一个实例。另请参阅此演示文稿,以获得更复杂的解决方案的精美插图。

使用 Jess,作者 Ernest Friedman-Hill

使用 Jess 生产系统,代码如下。这来自上述书籍,为清楚起见,对变量进行了重命名。

工作记忆充满了从高尔夫球手到他们可能的位置和裤子颜色的 32 个链接。该find-solution规则为满足约束的链接集触发。

这似乎很难考虑,因为人们不会测试“可能的世界”是否满足约束条件,而是选择一组满足约束条件的链接。目前尚不清楚这确实是一个人在寻找什么。

我在 Prolog 中的第一个解决方案

事实证明这是不优雅和笨拙的(见其他答案)

让我们寻找一个数据结构来描述解决方案,如下所示:选择一个列表,在每个位置都有一个“golfer”,具有“Name”和“Pants Color” [golfer(N0,C0),golfer(N1,C1),golfer(N2,C2),golfer(N3,C3)]:。每个高尔夫球手也有列表中实际位置给出的从 0 到 3 的开球位置;位置没有像 中那样明确给出golfer(Name,Color,Position)

让我们运行这个:

0 投票
2 回答
1459 浏览

theorem-proving - 如何在 Prover9 中为爱因斯坦的船谜题建模(一阶逻辑)

我需要在 Prover9 中为以下谜题建模

一个港口有5艘船:

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

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

据我所见,prover9 接受一阶逻辑子句。但我真的不擅长将自然语言转换为 fol。有人可以告诉我如何以一阶逻辑对此进行建模,也许可以告诉我如何转换第一条语句?

0 投票
1 回答
349 浏览

prolog - Prolog 解谜

该声明 :

一共四对情侣

参加了一个化妆舞会。

2

打扮成猫的那位女士

和她的丈夫马特一起到达。

3

已经有两对情侣了

一个人穿得像只熊。

4

最先到达的不是文斯,

但他在王子之前到达那里。

5

女巫(不是苏)嫁给了查克,

谁打扮成唐老鸭。

6

玛丽跟着卢进来,

两人都在苏之前。

7

吉普赛人比安先到,

两人都没有嫁给蝙蝠侠。

8

如果白雪公主在苔丝之后到达,

那么每对夫妇的穿着是怎样的呢?

我的代码在这里,但它返回 false :

有什么解决办法吗?

0 投票
2 回答
1098 浏览

prolog - 序言:解决难题

我是 prolog 的新手,我正在尝试解决以下问题。我很难理解解决问题的逻辑。我知道它类似于斑马问题,但我不确定如何处理。任何帮助将不胜感激。

五名学生提交的 T/F 测验答案如下。

  1. 塔尼亚比特蕾莎得到​​的答案更多。
  2. 汤姆比蒂姆做得更正确。
  3. 托尼没有把所有的答案都答对,也没有把它们都弄错。

编写一个 Prolog 程序quiz(Answer),断言 Answer 是测验正确答案的列表t和常量。f

0 投票
1 回答
465 浏览

prolog - 四个职业序言谜题

我正在尝试解决序言中的一个难题,我只做了一部分,我不知道如何完成它。这就是问题:

考虑四个姓氏为 Baker、Carpenter、Miller 和 Farmer 的人。假设该组代表的四种职业包括面包师、木匠、磨坊主和农民。进一步假设每个人的职业与其姓氏不相符。

这四个人各有一个儿子。四个儿子的职业是面包师、木匠、磨坊主和农民。再次假设每个人的职业与他们的姓氏不对应。

假设我们还知道以下事实: 没有儿子的职业与父亲相同。贝克的职业与木匠的儿子一样。农夫的儿子是一名面包师。

我无法弄清楚如何实现的部分是:

这是我迄今为止提出的部分问题的代码: