Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/63: Рейтинг темы: голосов - 63, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14

Бактериям — бой!

01.01.2020, 16:21. Показов 13113. Ответов 10

Студворк — интернет-сервис помощи студентам
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля антибиотика убивает 8 бактерий в той клетке, куда она попала, и по 4 бактерии в восьми (или менее, если клетка находится с краю поля) соседних клетках. Выясните, сколько бактерий осталось.

Формат ввода
На первой строке вводится натуральное число n≥3 — размер квадратного поля из клеток, в котором живут бактерии.

Далее следует n2 чисел на отдельных строках, которые описывают количество бактерий в каждой клетке ряд за рядом сверху вниз, внутри ряда слева направо.

Далее следует натуральное число k — количество капель антибиотика.

Далее следует k пар чисел на отдельных строках — координаты клеток, в которые попали капли; сначала следует номер столбца (столбцы нумеруются слева направо), затем номер ряда (ряды нумеруются сверху вниз). Координаты отсчитываются с нуля, т. е. принимают значения от 0 до n-1.

Формат вывода
Выводится количество бактерий, выживших в каждой клетке.

Пример 1:
Ввод:
3
10
10
9
10
10
10
10
10
10
2
1
1
0
0

Вывод:
0 2 5
2 0 6
6 6 6

Пример 2:
Ввод:
3
5
5
5
5
5
5
5
5
5
1
1
0

Вывод:

1 0 1
1 1 1
5 5 5

Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if i == 0 and j == 0:
                if b[x + i][y + j] >= 8:
                    b[x + i][y + j] -= 8
                else:
                    b[x + i][y + j] = 0
            else:
                if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                    if b[x + i][y + j] >= 4:
                        b[x + i][y + j] -= 4
                    else:
                        b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[i][j], end=' ')
    print('')
Ответ переворачивает во втором почему-то :P
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.01.2020, 16:21
Ответы с готовыми решениями:

Бактериям — бой!
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Бактериям бой
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Бактериям бой
ПОМОГИТЕ ДОПИСАТЬ ПРОГРАММУ!!! С первым примером работает. Со вторым примером нет. Снизу мой код. Где ошибка скажите пж. На...

10
17 / 12 / 5
Регистрация: 22.10.2019
Сообщений: 62
01.01.2020, 23:32
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if i == 0 and j == 0:
                if b[x + i][y + j] >= 8:
                    b[x + i][y + j] -= 8
                else:
                    b[x + i][y + j] = 0
            else:
                if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                    if b[x + i][y + j] >= 4:
                        b[x + i][y + j] -= 4
                    else:
                        b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[j][i], end=' ')
    print('')
вот так, не?
0
1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14
02.01.2020, 06:57  [ТС]
То , что вы поменяли j и i поможет пройти только второй тест, теперь повернет первый, даже если заифать, дальше все равно не пройдет
0
1 / 1 / 0
Регистрация: 01.01.2020
Сообщений: 14
02.01.2020, 17:10  [ТС]
Вот откорректированная версия, но она валится на 5 - ом тесте, а ты решил ее, nubik53 (или назвать тебя Дамир?)?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    x = int(input())
    y = int(input())
    for i in range(-1, 2):
        for j in range(-1, 2):
            if 0 <= x+i <= n-1 and 0 <= y+j <= n-1:  # проверка координат на вход в границы матрицы
                if i == 0 and j == 0:
                    if b[x + i][y + j] >= 8:
                        b[x + i][y + j] -= 8
                    else:
                        b[x + i][y + j] = 0
                else:
                    if (0 <= x + i <= n - 1) and (0 <= y + j <= n - 1):
                        if b[x + i][y + j] >= 4:
                            b[x + i][y + j] -= 4
                        else:
                            b[x + i][y + j] = 0
for i in range(n):
    for j in range(n):
        print(b[i][j], end=' ')
    print('')
Номер теста
5

Ввод
18
59
85
65
100
16
25
30
57
39
24
58
77
71
5
93
9
59
65
16
42
57
34
94
23
35
43
58
20
72
7
22
92
23
1
32
58
0
26
75
42
46
21
94
40
86
55
97
73
85
99
46
91
76
66
91
54
31
9
74
73
7
45
39
89
55
41
41
18
34
16
28
22
21
25
63
41
52
46
63
27
53
49
25
4
97
17
35
38
20
48
59
46
15
48
35
49
63
77
29
73
60
43
2
74
26
67
2
11
15
92
54
29
100
23
57
79
86
23
73
59
55
2
62
31
69
44
37
39
79
15
24
71
70
80
24
76
0
63
98
97
35
62
43
14
71
99
43
37
92
73
16
61
92
55
55
62
24
88
4
53
8
50
50
100
88
0
17
22
76
43
15
45
16
84
60
87
60
4
40
1
57
44
12
34
62
3
44
30
53
41
18
25
30
5
30
12
36
77
29
33
75
29
81
64
88
60
85
82
12
57
27
23
88
25
79
66
78
96
93
0
26
95
96
58
7
95
54
77
8
46
19
57
63
33
84
52
3
73
90
20
59
80
9
81
62
74
57
73
57
46
62
24
47
40
50
72
33
90
47
90
9

File is too long to be displayed fully


Ожидаемый результат
19 37 37 80 0 13 18 25 0 0 10 25 27 0 49 0 27 53
0 0 13 0 66 0 11 0 6 0 24 0 0 16 0 0 0 38
0 0 27 0 22 0 58 0 46 15 61 41 13 7 0 47 48 50
59 0 0 0 18 21 0 13 11 53 27 17 0 0 0 0 0 0
0 0 11 0 0 0 31 3 25 9 0 0 49 0 0 0 0 16
27 0 0 0 0 0 35 41 0 29 28 0 0 22 0 19 0 0
0 48 6 0 44 0 29 31 26 0 25 7 7 0 26 7 41 20
21 3 27 0 0 35 38 20 0 0 0 11 46 57 3 34 11 0
51 59 0 0 60 41 0 1 12 0 0 0 0 24 0 1 0 26
18 56 56 0 5 2 36 0 0 0 0 8 0 15 0 0 0 0
17 4 0 18 54 0 0 0 0 0 0 0 0 0 0 0 0 53
9 0 47 0 57 44 56 4 37 30 0 0 0 0 52 0 43 50
46 56 45 0 0 63 60 14 0 59 14 29 0 0 0 17 23 1
48 0 0 5 30 0 27 40 0 49 26 18 0 5 9 14 22 0
3 0 10 24 0 34 0 50 68 59 40 0 0 0 20 0 8 39
53 21 43 0 0 0 0 28 31 0 0 23 7 0 13 45 20 62
0 0 0 0 18 0 0 0 18 0 21 21 48 34 62 69 0 0
5 3 21 0 31 37 15 0 0 47 1 18 0 6 4 0 68 28



Вывод
19 41 33 68 0 0 2 41 19 0 18 57 39 0 49 0 27 45
0 0 9 0 42 0 0 7 18 0 32 0 0 40 0 0 0 22
0 0 27 0 0 0 46 0 42 23 65 45 37 51 6 55 28 26
71 18 0 0 0 1 0 0 0 69 39 9 0 0 0 0 0 0
0 0 39 0 0 0 7 0 21 37 17 0 49 0 0 0 0 16
47 22 0 0 0 0 15 41 0 53 48 23 0 26 0 15 0 0
3 68 18 0 68 0 29 47 54 0 29 27 19 0 14 0 5 0
5 0 39 0 0 35 22 20 0 20 0 7 54 57 0 2 0 0
15 47 3 9 64 37 0 0 12 0 0 14 0 56 0 0 0 2
0 40 48 0 0 0 16 0 0 0 0 32 24 55 28 0 0 0
9 0 0 6 22 0 0 0 0 0 0 0 0 0 0 0 0 37
0 0 43 5 49 20 36 8 17 6 0 0 0 0 24 0 27 34
34 24 21 0 0 47 48 6 0 27 0 29 0 0 0 0 15 5
52 0 0 0 30 0 7 40 0 9 10 38 1 5 1 10 22 0
3 0 0 8 0 38 11 58 40 19 24 6 0 0 20 8 24 43
37 9 35 0 0 0 0 60 43 3 3 59 27 0 0 45 20 58
0 0 0 0 2 4 0 44 42 0 45 37 56 34 46 69 0 0
13 19 45 4 31 29 39 0 17 67 17 34 0 10 0 0 68 28

Сообщение

wrong answer 2nd numbers differ - expected: '37', found: '41'
0
 Аватар для __ALPHA__
302 / 160 / 87
Регистрация: 16.04.2018
Сообщений: 239
02.01.2020, 18:10
Получилось почти тоже самое, но можешь попробовать:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
n = int(input())
b = [[int(input()) for _ in range(n)] for _ in range(n)] #b[ряд][столбец] = b[y][x]
 
k = int(input())
for _ in range(k):
    x = int(input())
    y = int(input())
    for _y in range(-1, 2):
        for _x in range(-1, 2):
            if (0 <= x + _x <= n - 1) and (0 <= y + _y <= n - 1):
                if _y == 0 and _x == 0:
                    if b[y + _y][x + _x] >= 8:
                        b[y + _y][x + _x] -= 8
                    else:
                        b[y + _y][x + _x] = 0
                else:
                    if b[y + _y][x + _x] >= 4:
                        b[y + _y][x + _x] -= 4
                    else:
                        b[y + _y][x + _x] = 0
 
for y in range(n):
    for x in range(n):
        print(b[y][x], end=' ')
    print('')
0
69 / 61 / 11
Регистрация: 08.04.2019
Сообщений: 117
02.01.2020, 20:25
Лучший ответ Сообщение было отмечено Aleks_Nik как решение

Решение

Эхх, первый курс)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
n = int(input())
s = [([0] * n) for i in range(n)]
for i in range(n):
    for j in range(n):
        s[i][j] = int(input())
m = int(input())
for i in range(m):
    b = int(input())
    a = int(input())
    if s[a][b] >= 8:
        s[a][b] -= 8
    else:
        s[a][b] = 0
    if a > 0:
        if s[a - 1][b] >= 4:
            s[a - 1][b] -= 4
        else:
            s[a - 1][b] = 0
        if b > 0:
            if s[a - 1][b - 1] >= 4:
                s[a - 1][b - 1] -= 4
            else:
                s[a - 1][b - 1] = 0
        if b < (n - 1):
            if s[a - 1][b + 1] >= 4:
                s[a - 1][b + 1] -= 4
            else:
                s[a - 1][b + 1] = 0
    if a < (n - 1):
        if s[a + 1][b] >= 4:
            s[a + 1][b] -= 4
        else:
            s[a + 1][b] = 0
        if b > 0:
            if s[a + 1][b - 1] >= 4:
                s[a + 1][b - 1] -= 4
            else:
                s[a + 1][b - 1] = 0
        if b < (n - 1):
            if s[a + 1][b + 1] >= 4:
                s[a + 1][b + 1] -= 4
            else:
                s[a + 1][b + 1] = 0
    if b > 0:
        if s[a][b - 1] >= 4:
            s[a][b - 1] -= 4
        else:
            s[a][b - 1] = 0
    if b < n - 1:
        if s[a][b + 1] >= 4:
            s[a][b + 1] -= 4
        else:
            s[a][b + 1] = 0
for i in range(n):
    for j in range(n):
        print(s[i][j], end=' ')
    print()
Можешь улучшить код, мне лень)
3
17 / 12 / 5
Регистрация: 22.10.2019
Сообщений: 62
03.01.2020, 11:16
У меня она решена и шутку про Дамира я не понял
0
2 / 2 / 0
Регистрация: 26.11.2019
Сообщений: 3
06.01.2020, 16:53
Несмотря на то, что код выше длиннее, может быть сложнее, но без него я бы не смог доработать свой. Спасибо ему за напоминание о том, что длина коллекции больше его крайнего элемента. Вроде знаю, а один раз упустил, и всё пошло не туда, я даже в интернет полез...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
n = int(input())
field = []
for i in range(n):
    field.append([0] * n)
for a in range(n):
    for b in range(n):
        field[a][b] = int(input())
k = int(input())
for j in range(k):
    y = int(input())
    x = int(input())
    field[x][y] -= 8
    if x - 1 >= 0 and y - 1 >= 0:
        field[x - 1][y - 1] -= 4
    if x - 1 >= 0:
        field[x - 1][y] -= 4
    if y - 1 >= 0:
        field[x][y - 1] -= 4
    if x + 1 < n and y + 1 < n:
        field[x + 1][y + 1] -= 4
    if x + 1 < n:
        field[x + 1][y] -= 4
    if y + 1 < n:
        field[x][y + 1] -= 4
    if x - 1 >= 0 and y + 1 < n:
        field[x - 1][y + 1] -= 4
    if x + 1 < n and y - 1 >= 0:
        field[x + 1][y - 1] -= 4
for c in range(n):
    for d in range(n):
        if field[c][d] < 0:
            field[c][d] = 0
for i in range(n):
    field[i] = ' '.join(str(v) for v in field[i])
print('\n'.join(field))
0
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 2
08.01.2020, 12:58
ты на втором?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2020, 13:16
Цитата Сообщение от cyberkido Посмотреть сообщение
ты на втором?
Уважаемые! Не путайте форум со всякими вк, ок и иже с ними.
0
0 / 0 / 0
Регистрация: 09.01.2024
Сообщений: 1
09.01.2024, 17:20
Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
table = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
    col, row = int(input()), int(input())
    table[row][col] -= 8
    for _row in range(-1, 2):
        for _col in range(-1, 2):
            if (0 <= col + _col <= n - 1) and (0 <= row + _row <= n - 1) and not (_row == 0 and _col == 0):
                table[row + _row][col + _col] -= 4
for item in table:
    print(*[el * (el >= 0) for el in item])
Добавлено через 1 минуту
n = int(input())
table = [[int(input()) for _ in range(n)] for _ in range(n)]
for _ in range(int(input())):
col, row = int(input()), int(input())
table[row][col] -= 8
for _row in range(-1, 2):
for _col in range(-1, 2):
if (0 <= col + _col <= n - 1) and (0 <= row + _row <= n - 1) and not (_row == 0 and _col == 0):
table[row + _row][col + _col] -= 4
for item in table:
print(*[el * (el >= 0) for el in item])
Наверное, лучший способ решить задачу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2024, 17:20
Помогаю со студенческими работами здесь

Бактериям — бой!
На квадратном клетчатом поле живут бактерии. Мы капаем из пипетки антибиотик в некоторые клетки, что убивает часть бактерий: каждая капля...

Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой». Корабли не должны касаться дру
с++ Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой». Корабли не должны касаться друг друга даже...

Игры Игра «Морской бой» "Написать программу графической реализации игры против компьютера в односторонний морской бой (б
Игра «Морской бой» &quot;Написать программу графической реализации игры против компьютера в односторонний морской бой (без ответного хода...

Морской бой
Мальчик Сергей очень любит играть во всем известную игру «Морской бой». Однако играет он в эту игру с необычными правилами, а именно: ...

Морской бой
Есть поле 10 на 10, есть определенной расположение кораблей. Необходимо отобразить/напечатать имеющееся поле с кораблями


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru