Prenez une région 2D de l'espace divisée en éléments carrés d'unité alignés sur l'axe avec leurs centres alignés à intervalles entiers. Une arête est dite interne si elle est partagée par deux éléments, sinon c'est une arête externe.
Votre objectif est de trouver le nombre minimum d'éléments voisins qui doivent être traversés pour atteindre un bord extérieur à partir du centre de chaque élément, connu sous le nom de traversal distance
, ou distance
pour faire court. Vous ne pouvez traverser qu'une arête (c.-à-d. Pas de coupure d'angle / mouvement diagonal). Notez que les "éléments extérieurs" (éléments qui ont au moins un bord extérieur) sont considérés comme devant traverser 0
des éléments voisins pour atteindre un bord extérieur.
Contribution
L'entrée est une liste de coordonnées de paires entières non négatives indiquant le (x, y) du centre de tous les éléments. On suppose qu'il n'y a pas d'éléments qui se chevauchent (c'est-à-dire qu'une paire x / y identifie de manière unique un élément). Vous ne pouvez rien supposer de l'ordre d'entrée des éléments.
Vous êtes invités à transformer l'origine de l'entrée à n'importe quel endroit (par exemple 0,0 ou 1,1, etc.).
Vous pouvez supposer que tous les éléments d'entrée sont connectés, ou en d'autres termes, il est possible de voyager d'un élément à un autre en utilisant les règles ci-dessus. Notez que cela ne signifie pas que la région 2D est simplement connectée; il peut y avoir des trous à l'intérieur.
Exemple: ce qui suit est une entrée non valide.
0,0
2,0
la vérification des erreurs n'est pas requise.
L'entrée peut provenir de n'importe quelle source (fichier, stdio, paramètre de fonction, etc.)
Production
La sortie doit être une liste de coordonnées identifiant chaque élément et la distance entière correspondante parcourue pour arriver à un bord. La sortie peut être dans n'importe quel ordre d'élément souhaité (par exemple, vous n'avez pas besoin que les éléments de sortie soient dans le même ordre que les entrées).
La sortie peut être vers n'importe quelle source (fichier, stdio, valeur de retour de fonction, etc.)
Toute sortie qui correspond à la coordonnée de l'élément avec sa distance extérieure est très bien, par exemple, tout cela est bien:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Exemples
Les entrées d'exemple de texte sont sous la forme x,y
, avec un élément par ligne; vous êtes invités à remodeler cela dans un format d'entrée pratique (voir les règles de format d'entrée).
Les sorties d'exemple de texte sont au format x,y: distance
, avec un élément par ligne; encore une fois, vous êtes invités à remodeler cela dans un format de sortie pratique (voir les règles de format de sortie).
Les figures graphiques ont la limite inférieure gauche comme (0,0), et les nombres à l'intérieur représentent la distance minimale attendue parcourue pour atteindre un bord extérieur. Notez que ces chiffres sont uniquement à des fins de démonstration uniquement; votre programme n'a pas besoin de les afficher.
Exemple 1
contribution:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Production:
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
représentation graphique:
Exemple 2
contribution:
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
production:
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
représentation graphique:
Exemple 3
contribution:
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
production:
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
représentation graphique:
Notation
C'est le golf de code. Le code le plus court en octets gagne. Des échappatoires standard s'appliquent. Toutes les intégrations autres que celles spécifiquement conçues pour résoudre ce problème sont autorisées.