Возьмите двухмерную область пространства, разделенную на выровненные по оси единичные квадратные элементы с центрами, выровненными через целые интервалы. Ребро называется внутренним, если оно совместно используется двумя элементами, в противном случае это внешнее ребро.
Ваша цель - найти минимальное количество соседних элементов, которые необходимо пройти, чтобы достичь внешнего ребра, начиная с центра каждого элемента, известного как traversal distance, или distanceдля краткости. Вы можете проходить только через край (то есть без углового резания / диагонального перемещения). Обратите внимание, что «внешние элементы» (элементы, которые имеют по крайней мере один внешний край), как полагают, должны пройти через 0соседние элементы, чтобы достичь внешнего края.
вход
Входные данные представляют собой список неотрицательных целочисленных парных координат, обозначающих (x, y) центра всех элементов. Предполагается, что нет перекрывающихся элементов (т. Е. Пара x / y однозначно идентифицирует элемент). Вы не можете предполагать что-либо о порядке ввода элементов.
Вы можете преобразовать источник ввода в любое место (например, 0,0 или 1,1 и т. Д.).
Вы можете предположить, что все входные элементы связаны, или, другими словами, возможно перейти от любого одного элемента к любому другому элементу, используя правила выше. Обратите внимание, что это не означает, что 2D-область просто связана; в нем могут быть отверстия.
Пример: ниже приведен неверный ввод.
0,0
2,0
проверка ошибок не требуется.
Ввод может быть из любого источника (файл, stdio, параметр функции и т. Д.)
Выход
Выходными данными должен быть список координат, идентифицирующих каждый элемент, и соответствующее целочисленное расстояние, пройденное для достижения края. Вывод может быть в любом порядке элементов (например, вам не нужно выводить элементы в том же порядке, что и входные данные).
Вывод может быть любым источником (файл, stdio, возвращаемое значение функции и т. Д.)
Любые выходные данные, которые соответствуют координате элемента с его внешним расстоянием, хороши, например, все это хорошо:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Примеры
Текстовые примеры ввода находятся в форме x,y, с одним элементом на строку; Вы можете изменить это в удобный формат ввода (см. правила формата ввода).
Текстовые примеры выводятся в формате x,y: distanceс одним элементом на строку; опять же, вы можете изменить это в удобный формат вывода (см. правила формата вывода).
Графические фигуры имеют нижнюю левую границу как (0,0), а числа внутри представляют ожидаемое минимальное расстояние, пройденное для достижения внешнего края. Обратите внимание, что эти цифры предназначены только для демонстрационных целей; ваша программа не должна выводить их.
Пример 1
вход:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Выход:
1,0: 0
3,0: 0
0,1: 0
1,2: 0
1,1: 1
2,1: 0
4,3: 0
3,1: 0
2,2: 1
2,3: 0
3,2: 0
3,3: 0
графическое представление:
Пример 2
вход:
4,0
1,1
3,1
4,1
5,1
6,1
0,2
1,2
2,2
3,2
4,2
5,2
6,2
7,2
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
2,4
3,4
4,4
5,4
6,4
3,5
4,5
5,5
выход:
4,0: 0
1,1: 0
3,1: 0
4,1: 1
5,1: 0
6,1: 0
0,2: 0
1,2: 1
2,2: 0
3,2: 1
4,2: 2
5,2: 1
6,2: 1
7,2: 0
1,3: 0
2,3: 1
3,3: 2
4,3: 2
5,3: 2
6,3: 1
7,3: 0
8,3: 0
2,4: 0
3,4: 1
4,4: 1
5,4: 1
6,4: 0
3,5: 0
4,5: 0
5,5: 0
графическое представление:
Пример 3
вход:
4,0
4,1
1,2
3,2
4,2
5,2
6,2
8,2
0,3
1,3
2,3
3,3
4,3
5,3
6,3
7,3
8,3
9,3
1,4
2,4
3,4
4,4
5,4
6,4
7,4
8,4
9,4
2,5
3,5
4,5
5,5
6,5
9,5
10,5
11,5
3,6
4,6
5,6
9,6
10,6
11,6
6,7
7,7
8,7
9,7
10,7
11,7
выход:
4,0: 0
4,1: 0
1,2: 0
3,2: 0
4,2: 1
5,2: 0
6,2: 0
8,2: 0
0,3: 0
1,3: 1
2,3: 0
3,3: 1
4,3: 2
5,3: 1
6,3: 1
7,3: 0
8,3: 1
9,3: 0
1,4: 0
2,4: 1
3,4: 2
4,4: 2
5,4: 2
6,4: 1
7,4: 0
8,4: 0
9,4: 0
2,5: 0
3,5: 1
4,5: 1
5,5: 1
6,5: 0
9,5: 0
10,5: 0
11,5: 0
3,6: 0
4,6: 0
5,6: 0
9,6: 0
10,6: 1
11,6: 0
6,7: 0
7,7: 0
8,7: 0
9,7: 0
10,7: 0
11,7: 0
графическое представление:
счет
Это код гольф. Самый короткий код в байтах побеждает. Применяются стандартные лазейки. Разрешены любые встроенные модули, кроме специально разработанных для решения этой проблемы.



