неділя, 5 березня 2017 р.

7.1 Minesweeper field 1 / 1 ^-^

Поле для игры сапёр представляет собой сетку размером n×m
. В ячейке сетки может находиться или отсутствовать мина.
Напишите программу, которая выводит "решённое" поле, т.е. для каждой ячейки, не являющейся миной, указывается число мин, находящихся в соседних ячейках (учитывая диагональные направления)
Формат ввода:
На первой строке указываются два натуральных числа 1n,m100
, после чего в n строках содержится описание поля в виде последовательности точек '.' и звёздочек '*', где точка означает пустую ячейку, а звёздочка − ячейку с миной.
Формат вывода:
n
строк поля, в каждой ячейке которого будет либо число от 0 до 8, либо мина (обозначенная символом "*"), при этом число означает количество мин в соседних ячейках поля.
Sample Input:
4 4
..*.
**..
..*.
....
Sample Output:
23*1
**32
23*1
0111
Хорошие новости, верно!
1
a = list(map(int,input().split()))
2
def is_mine(x,y):
3
    #x 0 .. a[0]
4
    if x not in range (a[0]):
5
        return False
6
    #y 0 .. a[1]
7
    if y not in range (a[1]):
8
        return False
9
    if b[x][y]=="*":
10
        return True
11
    else:
12
        return False
13
def find_mine(x,y):
14
    if is_mine(x,y):
15
        return '*'
16
    sum=0
17
    if is_mine(x+1,y):
18
        sum+=1
19
    if is_mine(x-1,y):
20
        sum+=1
21
    if is_mine(x,y+1):
22
        sum+=1
23
    if is_mine(x,y-1):
24
        sum+=1
25
    if is_mine(x+1,y+1):
26
        sum+=1
27
    if is_mine(x-1,y-1):
28
        sum+=1
29
    if is_mine(x-1,y+1):
30
        sum+=1
31
    if is_mine(x+1,y-1):
32
        sum+=1
33
    return str(sum)
34
b=[]
35
for i in range (a[0]):
36
    b+=[list(input())]
37
for i in range(len(b)):
38
    for j in range(len(b[i])):
39
        print(find_mine(i,j),end="")
40
    print()

Немає коментарів:

Дописати коментар