问题标签 [prolog-setof]

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 回答
1248 浏览

prolog - 运行函数,所有可能性都来自其他函数

我有两个谓词:

运行 foo 后,如何在 Y 的所有可能性下运行 bar?

例子:

我怎样才能在所有这些可能性中运行酒吧?

然后将所有结果存储Z在列表中Zs

0 投票
2 回答
1755 浏览

prolog - Prolog:失败驱动的循环

我使用以下失败驱动循环来列出所有内容而不使用分号。

在查询模式下,我得到了预期

如何将这些数字插入列表而不是将它们写入屏幕?我无法在内部处理这个问题,someGoal因为回溯似乎是隐含的。

0 投票
2 回答
5444 浏览

prolog - Prolog - 狼山羊白菜

我正在开发一款名为“狼山羊白菜”的益智游戏。编程语言是 Prolog。

为了让它工作,我打电话给 length(X,7),wgc([w,w,w,w],X).它,它显示了结果。问题是它多次显示第一个结果,然后显示第二个结果:

如何只显示一次两个结果?我试图添加!wgc的符号:

...但它只显示第一个结果一次。任何想法如何解决它?

0 投票
6 回答
10345 浏览

prolog - 不要在 Prolog 中重复解决方案

假设您有一个包含以下内容的数据库:

所以 a 和 b 是 d 和 c 的儿子。现在你想知道,给定一个更大的数据库,谁是谁的兄弟。一个解决方案是:

问题在于,如果您问“兄弟(X,Y)”。并开始按“;” 你会得到多余的结果,如:

  • X = a,Y = b;
  • X = b,Y = a;
  • X = a,Y = b;
  • X = b,Y = a;

我可以理解为什么我会得到这些结果,但我正在寻找一种方法来解决这个问题。我能做些什么?

0 投票
2 回答
894 浏览

prolog - Prolog如何防止重复答案

对于我的程序,知识库具有原子语句和规则,例如

例如:商店(iPhone5、手机)

例如:制造商(iPhone5、苹果)

查询是找出是否有一家公司制造了超过 2 种不同的产品类型,所以对于苹果来说,会有 Macbook、iPad 和 iPhone

这是我们的查询:

?- store(ItemID1, ProductType1), manufacturer(ItemID1, Company), store(ItemID2, ProductType2), manufacturer(ItemID2, Company), store(ItemID3, ProductType3), manufacturer(ItemID3, Company), not ProductType1 = ProductType2, not ProductType1 = ProductType3, not ProductType2 = ProductType3.

它给出了列出 3 种苹果产品的正确答案,但按 more 一次又一次给出相同的答案。有没有办法阻止这种情况?

注意:我知道此站点上给出的其他问题的其他答案,但由于我对 Prolog 的了解有限并且不确定这些答案是否适用于这个问题,我不知道如何实施它们。

注意:对于这个问题,我不允许使用! ->;运算符

0 投票
4 回答
2566 浏览

lambda - What is the Prolog operator `^` ("caret")?

What is the Prolog operator ^ ?

Looking at The Prolog Built-in Directive op gives a list of the built-in operators.

I see

  • ** is exponentiation
  • /\ is or

but what is ^ ?

Each of the three current answers are of value and I learned something:

  • Roy for the book
  • false for the examples
  • I accepted the answer by CapelliC because it made clear that ^/2 has multiple meanings
    depending on context which instantly cleared up my confusion.
0 投票
4 回答
551 浏览

prolog - 如何在不回溯所有不同路径的情况下检查 Prolog 中是否存在任何统计子句?

假设我有以下内容:

现在,如果我要黛安的兄弟姐妹,我会得到查理和夏娃——两次,一次是通过鲍勃,一次是通过爱丽丝。我只想要一次。
我不认为我可以在这里使用剪切,因为这会完全防止回溯。我想要的是一种检查是否存在的方法。

释义


我尝试了几次削减,但都没有奏效。
我尝试findall/3检查(parent(X, A), parent(X, B))结果列表是否为非空,但这并不能统一 A 或 B。


按照下面的建议使用setof/3是可行的,但我真的想找到一种方法将其合并到 的定义中sibling/2,而不必在问题中使用它。我真的很想能够做到以下几点:

或这个


就像我在下面所说的那样,我有一个针对这种特定情况的解决方案。我想要的,以及我设置赏金的,是一个通用的解决方案。

代替

我想做

它统一了AB

我该如何定义exists/1

0 投票
3 回答
2537 浏览

prolog - Prolog - 如何执行返回空列表而不是失败的 setof

我需要一个满足目标的对象的有序列表。setof负责排序,但在没有对象满足目标时失败。我想返回一个空列表而不是像findall那样。

这行得通,但是有没有办法在没有削减的情况下完成这个?我正在使用 SWI-Prolog。

0 投票
2 回答
8693 浏览

variables - 检查变量是否为空或已填充

我有以下问题:

序言编:

问题:

目标:

我不明白为什么会发生这种情况,但仍然想得到所有人的名字。所以我的解决方案是查看“Man”是否被初始化,如果是,则比“once ..”否则......类似这样的东西:

在“检查”上应该是检查变量“Man”是否被填充的代码。

这可能吗?

0 投票
2 回答
367 浏览

prolog - 简单的 Prolog 集

这很简单,但似乎无法掌握我有这些“颜色”

使用setof我需要在列表中获取这些颜色的所有可能组合如果您能提供一个简短的解释,那就太好了。我试过这个查询

setof(X,color(X),Colors).显然失败了

谢谢