بکندباز

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

به شما یک رشته داده می‌شود که نشان‌دهنده تعداد تاس‌هایی است که باید پرتاب کنید، تعداد وجه‌های هر تاس و یک اصلاح‌کننده که پس از جمع زدن نتایج تمام تاس‌ها به نتیجه نهایی اعمال می‌شود. برای مثال، پرتاب یک تاس شش‌وجهی بدون اصلاح‌کننده ممکن است با رشته "1d6" نمایش داده شود — یک تاس با شش وجه و مقادیر بین ۱ تا ۶. اگر بخواهید عدد ۲ را به نتیجه پرتاب همان تاس اضافه کنید، می‌توانید آن را به صورت "1d6+2" نمایش دهید.

یک تابع بنویسید که یک رشته نشان‌دهنده مجموعه تاس‌های پرتاب شده را به عنوان ورودی بگیرد و یک لیست شامل دو عدد برگرداند که کمترین و بیشترین مقدار ممکن قابل‌دستیابی را نشان می‌دهند.

مثال ها

dice_range("1d6") ➞ [1, 6]
# اگر اصلاح‌کننده داده نشده باشد، فرض کنید چیزی به نتیجه اضافه یا کم نمی‌شود.

dice_range("d6") ➞ [1, 6]
# اگر تعداد تاس مشخص نشده باشد، فرض کنید فقط یک تاس پرتاب می‌شود.

dice_range("d6-2") ➞ [-1, 4]
# اگر اصلاح‌کننده منفی باشد، نتایج ممکن است منفی هم باشند.

dice_range("2d6-1") ➞ [1, 11]
# اصلاح‌کننده باید پس از پرتاب تمام تاس‌ها و جمع زدن نتایج اعمال شود، نه روی هر پرتاب جداگانه!

dice_range("0d6+1") ➞ [1, 1]
# اگر هیچ تاسی پرتاب نشود، نتیجه فقط همان مقدار اصلاح‌کننده خواهد بود و هیچ تصادفی وجود ندارد.

نمونه ورودی و خروجی

DiceRange("1d6") ➞ [1, 6]

DiceRange("1d6+2") ➞ [3, 8]

DiceRange("d6") ➞ [1, 6]

نکات

  • تمام ورودی‌ها معتبر خواهند بود.
  • تعداد تاس‌هایی که باید پرتاب شوند در هر تست یا یک عدد صحیح مثبت است، یا صفر است، یا حذف شده است (که در این صورت مقدار پیش‌فرض ۱ در نظر گرفته می‌شود).
  • تعداد وجه‌های تاس در هر تست یک عدد صحیح مثبت خواهد بود.
  • اصلاح‌کننده در هر تست یا یک عدد صحیح (مثبت، منفی یا صفر) است، یا حذف شده است (که در این صورت مقدار پیش‌فرض ۰ در نظر گرفته می‌شود).
Assert.Equal(new int[] {1, 6}, Backendbaz.DiceRange("1d6"));
Assert.Equal(new int[] {3, 8}, Backendbaz.DiceRange("1d6+2"));
Assert.Equal(new int[] {1, 6}, Backendbaz.DiceRange("d6"));
Assert.Equal(new int[] {-1, 4}, Backendbaz.DiceRange("d6-2"));
Assert.Equal(new int[] {2, 12}, Backendbaz.DiceRange("2d6"));
Assert.Equal(new int[] {1, 11}, Backendbaz.DiceRange("2d6-1"));
Assert.Equal(new int[] {1, 1}, Backendbaz.DiceRange("0d6+1"));

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*

تمرینات مرتبط