问题标签 [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.
prolog - 在 Prolog 中使用约束和排列解决难题
我被要求使用 Prolog 解决类似于斑马谜题的谜题。相反,我试图找出吃馅饼的人的国籍。我知道这个问题有不同的解决方案,但是我试图通过使用约束和排列来解决这个难题。但是,运行 pie_eater 谓词会返回 false,并且在跟踪代码时它不会停止运行。
约束列表如下:
在我的代码中,我定义了一个包含 5 个房屋的列表Street 。然后,我为列表中每个元素的每个对应形容词定义变量,以用于我的排列猜测。我将每个约束都翻译成代码。为了生成答案,我为每所房子的每组变量创建了排列。在底部,我定义了谓词leftof和nextto以满足问题的一些约束。
代码如下:
盯着我的代码几个小时,我觉得它应该可以工作,但是我仍然无法弄清楚为什么我不能生成正确的排列,因为我已经定义了所有的约束。在这一点上,我被困住了。
自己做题,我相信日本人就是答案。
prolog - Prolog 逻辑拼图不起作用?
我一直在研究这个 Prolog 逻辑问题。结果不正确,运行程序本身需要一段时间,这让我更担心。逻辑问题如下:
Alex、Bret、Chris、Derek、Eddie、Fred、Greg、Harold 和 John 是九名学生,他们住在一栋三层楼的大楼里,每层楼有三个房间。西厢房,中厢房,东厢房。直视建筑物,左侧为西,右侧为东。每个学生都被分配到一个房间。你能找到他们每个房间的位置吗?
- 哈罗德不住在底层。
- 弗雷德住在约翰的正上方,紧挨着布雷特(住在西翼)。
- Eddie 住在东翼,比 Fred 高一层。
- 德里克住在弗雷德的正上方。
- 格雷格住在克里斯的正上方。
这是我编写的代码,需要一段时间才能完成并给出不正确的结果:
这是一个有问题和解决方案的网站的链接:https ://www.brainbashers.com/showpuzzles.asp?puzzle=ZQJZ
任何帮助,将不胜感激。
prolog - 写一个Prolog程序来解决这个问题
我是 Prolog 的新手,请协助。Hunter、Laura、Jim、Sally 和 Jack 在与五个相邻办公室的同一栋大楼内工作。亨特不在第五办公室工作,劳拉不在第一办公室工作。Jim 不在第一个或最后一个办公室工作,而且他不在 Jack 或 Laura 旁边的办公室。莎莉在比劳拉更高的办公室工作。谁在什么办公室工作?
编写一个 Prolog 程序来解决这个问题。定义什么是邻接,然后是什么办公室,然后创建一个布局(X),允许您放入所有规则。每个人都被安置在一个不违反任何规定的办公室里。
prolog - 解决此 Prolog Caliban 问题时的实例化问题
我正在尝试使用 Prolog解决以下Caliban问题:
布朗、克拉克、琼斯和史密斯是 4 位重要的公民,他们以建筑师、银行家、医生和律师的身份为社区服务,尽管不一定分别。布朗比琼斯更保守,但比史密斯更自由,他的高尔夫球手比比他年轻的男人更好,收入也比比克拉克大的男人高。比建筑师挣得多的银行家既不是最年轻的,也不是最年长的。打高尔夫球比律师差的医生,也没有建筑师那么保守。不出所料,最年长的人最保守,收入最高,最年轻的人是最好的高尔夫球手。每个人的职业是什么?
我在网上找到了这段代码,并试图自己运行它:
但是>/2: Arguments are not sufficiently instantiated
在使用 ?-solutions(L) 运行时继续获取。
有人有这个问题的解决方案吗?
python - 有没有办法生成项目列表的所有唯一排列
我有一个包含五个属性的列表,每个属性都有五个不同的值。我想生成它们的笛卡尔积并过滤所有独特的排列。
一些背景:
我需要它们作为我的输入值来解决逻辑难题。我在哪里检查规则以找到正确的解决方案。
也许一个简化的例子可以说清楚。
数据:
数据的笛卡尔积:
我想要的是:
我不想要的:
我不希望多次出现相同的值。这个地方很重要,因此它应该具有置换特征,并且对于具有五个元素的列表列表而言。我猜输出大小会很大,可能无法计算,所以最好指定一些固定的位置值。例如,我想将“Dana”设置为第一个元素名称。
输出:
也许您可以出于好奇告诉我,这些概念的具体数学名称是什么,我需要哪些?
谜题:
有五个朋友(Dana、Ingo、Jessica、Sören、Valerie)在购物中心的收银台前排队等候。他们都是不同的年龄(26、27、30、33、35),想为自己购买不同的上衣(衬衫、Polo 衫、套头衫、运动衫、T 恤)。上衣有不同的颜色(蓝色、黄色、绿色、红色、黑色)和尺寸(XS、S、M、L、XL)。
规则:
- “Dana”最想买的是“XL”。在她身后(但不是直接在后面)是一个穿着“黑色”上衣的人。
- “杰西卡”直接在一个想买“马球衫”的人面前等着。
- 排队的第二个人想买一件“黄色”上衣。
- “T 恤”不是“红色”。
- “Sören”想买一件“运动衫”。直接在他面前等候的人比他身后的人年长。
- 'Ingo' 需要一个尺寸为 'L' 的上衣。
- 排队的最后一个人是 30 岁。
- 最年长的人会购买尺寸最小的上衣。
- 直接在“Valerie”后面等候的人想买一件比“S”号大的“红色”上衣。
- 最年轻的人想买一件“黄色”上衣。
- 杰西卡要买一件“衬衫”。
- 第三个排队的人想买一件“M”号的上衣。
- “Poloshirt”是“红色”或“黄色”或“绿色”。
prolog - 定义复杂的事实 - Einsteins Zebra
我试图找出复杂关系的正确事实表示Prolog
。
2行有6个帐篷,表示为:
- 我需要写下一个事实
名叫彼得的人在帐篷里,而不是在伊恩的帐篷前
.
- 我可以(以及如何)写下事实说
彼得的妻子名字不是安吗?
编辑:
哦,我对“在前面”的定义不是很清楚。在这种情况下,这不是普通的事情,我会尝试向您展示:
即tent1在tent4前面的意思。然后tent1 的方向为“NORTH”,位置为“FOREST”。不在它前面的帐篷是tent5(方向“南”,位置“中间”)。
带有 diff(Wife, 'Ann') 的东西工作得很好,谢谢你。
我咨询了教授,我们一致认为对于这个作业我真的不需要事实否定,目标是做出正确的决定并忽略不必要的事实。
无论如何,谢谢你帮助我。
prolog - 斑马拼图——谁住在哪一层?
我有一个斑马/爱因斯坦类型的 Prolog 谜题,与这里描述的谜题非常相似:
谜底是:
有两栋楼,每栋都有树屋(每层一套):一套3房,一套4房,一套5房。
Dana、Joni 和 Noah 住在 1 号楼。Ron、Gale 和 Aron 住在 2 号楼。
Joni 的公寓比 Dana 和 Noah 的要高。这意味着他住在 1 号楼的三楼。诺亚和盖尔住在同一层(在不同的建筑物中)。Ron 比 Aron 多一个房间。罗恩住在盖尔楼上。2号楼最高的公寓是5室公寓。
我需要找出每个人住在哪一层。
这是代码。
我不明白在以下解决方案中使用哪个查询?当我尝试从原始帖子中查询时,
它说
对此的正确查询是什么?
谢谢。
prolog - Prolog Logic 与相邻房间
这是我的问题:
Hunter、Laura、Addiley (jack)、Ramey(Sally) 和 Arnie(Jim) 都住在同一个宿舍里,有五间相邻的卧室。亨特不在第五间卧室睡觉,劳拉不在第一间卧室睡觉。Arnie 不在第一个或最后一个卧室睡觉,而且他不在与 Addiley 或 Laura 相邻的卧室。拉米睡在比劳拉更高的卧室里。谁睡在哪间卧室?编写一个 Prolog 程序来解决这个问题。
定义什么是邻接,然后是卧室,然后创建一个
layout(X)
允许您放入所有规则的地方。
这是我到目前为止的代码,我也尝试了一些变体:
主要问题是,我是否正确计算了相邻的房间?以及如何正确实施。当我尝试运行代码时,我不断得到“不”。感谢任何可以帮助我的人!!
prolog - 一周中独角兽的日子如何?
任务:众所周知,独角兽会在周一、周二和周三撒谎,并在一周的所有其他日子里说真话。他可以说:“昨天我撒了谎。明天之后,我会连续躺两天。” 确定谈话的日期。
把代码草绘了,但是不知道怎么说独角兽连续两天撒谎,更正代码,先谢谢了。
prolog - 逻辑谜题中的 Prolog 成员
我是 Prolog 的新手,需要一些指导 *(不是答案)才能朝着正确的方向前进。首先,我试图解决一个逻辑难题。逻辑中有三元组。我知道如何创建否定和成员,如下所示:
我陷入困境并且不太了解 Prolog 的地方是如何根据成员的关系比较成员(使用不等式)。例如,X 比 Y 晚在一周内被吃掉。
所以我试过了
但它似乎不起作用?
谢谢指导!