1

私はこの問題に数時間取り組んできましたが、どこから始めて何をすべきかわかりません。その背後にある数学/ロジックは理解していますが、それをコードにうまく組み込む方法がわかりません。

これが問題です:

  1. 2 つの多項式の積を返す関数multiply(self, other)を作成してテストします。1 つのループ (for または while) を使用します。その中で、前の質問から *multiply_by_one_term* を呼び出します。

これは私が最初に設定したものです。それが何と呼ばれているか思い出せません:

class Polynomial:
    def __init__(self, coeffs=[0]):
        self.coeffs = coeffs

これは私が行ったテストです:

def multiply(self, other):
    """
      >>> p1 = Polynomial([1, 2])
      >>> p2 = Polynomial([3, 4])
      >>> p1.multiply(p2).coeffs
      [3, 10, 8]
    """

これは私が呼び出す必要がある関数です:

def multiply_by_one_term(self, a, exp):
    """       
      >>> p = Polynomial([2, 1, 3])
      >>> p.multiply_by_one_term(3, 2).coeffs
      [6, 3, 9, 0, 0]
      >>> p = Polynomial([2, 1, 3])
      >>> p.multiply_by_one_term(3, 0).coeffs
      [6, 3, 9]
    """

    return Polynomial([a*i for i in self.coeffs] + [0]*exp)

誰かがこれを手伝ってくれたら本当にありがたいです。プログラミングに関してはまだ初心者で、よくわかりません。

4

3 に答える 3

1

特定の制約があるため、これは割り当てであると想定しています。

私が学んだ掛け算の方法は、次のような和でした。

12*34 = 12*30+12*4

多項式の場合、次のように変換します。

(x+2)(3x+4) = (x+2)(3x)+(x+2)4

これは、

p1.multiply_by_one_term(p2.coeffs[i], len(p2.coeffs[i])-i-1)

つまり、次のようなものが必要です。

# WARNING: This is not very idiomatic Python, but I can't think of a way to do it without indexes.
def multiply(self, other):
    subproducts = []
    for i in len(other.coeffs):
        subproducts.append(self.multiply_by_one_term(other.coeffs[i], len(other.coeffs)-i-1))
    add_subproducts_together(subproducts)

サブプロダクトを一緒に追加する簡単な方法もあるはずです。そうでない場合は、同様の用語をそれぞれ追加して記述できます (右から揃える必要があることに注意してください)。

于 2013-08-08T01:19:13.340 に答える