ধরুন আমাদের একটি পূর্ণসংখ্যার (রেশনাল নাম্বার) লিস্ট আছে। আমাদের reduce() ফাংশন ব্যবহার করে তাদের গুণফল বের করতে হবে। reduce() ফাংশন একটি ফাংশনকে দুটি আর্গুমেন্ট নিয়ে একটি লিস্টের অবজেক্টের ওপর বাম থেকে ডান দিকে ক্রমাগত লাগু করে।
উদাহরণস্বরূপ, যদি ইনপুট fractions = [(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 :=একটি নতুন লিস্ট- প্রতিটি
fইনfracএর জন্য,fracs-এFractionঅবজেক্ট ইনসার্ট করুন (নিউমেরেটর, ডিনোমিনেটর) পেয়ারfথেকে t := reduce(fracs with function func(x, y) returns x*y)(numerator of t, denominator of 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)