কম্পিউটার টিউটোরিয়াল

পাইথনে রিডিউস ফাংশন ব্যবহার করে পূর্ণসংখ্যার গুণফল বের করার প্রোগ্রাম

ধরুন আমাদের একটি পূর্ণসংখ্যার (রেশনাল নাম্বার) লিস্ট আছে। আমাদের 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)
  1. নন-রিকার্সিভ ফাংশন ব্যবহার করে GCD বের করার সি প্রোগ্রাম

  2. রিকার্সিভ ফাংশন ব্যবহার করে GCD বের করার সি প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা (Duplicate)

  4. পাইথনে কিথ (Keith) সংখ্যা খুঁজে বের করার প্রোগ্রাম