المسارات
/
Elixir
Elixir
/
التمارين
/
أسعار المستقلّين
أسعار المستقلّين

أسعار المستقلّين

تمرين تعلّمي

مقدمة

الأعداد الصحيحة

هناك نوعان مختلفان من الأعداد في Elixir: الأعداد الصحيحة والأعداد العشرية.

الأعداد الصحيحة هي أعداد بلا كسور.

integer = 3
# => 3

الأعداد العشرية

الأعداد العشرية هي أعداد بها رقم واحد أو أكثر بعد الفاصلة العشرية. وهي تستخدم صيغة الأعداد العائمة ذات الدقة المزدوجة بسعة 64 بت.

float = 3.45
# => 3.45

التعامل مع الأعداد

في وحدتي Integer وFloat تجد بعض الدوال المفيدة للتعامل مع هذين النوعين. أما عوامل الحساب الأساسية فمعرّفة في وحدة Kernel.

التحويل

يمكن خلط الأعداد الصحيحة والأعداد العشرية معًا في تعبير حسابي واحد. واستخدام عدد عشري في تعبير يضمن أن تكون النتيجة عددًا عشريًا أيضًا.

2 * 3
# => 6

2 * 3.0
# => 6.0

لكن عند إجراء القسمة، ستكون النتيجة دائمًا عددًا عشريًا، حتى لو استُخدمت أعداد صحيحة فقط.

6 / 2
# => 3.0

لتحويل عدد عشري إلى عدد صحيح، يمكنك التخلص من الجزء العشري باستخدام trunc/1.

التعليمات

في هذا التمرين، ستكتب كودًا لمساعدة مستقل على التواصل مع مدير مشروع. مهمتك هي توفير بعض الأدوات المساعدة لحساب المعدلات اليومية والشهرية بسرعة، مع خصم محدَّد بشكل اختياري.

نضع أولًا بعض القواعد بين المستقل ومدير المشروع:

  • المعدل اليومي يساوي 8 أضعاف معدل الساعة.
  • يحتوي الشهر على 22 يومًا قابلة للفوترة.

أحيانًا يعرض المستقل تطبيق خصم على معدله اليومي (مثلًا لعملائه الأكثر ولاءً أو للعملاء غير الربحيين).

تُمثَّل الخصومات كأعداد عشرية تمثل النسب المئوية، على سبيل المثال 25.0 ‏(25%).

1. حساب المعدل اليومي بمعلومية معدل الساعة

نفّذ دالة باسم daily_rate لحساب المعدل اليومي بمعلومية معدل الساعة كمعامل. يحدد العقد أن اليوم يحتوي على 8 ساعات قابلة للفوترة.

FreelancerRates.daily_rate(60)
# => 480.0

يجب أن يكون المعدل اليومي المُرجَع عددًا عشريًا.

2. حساب السعر بعد الخصم

نفّذ دالة apply_discount لحساب السعر بعد تطبيق خصم.

FreelancerRates.apply_discount(150, 10)
# => 135.0

يجب أن تكون القيمة المُرجَعة عددًا عشريًا دائمًا، دون تقريب بأي شكل.

3. حساب المعدل الشهري بمعلومية معدل الساعة والخصم

نفّذ دالة monthly_rate لحساب المعدل الشهري بعد الخصم. تأخذ معاملين: معدل الساعة والخصم بالنسبة المئوية.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

يجب تقريب المعدل الشهري المُرجَع لأعلى (أخذ السقف) إلى أقرب عدد صحيح.

4. حساب عدد أيام العمل الكاملة بمعلومية الميزانية ومعدل الساعة والخصم

نفّذ دالة days_in_budget تأخذ الميزانية ومعدل الساعة والخصم، وتحسب عدد أيام العمل الكاملة التي تغطيها.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

يجب تقريب عدد الأيام المُرجَع لأسفل (أخذ الأرضية) إلى منزلة عشرية واحدة.

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

مستعد لبدء أسعار المستقلّين؟

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