С Новым годом! Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Придумать алгоритм (работа с двумерным массивом)

14.06.2017, 21:35. Показов 1297. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Нужен такой алгоритм.
Имеется массив M*N, и все клетки в нём закрашены чёрным цветом. Нужно РАНДОМНО выбрать несколько областей (количество областей регулируется как угодно, параметрами, константой- неважно) и закрасить их белым цветом.

Самых главных два условия:

1) После закрашивания не должно оставаться чёрных областей, отделённых друг от друга. То есть после выборки должна остаться чёрная фигура непонятно каких очертаний, но ОДНА. Клетки, соединённые друг с другом по диагонали, считаются принадлежащим к разным фигурам.

Этот вариант неприминим, поскольку чёрных фигур ДВЕ
Название: Snap 2017-06-14 at 23.18.56.png
Просмотров: 22

Размер: 482 байт

Этот вариант применим, поскольку чёрных фигуру ОДНА
Название: Snap 2017-06-14 at 23.18.20.png
Просмотров: 22

Размер: 463 байт

2) Рисунок должен быть рандомным.
То есть чтобы нельзя было найти никакой закономерности.

Вот посмотрите на рисунок ниже.


Вот он, казалось бы, рандомный. Он сделан с помощью одного из алгоритмов, который я придумал Если в этом алгоритме сделать количество белых областей меньшим, то оно меньшим и будет, можно также регулировать общее количество белых точек.

Все эти мелочи в алгоритме регулируются.

Но обратите внимание на края рисунка, они все как бы зубчатые! Расплатой за всю рандомность рисунка является то, что по краям не найдём чёрных последовательностей, длиннее чем две точки. Это закономерность этого алгоритма и её не обойти никак.

Таких алгоритмов я напридумывал несколько и в каждом какой-либо недостаток. То несколько чёрных областей получается в результате, то ещё что.

Жду вашей помощи, спасибо, кто откликнется.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2017, 21:35
Ответы с готовыми решениями:

Работа с ДВУМЕРНЫМ массивом
как удалить строки из массива в нужном диапазоне? к примеру: есть матрица 5*5 я уже присвоил переменным строки 3 и 5, после удаления...

Работа с двумерным массивом
Доброго времени суток! Необходимо сделать такую программу: 1)Заполнить массив из 10 строк и 10 столбцов случайными двузначными...

Работа с двумерным массивом
Задача. Ввести целочисленный двумерный массив , вывести его. Найти k– количество чётных элементов на главной диагонали. Далее найти...

4
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
15.06.2017, 05:24
А нельзя наоборот черные точки на белом фоне ставить? Начать с одной случайной точки, затем случайным образом выбрать одну из граней и поставить следующую точку, затем снова выбрать одну из внешних граней итд

Добавлено через 4 минуты
Хотя не, не взлетит, неравномерно получится
1
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
15.06.2017, 09:03
Вот есть предложение по методу, но он наивный и будет заведомо медленным.
Code
1
2
3
4
5
6
7
Пока (не выполнено условие остановки):
    Выбрать произвольные координаты
    Если по координатам стоит белая точка, то прыгнуть на следующий цикл
    Закрасить координаты в белый цвет
    Дайти на рисунке черную точку, если это не удалось то ошибка и выход
    От найденной черной точки пройтись по всем черным соседям и пометить найденные черные точки
    Найти на рисунке не помеченную черную точку, если это удалось - закрасить координаты в черный
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.06.2017, 15:33  [ТС]
Цитата Сообщение от oldnewyear Посмотреть сообщение
Хотя не, не взлетит, неравномерно получится
Будет равномерно.
Основной недостаток - размеры белых областей будут минимальны. Вот я сделал как вы предлагаете, строил чёрные клетки, присоединял по горизонтали и верикали (не по диагонали) В процессе построения чёрной фигуры я исключал такие случаи:
Название: Snap 2017-06-15 at 10.01.19.png
Просмотров: 17

Размер: 286 байт
(это так называемая четвёрка. Если бы я такие случаи не исключал, то просто было бы чёрное пятно на весь экран)

Вот такой результат получается:


Казалось бы всё OK. Но белые области не могут быть большими! Вот такая белая область никогда не будет:
Название: Snap 2017-06-15 at 10.01.42.png
Просмотров: 17

Размер: 471 байт
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
15.06.2017, 17:35
Посмотрите "генерация лабиринта с толстыми стенками".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2017, 17:35
Помогаю со студенческими работами здесь

Работа с двумерным массивом
Выручайте. Задан двумерный массив состоящий из n элементов. Надо найти среднее арифметическое положительных элементов каждого столбца. В...

Работа с двумерным массивом
Как реализовать двумерный массив с помощью ДСЧ и вручную и выполнить эти действия? 1)Добавить после каждого четного элемента элемент со...

Работа с двумерным массивом
Добрый вечер, такая задача : Дано клетчатое поле размера N ×N, заполненное единицами и нуля- ми. В первой строке и первом столбце...

Работа с двумерным массивом
Доброго времени суток! Помогите разобраться с легким кодом, поясните пожалуйста коментариями парочку строк: program RPS; { Заполнить...

Работа с двумерным массивом
Добрый день коллеги подскажите как мне вывести нужные массивы с двумерного массива и сумму покупки нужного количества кг яблок. Пример: ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю 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. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru