یک کتابفروشی برای تشویق به خرید بیشتر کتابهای مختلف از یک مجموعهی محبوب پنججلدی، تصمیم گرفته است روی خرید چند کتاب با هم تخفیف بدهد.
هر نسخه از هر یک از این پنج کتاب ۸ دلار قیمت دارد.
اما اگر دو کتاب متفاوت بخرید، روی آن دو کتاب ۵٪ تخفیف میگیرید.
اگر ۳ کتاب متفاوت بخرید، ۱۰٪ تخفیف میگیرید.
اگر ۴ کتاب متفاوت بخرید، ۲۰٪ تخفیف میگیرید.
اگر هر ۵ کتاب را بخرید، ۲۵٪ تخفیف میگیرید.
توجه کنید که اگر چهار کتاب بخرید که ۳ تای آنها عنوانهای متفاوتی داشته باشند، روی آن ۳ کتابی که یک مجموعه را تشکیل میدهند ۱۰٪ تخفیف میگیرید، اما کتاب چهارم همچنان ۸ دلار قیمت دارد.
مأموریت شما این است که کدی بنویسید تا قیمت هر سبد خرید قابلتصوری (که فقط شامل کتابهای همین مجموعه باشد) را محاسبه کند، با بیشترین تخفیف ممکن.
برای مثال، قیمت این سبد کتاب چقدر است؟
یک روش برای گروهبندی این ۸ کتاب این است:
که در مجموع به این نتیجه میرسد:
که حاصل آن این است:
که برابر است با ۵۱٫۶۰ دلار.
اما روش دیگری برای گروهبندی این ۸ کتاب وجود دارد:
که در مجموع به این نتیجه میرسد:
که حاصل آن این است:
که برابر است با ۵۱٫۲۰ دلار.
و ۵۱٫۲۰ دلار قیمتی است که بیشترین تخفیف را دارد.
تابعی به اسم cost تعریف کنید که هزینهی فهرستی از کتابها را بر اساس تخفیفهای تعیینشده محاسبه میکند.
cost هزینهی کل (پس از اعمال تخفیفها) را بر حسب سنت برمیگرداند.
برای نمونه، هزینهی یک کتاب ۸۰۰ سنت است، که معادل ۸ دلار میشود.
در این تمرین فقط محاسبات با اعداد صحیح لازم است.
در Exercism ثبتنام کنید تا JavaScript را همراه با 37 مفهوم159 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.