আপনার সংস্থাটি একটি প্রকল্পে সবে শুরু হচ্ছে, এবং প্রথমবার আপনি কোনও কার্যনির্বাহী প্রোগ্রামিং কোড-স্টাইল ব্যবহার করার সিদ্ধান্ত নিয়েছেন। তবে আপনার বস সত্যই স্বতন্ত্র এবং বিল্ট-ইন ফাংশনগুলি ব্যবহার করতে চান না এবং আপনার নিজের প্রধান কার্যাদি বাস্তবায়ন করা প্রয়োজন। বিশেষ করে আপনি ফাংশন লিখতে প্রয়োজন: 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)}
আমি গাণিতিক ফাংশনাল প্রোগ্রামিং পৃষ্ঠা থেকে এই ফাংশনগুলির সংজ্ঞাটি ব্যবহার করেছি , সুতরাং আপনার যদি আরও কোনও গাইডেন্সের প্রয়োজন হয় তবে সেখানে যান। মনে রাখবেন যে আপনাকে সেই পৃষ্ঠায় প্রদর্শিত ফাংশনগুলির সমস্ত সংস্করণটি প্রয়োগ করতে হবে না, তবে কেবলমাত্র এই পোস্টে লিখিত রয়েছে।
স্ট্যান্ডার্ড লুফোলগুলি যথারীতি অনুমোদিত নয়।
আপনার ভাষা যদি ফাংশনগুলিকে আর্গুমেন্ট হিসাবে পাস করার অনুমতি না দেয় তবে আপনার এই ক্ষমতাটি প্রয়োগ করতে হবে এবং আপনার উত্তরে এটি যুক্ত করা দরকার। তবে এই অপারেশনের বাইট-কাউন্টটি মোট যোগ করা হবে না।
এটি কোড গল্ফ তাই সংক্ষিপ্ততম কোডটি জয়ী। শুভকামনা !!!
Tableএখানে কীভাবে কাজ করে তা সত্যিই পাই না । আপনার উদাহরণ অনুমিত হয়Table(f, {x, 0, 5})? আমি এটার উদ্দেশ্যও মোটেও পাই নাx, কারণ এটি কেবলমাত্র সীমাতে ফাংশনটি প্রয়োগ করে।