المسارات
/
Clojure
Clojure
/
التمارين
/
سيارات، تجمّعوا!
سيارات، تجمّعوا!

سيارات، تجمّعوا!

تمرين تعلّمي

مقدمة

تشمل الأعداد في Clojure ما يلي:

  • الأعداد الصحيحة: أعداد لا توجد فيها أي أرقام بعد الفاصلة العشرية (أعداد كاملة). أمثلتها -6 و0 و1 و25 و976 و500000.
  • الأعداد العشرية: أعداد توجد فيها صفر من الأرقام أو أكثر بعد الفاصلة العشرية. أمثلتها -2.4 و0.1 و3.14 و16.984025 و1024.0.

من الأنواع الرقمية الشائعة int وfloat. النوع int عدد صحيح بطول 32 بت، والنوع float عدد عشري بطول 64 بت.

تُجرى العمليات الحسابية باستخدام عوامل الحساب القياسية. ويمكن مقارنة الأعداد باستخدام عوامل المقارنة الرقمية القياسية (> و< و<= و>=)، وعامل التساوي (=)، وعامل عدم التساوي (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: معدل نجاح 0%.
  • من 1 إلى 4: معدل نجاح 100%.
  • من 5 إلى 8: معدل نجاح 90%.
  • 9: معدل نجاح 80%.
  • 10: معدل نجاح 77%.

لديك مهمتان.

1. احسب معدل الإنتاج في الساعة

نفّذ الدالة production-rate لحساب معدل إنتاج خط التجميع في الساعة، مع مراعاة معدل نجاحه:

(production-rate 6)
;;=> 1193.4

لاحظ أن القيمة المُرجَعة من النوع double.

2. احسب عدد الوحدات الصالحة المنتَجة في الدقيقة

نفّذ الدالة working-items لحساب عدد السيارات الصالحة المنتَجة في الدقيقة:

(working-items 6)
;;=> 19

لاحظ أن القيمة المُرجَعة من النوع int.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Clojure Exercism

مستعد لبدء سيارات، تجمّعوا!؟

سجّل في Exercism لتتعلّم وتتقن Clojure عبر 12 مفهومًا105 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.