Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
8 / 5 / 3
Регистрация: 07.03.2020
Сообщений: 23

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

21.12.2021, 13:16. Показов 581. Ответов 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): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 31.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru