0

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 は最初の語の数です。関数を使用するには、最初に m を固定します。たとえば、m = 2 とします。次に、n2 を m に関して分解します。ここで、n2 は出力シーケンスの「スロット」を表します。n2=5 とします。次に、「出力文字列の 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 の署名は何ですか?

このリストに作用する関数は、リストの単一の要素を受け取り、何らかの方法で数値を分解してから、上記の「式」を適用します。この意味で、これは 2 段階のアルゴリズムです。

これが不明な場合はお知らせください。読んでいる人にとって意味のあるものになるまで、私は確かに改訂を続けます.

4

1 に答える 1