问题标签 [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.

0 投票
3 回答
1548 浏览

list - Prolog:用另一个列表替换列表中的元素

对于以下查询(以及以下定义的谓词),我得到了一个意想不到的答案:

第一个结果是我想要的。第二个不想...

我怎样才能防止第二个?可能是通过添加!某处?

0 投票
1 回答
334 浏览

prolog - 在列表中计数。帮助我理解这段代码

我发现了一个3 年前的问题,它可以帮助我计算列表中变量的出现次数。这个问题有下面的答案。该代码有效。但我不明白怎么做,有人可以帮我理解这个吗?

这是我找到的代码的答案,用引号括起来是答案的一部分:

'但是请注意,第二个参数 X 应该被实例化。因此,例如 count([2,23,3,45,23,44,-20],23,C) 会将 C 与 2 统一起来。如果您想要使用每个元素的计数'

'那么你得到'

我对Prolog很陌生,我只了解这段代码的一部分,就是这个

我将不胜感激整个事情的解释,尤其是 Y 是如何打印的。

0 投票
1 回答
700 浏览

prolog - 使用 Prolog 定义部门和员工关系

我正在通过旧考试并尝试检查我的工作。我附上了图片,但文字如下:

我们想扩展一个处理公司员工的程序。

对于每个部门,有一个事实department(Id, Manager, Groups)定义了部门Id的名称, ,其经理的姓名,Manager,以及构成该部门的工作组或其他部门的列表,Groups

对于每个工作组,都有一个事实 ,group(Id, Leader, Participant)定义Id了该组的唯一名称 , ,该组Leader的经理或领导者,以及一个Participant包含该组成员名称的列表 , 。

个人可以是一个或多个工作组的成员,或者“只是”经理。同一个人可以是多个小组/部门的领导或经理。领导者被认为是他们领导的工作组的一部分,而等级较高的经理不会自动成为任何工作组的成员。

例如,程序的数据库可能如下所示:

定义这些谓词!

  • coworker(Name, Department, Group)如果一个人 ,Name属于某个部门 ,Department和某个工作组 ,则为真的谓词Group, (none如果该人不属于任何工作组,则使用)。

  • leader(Name, GroupId)如果一个人Name是某个工作组的领导者,则谓词为真GroupId

  • manager(Name, Id)如果某人是某个部门的经理,Id或者名称为 的工作组的领导者,则谓词为真Id

请考虑个人通常可以直接成为工作组的成员,也可以隐含地成为多个级别的部门成员!

我的代码如下:

我已按照以下建议修改了我的代码:

0 投票
3 回答
270 浏览

list - 检查任何元素的频率是否超过限制

我想解决一个问题,即我有一个 Prolog 元素列表。如果任何一个元素频率大于N则返回 false。我的期望如下。

我有一个获取特定元素频率的代码。任何想法的问题。

0 投票
3 回答
2798 浏览

list - Prolog:检查列表中的重复项

  1. 编写一个谓词allDistinct/1,其参数是(符号的)列表,如果列表中的所有符号都不同,则该谓词成功。

    /li>
0 投票
1 回答
3556 浏览

prolog - 我如何为prolog创建一个兄弟谓词?

我被告知要创建一个兄弟谓词来确定兄弟是否有兄弟姐妹。Brother(B, S) :-. 我知道您需要确定他们是否有相同的父母,但我不知道该怎么做。

这是我拥有的定义父母、祖父等的文档。我需要创建一个兄弟谓词,它作为兄弟(B 是兄弟,S 是兄弟姐妹)。例如兄弟(利亚姆,乔治亚州)。利亚姆是乔治亚的兄弟应该是真的

0 投票
1 回答
662 浏览

list - 非成员规则在 Prolog 中无法按预期工作

我正在尝试在 Prolog 中创建一个迷宫程序,其目的是找到一条从迷宫开始到迷宫中心点 m 的路线。迷宫由使用四种颜色之一连接的正方形组成:蓝色、绿色、紫色或橙色。从起点到中心的路线遵循四种颜色的重复模式。

我创建了以下代码:

出于某种原因,代码没有按预期工作,我不确定为什么。我觉得这与否定(不是成员)规则有关,但有人可以告诉我我做错了什么吗?

0 投票
2 回答
738 浏览

path - Trying to obtain cost for a given path

I am new to Prolog

I am trying in Prolog a rule that gives me a given path from a node to another and also gives me the total weight of the path.

I have succeeded to get all the edges of the path but I am not able to show the weight of the path. I debbuged it and it is seen that variable S adds up to the whole weight of the path but in the way back, deletes all the elements. My idea is to add the total weight to P.

Code:

0 投票
4 回答
1051 浏览

list - 如何从 Prolog 的列表中删除每个项目

我想定义一个关系del_all(X, L, L1),用于从 list 中删除所有项目X(如果有)L

示例查询:

0 投票
2 回答
3543 浏览

list - Prolog比较列表的元素

当给定一些输入列表时,我想构建一个新列表,它应该:

  • 始终在新列表前面添加 h
  • 比较输入列表的每两个连续元素,如果它们相等,则将 y 附加到新列表中,如果不相等,则附加 x。

例子:

到目前为止,这是我的代码:

但它不能正常工作。

我怎样才能使它正确?