کتاب‌فروشی

کتاب‌فروشی

متوسط

دستورالعمل‌ها

یک کتاب‌فروشی برای تشویق به خرید بیشتر کتاب‌های مختلف از یک مجموعه‌ی محبوب پنج‌جلدی، تصمیم گرفته است روی خرید چند کتاب با هم تخفیف بدهد.

هر نسخه از هر یک از این پنج کتاب ۸ دلار قیمت دارد.

اما اگر دو کتاب متفاوت بخرید، روی آن دو کتاب ۵٪ تخفیف می‌گیرید.

اگر ۳ کتاب متفاوت بخرید، ۱۰٪ تخفیف می‌گیرید.

اگر ۴ کتاب متفاوت بخرید، ۲۰٪ تخفیف می‌گیرید.

اگر هر ۵ کتاب را بخرید، ۲۵٪ تخفیف می‌گیرید.

توجه کنید که اگر چهار کتاب بخرید که ۳ تای آن‌ها عنوان‌های متفاوتی داشته باشند، روی آن ۳ کتابی که یک مجموعه را تشکیل می‌دهند ۱۰٪ تخفیف می‌گیرید، اما کتاب چهارم همچنان ۸ دلار قیمت دارد.

مأموریت شما این است که کدی بنویسید تا قیمت هر سبد خرید قابل‌تصوری (که فقط شامل کتاب‌های همین مجموعه باشد) را محاسبه کند، با بیشترین تخفیف ممکن.

برای مثال، قیمت این سبد کتاب چقدر است؟

  • ۲ نسخه از کتاب اول
  • ۲ نسخه از کتاب دوم
  • ۲ نسخه از کتاب سوم
  • ۱ نسخه از کتاب چهارم
  • ۱ نسخه از کتاب پنجم

یک روش برای گروه‌بندی این ۸ کتاب این است:

  • ۱ گروه ۵تایی (اول، دوم، سوم، چهارم، پنجم)
  • ۱ گروه ۳تایی (اول، دوم، سوم)

که در مجموع به این نتیجه می‌رسد:

  • ۵ کتاب با ۲۵٪ تخفیف
  • ۳ کتاب با ۱۰٪ تخفیف

که حاصل آن این است:

  • ۵ × (۱۰۰٪ - ۲۵٪) × ۸ دلار = ۵ × ۶٫۰۰ دلار = ۳۰٫۰۰ دلار، به‌علاوه
  • ۳ × (۱۰۰٪ - ۱۰٪) × ۸ دلار = ۳ × ۷٫۲۰ دلار = ۲۱٫۶۰ دلار

که برابر است با ۵۱٫۶۰ دلار.

اما روش دیگری برای گروه‌بندی این ۸ کتاب وجود دارد:

  • ۱ گروه ۴تایی (اول، دوم، سوم، چهارم)
  • ۱ گروه ۴تایی (اول، دوم، سوم، پنجم)

که در مجموع به این نتیجه می‌رسد:

  • ۴ کتاب با ۲۰٪ تخفیف
  • ۴ کتاب با ۲۰٪ تخفیف

که حاصل آن این است:

  • ۴ × (۱۰۰٪ - ۲۰٪) × ۸ دلار = ۴ × ۶٫۴۰ دلار = ۲۵٫۶۰ دلار، به‌علاوه
  • ۴ × (۱۰۰٪ - ۲۰٪) × ۸ دلار = ۴ × ۶٫۴۰ دلار = ۲۵٫۶۰ دلار

که برابر است با ۵۱٫۲۰ دلار.

و ۵۱٫۲۰ دلار قیمتی است که بیشترین تخفیف را دارد.

پیاده‌سازی

تابعی به اسم cost تعریف کنید که هزینه‌ی فهرستی از کتاب‌ها را بر اساس تخفیف‌های تعیین‌شده محاسبه می‌کند.

cost هزینه‌ی کل (پس از اعمال تخفیف‌ها) را بر حسب سنت برمی‌گرداند. برای نمونه، هزینه‌ی یک کتاب ۸۰۰ سنت است، که معادل ۸ دلار می‌شود. در این تمرین فقط محاسبات با اعداد صحیح لازم است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
JavaScript Exercism

آماده‌اید کتاب‌فروشی را شروع کنید؟

در Exercism ثبت‌نام کنید تا JavaScript را همراه با 37 مفهوم159 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.