سعيًا إلى تشجيع مزيد من مبيعات الكتب المختلفة من سلسلة كتب شهيرة مكوّنة من 5 كتب، قرّر متجر كتب أن يقدّم خصومات على شراء عدة كتب معًا.
تبلغ تكلفة نسخة واحدة من أي من هذه الكتب الخمسة $8.
أما إذا اشتريت كتابين مختلفين، فتحصل على خصم 5% على هذين الكتابين.
وإذا اشتريت 3 كتب مختلفة، فتحصل على خصم 10%.
وإذا اشتريت 4 كتب مختلفة، فتحصل على خصم 20%.
وإذا اشتريت الكتب الخمسة كلها، فتحصل على خصم 25%.
لاحظ أنك إذا اشتريت أربعة كتب، 3 منها بعناوين مختلفة، فتحصل على خصم 10% على 3 كتب منها تشكّل مجموعة، بينما يبقى الكتاب الرابع بسعر $8.
مهمتك هي كتابة كود لحساب سعر أي سلة تسوق يمكن تصورها (تحتوي فقط على كتب من سلسلة الكتب نفسها)، مع منح أكبر خصم ممكن.
على سبيل المثال، كم تبلغ تكلفة سلة الكتب هذه؟
إحدى طرق تجميع هذه الكتب الثمانية هي:
سيكون المجموع:
ما ينتج عنه:
أي ما يساوي $51.60.
لكن هناك طريقة مختلفة لتجميع هذه الكتب الثمانية:
سيكون المجموع:
ما ينتج عنه:
أي ما يساوي $51.20.
و $51.20 هو السعر مع أكبر خصم ممكن.
عرّف دالة Go واحدة باسم Cost تحسب التكلفة لمصفوفة معطاة من الكتب بناءً على الخصومات المحددة.
استخدم التوقيع التالي للدالة Cost:
func Cost(books []int) int
ستُرجع الدالة Cost التكلفة الإجمالية (بعد الخصومات) بالسنتات.
على سبيل المثال، كتاب واحد تكلفته 800 سنت، أي ما يعادل $8.00.
لا يلزم في هذا التمرين سوى حسابات الأعداد الصحيحة.
سجّل في Exercism لتتعلّم وتتقن Go عبر 35 مفهومًا167 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.