امتیازهای ثبتشده روی یک صفحهی گو را بشمارید.
در بازی گو (که با نامهای baduk، igo، cờ vây و wéiqí هم شناخته میشود) امتیازها با محاصرهی کامل تقاطعهای خالی بهوسیلهی سنگهای خودتان به دست میآیند. به تقاطعهای محاصرهشدهی یک بازیکن، قلمروی او میگویند.
قلمروی هر بازیکن را محاسبه کنید. میتوانید فرض کنید که هر سنگی که در قلمروی حریف گرفتار شده باشد، پیشتر از صفحه برداشته شده است.
قلمرویی را تعیین کنید که مختصات مشخصی را شامل میشود.
ممکن است چندین تقاطع خالی همزمان محاصره شوند و برای محاصره، فقط همسایههای افقی و عمودی به حساب میآیند. در نمودار زیر، سنگهایی که اهمیت دارند با «O» و سنگهایی که ندارند با «I» (نادیدهگرفتهشده) مشخص شدهاند. جاهای خالی نمایندهی تقاطعهای خالی هستند.
+----+
|IOOI|
|O O|
|O OI|
|IOI |
+----+
به بیان دقیقتر، یک تقاطع خالی بخشی از قلمروی یک بازیکن است اگر همهی همسایههایش یا سنگهای همان بازیکن باشند یا تقاطعهای خالیای که بخشی از قلمروی همان بازیکناند.
برای اطلاعات بیشتر، ویکیپدیا یا Sensei's Library را ببینید.
برای تکمیل این تمرین، باید توابع زیر را پیادهسازی کنید:
territories مختصات نقاط هر قلمرو را برمیگرداند (با مبنای ۱، یعنی بالا-چپ همان (۱، ۱) است) به همراه این که چه کسی «مالک» آن قلمرو است.
territoriesFor قلمرویی را که شامل آن مختصات است، به همراه مالک آن قلمرو برمیگرداند. اگر مختصات به یک مکان خالی اشاره نکند، Nothing را برمیگرداند.
قلمرو زمانی متعلق به یکی از بازیکنان است که سنگهای آن بازیکن تنها سنگهای مجاور آن قلمرو باشند.
امضاهای نوع از پیش در جای خود قرار دارند، اما تعریف توابع بر عهدهی خودتان است.