问题标签 [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 投票
3 回答
283 浏览

prolog - 在 Prolog 中解决关于时间限制的难题

卡在 Prolog 问题上。我知道答案(因为我先在纸上做了),但我不知道如何让 Prolog 想出答案。

问题:

比尔每晚都吃点零食,每晚吃不同的水果和不同的坚果。从下面的陈述中,找出比尔上周每个工作日晚上吃了什么零食。

a) 苹果比芒果吃得晚。

b) 香蕉比杏仁和花生吃得晚,但比梨吃得早。

c) 腰果比香蕉和杏早吃,但比花生晚。

d) 杏仁后晚上没有吃山核桃。

e) 比尔吃了一晚核桃。

请注意,问题是关于 5 个工作日晚上(周一至周五),并提到了 5 种水果和 5 种坚果。您的程序应该解决问题并打印出解决方案,这将是一组 5 个三元组,例如(星期一,苹果,山核桃),...(星期五,芒果,核桃)。

显然,这些不是正确的答案,而只是向您展示解决方案的价值。

到目前为止的代码:

0 投票
2 回答
102 浏览

prolog - prolog中斑马拼图的变化,我不知道我哪里出错了

我知道斑马谜题在这里经常被问到,但这有点不同:我们在 Prolog 中得到了斑马谜题的变体来编写。我对此非常陌生,但去年我什至尝试从一些拥有不同变体的人那里获得帮助,他们不确定我的代码发生了什么。

我会发布整件事,我希望这不是压倒性的或不好的做法。

我的数据库加载得很好,但是当我尝试运行任何东西时会导致错误。如果我跑dorms(Dorms)打印出所有结果,我会被退回false。当我跑步csMusic(试图找到CS专业听的音乐类型)或engDrink(试图找到英语专业喝什么样的饮料)时,我又回来了false

我对 Prolog 知之甚少,但在解决这个问题时,我尽我所能在swipl网站上跟进。是否有任何人可以指出的容易我想念的东西?可能是命名不一致?

非常感谢您的帮助,谢谢!

0 投票
2 回答
438 浏览

prolog - 有没有办法在 Prolog 中扩展爱因斯坦的谜语?

首先,感谢您提出我的问题。关于这个问题,我一直在编写 Prolog 代码来模拟爱因斯坦的谜语。我认为这是一个非常优雅的解决方案,它基本上是一个包含某些字段(如房屋颜色、宠物、国籍等)的元组列表。我已经对列表进行了建模,并且提示也在那里,但是我在尝试建模时遇到了麻烦问题。

问题是,我不想仅仅停留在“谁拥有?”这个简单的问题上。我想模拟一个更难的问题。例如:“住在房子右边的房子里人养什么宠物?”。这似乎是对列表中具有颜色元组的索引的简单检查,并在列表中的索引处返回元组的字段,但我对 Prolog 的经验非常有限(这实际上是我的第一次使用它),我不确定如何实现它。我将在下面提供我的代码。我感谢所有答案。谢谢你。iredpeti+1

0 投票
2 回答
136 浏览

prolog - Prolog 办公室拼图

我正在尝试为学校做 Prolog 作业,基本上它是在尝试找出谁在哪个办公室。问题是:

Hunter、Laura、Jim、Sally 和 Jack 在与五个相邻办公室的同一栋大楼内工作。亨特不在第五办公室工作,劳拉不在第一办公室工作。Jim 不在第一个或最后一个办公室工作,而且他不在 Jack 或 Laura 旁边的办公室。莎莉在比劳拉更高的办公室工作。谁在什么办公室工作?

所以我拥有的是下面的代码,但我收到了:

这是代码。

0 投票
1 回答
99 浏览

prolog - Prolog 逻辑拼图失败

我正在尝试解决此处发现的逻辑难题:https ://www.braingle.com/brainteasers/teaser.php?id=23826&op=2&comm=1#c

这些是线索:

  1. 鲜花的购买顺序如下:郁金香、办公室的花、紫色的花、公园的玫瑰和朱莉娅买的白花。

  2. Bethany 喜欢花,但她过敏,所以她永远不会在室内养花。

  3. 周三和周五下雨,因此,婚礼和生日派对不得不搬到室内。

  4. 艾米在瑞秋之后买了她的花,但在克里斯汀之前。

  5. Rachel 需要为她的办公室增添一些东西,所以她选择了桃花来搭配她的窗帘。

  6. 周三,花店里仅有的紫色花朵是雏菊。

  7. 粉红色的花朵是在康乃馨之后,百合之前买的。

  8. 生日花是在办公室花之后,婚礼花之前买的。

我试图用以下代码在序言中实现这一点:

这似乎不起作用。我认为问题在于我的代码在定义一朵花之前发生在另一朵花之前,但我不确定这是否是问题以及如何解决它。另外,我认为说 Bethany 为后院或公园买花(不是婚礼、生日或办公室)是有问题的。

以下是谜题的答案:

朱莉娅:百合,白色,婚礼,星期五

艾米:雏菊,紫色,生日,星期三

伯大尼:郁金香,黄色,后院,星期一

瑞秋:康乃馨,桃子,办公室,星期二

克里斯汀:玫瑰,粉红,公园,星期四

0 投票
2 回答
1801 浏览

prolog - 使用 Prolog 解决脑筋急转弯(Master Mind)

一位工作的朋友与我们的whatsapp小组分享了这一点:

这把锁有一个 3 位数的密码。
你能只用这些提示猜到吗?

如果你必须使用 Prolog 来解决这个问题,你是怎么做到的?

我们使用类似于真值表的方法解决了这个问题。但是我很好奇,这将如何在 Prolog 中解决?

0 投票
3 回答
1947 浏览

prolog - 序言:谋杀之谜解决方案

我最近开始学习 Prolog 是为了好玩。我发现了以下谋杀之谜。由于除了基础知识之外我对 Prolog 知之甚少,因此我无法真正评估链接中提供的解决方案,但是,它对我来说似乎并不是特别好。我的解决方案不足以产生正确的答案,所以我正在寻找一些关于如何到达那里的指示,或者是否有可能用我的方法到达那里。这是万一链接断开的难题:

要查明是谁杀死了博迪先生,您需要了解每个人在哪里,以及房间里有什么武器。线索分散在整个测验中(在阅读完所有 10 个问题之前,您无法解决问题 1)。

首先,您需要了解嫌疑人。有三个男人(乔治、约翰、罗伯特)和三个女人(芭芭拉、克里斯汀、约兰达)。每个人都在不同的房间(浴室、餐厅、厨房、客厅、储藏室、书房)。在每个房间里都发现了一件可疑的武器(袋子、火器、毒气、刀、毒药、绳子)。谁在厨房被发现?

线索1:厨房里的人没有带绳子、刀或包。那么,在厨房里发现了哪种武器,而不是枪支呢?

线索 2:芭芭拉要么在书房,要么在浴室;约兰达在另一个。芭芭拉是在哪个房间找到的?

线索 3:提包的人既不是芭芭拉也不是乔治,他既不在浴室也不在餐厅。谁把包放在房间里?

线索4:在研究中发现了拿着绳子的女人。绳子是谁拿的?

线索 5:客厅里的武器是在约翰或乔治身上找到的。客厅里放着什么武器?

线索6:刀不在餐厅里。那么刀在哪里呢?

线索 7:Yolanda 没有携带在书房和储藏室中发现的武器。与尤兰达一起发现了什么武器?

线索 8:枪和乔治在房间里。枪支是在哪个房间找到的?

人们发现博迪先生在储藏室里被毒死了。在那个房间里发现的嫌疑人就是凶手。那么,你指的是谁呢?

这是作者解决方案的链接。

这是我尝试的解决方案:

0 投票
0 回答
52 浏览

prolog - `next` 谓词如何工作,做出两个相反的选择?

我正在制作爱因斯坦的谜语,我有一个解决方案,但我不明白一个特定的陈述是如何工作的,这里是代码:

最后一部分next是,我明白它指的是什么,他们习惯说一个房子在另一个旁边,但我不明白同一个函数如何将两个东西相互颠倒使用,Prolog怎么知道何时使用其中一种?也许我忘记了一些这种逻辑语言,但我现在不记得了,这是我的怀疑。我想了解它是如何工作的。

0 投票
1 回答
62 浏览

prolog - 如何在 prolog 中修复 Einstein Zebra 中的错误 >

我有斑马拼图的问题。

在下面

house[Nationality,Pet,Smokes,Drinks,Colour].

我看到错误:Singleton variables: house[Nationality,Pet,Smokes,Drinks,Colour]

当我写?- zebra_owner(Owner)

我看到了错误:procedure 'houses(A)' does not exist. Reachable from:zebra_owner(A)。`

0 投票
1 回答
459 浏览

prolog - 序言中的爱因斯坦谜题

我试图在序言中解决爱因斯坦难题 - 五朋友版 - 但我卡住了。我似乎无法在我的代码中找到错误,或者如何解决它。目标是编写一个 Prolog 程序,正确识别他们每个人做了什么样的谜题、谜题的主题以及他们完成它需要多长时间 - 解决方案(人、种类、时间、主题)

我也收到此错误: uncaught exception: error(existence_error(procedure,members/3),clue1/0)

我觉得跟会员有关系?

知识库:

  1. 五个朋友分别是 Krystal、Angie,一个是做外太空拼图的,一个是用 30 分钟完成拼图的,一个是做单词搜索的。

  2. Ethan 要么在 90 分钟内完成字母拼图,要么在 20 分钟内完成冬季主题拼图。

  3. 德里克和那个做逻辑谜题的人,一个花了 45 分钟,而另一个人做了一个电影主题的谜题。男孩用最短和最长的时间完成他们的谜题。

  4. 尼克花了不到 40 分钟的时间来解决他的谜题,这不是视觉数独。安吉花了 40 多分钟来完成她的猫拼图。

  5. 那个花了 60 分钟做运动拼图的女孩没有做拼图。拼图是由一个男孩做的,比做逻辑拼图的男孩用时短,但比做单词搜索的男孩用时多。

  6. 视觉数独要么需要一个小时才能完成,要么是以外太空为主题的。德雷克没有做冬季主题的谜题(不是单词搜索。)

这是我的代码: