मान लीजिए हमारे पास परिमेय संख्याओं की एक सूची है। हमें 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 := एक नई सूची
- frac में प्रत्येक f के लिए, करें
- (अंश, हर) जोड़ी f से एक नया फ्रैक्शन ऑब्जेक्ट बनाएं और उसे fracs के अंत में डालें
- t := reduce(fracs फंक्शन func(x, y) के साथ जो 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)