اعداد در 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: نرخ موفقیت ۷۷ درصد.دو وظیفه دارید.
تابع production-rate را پیادهسازی کنید تا نرخ تولید خط مونتاژ را در هر ساعت، با در نظر گرفتن نرخ موفقیت آن، محاسبه کند:
(production-rate 6)
;;=> 1193.4
توجه کنید که مقدار بازگشتی یک double است.
تابع working-items را پیادهسازی کنید تا محاسبه کند در هر دقیقه چند خودروی سالم تولید میشود:
(working-items 6)
;;=> 19
توجه کنید که مقدار بازگشتی یک int است.