आपकी कंपनी अभी एक परियोजना पर शुरू हो रही है, और पहली बार आपने एक कार्यात्मक प्रोग्रामिंग कोड-शैली का उपयोग करने का फैसला किया है। हालाँकि आपका बॉस वास्तव में अलग है और बिल्ट-इन फ़ंक्शंस का उपयोग नहीं करना चाहता है, और आपको स्वयं को मुख्य फ़ंक्शंस लागू करने की आवश्यकता है। विशेष रूप से आप कार्यों लिखने के लिए की जरूरत है: Map, Nest, Apply, Range, FoldऔरTable अपनी पसंद पर एक भाषा में। बॉस वास्तव में व्यस्त आदमी है, और वह कार्यक्रमों को यथासंभव छोटा करना चाहता है, इसलिए वह पढ़ने में समय बर्बाद नहीं करता है। वह यह भी नहीं चाहेंगे कि आप लूप का उपयोग न करें, इसलिए लूप का उपयोग न करने के लिए आपको बाइट की गिनती में 10% की कमी होगी।
कार्यों की विस्तृत आवश्यकताएं नीचे हैं:
नक्शा
Mapसमारोह दो पैरामीटर लेता है: fऔर listजहां fएक समारोह है और listमूल्यों की एक सूची है। इसे fप्रत्येक तत्व पर लागू होना चाहिए list। इसलिए यह इस तरह काम करेगा:
Map(f,{a,b,c})
रिटर्न
{ f(a), f(b), f(c) }
तथा
Map(f, {{a,b},{b,c}})
रिटर्न
{ f({a,b}), f({b,c})}
घोंसला
Nestसमारोह तीन पैरामीटर के रूप में अच्छी तरह से लेता है: f, arg, timesजहां fएक समारोह है, argइसके शुरू होने वाले तर्क है, और timesकितनी बार समारोह लागू किया जाता है। इसे fलागू timesसमय के साथ एक अभिव्यक्ति लौटानी चाहिए arg। इसलिए यह इस तरह काम करेगा:
Nest(f, x, 3)
रिटर्न
f(f(f(x)))
तथा
Nest(f, {a,b}, 3)
रिटर्न
f(f(f({a,b})))
लागू करें
Applyसमारोह दो पैरामीटर लेता है: fऔर argsजहां fएक समारोह और है argsएक सूची है। यह आवेदन करना चाहिए fकरने के लिए args। इसलिए:
Apply(f, {a,b,c})
रिटर्न
f(a,b,c)
रेंज
Rangeसमारोह एक पूर्णांक लेता है rऔर उस नंबर से ऊपर पूर्णांकों आउटपुट। इसलिए:
Range(5)
रिटर्न
{ 1, 2, 3, 4, 5}
तह
Foldसमारोह तीन पैरामीटर लेता है f, arg, othersजहां fएक समारोह है, argसाधारण पैरामीटर, और है othersएक सूची है। यह इस तरह काम करेगा:
Fold(f, x, {a, b, c, d})
रिटर्न
f(f(f(f(x,a),b),c),d)
तालिका
तालिका फ़ंक्शन को एक फ़ंक्शन fऔर iteratorफॉर्म में बुलाया एक पैरामीटर लेना चाहिए : {iMin, iMax}जहां iMinऔर iMaxपूर्णांक हैं। आपको fनिर्दिष्ट सीमा से अधिक आवेदन करना चाहिए । इसलिए:
Table(f, {0, 5})
रिटर्न
{f(0), f(1), f(2), f(3), f(4), f(5)}
मैंने इन कार्यों की परिभाषा का उपयोग मैथमैटिक फंक्शनल प्रोग्रामिंग पेज से किया है , इसलिए यदि आपको किसी और मार्गदर्शन की आवश्यकता हो तो वहां जाएं। ध्यान दें कि आपको उस पृष्ठ में दिखाए गए कार्यों के सभी संस्करण को लागू करने की आवश्यकता नहीं होगी, लेकिन केवल इस पोस्ट में लिखे गए।
मानक Loopholes हमेशा की तरह बंद कर दिए जाते हैं।
यदि आपकी भाषा फ़ंक्शंस को तर्क के रूप में पारित करने की अनुमति नहीं देती है, तो आपको इस क्षमता को लागू करने की आवश्यकता है, और इसे अपने उत्तर में जोड़ें। हालाँकि इस ऑपरेशन की बाइट-गिनती को कुल में नहीं जोड़ा जाएगा।
यह कोड गोल्फ है इसलिए सबसे छोटा कोड जीतता है। सौभाग्य!!!
Tableयहाँ कैसे काम करता है। क्या आपका उदाहरण होना चाहिएTable(f, {x, 0, 5})? मुझे इसका उद्देश्य बिल्कुल भी नहीं मिलताx, क्योंकि यह केवल फंक्शन को रेंज में लागू करता है।