Кривая - это набор точек на квадратной сетке, так что каждая точка имеет ровно двух соседей в окрестности с четырьмя соседями, и точки образуют один связанный компонент. То есть граф, индуцированный точками на графе сетки, изоморфен одному циклу. «Индуцированный» означает, что две точки не могут касаться ввода, не будучи соседями в цикле.
Антипод вершины V в графе - это вершина, наиболее удаленная от V. Антипод всегда уникален в цикле четной длины (и каждый цикл в графе сетки имеет четную длину). Расстояние должно измеряться как индуцированное самим циклом без учета базовой квадратной сетки.
Ваш вход должен быть изображением кривой. Кривая будет выделена с помощью последовательности символов знака числа ( #
) на фоне из пробелов ( ). Одна из точек на кривой будет помечена
P
символом («подъём»). Ваш выход должен быть таким же, как вход, за исключением того, что одна точка кривой должна быть заменена на A
(«антипод»).
Вы можете предположить, что символы будут дополнены прямоугольной формой. Вы можете предположить, что первая и последняя строка и столбец ввода будут полностью состоять из пробелов (ввод дополнен фоном). В качестве альтернативы вы можете предположить, что первая и последняя строка и столбец будут содержать точку кривой (вход имеет минимальный отступ).
Вы можете вводить и выводить эту сетку в виде отдельной строки, разделенной новой строкой, в виде массива строк или в виде двумерного массива отдельных символов. Этот выбор должен быть одинаковым для входа и выхода. Если ваш язык позволяет это, вы можете выводить, изменяя ввод вместо того, чтобы возвращать измененную строку или массив.
Возможные входы:
P# P## #P# ##### #####P# ####### #####P######### #####P#########
## # # # # # # # # # # # # # #
### ### ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # # # # # # #
# P# ### ### # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
# # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### ###############
Соответствующие выводы:
P# P## #P# #A### #####P# #A##### #####P######### #####P#########
#A # # # # # # # # # # # # # #
##A #A# ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # A # # # # #
# P# ### ##A # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
A # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### #########A#####
Вершинные расстояния от подевов (по модулю 10) (не выводите их):
P1 P12 1P1 5A543 54321P1 9A98765 54321P123456789 54321P123456789
1A 1 3 2 2 4 2 6 2 8 4 6 0 6 0
23A 3A3 32 01 7 109 3 7 109 3 7 901 789 543 1 7 1
321 1 9 543 8 2 8 4 6 2 8 2 8 8 2 6 A 6 2 2 8 2
4 P1 234 89A 0 876 2 9 3 765 543 7 1 9 7 345 987 1 3 9 3
56 2 1 567 9 9 1 0 4 6 0 0 6 0 4 0 4
A 3 P 8 87654 P 1 56789012345 9 1 54321 56789 5 1 5
654 1234567 321 2 8 2 0 4 6 2 6
345678901234567 3456789 3210987 345678901A10987