ট্র্যাক
/
Ruby
Ruby
/
অনুশীলনী
/
অ্যাসেম্বলি লাইন
অ্যাসেম্বলি লাইন

অ্যাসেম্বলি লাইন

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

ভূমিকা

সংখ্যা

Ruby-তে সবচেয়ে বেশি দেখা যায় এমন দুটি ধরনের সংখ্যা হলো:

  • ইন্টিজার: দশমিক বিন্দুর পরে কোনো অঙ্ক নেই এমন সংখ্যা (পূর্ণসংখ্যা)। উদাহরণ: -6, 0, 1, 25, 976 এবং 500000।
  • ফ্লোটিং-পয়েন্ট সংখ্যা: দশমিক বিন্দুর পরে এক বা একাধিক অঙ্ক আছে এমন সংখ্যা। উদাহরণ: -2.4, 0.1, 3.14, 16.984025 এবং 1024.0।

এগুলো Integer এবং Float ক্লাসের মাধ্যমে বাস্তবায়িত হয়।

এই ক্লাসগুলোর এমন মেথড আছে যেগুলো একটি মানকে অন্যটিতে রূপান্তর করতে পারে। Integer সংখ্যা পূর্ণ একক পর্যন্ত নির্ভুল, অন্যদিকে Float-এর নির্ভুলতা ভগ্নাংশ পর্যন্ত বিস্তৃত:

  • Integer#to_f: একটি নতুন ফ্লোটে রূপান্তর করে
  • Float#ceil: নিকটতম ইন্টিজারে উপরের দিকে রাউন্ড করে
  • Float#floor: নিকটতম ইন্টিজারে নিচের দিকে রাউন্ড করে
  • Float#round: নিকটতম ইন্টিজারে রাউন্ড করে
  • Float#to_i: নিকটতম ইন্টিজারে ছেঁটে ফেলে

শর্তাধীন

Ruby-তে ফ্লো কন্ট্রোল এক্সপ্রেশন নামে পরিচিত কিছু এক্সপ্রেশন আছে, যা দিয়ে প্রোগ্রাম কীভাবে চলবে তা নিয়ন্ত্রণ করা হয় এবং এরা একটি ট্রুথি বা ফলসি মান নেয়। ট্রুথি বা ফলসি মান তৈরি করতে যে অপারেটরগুলো ব্যবহার করা যায়, সেগুলোকে তুলনা অপারেটর বলা হয়।

প্রধানত দুটি কন্ট্রোল এক্সপ্রেশন আছে, যা দিয়ে নির্ধারিত হয় কোন কোড চলবে আর কোনটি চলবে না। অর্থাৎ কোন শাখাটি চলবে তাও এরা ঠিক করে।

এই দুটি হলো: if এবং unless এক্সপ্রেশন।

তুলনা অপারেটর

তুলনা অপারেটর দিয়ে মান তুলনা করা হয় এবং true বা false মান রিটার্ন করা হয়। নিচের অপারেটরগুলো ব্যবহার করে তুলনা করতে দুটি মানকে একই টাইপের হতে হয়। মান দুটি একই টাইপের না হলে কম্পাইলার একটি এরর ছুড়ে দেবে। এখানে অপারেটরগুলোর একটি তালিকা এবং কখন তারা true মান দেয় তার উদাহরণ দেওয়া হলো:

মেথড বিবরণ উদাহরণ
< ছোট 4 < 5
<= ছোট বা সমান 4 <= 4
> বড় 3 > 1
>= বড় বা সমান 2 >= 2

আগে উল্লেখ করা অপারেটরগুলোর বিপরীতে, সমান এবং অসমান অপারেটর দিয়ে যেকোনো ধরনের মান তুলনা করা যায়। == অপারেটর দিয়ে পরীক্ষা করা হয় দুটি মান সমান কি না, এবং এর মধ্যে মানের টাইপও পরীক্ষা করা হয়। != একইভাবে কাজ করে, তবে মান দুটি অসমান হলে এটি true রিটার্ন করে আর সমান হলে false রিটার্ন করে। এখানে সমান ও অসমান অপারেটরগুলোর একটি তালিকা এবং কখন তারা true মান দেয় তার উদাহরণ দেওয়া হলো:

মেথড বিবরণ উদাহরণ
== সমান 4 == 4
!= সমান নয় 5 != 4

if স্টেটমেন্ট

if স্টেটমেন্ট দিয়ে পরীক্ষা করা হয় প্রদত্ত শর্তটি "ট্রুথি" না "ফলসি"। শর্তটি ট্রুথি হলে if স্টেটমেন্টের ভেতরের কোড চলবে। একটি if স্টেটমেন্ট end কিওয়ার্ড দিয়ে শেষ হয়।

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

unless স্টেটমেন্ট

unless স্টেটমেন্ট প্রায় if স্টেটমেন্টের মতোই কাজ করে, তবে শর্তটি ফলসি হলে এটি unless স্টেটমেন্টের ভেতরের কোড চালায়।

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

else স্টেটমেন্ট

else স্টেটমেন্ট if স্টেটমেন্টের সাথে একসাথে ব্যবহার করা যায়। if শাখাটি চালানো না হলে else স্টেটমেন্ট চালানো হবে।

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

"ক্যাসকেডিং-if" স্টেটমেন্ট

elsif স্টেটমেন্ট if স্টেটমেন্টের সাথে একসাথে ব্যবহার করা যায়। if শাখাটি চালানো না হলে এবং elsif স্টেটমেন্টের শর্তটি ট্রুথি হলে elsif স্টেটমেন্ট চালানো হবে। একাধিক elsif স্টেটমেন্ট একসাথে চেইন করা যায়, এবং প্রথম যে শর্তটি ট্রুথি হয় সেটিই চালানো হবে। এছাড়াও if স্টেটমেন্টের শেষে একটি else স্টেটমেন্ট থাকতে পারে, যা আগের কোনো স্টেটমেন্ট ট্রু না হলে চলবে।

value = 1
if value != 1
  "1 is not equal to 1"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"

নির্দেশনা

এই অনুশীলনীতে আপনি একটি গাড়ির কারখানার অ্যাসেম্বলি লাইনের উৎপাদন বিশ্লেষণ করার কোড লিখবেন। অ্যাসেম্বলি লাইনের গতি 0 (বন্ধ) থেকে 10 (সর্বোচ্চ) পর্যন্ত হতে পারে।

এর সবচেয়ে কম গতিতে (1), প্রতি ঘণ্টায় 221টি গাড়ি উৎপাদিত হয়। গতি বাড়ার সাথে সাথে উৎপাদন সরলরৈখিকভাবে বাড়ে। তাই গতি 4-এ সেট করা থাকলে, প্রতি ঘণ্টায় 4 * 221 = 884টি গাড়ি উৎপাদিত হওয়া উচিত। তবে গতি আরও বাড়ালে ত্রুটিপূর্ণ গাড়ি তৈরি হওয়ার সম্ভাবনা বেড়ে যায়, যেগুলো পরে বাদ দিতে হয়। নিচের টেবিলে দেখানো হয়েছে কীভাবে গতি সফলতার হারকে প্রভাবিত করে:

  • 1 থেকে 4: 100% সফলতার হার।
  • 5 থেকে 8: 90% সফলতার হার।
  • 9: 80% সফলতার হার।
  • 10: 77% সফলতার হার।

আপনার দুটি কাজ আছে।

1. প্রতি ঘণ্টায় উৎপাদন হার হিসাব করুন

অ্যাসেম্বলি লাইনের সফলতার হার হিসাব করে প্রতি ঘণ্টায় তার উৎপাদন হার বের করতে AssemblyLine#production_rate_per_hour মেথডটি ইমপ্লিমেন্ট করুন। মনে রাখবেন, রিটার্ন করা মানটি Float-এর একটি ইনস্ট্যান্স।

AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4

2. প্রতি মিনিটে কতগুলো কার্যকর আইটেম উৎপাদিত হয় তা হিসাব করুন

প্রতি মিনিটে কতগুলো সম্পূর্ণ, কার্যকর গাড়ি উৎপাদিত হয় তা হিসাব করতে AssemblyLine#working_items_per_minute মেথডটি ইমপ্লিমেন্ট করুন। মনে রাখবেন, রিটার্ন করা মানটি Integer-এর একটি ইনস্ট্যান্স।

AssemblyLine.new(6).working_items_per_minute
#=> 19
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Ruby Exercism

অ্যাসেম্বলি লাইন শুরু করতে প্রস্তুত?

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