Определение F в виде композиции более простой функции д
Пусть г биекция из N × Н до N, и пусть г -1 его обратный. Тогда мы можем определить f через g следующим образом.
Р (х, у, г) = г (г (х, у), г) = п
е -1 (п) = (х, у, г), где г - 1 (п) = (ш, г) и д -1 (ш) = (х, у)
Определение г как биекции из N × н до N
мы теперь имеем много более простая задача определения g.
г (х, у) = (х + у) (х + у + 1)/2 + у = п
г -1 (п) = (х, у), где т = & lfloor; (2n) 1/2 & rfloor; и выполняется одно из следующих двух условий.
Python
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
ли х, у, г, п реально? целое число? do x, y, z имеют любые границы? – Inspired
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет о математике не о программировании. Ответ с некоторым добавленным кодом Python не делает это вопросом программирования. –
Они целые, и у них нет никаких границ –