Python
 Computer >> コンピューター >  >> プログラミング >> Python

reduce関数を使用して有理数の積を見つけるPythonプログラム


有理数のリストがあるとします。削減機能を使用して製品を見つける必要があります。 reduce()関数は、左から右へのオブジェクトのリストに累積的に2つの引数を持つ関数を適用します。

したがって、入力が分数=[(5,3)、(2,8)、(6,9)、(5,12)、(7,2)]のような場合、出力は(175、432)になります。 )5/3 * 2/8 * 6/9 * 5/12 * 7/2 =(5 * 2 * 6 * 5 * 7)/(3 * 8 * 9 * 12 * 2)=2100/5184 =175/432。

これを解決するには、次の手順に従います-

  • fracs:=新しいリスト
  • fracの各fについて、
    • fracの最後に(分子、分母)ペアfから新しい分数オブジェクトを挿入します
  • t:=reduce(関数func(x、y)を持つfracsはx * yを返します)
  • (tの分子、tの分母)のペアを返す

理解を深めるために、次の実装を見てみましょう

from fractions import Fraction
from functools import reduce

def solve(frac):
   fracs = []
   for f in frac:
      fracs.append(Fraction(*f))

   t = reduce(lambda x, y: x*y, fracs)
   return t.numerator, t.denominator

frac = [(5,3),(2,8),(6,9),(5,12),(7,2)]
print(solve(frac))

入力

[(5,3),(2,8),(6,9),(5,12),(7,2)]

出力

(175, 432)

  1. 非再帰関数を使用して数値のGCDを見つけるCプログラム

    問題 非再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけます。 解決策 非再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つける方法を以下に説明します。 アルゴリズム 非再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけるには、以下のアルゴリズムを参照してください。 ステップ1 −開始 ステップ2 −整数aとbを読み取ります ステップ3 −関数G =GCD(a、b)ステップ6を呼び出します ステップ4 −G値を出力 ステップ5 −停止 ステップ6 −呼び出された関数:GCD(a、b) a. Initialize th

  2. 再帰関数を使用して数値のGCDを見つけるCプログラム

    問題 Cプログラミング言語の再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけます。 解決策 再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけるための解決策は、次のとおりです- アルゴリズム 再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけるには、以下のアルゴリズムを参照してください。 ステップ1 −再帰関数を定義します。 ステップ2 −2つの整数aとbを読み取ります。 ステップ3 −再帰関数を呼び出します。 a. if i>j b. then return the function with parameter