আপনার সংস্থাটি একটি প্রকল্পে সবে শুরু হচ্ছে, এবং প্রথমবার আপনি কোনও কার্যনির্বাহী প্রোগ্রামিং কোড-স্টাইল ব্যবহার করার সিদ্ধান্ত নিয়েছেন। তবে আপনার বস সত্যই স্বতন্ত্র এবং বিল্ট-ইন ফাংশনগুলি ব্যবহার করতে চান না এবং আপনার নিজের প্রধান কার্যাদি বাস্তবায়ন করা প্রয়োজন। বিশেষ করে আপনি ফাংশন লিখতে প্রয়োজন: 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
, কারণ এটি কেবলমাত্র সীমাতে ফাংশনটি প্রয়োগ করে।