خط مونتاژ

خط مونتاژ

تمرین یادگیری

مقدمه

اعداد

در Rust دو دسته‌ی متفاوت از اعداد وجود دارد: اعداد صحیح (که می‌توانند علامت‌دار یا بدون علامت باشند) و اعداد ممیز شناور.

اعداد صحیح

  • اعداد صحیح: اعدادی که هیچ رقمی بعد از ممیز ندارند (عددهای کامل). انواع صحیح یا فقط اعداد مثبت را ذخیره می‌کنند (بدون علامت) یا هم اعداد مثبت و هم منفی را (علامت‌دار). نمونه‌ها عبارت‌اند از -۶، ۰، ۱، ۲۵، ۹۷۶ و ۵۰۰۰۰۰.

اعداد ممیز شناور

  • اعداد ممیز شناور: اعدادی که صفر یا چند رقم بعد از ممیز دارند. نمونه‌ها عبارت‌اند از -۲٫۴، ۰٫۱، ۳٫۱۴، ۱۶٫۹۸۴۰۲۵ و ۱۰۲۴٫۰.

نام‌گذاری انواع عددی

نام یک نوع عددی از دو بخش تشکیل شده است:

  • یک حرف که مشخص می‌کند عدد صحیح بدون علامت (u)، عدد صحیح علامت‌دار (i) یا عدد ممیز شناور (f) است.
  • یک عدد که اندازه‌ی نوع را بر حسب بیت مشخص می‌کند. انواع بزرگ‌تر بازه‌ی بزرگ‌تری بین کمترین و بیشترین مقدار دارند. برای اعداد ممیز شناور هم رقم‌های بیشتری بعد از ممیز در دسترس خواهد بود.

ترکیب‌های زیر ممکن‌اند:

  • ۸ بیت: u8، i8
  • ۱۶ بیت: u16، i16
  • ۳۲ بیت: u32، i32، f32
  • ۶۴ بیت: u64، i64، f64
  • ۱۲۸ بیت: u128، i128

توجه کنید که برای اعداد ممیز شناور فقط گونه‌های ۳۲ بیتی و ۶۴ بیتی وجود دارد.

تبدیل بین انواع عددی

Rust هیچ تبدیل نوع ضمنی انجام نمی‌دهد. یعنی اگر لازم باشد یک نوع عددی را به نوع دیگری تبدیل کنید، باید این کار را به‌صورت صریح انجام دهید. وقتی از یک نوع بزرگ‌تر به نوع کوچک‌تر تبدیل می‌کنید (مثلاً از u64 به u32)، ممکن است داده از دست برود. تبدیل از عدد ممیز شناور به عدد صحیح قطعاً تمام ارقام بعد از ممیز را از دست می‌دهد و در عمل به سمت پایین گرد می‌شود.

دستورالعمل‌ها

در این تمرین کدی می‌نویسید تا تولید یک خط مونتاژ در کارخانه‌ی خودروسازی را تحلیل کنید. سرعت خط مونتاژ می‌تواند از 0 (خاموش) تا 10 (حداکثر) باشد.

در پایین‌ترین سرعت آن (1)، هر ساعت 221 خودرو تولید می‌شود. میزان تولید با سرعت به‌صورت خطی افزایش می‌یابد. بنابراین وقتی سرعت روی 4 تنظیم شود، باید هر ساعت 4 * 221 = 884 خودرو تولید کند. اما سرعت‌های بالاتر احتمال تولید خودروهای معیوب را افزایش می‌دهند، خودروهایی که سپس باید دور انداخته شوند. جدول زیر نشان می‌دهد سرعت چگونه بر نرخ موفقیت تأثیر می‌گذارد:

  • 1 تا 4: نرخ موفقیت ۱۰۰٪.
  • 5 تا 8: نرخ موفقیت ۹۰٪.
  • 9 و 10: نرخ موفقیت ۷۷٪.

شما دو وظیفه دارید.

1. نرخ تولید در ساعت را محاسبه کنید

متدی پیاده‌سازی کنید که نرخ تولید خط مونتاژ در ساعت را با در نظر گرفتن نرخ موفقیت آن محاسبه کند:

assembly_line::production_rate_per_hour(6)
// Returns: 1193.4

توجه داشته باشید که مقدار برگشتی از نوع f64 است.

2. تعداد خودروهای سالم تولیدشده در دقیقه را محاسبه کنید

متدی پیاده‌سازی کنید که محاسبه کند در هر دقیقه چند خودروی سالم تولید می‌شود:

assembly_line::working_items_per_minute(6)
// Returns: 19

توجه داشته باشید که مقدار برگشتی از نوع u32 است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Rust Exercism

آماده‌اید خط مونتاژ را شروع کنید؟

در Exercism ثبت‌نام کنید تا Rust را همراه با 99 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.