问题标签 [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 回答
90 浏览

list - succ 没有在 pred 上被删除

到目前为止,我已经找到了这个解决方案:

但问题是 s(s(s(0))) 没有被 pred 函数减少。它导致 p(p(p(s(s(s(0))))))

你们能帮帮我吗?

0 投票
1 回答
387 浏览

prolog - 如何在 Prolog 中实现 Peano 数求幂?

我正在尝试使用下面的代码实现求幂,但是像 2^1 ( ex(s(s(0)), s(0), Z).) 这样的简单查询会永远挂起。

0 投票
1 回答
97 浏览

prolog - 在 Prolog 中使用递归获取列表项的产品?

如何使用递归获得列表项的乘积?

如果我问:

结果应该是:

但我得到错误的结果。或者没有结果。

我试过了:

mul 是乘法,它工作正常。

如果我使用跟踪,我可以看到它找到了结果,但由于某种原因它失败了。

有人知道吗?

0 投票
1 回答
452 浏览

prolog - 如何知道Peano数是否为偶数

所以我很难和Peano一起尝试,我需要一些帮助。我想知道Peano数是否是偶数,如果是,则添加:

我到目前为止的代码:

0 投票
3 回答
217 浏览

prolog - 我正在尝试使用 DCG 创建一种语言 a^nb^n-1 c^n-2 但无法使 succ(0) 处理 n

好吧,很容易为每个规则使用 succ(0) 创建像 a^nb^nc^n 这样的语言,但是当涉及到改变 ab 和 c 的每个块的 n 时,它不起作用。

0 投票
1 回答
223 浏览

prolog - Prolog 第一个整数正好比第二个整数大 1

如果第一个整数正好比第二个整数大 1,程序应该返回 true。

当前代码每次都返回 false。

如果没有 abs(XY) == 1 行,它可以检查第二个整数是否大于第一个整数,但它应该检查差值是否正好为 1。

0 投票
1 回答
95 浏览

prolog - 判断一个数是否是另一个数的倍数

看下面的代码:

碰巧有什么不对劲。供您参考:
lt/2 是第一个参数是否小于第二个。
diff/3 是第三个参数是否等于第一个参数减去第二个参数。
lt/2 和 diff/3 定义正确。

定义是否存在逻辑错误?假设 0 是每个有问题的数字的倍数还是其他地方的逻辑错误?我得到了正确的答案,但我认为查询进入了无限循环。

编辑:
这是其他定义。

其中s(0)是 1,s(s(0))是 2 等等。它给出了 X 的所有所需答案,但在最后一个答案之后,它就卡住了。我假设在无限递归循环中?

0 投票
1 回答
55 浏览

prolog - 列出大小乘法

我是 Prolog 的新手,我正在努力了解列表。我正在努力解决的问题是:给定列表形式的数字(1:[x],3:[x,x,x]),实现'times'谓词/3。例如:次([x,x],[x,x,x],R)。R = [x, x, x, x, x, x]。

加号和后继谓词在哪里 2 以前的练习点。我知道我没有使用后继谓词,但后来它似乎没那么有用。

这是我迄今为止尝试过的

输出是:R 是 []。

0 投票
1 回答
108 浏览

prolog - (SWI-PL) 我不知道如何创建一个序言规则来匹配这种特定类型的输入

所以我有一个家庭作业,我给出了以下代码:

我要定义一个序言谓词 add2(X,Y,Z) ,它将产生例如以下输出

所以过去几天我一直在研究这个问题,并在解决方案上做出了合理的尝试。这是我到目前为止一直在尝试的:

现在,上面的代码对于提供的前 3 个输入非常有效。我很难考虑 prolog 如何解释最后一个,以及如何利用它。

这就是我认为可能有效的方法。

我的想法是,解释器会将诸如 succ(0+succ(...)) 之类的输入识别为 succ(A+B),然后上述规则将能够解析 0+succ(. ..) 进入 succ(...) 。我从 SWI-PL REPL 收到的输出很简单:

我进行的另一次尝试如下:

但是,这会产生与以前相同的输出。我不确定为什么上述两次尝试似乎对我不起作用,虽然我做了其他猜测,但上述两个或其他谓词或多或少有随机变化,如果我通过这种方法成功了,我会可能在不了解我在做什么的情况下获得了正确的答案。

我使用 SWI-PL 作为我的 prolog 发行版。

0 投票
1 回答
396 浏览

prolog - Prolog 前身数学

我有一个add2谓词,它像这样解析ies(0)的继承者在哪里01

ETC..

我正在尝试添加一个前任谓词,它将像这样工作

我似乎找不到办法做到这一点。我的代码如下。