Uma curva é um conjunto de pontos em uma grade quadrada, de modo que cada ponto tenha exatamente dois vizinhos na vizinhança de quatro vizinhos e os pontos formem um único componente conectado. Ou seja, o gráfico induzido pelos pontos em um gráfico de grade é isomórfico para um único ciclo. "Induzido" significa que dois pontos não podem tocar na entrada sem serem vizinhos no ciclo.
Um antípode de um vértice V em um gráfico é um vértice mais distante de V. O antípode é sempre único em um ciclo de comprimento par (e todos os ciclos em um gráfico de grade são par). A distância deve ser medida como induzida pelo próprio ciclo, sem respeitar a grade quadrada subjacente.
Sua entrada deve ser uma imagem de uma curva. A curva será marcada com uma sequência de caracteres de sinal numérico ( #
) em um fundo sem caracteres de espaço ( ). Um dos pontos da curva será marcado com o
P
caractere ("pode"). Sua saída deve ser a mesma que a entrada, exceto que um ponto da curva deve ser substituído por A
("antipode").
Você pode assumir que os caracteres serão preenchidos em uma forma retangular. Você pode assumir que a primeira e a última linha e coluna da entrada serão compostas inteiramente de espaços (a entrada é preenchida com fundo). Como alternativa, você pode assumir que a primeira e a última linha e coluna conterão cada um ponto de curva (a entrada possui preenchimento mínimo).
Você pode inserir e gerar esta grade como uma única sequência separada por nova linha, como uma matriz de linhas ou como uma matriz 2D de caracteres individuais. Essa escolha deve ser a mesma para entrada e saída. Se o seu idioma permitir isso, você poderá produzir modificando a entrada no lugar em vez de retornar a string ou matriz modificada.
Entradas possíveis:
P# P## #P# ##### #####P# ####### #####P######### #####P#########
## # # # # # # # # # # # # # #
### ### ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # # # # # # #
# P# ### ### # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
# # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### ###############
Saídas correspondentes:
P# P## #P# #A### #####P# #A##### #####P######### #####P#########
#A # # # # # # # # # # # # # #
##A #A# ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # A # # # # #
# P# ### ##A # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
A # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### #########A#####
Distâncias de vértice do podes (módulo 10) (não as produza):
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