我一直对如何让某个函数在 Python 中工作感到困惑。该函数将正整数转换为其他正整数,如下所示:
Phi_m(n2) = Phi_m(m*n + r) = m*x[n] + r*(x[n + 1] - x[n])
上述各项均为整数值,定义如下:
n2 = the (n2)th slot of the output string
m = a fixed positive integer
n = some multiple of m such that n*m is less than or equal to n2
r = a remainder term to fill in the amount missing from n*m in decomposing n2
x[n] = the element in the [n1]th slot of the input string
x[n + 1] = the element in the [n1 + 1]th slot of the input string
一般来说,我们从一串数字开始,比如 0、1、1、2、3、3,最后是一串 (k+1)m-1 项,其中 k 是您开始时的项数,不包括 0。要使用函数,我们首先固定一个 m,比如 m = 2。现在我们根据 m 分解 n2,其中 n2 表示我们输出序列的一个“槽”。假设 n2=5。然后我们问'输出字符串的第五个'槽'中有什么'。在这种情况下,我们的总输出字符串的长度将是 (5+1)2+1。请注意,我们不计算 0 - 它始终存在,并且出于我们的目的是第 0 项,因此我们有 5 个初始项。为了回答我们关于槽中内容的问题,我们将 5=2*2+1 作为分解。现在我们有了分解,我们可以应用我们的函数:
F(x(5)) = F(x(2*2+1)) 2x[2] + 1(x[3] - x[2]).
问题是,要让 Python 做到这一点,它必须知道如何分解每个数字。所以它知道 2 是固定的,并且知道 2*3 太多,所以选择 2*2。然后它必须知道这太少并添加余数1。只有完成后它才能真正抓住n = 5。也就是说,它可以运行该函数。似乎很清楚,一旦它知道如何执行此操作,它就可以遍历我们范围内的每个 n,但我真的不确定如何编写此函数的内容。
现在回答一些问题: xa 是函数吗?一个列表?一个号码?x[n] 本质上是一个列表。
当您说“输入字符串的值”时,您是什么意思?Phi_m 的签名是什么?
作用于这个列表的函数接受列表的单个元素,以某种方式给我们一个数字的分解,然后应用你在上面看到的“公式”。从这个意义上说,它更像是一个两步算法。
如果不清楚,请告诉我。我一定会继续修改,直到对那些阅读者有意义为止。