مسیرها
/
Clojure
Clojure
/
تمرین‌ها
/
بهره جالب است
بهره جالب است

بهره جالب است

تمرین یادگیری

مقدمه

عدد اعشاری عددی است که صفر یا چند رقم بعد از جداکننده‌ی اعشار دارد. مثال‌هایی از آن عبارت‌اند از -2.4، 0.1، 3.14، 16.984025 و 1024.0.

انواع مختلف عدد اعشاری می‌توانند تعداد متفاوتی رقم بعد از جداکننده‌ی اعشار ذخیره کنند؛ به این ویژگی، دقت آن گفته می‌شود. یعنی اگر PI را در یک single ذخیره کنید، تنها ۶ تا ۹ رقم اول ذخیره می‌شود (و رقم آخر گرد می‌شود).

اعداد اعشاری در Clojure به‌صورت Double خوانده می‌شوند؛ با پسوند M، به‌صورت BigDecimal خوانده می‌شوند.

  • Double: ۸ بایت (دقت حدود ۱۵ تا ۱۷ رقم). این رایج‌ترین نوع است. به‌صورت 2.45 نوشته می‌شود.
  • BigDecimal: مقداری صحیح و بدون مقیاس با دقت دلخواه، به‌همراه یک مقیاس صحیح ۳۲‌بیتی. به‌صورت 2.45M نوشته می‌شود.

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

در این تمرین با حساب‌های پس‌انداز سر و کار دارید. هر سال، مانده‌ی حساب پس‌انداز شما بر اساس نرخ سود آن به‌روزرسانی می‌شود. نرخ سودی که بانک به شما می‌دهد به مقدار پول موجود در حساب شما (یعنی مانده‌ی آن) بستگی دارد:

  • −۳٫۲۱۳٪ برای مانده‌ی منفی.
  • ۰٫۵٪ برای مانده‌ی کمتر از 1000 دلار.
  • ۱٫۶۲۱٪ برای مانده‌ی بزرگ‌تر یا مساوی 1000 دلار و کمتر از 5000 دلار.
  • ۲٫۴۷۵٪ برای مانده‌ی بزرگ‌تر یا مساوی 5000 دلار.

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

سه کار در پیش دارید که هرکدام به مانده‌ی حساب و نرخ سود آن می‌پردازد.

1. محاسبه‌ی نرخ سود

تابع interest-rate را پیاده‌سازی کنید تا نرخ سود را بر اساس مانده‌ی داده‌شده محاسبه کند:

(interest-rate 200.75M)
;;=> 0.5

توجه کنید که مقدار بازگشتی یک Double است.

2. محاسبه‌ی به‌روزرسانی سالانه‌ی مانده

تابع annual-balance-update را پیاده‌سازی کنید تا به‌روزرسانی سالانه‌ی مانده را با در نظر گرفتن نرخ سود محاسبه کند:

(annual-balance-update 200.75M)
;;=> 201.75375M

توجه کنید که مقدار بازگشتی یک BigDecimal است.

3. محاسبه‌ی مقدار پولی که باید اهدا شود

تابع amount-to-donate را پیاده‌سازی کنید تا بر اساس مانده و درصد معاف از مالیاتی که دولت تعیین کرده است، محاسبه کند چه مقدار پول باید به امور خیریه اهدا شود:

(def balance 550.5M)
(def tax-free-percentage 2.5)

(amount-to-donate balance tax-free-percentage)
;;=> 27

توجه کنید که مقدار بازگشتی یک int است.

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

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

در Exercism ثبت‌نام کنید تا Clojure را همراه با 12 مفهوم105 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.