आपकी कंपनी अभी एक परियोजना पर शुरू हो रही है, और पहली बार आपने एक कार्यात्मक प्रोग्रामिंग कोड-शैली का उपयोग करने का फैसला किया है। हालाँकि आपका बॉस वास्तव में अलग है और बिल्ट-इन फ़ंक्शंस का उपयोग नहीं करना चाहता है, और आपको स्वयं को मुख्य फ़ंक्शंस लागू करने की आवश्यकता है। विशेष रूप से आप कार्यों लिखने के लिए की जरूरत है: 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
, क्योंकि यह केवल फंक्शन को रेंज में लागू करता है।