مینیاب یک بازی محبوب است که در آن کاربر باید مینها را با کمک نشانههای عددی پیدا کند. این نشانهها نشان میدهند که چند مین بهطور مستقیم (بهصورت افقی، عمودی یا قطری) با یک خانه مجاور است.
وظیفهی شما این است که در یک صفحهی مینیاب که کامل شده است، تعداد مینهای مجاور را به خانههای خالی اضافه کنید.
خود صفحه یک مستطیل است که از خانههایی تشکیل شده است که یا خالیاند (' ') یا مین ('*').
برای هر خانهی خالی، تعداد مینهای مجاور آن را بشمارید (بهصورت افقی، عمودی و قطری). اگر خانهی خالی هیچ مین مجاوری نداشته باشد، آن را خالی بگذارید. در غیر این صورت، آن را با تعداد مینهای مجاور جایگزین کنید.
برای مثال، ممکن است صفحهای ۵ در ۴ مانند این دریافت کنید (جاهای خالی در اینجا برای نمایش روی صفحه با نویسهی «·» نشان داده شدهاند):
·*·*·
··*··
··*··
·····
که کد شما باید آن را به این تبدیل کند:
1*3*1
13*31
·2*2·
·111·
موقعیتهای x و y اغلب بهصورت یک Point نمایش داده میشوند که خود به چند تابع مفید روی Point منجر میشود که میتوانند در این کار کمک کنند.
از طرف دیگر، نمایش آن بهصورت یک آرایهی دوبعدی هم میتواند مفید باشد.
در هر صورت، تعریف چند متد الحاقی توصیفی میتواند راهحل شما را بسیار خواناتر و زیباتر کند.
در Exercism ثبتنام کنید تا Pharo را همراه با 50 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.
حلقههای For تودرتو، استفادهی هوشمندانه از `min` و `max` برای ساده کردن بررسی محدودهها، پایپلاینهای تابعی و استفاده از ماتریسهای دوبعدی را بررسی میکنیم.