متجر الكتب

متجر الكتب

متوسط

التعليمات

سعيًا إلى تشجيع مزيد من مبيعات الكتب المختلفة من سلسلة كتب شهيرة مكوّنة من 5 كتب، قرّر متجر كتب أن يقدّم خصومات على شراء عدة كتب معًا.

تبلغ تكلفة نسخة واحدة من أي من هذه الكتب الخمسة $8.

أما إذا اشتريت كتابين مختلفين، فتحصل على خصم 5% على هذين الكتابين.

وإذا اشتريت 3 كتب مختلفة، فتحصل على خصم 10%.

وإذا اشتريت 4 كتب مختلفة، فتحصل على خصم 20%.

وإذا اشتريت الكتب الخمسة كلها، فتحصل على خصم 25%.

لاحظ أنك إذا اشتريت أربعة كتب، 3 منها بعناوين مختلفة، فتحصل على خصم 10% على 3 كتب منها تشكّل مجموعة، بينما يبقى الكتاب الرابع بسعر $8.

مهمتك هي كتابة كود لحساب سعر أي سلة تسوق يمكن تصورها (تحتوي فقط على كتب من سلسلة الكتب نفسها)، مع منح أكبر خصم ممكن.

على سبيل المثال، كم تبلغ تكلفة سلة الكتب هذه؟

  • نسختان من الكتاب الأول
  • نسختان من الكتاب الثاني
  • نسختان من الكتاب الثالث
  • نسخة واحدة من الكتاب الرابع
  • نسخة واحدة من الكتاب الخامس

إحدى طرق تجميع هذه الكتب الثمانية هي:

  • مجموعة واحدة من 5 كتب (الأول، الثاني، الثالث، الرابع، الخامس)
  • مجموعة واحدة من 3 كتب (الأول، الثاني، الثالث)

سيكون المجموع:

  • 5 كتب بخصم 25%
  • 3 كتب بخصم 10%

ما ينتج عنه:

  • 5 × (100% - 25%) × $8 = 5 × $6.00 = $30.00، بالإضافة إلى
  • 3 × (100% - 10%) × $8 = 3 × $7.20 = $21.60

أي ما يساوي $51.60.

لكن هناك طريقة مختلفة لتجميع هذه الكتب الثمانية:

  • مجموعة واحدة من 4 كتب (الأول، الثاني، الثالث، الرابع)
  • مجموعة واحدة من 4 كتب (الأول، الثاني، الثالث، الخامس)

سيكون المجموع:

  • 4 كتب بخصم 20%
  • 4 كتب بخصم 20%

ما ينتج عنه:

  • 4 × (100% - 20%) × $8 = 4 × $6.40 = $25.60، بالإضافة إلى
  • 4 × (100% - 20%) × $8 = 4 × $6.40 = $25.60

أي ما يساوي $51.20.

و $51.20 هو السعر مع أكبر خصم ممكن.

الأنواع الفرعية

يعرّف هذا التمرين نوعًا فرعيًا يُسمى Book، للأعداد الطبيعية من 1 إلى 5. يمكن تصوّر النوع الفرعي على أنه زوج ⟨x, h⟩، حيث x هي القيمة و h هو البرهان على صحة القيمة.

يمكن الوصول إلى القيمة داخل النوع الفرعي (x في هذه الحالة) باستخدام .val، على سبيل المثال، x.val. ويمكن الوصول إلى برهانه باستخدام .property، على سبيل المثال، x.property. ويمكن أيضًا الوصول إلى كليهما عبر مطابقة الأنماط، كما هو معتاد.

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

مستعد لبدء متجر الكتب؟

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