ট্র্যাক
/
Gleam
Gleam
/
অনুশীলনী
/
আবহাওয়ার র‍্যাঙ্কিং
আবহাওয়ার র‍্যাঙ্কিং

আবহাওয়ার র‍্যাঙ্কিং

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

ভূমিকা

কনস্ট্যান্ট

Gleam-এ কনস্ট্যান্ট হলো মানকে নাম দেওয়ার একটি উপায়। এগুলো const কিওয়ার্ড দিয়ে ডিফাইন করা হয়।

pub const pi: Float = 3.14159

pub fn circle_area(radius: Float) -> Float {
  radius *. radius *. pi
}

pub কিওয়ার্ড দিয়ে ডিফাইন করা হলে মডিউল কনস্ট্যান্টগুলো অন্য মডিউল থেকে অ্যাক্সেস করা যায়, নাহলে সেগুলো যে মডিউলে ডিফাইন করা হয়েছে কেবল সেই মডিউলের ভেতর থেকেই অ্যাক্সেস করা যায়।

অর্ডার

Gleam-এর স্ট্যান্ডার্ড লাইব্রেরির gleam/order মডিউলে রয়েছে Order টাইপ, যা মান তুলনা করতে ব্যবহৃত হয়।

Order-এর ডেফিনিশন দেখতে এমন:

pub type Order {
  Gt
  Eq
  Lt
}

টাইপটির তিনটি ভ্যারিয়েন্ট আছে, যার প্রতিটি একটি মান ও আরেকটি মানের মধ্যকার সম্পর্ক বোঝাতে ব্যবহৃত হয়:

  • Gt - মানটি অন্য মানটির চেয়ে বড়।
  • Eq - মানটি অন্য মানটির সমান।
  • Lt - মানটি অন্য মানটির চেয়ে ছোট।

কোনো ডেটা টাইপ যদি আকার অনুযায়ী তুলনা করা যায়, তাহলে এটি কমন যে মডিউলটি একটি compare ফাংশন ডিফাইন করে, যা একটি Order মান রিটার্ন করে। উদাহরণস্বরূপ, gleam/float ও gleam/int এমন compare ফাংশন ডিফাইন করে, যেগুলো যথাক্রমে ফ্লোট ও ইন্টিজারের ওপর কাজ করে।

int.compare(1, 2)
// -> Lt

int.compare(2, 2)
// -> Eq

float.compare(1.0, 2.0)
// -> Lt

list.sort-এর মতো সাজানোর ফাংশনগুলো সাধারণত এমন একটি ফাংশন নেয়, যা একটি Order মান রিটার্ন করে, ফলে কলকারী ঠিক করতে পারে তালিকাটি কীভাবে সাজানো হবে।

list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]

নির্দেশনা

টরি একজন জলবায়ু সাংবাদিক এবং তিনি বিভিন্ন শহরের আবহাওয়া নিয়ে একটি নিবন্ধ লিখতে চান। তাঁর কাছে বিভিন্ন শহরের আবহাওয়ার তথ্য আছে এবং তিনি তাপমাত্রার ভিত্তিতে সেগুলো র‍্যাংক করতে চান, তবে কিছু তাপমাত্রা ফারেনহাইটে আর কিছু সেলসিয়াসে। তাপমাত্রাগুলোকে একই এককে রূপান্তর করে সেগুলো র‍্যাংক করতে তাঁর আপনার সাহায্য প্রয়োজন।

1. ফারেনহাইটকে সেলসিয়াসে রূপান্তর করুন

fahrenheit_to_celsius ফাংশনটি ডিফাইন করুন, যেটি আর্গুমেন্ট হিসেবে ফারেনহাইটে একটি তাপমাত্রা নেয় এবং সেলসিয়াসে তাপমাত্রাটি রিটার্ন করে।

ফারেনহাইট থেকে সেলসিয়াসে রূপান্তর করতে ফারেনহাইট মান থেকে ৩২ বিয়োগ করুন এবং এরপর ফলাফলটি ১.৮ দিয়ে ভাগ করুন।

fahrenheit_to_celsius(72.5)
// -> 22.5

2. দুটি তাপমাত্রা তুলনা করুন

compare_temperature ফাংশনটি ডিফাইন করুন, যেটি দুটি তাপমাত্রা নেয় এবং একটি Order মান রিটার্ন করে, যা জানায় প্রথম তাপমাত্রাটি দ্বিতীয় তাপমাত্রার চেয়ে কম, সমান, নাকি বেশি।

compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt

3. তাপমাত্রা অনুযায়ী শহরগুলো সাজান

sort_cities_by_temperature ফাংশনটি ডিফাইন করুন, যেটি শহরগুলোর একটি অ্যারে নেয় এবং সেগুলোকে সবচেয়ে ঠান্ডা থেকে সবচেয়ে উষ্ণ পর্যন্ত ক্রমে রিটার্ন করে।

sort_cities_by_temperature([
  City(name: "London", temperature: Celsius(30.5)),
  City(name: "Paris", temperature: Fahrenheit(82.1))
])
// -> [
//   City(name: "Paris", temperature: Fahrenheit(82.1)),
//   City(name: "London", temperature: Celsius(30.5)))
// ]
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Gleam Exercism

আবহাওয়ার র‍্যাঙ্কিং শুরু করতে প্রস্তুত?

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