Здравствуйте, True2008, Вы писали:
T>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, xmlx, Вы писали:
X>>>X>>>000000000
X>>>001000000
X>>>001000000
X>>>001000000
X>>>001000000
X>>>001000000
X>>>001111100
X>>>000000000
X>>>
X>>>Понимаю, что задача имеет множествоqwq решений. нужно найти оптимальное.
А>>1.Просматриваешь изображение через окно 3x3
А>>2.Если в центре окна 0 — нечего не делать
А>>3.Если в центре окна 1, то
А>> если граничные клетки содержат только одно связное множество единиц и кол-во единиц в нём >2, но меньше 8- записать в центральную клетку 0
А>>4.Сдвинуть окно на шаг.
А>>Примеры на картинках:
А>>000 000 001 001 111 111
А>>011 ->001 010 ->010 110->100 и т.д.
А>>011 011 010 010 111 111
А>>Граничных клеток — 8. Комбинация 0 и 1 в них образует число щт 0 до 255. Строим таблицу и указываем в ней те комбинации, при которых в центральную клетку будет записываться 0.
А>>Это почти реализация одного из вариантов игры "Жизнь". Важно, что вышеописанные операции надо проводить последовательно!
T>если не трудно, напишите таблицу, вот с таким порядком нумерации
T>T>012
T>7x3
T>654
T>
T>thanx. сорри за дубль... забыл написать порядок нумерации...
Алгоритм формирования таблицы.
Замена единицы на ноль происходит в тех случаях, когда граница содержит от 3 до семи подряд идущих (смежных) единиц (старшая единица и младшая считаются смежными).
Т.е. для трёх единиц — это случаи: 00000111, 00001110, 00011100, 00111000, 01110000, 11100000, 11000001, 10000011 (3,7,14,...).
— взять тройку и сдвигать её циклически влево (разряд из переполнения записывать в младший бит). А можно и вправо(не пробовал

. Аналогично для четырёх и более единиц.
Таким образом, если биты границы образуют число 3 (7, 14, 15...), то центральный бит скользящего окна надо заменить но 0.
Конечно, результат(скелет двухградационного изображения) зависит от пути обхода. Но если сканировать изображение просто построчно, то в большинстве случаев этот алгоритм работает удовлетворительно.
Ну а уж выписывать таблицу — просто лень.