امتیازهای ثبتشده روی یک صفحهی گو را بشمارید.
در بازی گو (که با نامهای 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: [],
}
در Exercism ثبتنام کنید تا JavaScript را همراه با 37 مفهوم159 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.