Кривая - это набор точек на квадратной сетке, так что каждая точка имеет ровно двух соседей в окрестности с четырьмя соседями, и точки образуют один связанный компонент. То есть граф, индуцированный точками на графе сетки, изоморфен одному циклу. «Индуцированный» означает, что две точки не могут касаться ввода, не будучи соседями в цикле.
Антипод вершины 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
