Une courbe est un ensemble de points sur une grille carrée de telle sorte que chaque point a exactement deux voisins dans le voisinage à quatre voisins et les points forment une seule composante connectée. C'est-à-dire que le graphique induit par les points sur un graphique en grille est isomorphe à un seul cycle. "Induit" signifie que deux points ne peuvent pas se toucher dans l'entrée sans être voisins dans le cycle.
Un antipode d'un sommet V dans un graphique est un sommet le plus éloigné de V. L'antipode est toujours unique sur un cycle de longueur paire (et chaque cycle sur un graphique en grille est de longueur paire). La distance doit être mesurée comme induite par le cycle lui-même sans respecter la grille carrée sous-jacente.
Votre entrée doit être une image d'une courbe. La courbe sera délimitée par une séquence de caractères de signe numérique ( #
) sur un arrière-plan sans espace ( ). Un des points de la courbe sera marqué du
P
caractère ("pode"). Votre sortie doit être la même que l'entrée sauf un point de courbe doit être remplacé par A
("antipode").
Vous pouvez supposer que les caractères seront rembourrés dans une forme rectangulaire. Vous pouvez supposer que la première et la dernière ligne et colonne d'entrée seront entièrement composées d'espaces (l'entrée est remplie d'arrière-plan). Vous pouvez également supposer que la première et la dernière ligne et colonne contiendront chacune un point de courbe (l'entrée a un remplissage minimal).
Vous pouvez entrer et sortir cette grille sous la forme d'une chaîne séparée par des sauts de ligne, sous forme de tableau de lignes ou sous forme de tableau 2D de caractères individuels. Ce choix doit être le même pour l'entrée et la sortie. Si votre langue le permet, vous pouvez produire en modifiant l'entrée en place au lieu de renvoyer la chaîne ou le tableau modifié.
Entrées possibles:
P# P## #P# ##### #####P# ####### #####P######### #####P#########
## # # # # # # # # # # # # # #
### ### ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # # # # # # #
# P# ### ### # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
# # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### ###############
Sorties correspondantes:
P# P## #P# #A### #####P# #A##### #####P######### #####P#########
#A # # # # # # # # # # # # # #
##A #A# ## ## # ### # # ### # # ### ### ### # # #
### # # ### # # # # # # # # # # # # A # # # # #
# P# ### ##A # ### # # # ### ### # # # # ### ### # # # #
## # # ### # # # # # # # # # # # # #
A # P # ##### P # ########### # # ##### ##### # # #
### ####### ### # # # # # # # #
############### ####### ####### #########A#####
Distances des sommets par rapport aux podes (modulo 10) (ne pas les afficher):
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