ট্র্যাক
/
F#
F#
/
অনুশীলনী
/
ঝকঝকে পরিষ্কার
ঝকঝকে পরিষ্কার

ঝকঝকে পরিষ্কার

লার্নিং অনুশীলনী

ভূমিকা

F#-এর char টাইপ হলো একটি ১৬ বিটের মান, যা টেক্সটের ক্ষুদ্রতম অ্যাড্রেসযোগ্য উপাদান প্রকাশ করে এবং ডিফল্টভাবে অপরিবর্তনীয়।

সিঙ্গেল কোট দিয়ে char-কে লিটারাল হিসেবে ডিফাইন করা যায়:

let ch = 'A'
// => val ch: char = 'A'

স্ট্রিং হলো char-এর একটি ক্রম।

শূন্য-ভিত্তিক ইনডেক্সিং দিয়ে একটি স্ট্রিং থেকে আলাদা একটি char পাওয়া যায়:

"Exercism"[4] //  =>  'c'

একটি স্ট্রিংয়ের উপর ইটারেশন করলে প্রতিটি ধাপে একটি char পাওয়া যায়।

পরের উদাহরণে সুবিধার জন্য একটি হায়ার অর্ডার ফাংশন আর একটি অ্যানোনিমাস ফাংশন ব্যবহার করা হয়েছে। এগুলো নিয়ে সিলেবাসে পরে বিস্তারিত আলোচনা করা হবে, তবে আপাতত এগুলো মূলত একটি স্ট্রিংয়ের ক্যারেক্টারগুলোর উপর লুপ লেখার একটি সংক্ষিপ্ত উপায়।

Seq.map (fun c -> c, int c) "F#"  //  =>  [('F', 70); ('#', 35)]

উপরের উদাহরণে দেখা যাচ্ছে, একটি char-কে তার int মানে কাস্ট করা যায়। অন্য স্ক্রিপ্টের বেলাতেও এটি কাজ করে (অন্তত কিছু ক্ষেত্রে):

Seq.map (fun c -> c, int c) "東京"  //  =>  [('東', 26481); ('京', 20140)]

ক্যারেক্টার তুলনা করার সময় অন্তর্নিহিত Int16-ই ব্যবহৃত হয়:

'A' < 'D'  // =>  true

এছাড়াও, একটি int-কে char-এ কাস্ট করা যায়:

char 77  // => 'M'

System.Char লাইব্রেরিতে একটি .NET ভাষার কাছে প্রত্যাশিত সব মেথড রয়েছে, যেমন বড় হাতের ও ছোট হাতের অক্ষরে রূপান্তর:

'a' |> System.Char.ToUpper  // =>  'A'

'Q' |> System.Char.ToLower  // =>  'q'

নির্দেশনা

এই অনুশীলনীতে আপনি একজন ডেভেলপারকে আইডেন্টিফায়ার নাম পরিষ্কার করতে সাহায্য করার জন্য কিছু ইউটিলিটি রুটিনের একটি আংশিক সেট তৈরি করবেন।

৬টি টাস্কে আপনি ধীরে ধীরে ফাংশন দুটি গড়ে তুলবেন: transform, যা একক ক্যারেক্টার রূপান্তর করে, এবং clean, যা স্ট্রিং রূপান্তর করে।

একটি বৈধ আইডেন্টিফায়ারে শূন্য বা তার বেশি অক্ষর, আন্ডারস্কোর, হাইফেন, প্রশ্নচিহ্ন এবং ইমোজি থাকতে পারে।

clean ফাংশনে যদি একটি খালি স্ট্রিং পাস করা হয়, তাহলে একটি খালি স্ট্রিং রিটার্ন করা উচিত।

1. যেকোনো হাইফেনকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করুন

যেকোনো হাইফেনকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করার জন্য transform ফাংশনটি তৈরি করুন।

transform '-'  // => "_"

2. সব হোয়াইটস্পেস মুছে ফেলুন

সব হোয়াইটস্পেস ক্যারেক্টার মুছে ফেলুন। এর মধ্যে শুরু ও শেষের হোয়াইটস্পেসও অন্তর্ভুক্ত।

transform ' '  // => ""

3. camelCase-কে kebab-case-এ রূপান্তর করুন

camelCase-কে kebab-case-এ রূপান্তর করতে transform ফাংশনটি পরিবর্তন করুন

transform 'D'  // => "-d"

4. যে ক্যারেক্টারগুলো ডিজিট, সেগুলো বাদ দিন

যে ক্যারেক্টারগুলো সংখ্যা, সেগুলো বাদ দিতে transform ফাংশনটি পরিবর্তন করুন।

transform '7'  // => ""

5. গ্রিক ছোট হাতের অক্ষরকে প্রশ্নচিহ্ন দিয়ে প্রতিস্থাপন করুন

'α' থেকে 'ω' পরিসরের যেকোনো গ্রিক অক্ষর প্রতিস্থাপন করতে transform ফাংশনটি পরিবর্তন করুন।

transform 'β' // => "?"

6. একটি স্ট্রিং-এর উপর কাজ করতে এই অপারেশনগুলো একত্র করুন

সম্পূর্ণ একটি স্ট্রিং-এর উপর এই অপারেশনগুলো প্রয়োগ করতে clean ফাংশনটি তৈরি করুন।

নিয়মের বাইরে পড়ে এমন ক্যারেক্টারগুলো অপরিবর্তিতভাবেই পাস হয়ে যাবে।

clean "  a2b Cd-ω😀  " //  => "ab-cd_?😀"

ক্যারেক্টার থেকে একটি স্ট্রিং তৈরি করা

এই বিষয়টি পাঠ্যক্রমে পরে বিস্তারিতভাবে আলোচনা করা হবে।

আপাতত জেনে রাখা কাজে লাগতে পারে যে String.collect নামে একটি হায়ার অর্ডার ফাংশন আছে, যা আপনার দেওয়া একটি ফাংশন ব্যবহার করে char-এর একটি কালেকশনকে স্ট্রিং-এ রূপান্তর করে।

let transform ch = $"{ch}_"
String.collect transform "abc"  // =>  "a_b_c_"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
F# Exercism

ঝকঝকে পরিষ্কার শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, F# ট্র্যাকের 18টি কনসেপ্ট148টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।