8 / 5 / 3
Регистрация: 07.03.2020
Сообщений: 23

Определение 4-связных областей на карте

21.12.2021, 13:16. Показов 589. Ответов 0

Студворк — интернет-сервис помощи студентам
После ковида туплю, простите. Ребенку задали задачку. Имеется бинарная карта местности (двумерный массив), размером 20х20 пикселей, соответственно, 0 на ней - это вода, 1 - кусочки суши, а элемент 55 - точка подлета к карте на одной из её границ. Кусочки суши могут объединяться в острова по способу 4-связности(сосед сверху, справа, слева и снизу, по диагонали соседи не учитываются) . Задач, собственно говоря, две: определить остров, ближайший к точке подлета (координаты ближайшего куска суши и расстояние до него), а также определить размер острова, совпадающий с количеством единичных пикселей. Вывести на экран в формате текстового файла карту. Рассчитать и вывести ниже ближайшие координаты ближайшего острова, расстояние до него и размер этого острова (количество 4-связных единичек).
С первой задачей ребенок справился в легкую, см. ниже.

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
import numpy as np
from math import sqrt
map1 = np.loadtxt("map.txt", dtype=int)
map = (map1[0:2, 0:200]).reshape(20,20)
map = np.where(map <= 100, 1, map)
map = np.where(map > 100, 0, map)
dragon = 55
# вводим начальную координату дракона
print(map)
print('Введите сторону прилета (N,S,E или W) и номер клетки (от 0 до 19) :')
x=input()
y=int(input())
if x=='N':
    map[0,y] = dragon
    nom_str=0
    nom_stb=y
elif x=='S':
    map[19,y] = dragon
    nom_str=19
    nom_stb=y
elif x=='E':
    map[y,0] = dragon
    nom_str=y
    nom_stb=0
else:
    map[y,19] = dragon
    nom_str=y
    nom_stb=0
print()
print(map)
# вычисляем расстояние до ближайшего острова и его начальные координаты
rast_min=20*sqrt(20)+1
rast_tek=rast_min
for i in range(19):
    for j in range(19):
        if map[i,j]==1:
            rast_tek=sqrt((i-nom_str)**2+(j-nom_stb)**2)
        elif map[i,j]==55:
            rast_min=20*sqrt(20)+1
        if rast_tek<rast_min:
            rast_min=rast_tek
            strk=i
            stlb=j
if rast_min==20*sqrt(20)+1:
    print('Островов нет')
else:
    print('ближайший остров на расстоянии:', rast_min,', координаты: строка -', strk,' и столбец -',stlb )
Со второй задачей дружно тупим вместе. Были идеи, но мы сломались о случай, когда внутри области имеются дырки((( Например:
1 1 1 1
1 0 0 1
1 1 1 1
- это тоже остров.
Буду благодарна за идею, а допиливает ребенок пускай сам. Спасибо заранее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2021, 13:16
Ответы с готовыми решениями:

OpenCV Выделение связных областей
Вопрос есть ли реализация алгоритма выделение связных областей в OpenCV ? (Искал не нашел, да хз как оно звучит на английском) ...

Поиск связных областей на изображении
Всем доброго времени суток. Наткнулся на htrehcbdysq алгоритм поиска связных областей на изображении (псевдокод): void Labeling(BIT*...

Табулирование на некотором интервале; Определение областей убывания ; Определение минимумов
Всем доброго времени суток. Прощу прощения, нужна ваша помощь. Если кто может помочь буду благодарен. Для функции y=sin(x)+(x+a);...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2021, 13:16
Помогаю со студенческими работами здесь

Кто работал с GeoTools, Как сделать подписи на карте, областей, стран?
Как сделать подписи на карте, областей, стран. Я думаю, что их брать из dbf файла, вот только раскрасить карту удалось по своему желанию, а...

Определение максимально связных вершин графа
МАКСИМАЛЬНО СВЯЗНЫЕ ВЕРШИНЫ Дан неориентированный граф. Назовем две вершины s и t «максимально связными», если из одной вершины...

Определение принадлежности точки (x, y) выделенной совокупности областей (в Excel + VBA )
помогите пожалуйста ... хочу разобраться в VB но на этом задании я просто 0 ... как то вообще в ступоре не могли бы вы мне растолковать...

Определение координат по метке на карте
Здравствуйте, возник следующий вопрос, не знаю реален он вообще или нет. Хочу поставить карту на сайт и когда пользователь клацает по...

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


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

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

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru