Tome una región 2D del espacio dividida en elementos cuadrados unitarios alineados con ejes con sus centros alineados a intervalos enteros. Se dice que un borde es interno si es compartido por dos elementos, de lo contrario es un borde externo.
Su objetivo es encontrar el número mínimo de elementos vecinos que deben atravesarse para alcanzar un borde exterior comenzando desde el centro de cada elemento, conocido como traversal distance
, o distance
para abreviar. Solo puede atravesar un borde (es decir, sin corte de esquina / movimiento diagonal). Tenga en cuenta que se considera que los "elementos exteriores" (elementos que tienen al menos un borde externo) deben atravesar 0
elementos vecinos para alcanzar un borde exterior.
Entrada
La entrada es una lista de coordenadas de pares enteros no negativos que denotan el (x, y) del centro de todos los elementos. Se supone que no hay elementos superpuestos (es decir, un par x / y identifica de forma exclusiva un elemento). Es posible que no asumir nada sobre el orden de entrada de elemento.
Puede transformar el origen de la entrada en cualquier ubicación (por ejemplo, 0,0 o 1,1, etc.).
Puede suponer que todos los elementos de entrada están conectados, o en otras palabras, es posible viajar de un elemento a otro utilizando las reglas anteriores. Tenga en cuenta que esto no significa que la región 2D simplemente esté conectada; Puede tener agujeros en su interior.
Ejemplo: lo siguiente es una entrada no válida.
0,0
2,0
no se requiere verificación de errores.
La entrada puede ser de cualquier fuente (archivo, stdio, parámetro de función, etc.)
Salida
La salida debe ser una lista de coordenadas que identifiquen cada elemento, y la distancia entera correspondiente recorrida para llegar a un borde. La salida puede estar en cualquier orden de elementos deseado (por ejemplo, no necesita elementos de salida en el mismo orden recibido como entradas).
La salida puede ser a cualquier fuente (archivo, stdio, valor de retorno de función, etc.)
Cualquier salida que coincida con la coordenada del elemento con su distancia exterior está bien, por ejemplo, todos estos están bien:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Ejemplos
Las entradas de ejemplo de texto tienen el formato x,y
, con un elemento por línea; puede reformar esto en un formato de entrada conveniente (consulte las reglas de formato de entrada).
Las salidas de ejemplo de texto están en formato x,y: distance
, con un elemento por línea; de nuevo, puede reconfigurar esto en un formato de salida conveniente (vea las reglas de formato de salida).
Las figuras gráficas tienen el límite inferior izquierdo como (0,0), y los números en el interior representan la distancia mínima esperada recorrida para alcanzar un borde exterior. Tenga en cuenta que estas cifras son solo para fines de demostración; su programa no necesita generar estos.
Ejemplo 1
entrada:
1,0
3,0
0,1
1,2
1,1
2,1
4,3
3,1
2,2
2,3
3,2
3,3
Salida:
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
representación grafica:
Ejemplo 2
entrada:
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
salida:
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
representación grafica:
Ejemplo 3
entrada:
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
salida:
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
representación grafica:
Puntuación
Este es el código de golf. El código más corto en bytes gana. Se aplican lagunas estándar. Se permiten todos los elementos integrados que no sean los diseñados específicamente para resolver este problema.