مسیرها
/
Clojure
Clojure
/
تمرین‌ها
/
خودروها، مونتاژ شوید!
خودروها، مونتاژ شوید!

خودروها، مونتاژ شوید!

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

مقدمه

اعداد در Clojure شامل این موارد هستند:

  • اعداد صحیح: اعدادی که هیچ رقمی بعد از جداکننده‌ی اعشار ندارند (اعداد کامل). نمونه‌ها: -6، 0، 1، 25، 976 و 500000.
  • اعداد اعشاری: اعدادی که صفر یا چند رقم بعد از جداکننده‌ی اعشار دارند. نمونه‌ها: -2.4، 0.1، 3.14، 16.984025 و 1024.0.

دو نوع عددی رایج int و float هستند. int یک عدد صحیح ۳۲ بیتی است و float یک عدد اعشاری ۶۴ بیتی.

محاسبات با عملگرهای استاندارد حساب انجام می‌شود. اعداد را می‌توان با عملگرهای استاندارد مقایسه‌ی عددی (>، <، <=، >=)، عملگر تساوی (=) و عملگر نامساوی (not=) مقایسه کرد.

در این تمرین باید منطق را به‌صورت شرطی اجرا کنید. یکی از روش‌های رایج برای انجام این کار در Clojure استفاده از cond است:

(cond (= x 5) "Expression to evaluate when x equals 5"
      (> x 7) "Expression to evaluate when x is greater than 7"
      :else   "Expression to evaluate in all other cases")

نکته

در برخی موارد که لازم است اعداد بدون توجه به نوع دقیقشان مقایسه شوند، ممکن است عملگر == به = ترجیح داشته باشد. برای نمونه،

(== 5.0 5) ;; true as both numbers are equal when type is ignored
(= 5.0 5) ;; false as the types of numbers are also taken into account here i.e. float is different from int

راهنمای برابری در Clojure، به‌ویژه بخش اعداد، جزئیات بیشتری را توضیح می‌دهد.

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

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

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

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

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

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

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

(production-rate 6)
;;=> 1193.4

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

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

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

(working-items 6)
;;=> 19

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

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

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

در Exercism ثبت‌نام کنید تا Clojure را همراه با 12 مفهوم105 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.