Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 08.02.2022
Сообщений: 11

Заливка области

06.03.2022, 11:33. Показов 4441. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файле input.txt записана информация о цвете пикселей цветного рисунка. Код цвета каждого пикселя – целое число в диапазоне от 0 до 255. Напишите программу, которая выполняет заливку области одного цвета, начиная с заданной точки. Заливка происходит по четырём направлениям: вверх, вниз, влево и вправо, но не по диагонали.

Входные данные
В первой строке файла input.txt через пробел записаны два числа – размеры рисунка: число строк N ( 1 ≤ N ≤ 100 ) и число столбцов M ( 1 ≤ M ≤ 100 ). Во второй строке через пробел записаны координаты начальной точки, откуда начинается заливка: сначала x -координата, затем y -координата. Левый верхний угол рисунка имеет координаты (0, 0) . В третьей строке записан код цвета заливки – целое число в диапазоне от 0 до 255. В следующих N строках записаны коды цветов пикселей матрицы, по M значений в диапазоне от 0 до 255 в каждой строке, разделённые пробелами.

Выходные данные
В первой строке файла output.txt программа должна вывести число клеток, цвет которых изменился в результате заливки. В следующих N строках выводятся коды цветов пикселей получившейся матрицы, по M значений в каждой строке, разделённые пробелами.

Примеры
входные данные
5 5
1 0
2
0 1 0 1 1
1 1 1 2 2
0 1 0 2 2
3 3 1 2 2
0 1 1 0 0
выходные данные
5
0 2 0 1 1
2 2 2 2 2
0 2 0 2 2
3 3 1 2 2
0 1 1 0 0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2022, 11:33
Ответы с готовыми решениями:

Заливка области
Задача 11 класса, решите как можно проще, пожалуйста В файле input.txt записана информация о цвете пикселей цветного рисунка. Код цвета...

Лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет",...

Заливка области
В файле input.txt записана информация о цвете пикселей цветного рисунка. Код цвета каждого пикселя – целое число в диапазоне от 0 до 255....

3
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
06.03.2022, 21:38
Sergey2872,

Добавлено через 9 минут
Ошибочка закралась, исправлю, выложу
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
06.03.2022, 22:21
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def dfs(x, y):
    if a[x][y] != old_color:
        return
    a[x][y] = new_color
    if x > 0:
        dfs(x - 1, y)
    if x < n - 1:
        dfs(x + 1, y)
    if y > 0:
        dfs(x, y - 1)
    if y < n - 1:
        dfs(x, y + 1)
 
 
n, m = map(int, input().split())
x, y = map(int, input().split())
new_color = int(input())
a =[list(map(int, input().split())) for _ in range(n)]
old_color = a[x][y]
dfs(x, y)
for row in a:
    print(*row)
Добавлено через 3 минуты
а, счетчик забыл. ну сам разберешься куда его прикрутить.
2
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
07.03.2022, 00:43
Sergey2872, исправленный вариант, в первом счетчик врал
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import sys, os
import queue
 
 
# Класс - одна точка в матрице
class Point():
    def __init__(self, x, y):
        self.x = x  # Координаты точки в матрице
        self.y = y
 
    # Вернуть y координату точки
    def get_y(self):
        return self.y
 
    # Вернуть x координату точки
    def get_x(self):
        return self.x
 
 
input_file = os.path.join(sys.path[0], 'input_fill.txt')  # Файл ввода
output_file = os.path.join(sys.path[0], 'output_fill.txt')  # Файл вывода
matrix = []  # Список строк (списков) матрицы
queue_points = queue.Queue()  # Очередь точек для закрашивания
count = 0  # Счетчик закрашенных точек
 
with open(input_file, 'r') as f:
    matrix_n, matrix_m = map(int, f.readline().rstrip().split())  # Читаем размер рисунка
    point_x, point_y = map(int, f.readline().rstrip().split())  # Читаем координаты первой точки
    color_fill = int(f.readline().rstrip())  # Читаем цвет задивки
 
    # Читаем из файла и создаем матрицу
    for _ in range(matrix_m):
        matrix.append(list(map(int, f.readline().rstrip().split())))
 
queue_points.put(Point(point_x, point_y))  # Добавляем первую точку для закрашивания в очередь
color_old = matrix[point_y][point_x]  # Цвет, который нужно перекрасить
 
# Вывод исходной матрицы на экран
for i in matrix:
    print(*i)
print()
 
'''
1. Выбрать точку из очереди
2. Залить ее
3. Проверить направления вверх, вправо, вниз, влево. Добавить возможные направления заливки в очередь
4. Выполнять 1-3 пока очередь не пуста
'''
while not queue_points.empty():
    current_point = queue_points.get()  # Получаем из очереди точку
    x, y = current_point.get_x(), current_point.get_y()  # Узнаем координаты точки
    if matrix[y][x] == color_fill:
        continue
    count += 1
    matrix[y][x] = color_fill  # Перекрашиваем точку
    # Проверяем верхнюю, правую, нижнюю, левую точки относительно текущей
    # Если их цвет полдежит перекрашиванию, добавляем их в очередь
    y1, x1 = y - 1, x
    if y1 >= 0:
        if matrix[y1][x1] == color_old:
            queue_points.put(Point(x1, y1))  # Добавляем очередную точку для закрашивания в очередь
    y1, x1 = y, x + 1
    if x1 < matrix_m:
        if matrix[y1][x1] == color_old:
            queue_points.put(Point(x1, y1))  # Добавляем очередную точку для закрашивания в очередь
    y1, x1 = y + 1, x
    if y1 < matrix_n:
        if matrix[y1][x1] == color_old:
            queue_points.put(Point(x1, y1))  # Добавляем очередную точку для закрашивания в очередь
    y1, x1 = y, x - 1
    if x1 >= 0:
        if matrix[y1][x1] == color_old:
            queue_points.put(Point(x1, y1))  # Добавляем очередную точку для закрашивания в очередь
 
# Вывод результатов в файл
with open(output_file, 'w') as f:
    f.write(str(count) + '\n')
    for i in matrix:
        f.write(' '.join(map(str, i)) + '\n')
 
# Вывод матрицы после заливки на экран
for i in matrix:
    print(*i)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2022, 00:43
Помогаю со студенческими работами здесь

Имеется список областей России и городов, относящихся к области. Определить, к какой области относится город. Например:
Имеется список областей России и городов, относящихся к области. Определить, к какой области относится город. Например: На входе: 1 ...

Заливка пересечения фигур
есть 2 прямоугольника которые пересекаются как найти их пересечение и выполнить его заливку нажатием на кнопку from tkinter import...

Заливка области
В файле input.txt записана информация о цвете пикселей цветного рисунка. Код цвета каждого пикселя – целое число в диапазоне от 0 до 255....

Заливка области
В общем такая проблема, есть файл, в нём записаны координаты вершин многоугольника, надо прочитать эти вершины и вывести всё это дело на...

Заливка области
В файле input.txt записана информация о цвете пикселей цветного рисунка. Код цвета каждого пикселя – целое число в диапазоне от 0 до 255....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru