大佬教程收集整理的这篇文章主要介绍了仅使用增量,循环,分配,零的关系运算,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
自然数集N
在加法和减法下是封闭的:
N + N = N
N - N = N
这意味着两个自然数的加法或减法也是自然数(考虑到0 - 1
is 0
和not -1
,我们不能有负自然数)。
但是,自然数集N
在关系运算下不会关闭:
N < N = {0, 1}
N > N = {0, 1}
这意味着比较两个自然数的结果是真实性(即1
)或虚假性(即0
)。
因此,我们将布尔值集(即{0, 1}
)视为自然数的受限集(即N
)。
false = 0
true = incr(false)
我们必须回答的第一个问题是“我们如何对if
语句进行编码,以便我们可以基于真实性或虚假性进行分支?” 答案很简单,我们使用以下loop
操作:
isZero(X) {
y = true
loop x { y = false }
return y
}
如果循环条件为true
(即1
),则循环仅执行一次。如果循环条件为false
(即0
),则循环不会执行。我们可以用它来编写分支代码。
那么,我们如何定义关系运算呢?事实证明,所有内容都可以通过以下方式定义lte
:
lte(x, y) {
z = sub(x, y)
z = isZero(z)
return z
}
我们知道这x ≥ y
与相同y ≤ x
。因此:
gte(x, y) {
z = lte(y, X)
return z
}
我们知道,如果x > y
为真x ≤ y
则为假。因此:
gt(x, y) {
z = lte(x, y)
z = not(z)
return z
}
我们知道这x < y
与相同y > x
。因此:
lt(x, y) {
z = gt(y, X)
return z
}
我们知道,如果x ≤ y
和y ≤ x
再x = y
。因此:
eq(x, y) {
l = lte(x, y)
r = lte(y, X)
z = and(l, r)
return z
}
最后,我们知道如果x = y
为true,x ≠ y
则为false。因此:
ne(x, y) {
z = eq(x, y)
z = not(z)
return z
}
现在,我们需要做的就是定义以下功能:
该sub
函数定义如下:
sub(x, y) {
loop y
{ x = decr(X) }
return x
}
loop x {
y = z
z = incr(z)
}
return y
}
该not
功能与该isZero
功能相同:
not(X) {
y = isZero(X)
return y
}
该and
功能与该@H_476_3@mul功能相同:
and(x, y) {
z = mul(x, y)
return z
}
@H_774_2@mul(x, y) { z = 0 loop x { z = add(y, z) } return z }这就是您所需要的。希望有帮助。
以上是大佬教程为你收集整理的仅使用增量,循环,分配,零的关系运算全部内容,希望文章能够帮你解决仅使用增量,循环,分配,零的关系运算所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。