الباقي

الباقي

متوسط

مقدمة

في قرية Coinholt الغامضة، تقف خلف منضدة مخبزك، ترتّب دفعة طازجة من المعجنات. يُفتح الباب مصدرًا صريرًا، فتدخل Denara، تاجرة ماهرة ذات عين خبيرة بالبضائع الجيدة. بعد وجبة سريعة، تدفع نحوك عملة لامعة عبر المنضدة، تمثّل قيمة 100 وحدة.

تبتسم وأنت تأخذ العملة، وتلقي نظرة على التكلفة الإجمالية للوجبة: 88 وحدة. هذا يعني أن عليك أن تعيد 12 وحدة من الباقي.

تمدّ Denara يدها منتظرة. "أعطني أقل عدد ممكن من العملات"، تقول مبتسمة. "محفظتي ممتلئة بالفعل، ولا أريد أن أخاطر بفقدانها في الطريق."

أنت تعلم أن أمامك عدة خيارات. "لدينا Lumis (بقيمة 10 وحدات)، وViras (بقيمة 5 وحدات)، وZenth (بقيمة 2 وحدات) لدفع الباقي."

تحسب الاحتمالات بسرعة في ذهنك:

  • Lumis واحدة (1 × 10 وحدات) + Zenth واحدة (1 × 2 وحدات) = عملتان في المجموع
  • Viras اثنتان (2 × 5 وحدات) + Zenth واحدة (1 × 2 وحدات) = 3 عملات في المجموع
  • ستّ Zenth (6 × 2 وحدات) = 6 عملات في المجموع

"أفضل خيار هو عملتان: Lumis واحدة وZenth واحدة"، تقول وأنت تسلّمها الباقي.

تبتسم Denara، ومن الواضح أنها أُعجبت. "كما في كل مرة، أصبتَ."

التعليمات

حدّد أقل عدد من العملات التي تعطيها لعميل بحيث يساوي مجموع قيمها مقدار الصرف الصحيح.

أمثلة

  • مبلغ 15 مع قيم العملات المتاحة [1, 5, 10, 25, 100] يجب أن يُرجع عملة واحدة من قيمة 5 وعملة واحدة من قيمة 10، أو [5, 10].
  • مبلغ 40 مع قيم العملات المتاحة [1, 5, 10, 25, 100] يجب أن يُرجع عملة واحدة من قيمة 5، وعملة واحدة من قيمة 10، وعملة واحدة من قيمة 25، أو [5, 10, 25].
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
D Exercism

مستعد لبدء الباقي؟

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