问题标签 [successor-arithmetics]

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 投票
1 回答
576 浏览

prolog - 矩阵作为矩阵行序言的列表

我必须用这样的术语将矩阵表示为矩阵行的列表,并[[a,b],[c,d]]用 Peano 表示法表示数字。

我必须获得一行矩阵

ow(X,N,C):C是矩阵X的第N行和矩阵的列

column(X,N,C): C 是矩阵 X 的第 N 列。

也这个 One 分解第一列中的矩阵和矩阵的其余部分(这是完全相同的矩阵,但没有第一列):

有人可以帮我吗?

0 投票
1 回答
409 浏览

prolog - 后继算术和的最佳绿色削减是什么?

为了了解 Prolog 中的绿色切割,我试图将它们添加到后继算术中 sum 的标准定义中(参见What's the SLD tree for this query?plus中的谓词)。这个想法是通过消除所有无用的回溯(即 no )来尽可能“清理”输出,同时在所有可能的参数实例化组合下保持相同的行为 - 所有实例化,一/二/三个完全未实例化,以及所有变体包括部分实例化的参数。... ; false

这是我在尝试尽可能接近这个理想时能够做到的(我承认 false 对如何将绿色剪辑append/3作为源插入的回答):

在 SWI 下,这似乎适用于所有查询,但形状为 的查询除外?- plus(+X, -Y, +Z).,至于SWI 的谓词描述符号。例如,?- plus(s(s(0)), Y, s(s(s(0)))).产量Y = s(0) ; false.。我的问题是:

  • 我们如何证明上述削减是(或不是)绿色?
  • 我们能否比上述程序做得更好,并通过添加一些其他绿色削减来消除最后的回溯?
  • 如果是,如何?
0 投票
2 回答
283 浏览

prolog - 可逆树长关系

我正在尝试在“纯” Prolog 中编写可逆关系(不is,剪切或类似的东西。是的,这是家庭作业),我必须承认我不知道如何。我没有看到任何创建这样的东西的过程。

我们得到了“不纯”但可逆的算术关系(add、mult、equal、less...),我们必须使用它来创建这些关系。

现在,我正在尝试通过创建关系来了解如何创建可逆函数,tree(List,Tree)如果List是二叉树的叶子列表,则该关系为真Tree

为了实现这样的事情,我试图创建当有叶子tree_size(Tree,N)时为真的关系。这是我天真的、不可逆的关系:TreeN

我可以做查询tree_len(some tree, N),但不能,说,tree_len(X,3)所以它是不可逆的。到目前为止,我已经尝试了一些事情,但我必须承认我感到沮丧,因为我不知道在哪里寻找什么。实际上有办法做到这一点吗?

0 投票
3 回答
739 浏览

prolog - Prolog递归过程的解释

如果可能的话,我希望有人解释这个过程(来自“现在学习序言”一书)。它需要两个数字并将它们相加。

原则上我理解,但我有一些问题。假设我发出查询

结果是:

第 1 步是与规则 2 的匹配。现在 X 变为 s(0),Y 仍然是 s(0)。但是 Z(根据本书)变为 s(_G648),或 s(),其中包含未实例化的变量。为什么是这样?

在最后一步,匹配第一条规则,结束递归。在这里,Y 的内容以某种方式最终出现在 Z 的未实例化部分中!非常混乱,我需要一个简单的英文解释。

0 投票
1 回答
553 浏览

prolog - Prolog - 将成功表示转换为十进制

这是我的代码:

为什么这会给我这样的输出?

0 投票
1 回答
144 浏览

prolog - 基本 PROLOG 计数

我是 prolog 的新手,我正在尝试编写一个谓词,它计算以下内容:给出的谓词名称为 s2int:

  • s2int(0,Y) 它应该“返回”Y=0。
  • s2int(s(0),Y) => Y=1。
  • s2int(s(s(0)),Y) => Y=2。
  • s2int(S(s(s(0))),Y) => Y=3。

等等..这是我试图写的(非常糟糕),起初我尝试了这段代码:

但是每当我尝试通过键入 s2intAux(s(0),Y) 来运行它时,我都会收到一条错误消息:“错误:is/2:参数没有充分实例化”,因为 Y 未定义,所以我很好地得到了该错误。然后我尝试了这个:

(我试图以零值开始 Y,但这个根本不起作用)我已经被困了几个小时,这就是为什么我转向你们,请帮助!谢谢你。

0 投票
2 回答
2232 浏览

prolog - Prolog Peano 算术中的 Stackoverflow

我正在写一些 Peano 算术来更好地学习 Prolog。以下是我提出的代码,它似乎与我在网上其他地方看到的相同:

但是,如果我尝试进行简单的查询,例如 的除数对0,我会遇到问题:

这真的让我很烦恼,至于它怎么能一直到Y = 3,但不是Y = 4呢?

0 投票
3 回答
894 浏览

prolog - Prolog,检查项是否为 2 的幂

我编写了以下代码,它应该符合我的逻辑,但事实并非如此。

我应该检查给定的术语是否是二的幂。例如s(s(s(nul)))应该返回false,s(s(s(s(nul)))应该返回true。

我的想法是检查给定的 therm 是否是任何两个度数,如果不是,则不是二度数。

有了数字,它应该像这样工作。例如,我给出数字 8。

所以 8 id 两个的幂。

也许其他解决方案会更好,所以感谢您的帮助。

0 投票
1 回答
447 浏览

prolog - Prolog 程序 - Peano 数字列表 - 规则返回多个答案

我正在尝试编写一个带有规则的 Prolog 程序,该规则good需要一个列表,其中列表中的每个术语都是一个 Peano 数。当且仅当列表中的每个元素都大于前一个元素时,该规则才应该为真。

例如,以下示例应该是正确的:

以下示例应该是错误的:

这是我的代码:

但是,对于肯定查询good([0,s(0),s(s(0))]),真假都是解决方案。

错误是什么?

0 投票
1 回答
3083 浏览

prolog - Prolog 中的后继函数

在我最近在大学逻辑编程考试中遇到的一个问题中,我被要求编写一个 Prolog 谓词,odd/1来确定给定值是否为奇数。

该实现应该使用已经给定的 predicate s/1,它将评估给定元素的后继(即 X + 1)。这是为实现odd/1谓词给出的解决方案:

  1. !第一个表达式中的 真的有任何用途吗?我知道它可以防止在此之后回溯,但是没有以下表达式?这是否意味着解析算法在这一点上停止了?
  2. 为了练习,我尝试实现s/1后继谓词,但无法做到。(如何)可以在 Prolog 中实现这个谓词吗?