задача
Дана ASCII диаграмма цикла
например
....................
......@@@@@.........
......@...@.........
.....@@...@@@@@.....
....@@........@.....
....@........@@.....
....@@@@@@@@@@......
....................
....................
И место на петле
например
(7,1)
Вы должны найти внутри и снаружи петли
например
00000000000000000000
00000011111000000000
00000011111000000000
00000111111111100000
00001111111111100000
00001111111111100000
00001111111111000000
00000000000000000000
00000000000000000000
Характеристики
Вы можете принять ввод для диаграммы в виде строки, разделенной символами новой строки или очевидным эквивалентом
Вы получите координату в цикле (0 или 1 с индексом) как часть вашего ввода. Вы можете разместить свое происхождение в любом месте, где пожелаете. Вы можете взять эту координату
(<row>, <column>)
,(<column>, <row>)
или как линейное положение на струне. Вы можете получить эти данные любым разумным способом. Все символы в цикле будут такими же, как символы в этом индексе.Предпочтительный выход представляет собой 2 одномерный массив truthy и falsy значений, однако строки
1
и0
разделенных символами новой строки или каких - либо очевидных эквивалент позднее двух принимаются. Внутри и снаружи должны быть разные истинностные ценности, но не имеет значения, что есть что.Цикл определяется как группа символов, так что все они являются одним и тем же символом ( например
@
) и чтобы каждый символ в цикле имел путь к исходному символу (символ с координатой ввода), который проходит только через этот же символ. персонаж (геометрия такси без диагоналей ).Внутри находится вся петля и места, которые не могут достичь края диаграммы без пересечения петли.
Снаружи везде
Это код-гольф
[['.', '.'],['.', '@']]
вместо строки с символами новой строки?Ответы:
MATLAB,
163 159 14678 байтСпасибо @ rahnema1 за -66 байт !!!
Теперь это работает. Попробуйте онлайн! НО потребовались некоторые корректировки, поскольку MATLAB и Octave не полностью совместимы.
объяснение
Сначала мы создаем двоичное изображение, которое просто маскирует все символы, которые равны начальному символу. Затем мы определяем связанный компонент, в котором находится начальный символ.
После этого мы создаем изображение этого подключенного компонента и применяем заполнение всех «дырок» в изображении.
источник
MATLAB: 67 байт
Пара предостережений:
A
Предполагается, что это массив символов.output = f(A,2,8)
).bwlabel
иimfill
являются частью панели инструментов обработки изображений.источник