问题标签 [prolog-dif]
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 有一些不明白的地方。我有以下程序(基于他们的 wallace 和 grommit 程序):
并像这样加载它
但它没有给我以下任何解决方案
它可以解决更简单的问题(如书中所示):
并且有解决方案:
我错过了什么?我已经尝试过使用 gnu prolog 和 swipl。
...还有更多...
当您将“不能成为自己的队友”限制移动到然后结束时:
它给了我我期望的解决方案:
是什么赋予了?
prolog - 图中从 X 到 Y 的两条不同路径
我被以下 Prolog 问题所困扰:给定没有循环作为事实的图的边缘。例如:
我必须编写一个谓词来测试顶点 X 和 Y 之间是否有两条不同的路径。例如,two_paths(a, c).
如果从节点 a 到节点 c 有两条不同的路径,则调用应该返回 true。我知道如何检查两个顶点之间是否有路径:
但是我应该如何检查两条不同的路径呢?非常感谢您的帮助。
prolog - 实现诸如 dif/2 之类的谓词的指南
假设我有一个谓词foo/2
,它定义了它的第一个和第二个参数之间的关系。
什么是最惯用和最有效的方法来改变这样的实现foo/2
:
如果它的两个论点都成立,它就像以前一样(如果关系成立则成功,否则失败)。
如果两个参数之一(或两者)是自由的,它会“约束”这两个参数,以便当它们接地时,将检查关系。
换句话说,如何正确实现dif/2
任何类型的用户定义关系所表现出的行为?
listing(dif/2).
帮助不大。
prolog - 如何表达 allDifferent/6 谓词?
allDifferent(A, B, C, D, E, F)
当且仅当 ∀ i , j在 {1, 2, 3, 4, 5, 6} 中,第i个和第j个参数统一当且仅当 i = j时为真。
因此allDifferent(3, 1, 4, 1, 5, 9)
是假的,但却allDifferent(3, 1, 4, 2, 5, 9)
是真的。
如何allDifferent/6
在 Prolog 中实现?
特别是,有没有一种不需要列出 6-choose-2 = 15 个不等式A
≠ B
、A
≠ C
、...、E
≠ F
(或者,更确切地说,是它们的 Prolog 演绎)的方式来表达它?
prolog - 无法在 Prolog 中显示第二个答案
我不知道我的代码中发生了什么。当我输入
和
序言说的是真的。但是当我进入
序言说S = william
但没有告诉我S = betty
。我真的不知道发生了什么。需要帮忙。
这是我得到的序言结果。
list - Prolog:搜索列表中的两个元素是否同样出现
我是 Prolog 的新手,不是母语人士,所以如果你不理解我,我很抱歉。
我的问题是我怎样才能找到一个列表是否a
和b
从一个列表中出现相同?
例如,[a,a,b,b]
应该给我true
,但如果其中一个出现的次数多于另一个,它应该给false
。例如:[a,a,a,b,b]
。
任何人都可以帮助我吗?这是我到目前为止所拥有的,我知道这是错误的,但我正在尝试。
prolog - Prolog,关于如何形成更好的从句
我有以下条款:
当我输入查询时:
它只返回:
这就是我想要的。
但是当我输入这个查询时:
它只返回:
那么如何修改子句使其返回:
谢谢
list - 字符串列表的最长公共前缀 (LCP)
到目前为止,这是我的代码。我该如何优化它以便打印前缀,例如:
应该返回"inte"
Prolog 有点生疏,有一段时间没做过了:)
list - 如何实现 not_all_equal/1 谓词
如何实现一个not_all_equal/1
谓词,如果给定列表包含至少 2 个不同的元素,则该谓词成功,否则失败?
这是我的尝试(不是很纯粹的尝试):
然而,这并不总是具有最佳行为:
在这个例子中,只有第一个答案应该出来,另外两个是多余的。
prolog - Prolog中的平等和统一我错过了什么?
我正在通过 Clocksin 和 Mellish 尝试并最终超越仅仅涉足 Prolog。FWIW,我正在运行 SWI-Prolog:
适用于 x86_64-linux 的 SWI-Prolog 版本 7.2.3
无论如何,我在练习 1.4 中实现了一个 diff/2 谓词。谓词非常简单:
它在用于 Sister_of 谓词时有效,如下所示:
在那,假设必要的附加事实,这样做:
按预期返回 false。但这就是问题所在。如果我这样做:
(再次,考虑到必要的额外事实)我得到
谁=爱德华;
谁=爱丽丝;
错误的
尽管如前所述,sister_of 谓词并不将 alice 视为她自己的妹妹。
另一方面,如果我使用 SWI 提供的 dif/2 谓词,那么一切都会按照我天真期望的方式进行。
谁能解释为什么会这样,以及为什么我的 diff 实现不能按我预期的方式工作,在我要求从该查询中进行额外统一的情况下?
我正在使用的整个源文件可以在这里找到
任何帮助深表感谢。