Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/64: Рейтинг темы: голосов - 64, средняя оценка - 4.67
3 / 2 / 0
Регистрация: 23.01.2016
Сообщений: 98
1

Сапёр

12.11.2016, 20:29. Показов 12148. Ответов 2
Метки нет (Все метки)

Здравствуйте. Помогите, пожалуйста, решить задачу:

На поле для игры в сапер клеточки с минами обозначаются символом “*”, а в каждой пустой клеточке записано число от 0 до 8, равное количеству мин в 8 клетках, соседних с данной.

Дан список мин на поле. Постройте по данному списку изображение поля.

Входные данные
Программа получает на вход числа N и M - количество строк и столбцов на поле, а также количество мин на поле K. Далее идет K пар чисел - координат мин. Первое число - номер строки, второе число - номер столбца.

Выходные данные
Выведите изображение поля на экран, клетки при выводе разделяйте одним пробелом.

Примеры
входные данные
3 2 2
1 1
2 2
выходные данные
* 2
2 *
1 1
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2016, 20:29
Ответы с готовыми решениями:

Сапёр на python
помогите сделать обычный сапер на питоне, где можно выбирать координаты и выбирать что сделать с...

Игра Сапер
Здравствуйте! Вот все не могу добить.... надо было написать код для поля игры Сапер. Вроде есть, но...

Игра сапер
Поле для игры сапёр представляет собой сетку размером n×m. В ячейке сетки может находиться или...

Написать генератор карт для игры «сапёр».
Написать генератор карт для игры «сапёр». Карта размером NxM. Формат ввода Каждая строка...

2
559 / 299 / 189
Регистрация: 20.05.2016
Сообщений: 592
13.11.2016, 21:06 2
Лучший ответ Сообщение было отмечено OnikS228 как решение

Решение

Что-то не идёт в голову ничего приличнее "топорного обуха"
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n, m, k = map(int, input().split())
mines = set(tuple(int(i)-1 for i in input().split()) for _ in range(k))
 
 
def neighborhood(x, y):
    for i in range(x-1, x+2):
        for j in range(y-1, y+2):
            if i > -1 and j > -1:
                yield i, j
 
 
def count_mines(x, y):
    return sum((i, j) in mines for i, j in neighborhood(x, y))
 
 
for i in range(n):
    for j in range(m):
        if (i, j) not in mines:
            print(count_mines(i, j), end=' ')
        else:
            print('*', end=' ')
    print()
Может, кто-нибудь предложит решение посимпатичнее?
1
0 / 0 / 0
Регистрация: 09.04.2020
Сообщений: 2
23.04.2020, 08:31 3
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def nbr(x,y):
    ct = 0
    for i in range(x-1, x+2):
        for j in range(y-1, y+2):
            if (i > -1 and j > -1) and(i<=n-1 and j<=m-1) and a[i][j]=='*':
                ct+=1                
    return ct
n, m, k = [int(i) for i in input().split()]
a = [[ 0 for i in range (m)]for j in range (n)]
for i in range (k):
    x,y =[int(i) for i in input().split()]
    a[x-1][y-1]='*'
for i in range(n):
    for j in range (m):
        if a[i][j]=='*':
            continue
        else:
            a[i][j]=nbr(i,j)
for row in a:
     print(' '.join(list(map(str, row))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2020, 08:31

Сапер
Доброго времени суток! Хотел узнать, может у кого завалялись исходники игры &quot;сапер&quot; на Java?

Сапер
Доброго времени суток! Подскажите пожалуйста, где я налажал в коде? Я запутался:( Ругается на...

Сапер
package myminesapper; public class myminesapper { public static void main(String args) { ...

Сапер
Здравствуйте!!! Вы не могли бы мне помочь, очень нужно. Никак не могу написать программу сапер на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru