مسیرها
/
JavaScript
JavaScript
/
تمرین‌ها
/
شمارش در بازی گو
شمارش در بازی گو

شمارش در بازی گو

متوسط

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

امتیازهای ثبت‌شده روی یک صفحه‌ی گو را بشمارید.

در بازی گو (که با نام‌های baduk، igo، cờ vây و wéiqí هم شناخته می‌شود) امتیازها با محاصره‌ی کامل تقاطع‌های خالی به‌وسیله‌ی سنگ‌های خودتان به دست می‌آیند. به تقاطع‌های محاصره‌شده‌ی یک بازیکن، قلمروی او می‌گویند.

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

قلمرویی را تعیین کنید که مختصات مشخصی را شامل می‌شود.

ممکن است چندین تقاطع خالی همزمان محاصره شوند و برای محاصره، فقط همسایه‌های افقی و عمودی به حساب می‌آیند. در نمودار زیر، سنگ‌هایی که اهمیت دارند با «O» و سنگ‌هایی که ندارند با «I» (نادیده‌گرفته‌شده) مشخص شده‌اند. جاهای خالی نماینده‌ی تقاطع‌های خالی هستند.

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

به بیان دقیق‌تر، یک تقاطع خالی بخشی از قلمروی یک بازیکن است اگر همه‌ی همسایه‌هایش یا سنگ‌های همان بازیکن باشند یا تقاطع‌های خالی‌ای که بخشی از قلمروی همان بازیکن‌اند.

برای اطلاعات بیشتر، ویکی‌پدیا یا Sensei's Library را ببینید.

قالب ورودی

پارامتر board که نماینده‌ی تخته‌ی بازی است، در قالب آرایه‌ای از رشته‌ها ارائه می‌شود.

['  B  ', ' B B ', 'B W B', ' W W ', '  W  '];

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

  • یک فاصله که متناظر با یک خانه‌ی خالی است
  • B خانه‌ای که متعلق به بازیکن سیاه است
  • W خانه‌ای که متعلق به بازیکن سفید است

قالب‌های خروجی

انتظار می‌رود تابع getTerritory شیءای با ۲ ویژگی برگرداند:

  • owner مالک قلمرو (NONE، BLACK یا WHITE)
  • territory آرایه‌ای از مختصات که هر خانه در قلمرو را نمایش می‌دهد.
{
    owner: 'BLACK',
    territory: [
        [0, 0],
        [0, 1],
        [1, 0],
    ],
}

انتظار می‌رود تابع getTerritories شیءای با ۳ ویژگی برگرداند:

  • territoryBlack آرایه‌ای از مختصات که قلمروهای متعلق به بازیکن BLACK را نمایش می‌دهد
  • territoryWhite آرایه‌ای از مختصات که قلمروهای متعلق به بازیکن WHITE را نمایش می‌دهد
  • territoryNone آرایه‌ای از مختصات که قلمروهای متعلق به هیچ‌یک از دو بازیکن را نمایش می‌دهد
{
    territoryBlack: [
        [0, 0],
        [0, 1],
    ],
    territoryWhite: [
        [3, 0],
        [3, 1],
    ],
    territoryNone: [],
}
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
JavaScript Exercism

آماده‌اید شمارش در بازی گو را شروع کنید؟

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