1

例: (3x 2 - 5x + 2)(7x + 1) そして、次のように単純化します。

((3 2)(-5 1)(2 0))((7 1)(1 0))
((21 3)(3 2)(-35 2)(-5 1)(14 1)(2 0))
(21 3)(32 2)(9 1)(2 0)

この答えが得られます: 21x 3 + 32x 2 + 9x + 2

Lispでこのソリューションが必要です 助けてください

4

1 に答える 1

0

最初の段階では、すべての LHS コンポーネントとすべての RHS コンポーネントをペアにする必要があります。2 つのセットのデカルト積。これには、2 レベルのマップと、それに続くペアの 2 番目のレベルのリストを単一のトップ レベルのリストに連結する必要があります (図 4 を考えてください(apply #'append ...)。

第 2 段階は、指数をキーとする連想リストを作成する reduce を使用して実行できます。

編集:別の問題を解決させてください。それをあなたの問題の解決策に変換する方法を理解させてください:

(a + b + ... + k) * (l + m + ... + z)最初にペアに展開してから積を合計して計算します。

(defun mul-sums (aa bb)
  (reduce #'+
          (apply #'append
                 (map 'list
                      #'(lambda (a)
                          (map 'list
                               #'(lambda (b)
                                   (* a b))
                               bb))
                      aa))))
; Compute (1 + 2 + 3) * (3 + 4).
> (mul-sums '(1 2 3) '(3 4))
42
于 2010-05-15T09:24:08.640 に答える