作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能帮我从 N * N * N → N 中找到一个双射数学函数,它接受三个参数 x、y 和 z 并返回数字 n?
我想知道函数 f 及其反函数 f',如果我有 n,我将能够通过应用 f'(n) 来确定 x、y、z。
最佳答案
假设 g 是从 N × N 到 N 的双射,并令 g-1 为其倒数。然后我们可以用 g 来定义 f,如下所示。
f(x, y, z) = g(g(x, y), z) = n
f-1(n) = (x, y, z) 其中 g-1(n) = (w, z) 且 g- 1(w)=(x,y)
我们现在有一个更简单的问题,即定义 g。
g(x, y) = (x + y)(x + y + 1)/2 + y = n
g-1(n) = (x, y) 其中 m = ⌊(2n)1/2⌋ 并且以下两个条件之一成立。
x + y = m 且 y = n - m(m + 1)/2
x + y = m - 1 且 y = n - m(m - 1)/2
def f(x, y, z):
return g(g(x, y), z)
def f_inv(n):
w, z = g_inv(n)
x, y = g_inv(w)
return (x, y, z)
def g(x, y):
return (x + y) * (x + y + 1) / 2 + y
def g_inv(n):
m = math.floor(math.sqrt(2 * n))
while True:
y = n - m * (m + 1) / 2
if y >= 0:
break
m -= 1
x = m - y
return x, y
关于python - 从 N*N*N 到 N 的双射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618441/
这是一个我正在尝试为其创建最佳解决方案的问题。我在 [0...N] 范围内有一组有限的非负整数。我需要能够将此集合中的每个数字表示为一个字符串,并能够将此类字符串向后转换为原始数字。所以这应该是一个双
我是一名优秀的程序员,十分优秀!