حل تمرین بمب بازی کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات پیاده سازی برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین بمب بازی کوئرا با پایتون
بازی minesweeper به این صورت است که از یک جدول m×n ساخته شده است که بعضی از خانههای آن بمب هستند و سایر خانهها تعداد بمبهایی را که در 8 خانه مجاور آنها قرار دارد، نشانمیدهند. در این سوال خانههای حاوی بمب به شما داده میشود و برنامهی شما باید جدول را چاپ کند.
ورودی
در خط اول ورودی دو عدد n و m داده میشود که به ترتیب نشان دهندهی تعداد سطر و ستونهای جدول است. سپس در خط بعد یک عدد k که تعداد بمبهای واقع در جدول را نشان میدهد. در نهایت در هر یک از k خط بعدی در هر خط یک زوج عدد که مکان بمبها را نشان میدهند به عنوان ورودی به برنامه داده میشوند. در هر زوج ابتدا شماره سطر و سپس ستون مربوطه نمایش داده میشود؛ جدول را طوری فرض کنید که ستونهای آن از چپ به راست با اعداد 1 تا m و سطرهای آن از بالا به پایین با اعداد طبیعی 1 تا n شمارهگذاری شدهاند.
خروجی
برنامه باید در خروجی یک جدول m×n را چاپ کند. به این صورت که به ازای بمبها نماد * و برای سایر خانههای جدول نیز عدد متناظر با آن را چاپ کنید. بین هر دو عنصر متوالی در یک سطر، یک فاصله (space) چاپکنید که آنها را از هم جدا کند.
مثال
ورودی نمونه 1
4 3 5 1 1 4 2 1 3 3 2 4 3
خروجی نمونه 1
* 2 * 2 3 2 2 * 3 2 * *
کد پایتون سوال تمرین بمب بازی
n, m = map(int, input().split()) k = int(input()) bombs = set() for _ in range(k): x, y = map(int, input().split()) bombs.add((x-1, y-1)) directions = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] for i in range(n): for j in range(m): if (i, j) in bombs: print('*', end=' ') else: count = sum((i+dx, j+dy) in bombs for dx, dy in directions) print(count, end=' ') print()
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ