ট্র্যাক
/
Julia
Julia
/
অনুশীলনী
/
গাড়ি অ্যাসেম্বল
গাড়ি অ্যাসেম্বল

গাড়ি অ্যাসেম্বল

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

ভূমিকা

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

Julia-তে তুলনা অপারেটরগুলো অনেক অন্য ভাষার মতোই, তবে গণিতপ্রেমীদের জন্য কিছু বাড়তি সুবিধাও আছে।

সমতার জন্য অপারেটরগুলো হলো == (সমান) এবং != বা ≠ (সমান নয়)।

txt = "abc"
txt == "abc"  # true
txt != "abc"  # false
txt ≠ "abc"  # false (synonym for !=)

এছাড়া বড়/ছোট বোঝানোর নানা অপারেটরও আছে।

1 < 3  # true
3 > 3  # false
3 <= 3  # true
3 ≤ 3  # true (synonym for <=)
4 >= 3  # true
4 ≥ 3  # true (synonym for >=)

Julia-এর ক্ষেত্রে প্রায়ই যেমন হয়, একটি উপযুক্ত এডিটর থাকলে গাণিতিক চিহ্ন ব্যবহার করা সহজ হয়ে যায়। ≠, ≤ বা ≥ পেতে \ne, \le বা \ge টাইপ করুন, তারপর TAB চাপুন।

আগের উদাহরণে শুধু সংখ্যা ব্যবহার করা হয়েছে, তবে পাঠ্যক্রমের অন্য অংশে আমরা দেখব যে আরও কিছু ডেটা টাইপের মধ্যে ক্রমের ধারণা আছে এবং সেগুলো বড়/ছোট হিসেবে পরীক্ষা করা যায়।

তুলনা অপারেটরগুলো চেইন করা যায়, ফলে পরিষ্কার ও সংক্ষিপ্ত সিনট্যাক্স লেখা সম্ভব হয়:

n = 3
1 ≤ n ≤ 5  # true (n "between" two limits)

আগের উদাহরণটি 1 ≤ n && n ≤ 5-এর সমার্থক।

if দিয়ে শাখাবিভাজন

এটি একটি if স্টেটমেন্টের পূর্ণ রূপ:

if conditional1
    statements...
elseif conditional2
    statements...
else
    statements...
end

প্রথম বন্ধনী () বা দ্বিতীয় বন্ধনী {}-এর কোনো দরকার নেই, আর ইনডেন্টেশন "শুধু" পড়ার সুবিধার জন্য (কিন্তু পড়ার সুবিধা খুবই গুরুত্বপূর্ণ!)।

elseif এবং else দুটোই ঐচ্ছিক, আর একাধিক elseif ব্লক থাকতে পারে। তবে end অবশ্যই লাগবে।

if স্টেটমেন্ট নেস্ট করা সম্ভব, তবে বন্ধনী, ইনডেন্ট আর কমেন্ট বুদ্ধি করে ব্যবহার করলে পড়ার সুবিধা বাড়ে।

একটি if স্টেটমেন্টের সবচেয়ে ছোট রূপটা হবে এরকম:

if n < 0
    n = 0
end

মনে রাখবেন: শুধু true বা false-এ মূল্যায়িত হওয়া এক্সপ্রেশনই শর্ত হিসেবে ব্যবহার করা যায়। Julia ইচ্ছাকৃতভাবে "truthiness"-এর কোনো ধারণা এড়িয়ে চলে, তাই শূন্য মান, খালি স্ট্রিং আর খালি অ্যারে কখনোই false-এর সমান নয়।

টার্নারি অপারেটর

সহজ ও প্রচলিত একটি পরিস্থিতি হলো শর্তের ভিত্তিতে দুটি মানের একটি বাছাই করা।

অনেক ভাষার মতো Julia-তেও একটি টার্নারি অপারেটর আছে, যা দিয়ে এটা আরও সংক্ষিপ্ত করা যায়।

এর সিনট্যাক্স হলো conditional ? value_if_true : value_if_false।

তাই আগের উদাহরণটি এভাবে আবার লেখা যেতে পারে:

n = n < 0 ? 0 : n

কম্পাইলার বন্ধনী চায় না, তবে বন্ধনী দিলে পড়ার সুবিধা বাড়তে পারে।

নির্দেশনা

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

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

আপনার সামনে তিনটি কাজ আছে। প্রতিটি প্রয়োজনীয় ফাংশন একটি ইন্টিজার প্যারামিটার নেয়, যা অ্যাসেম্বলি লাইনের গতি।

1. সফলতার হার হিসাব করুন

একটি নির্দিষ্ট গতির জন্য কোনো আইটেম ত্রুটি ছাড়া তৈরি হওয়ার সম্ভাবনা হিসাব করতে success_rate() মেথডটি ইমপ্লিমেন্ট করুন। নিচের তালিকায় দেখানো হয়েছে কীভাবে গতি সফলতার হারকে প্রভাবিত করে:

  • 0: ০% সফলতার হার।
  • 1 থেকে 4: ১০০% সফলতার হার।
  • 5 থেকে 8: ৯০% সফলতার হার।
  • 9: ৮০% সফলতার হার।
  • 10: ৭৭% সফলতার হার।
julia> success_rate(10)
0.77

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

অ্যাসেম্বলি লাইনের সফলতার হার হিসাবে নিয়ে প্রতি ঘণ্টায় তার উৎপাদনের হার হিসাব করতে production_rate_per_hour() মেথডটি ইমপ্লিমেন্ট করুন।

julia> production_rate_per_hour(6)
1193.4

মনে রাখবেন, রিটার্ন করা মানটি একটি ফ্লোট।

3. প্রতি মিনিটে উৎপাদিত কর্মক্ষম আইটেমের সংখ্যা হিসাব করুন

প্রতি মিনিটে কতগুলো কর্মক্ষম গাড়ি উৎপাদিত হয় তা হিসাব করতে working_items_per_minute() মেথডটি ইমপ্লিমেন্ট করুন:

julia> working_items_per_minute(6)
19

মনে রাখবেন, রিটার্ন করা মানটি একটি ইন্টিজার: অসম্পূর্ণ আইটেম অন্তর্ভুক্ত হয় না।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Julia Exercism

গাড়ি অ্যাসেম্বল শুরু করতে প্রস্তুত?

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