جمع مضارب

جمع مضارب

متوسط

مقدمه

شما برای شرکتی کار می‌کنید که یک بازی آنلاین در ژانر فانتزی و بقا می‌سازد.

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

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

وظیفه‌ی شما نوشتن کدی است که امتیاز انرژی را محاسبه می‌کند؛ امتیازی که هنگام تمام کردن یک سطح به بازیکنان داده می‌شود.

امتیازی که داده می‌شود به دو مورد بستگی دارد:

  • سطحی (یک عدد) که بازیکن تمام کرده است.
  • مقدار پایه‌ی هر شیء جادویی که بازیکن در طول آن سطح جمع کرده است.

امتیاز انرژی بر اساس قواعد زیر داده می‌شود:

  1. برای هر شیء جادویی، مقدار پایه را بردارید و همه‌ی مضرب‌های آن مقدار را که کمتر از شماره‌ی سطح هستند پیدا کنید.
  2. مجموعه‌های اعداد را با هم ترکیب کنید.
  3. موارد تکراری را حذف کنید.
  4. مجموع اعداد باقی‌مانده را محاسبه کنید.

بیایید به یک مثال نگاه کنیم:

بازیکن سطح ۲۰ را تمام کرد و دو شیء جادویی با مقدارهای پایه‌ی ۳ و ۵ پیدا کرد.

برای محاسبه‌ی امتیاز انرژی‌ای که بازیکن به دست آورده است، باید همه‌ی مضرب‌های یکتای این مقدارهای پایه را که کمتر از سطح ۲۰ هستند پیدا کنیم.

  • مضرب‌های ۳ که کمتر از ۲۰ هستند: {3, 6, 9, 12, 15, 18}
  • مضرب‌های ۵ که کمتر از ۲۰ هستند: {5, 10, 15}
  • مجموعه‌ها را ترکیب کنید و موارد تکراری را حذف کنید: {3, 5, 6, 9, 10, 12, 15, 18}
  • مضرب‌های یکتا را جمع کنید: 3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 = 78
  • بنابراین بازیکن برای تمام کردن سطح ۲۰ و پیدا کردن آن دو شیء جادویی با مقدارهای پایه‌ی ۳ و ۵، ۷۸ امتیاز انرژی به دست می‌آورد.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Groovy Exercism

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

در Exercism ثبت‌نام کنید تا Groovy را همراه با 66 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.