ট্র্যাক
/
F#
F#
/
অনুশীলনী
/
ট্র্যাক অন ট্র্যাক অন ট্র্যাক
ট্র্যাক অন ট্র্যাক অন ট্র্যাক

ট্র্যাক অন ট্র্যাক অন ট্র্যাক

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

ভূমিকা

অ্যারে

F#-এ একটি list হলো শূন্য বা ততোধিক মানের একটি ইমিউটেবল কালেকশন। একটি অ্যারের সব মানের টাইপ একই হতে হবে। যেহেতু অ্যারে ইমিউটেবল, একবার একটি অ্যারে তৈরি হয়ে গেলে তার মান আর কখনো বদলানো যায় না। যে ফাংশন/অপারেটরগুলো একটি অ্যারে পরিবর্তন করে বলে মনে হয় (যেমন একটি এলিমেন্ট যোগ করা), তারা আসলে একটি নতুন অ্যারে রিটার্ন করে।

অ্যারে এভাবে ডিফাইন করা যায়:

let empty = []
let singleValue = [5]
let threeValues = ["a"; "b"; "c"]

একটি অ্যারেতে এলিমেন্ট যোগ করার সবচেয়ে কমন উপায় হলো :: (কনস) অপারেটরের মাধ্যমে:

let twoToFour = [2; 3; 4]
let oneToFour = 1 :: twoToFour
// => [1; 2; 3; 4]

একটি F# অ্যারের একটি হেড (প্রথম এলিমেন্ট) এবং একটি টেইল (প্রথম এলিমেন্টের পরের সবকিছু) থাকে। একটি অ্যারের টেইল নিজেই একটি অ্যারে।

অ্যারে হয় List মডিউলে ডিফাইন করা ফাংশন ও অপারেটর দিয়ে, অথবা ম্যানুয়ালি list এবং cons প্যাটার্ন দিয়ে প্যাটার্ন ম্যাচিং করে ম্যানিপুলেট করা হয়:

let describe list =
    match list with
    | [] -> "Empty list"
    | head::tail -> sprintf "Non-empty list with head: %d" head

describe []        // => "Empty list"
describe [1]       // => "Non-empty with head: 1"
describe [5; 7; 9] // => "Non-empty with head: 5"

প্যাটার্ন ম্যাচিংয়ের সময় আপনি একটি মান ডিসকার্ড করতে পারেন; যখন কোনো নির্দিষ্ট কেসে একটি মানের প্রতি আপনার আগ্রহ নেই (অর্থাৎ আপনি মানটি ব্যবহার করবেন না), তখন এটি বোঝাতে আপনি একটি আন্ডারস্কোর ('_') ব্যবহার করতে পারেন:

let describe list =
    match list with
    | [] -> "Empty list"
    | [x] -> "List with one item"
    | [_; y] -> "List with two items (first item ignored)"
    | _ -> "List with many items (all items ignored)"

describe []        // => "Empty list"
describe [1]       // => "List with one item"
describe [5; 7]     // => "List with two items (first item ignored)"
describe [5; 7; 9] // => "List with many items (all items ignored)"

একক '_' প্যাটার্ন ম্যাচিংয়ে সবসময় সবার শেষে আসা উচিত; যে কোনো মান অন্য কোনো কেসের সাথে মেলে না, সেটি এই কেস দ্বারা হ্যান্ডেল করা হবে।

নির্দেশনা

এই অনুশীলনীতে আপনি Exercism-এ শিখতে চান এমন প্রোগ্রামিং ভাষার একটি অ্যারে নিয়ে হিসাব রাখার কোড লিখবেন।

আপনার ছয়টি কাজ আছে, যার প্রতিটিতেই অ্যারে নিয়ে কাজ করতে হবে।

1. একটি নতুন অ্যারে তৈরি করুন

আপনি যে ভাষাগুলো শিখতে চান সেগুলোর হিসাব রাখতে হলে আপনাকে একটি নতুন অ্যারে তৈরি করতে হবে। একটি নতুন, খালি অ্যারে ধারণ করে এমন newList বাইন্ডিংটি ডিফাইন করুন।

newList
// => []

2. একটি বিদ্যমান অ্যারে ডিফাইন করুন

বর্তমানে আপনার কাছে একটি কাগজের টুকরো আছে, যেখানে আপনি যে ভাষাগুলো শিখতে চান সেগুলো লেখা আছে: F#, Clojure এবং Haskell। এই অ্যারেটি বোঝাতে existingList বাইন্ডিংটি ডিফাইন করুন।

existingList
// => ["F#"; "Clojure"; "Haskell"]

3. অ্যারেতে একটি নতুন ভাষা যোগ করুন

Exercism ঘুরে দেখতে দেখতে যখন আরও মজার ভাষা খুঁজে পান, তখন সেগুলো আপনার অ্যারেতে যোগ করতে চান। আপনার অ্যারের শুরুতে একটি নতুন ভাষা যোগ করতে addLanguage ফাংশনটি ইমপ্লিমেন্ট করুন।

addLanguage "TypeScript" ["JavaScript"; "CoffeeScript"]
// => ["TypeScript"; "JavaScript"; "CoffeeScript"]

4. অ্যারেতে ভাষার সংখ্যা গণনা করুন

একটি একটি করে ভাষা গণনা করা অসুবিধাজনক। আপনার অ্যারেতে ভাষার সংখ্যা গণনা করতে countLanguages ফাংশনটি ইমপ্লিমেন্ট করুন।

countLanguages ["C#"; "Racket"; "Rust"; "Ruby"]
// => 4

5. অ্যারেটি উল্টে দিন

একসময় আপনি বুঝতে পারবেন যে আপনার অ্যারেটি আসলে উল্টো ক্রমে সাজানো! আপনার অ্যারেটি উল্টে দিতে reverseList ফাংশনটি ইমপ্লিমেন্ট করুন।

reverseList ["Prolog"; "C"; "Idris"; "Assembly"]
// => ["Assembly"; "Idris"; "C"; "Prolog"]

6. অ্যারেটি রোমাঞ্চকর কি না যাচাই করুন

আপনি সব ভাষাই ভালোবাসেন, তবে F#-এর জন্য আপনার হৃদয়ে বিশেষ একটি জায়গা আছে। তাই নিচের শর্তগুলো পূরণ হলে একটি ভাষার অ্যারে আপনার কাছে সত্যিই রোমাঞ্চকর:

  • অ্যারের প্রথম ভাষাটি F#.
  • অ্যারের দ্বিতীয়টি F# এবং অ্যারেটিতে দুটি বা তিনটি ভাষা আছে।

একটি ভাষার অ্যারে রোমাঞ্চকর কি না তা যাচাই করতে excitingList ফাংশনটি ইমপ্লিমেন্ট করুন:

excitingList ["Nim"; "F#"]
// => true
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
F# Exercism

ট্র্যাক অন ট্র্যাক অন ট্র্যাক শুরু করতে প্রস্তুত?

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