Pegue uma região 2D do espaço dividida em elementos quadrados da unidade alinhada ao eixo, com seus centros alinhados em intervalos inteiros. Uma aresta é considerada interna se for compartilhada por dois elementos, caso contrário, é uma aresta externa.
Seu objetivo é encontrar o número mínimo de elementos vizinhos que devem ser atravessados para alcançar uma borda externa a partir do centro de cada elemento, conhecido como traversal distance
, ou distance
abreviado. Você só pode atravessar uma aresta (ou seja, nenhum corte de canto / movimento diagonal). Observe que "elementos externos" (elementos que têm pelo menos uma aresta externa) são considerados necessários para atravessar 0
elementos vizinhos para alcançar uma aresta externa.
Entrada
A entrada é uma lista de coordenadas de pares inteiros não negativos que denotam o (x, y) do centro de todos os elementos. Supõe-se que não há elementos sobrepostos (ou seja, um par x / y identifica exclusivamente um elemento). Você não pode assumir nada sobre a ordem de entrada do elemento.
Você pode transformar a origem da entrada em qualquer local (por exemplo, 0,0 ou 1,1, etc.).
Você pode supor que todos os elementos de entrada estejam conectados ou, em outras palavras, é possível passar de um elemento para outro usando as regras acima. Observe que isso não significa que a região 2D esteja simplesmente conectada; pode ter orifícios dentro dele.
Exemplo: a seguir é uma entrada inválida.
0,0
2,0
verificação de erro não é necessária.
A entrada pode ser de qualquer fonte (arquivo, stdio, parâmetro de função, etc.)
Resultado
A saída deve ser uma lista de coordenadas que identificam cada elemento e a distância inteira correspondente percorrida para chegar a uma aresta. A saída pode estar em qualquer ordem de elemento desejada (por exemplo, você não precisa de elementos de saída na mesma ordem que as entradas).
A saída pode ser para qualquer fonte (arquivo, stdio, valor de retorno da função etc.)
Qualquer saída que corresponda à coordenada do elemento com sua distância externa é boa, por exemplo, todas são boas:
x,y: distance
...
[((x,y), distance), ...]
[(x,y,distance), ...]
Exemplos
As entradas de exemplo de texto estão no formulário x,y
, com um elemento por linha; você pode remodelá-lo em um formato de entrada conveniente (consulte as regras de formato de entrada).
As saídas de exemplo de texto estão no formato x,y: distance
, com um elemento por linha; novamente, você pode remodelá-lo para um formato de saída conveniente (consulte as regras de formato de saída).
As figuras gráficas têm o limite inferior esquerdo como (0,0) e os números dentro representam a distância mínima esperada percorrida para alcançar uma aresta externa. Observe que esses números são apenas para fins de demonstração; seu programa não precisa produzir isso.
Exemplo 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
Resultado:
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
representação gráfica:
Exemplo 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
resultado:
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
representação gráfica:
Exemplo 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
resultado:
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
representação gráfica:
Pontuação
Isso é código de golfe. O código mais curto em bytes vence. Aplicam-se brechas padrão. Quaisquer embutidos que não sejam aqueles projetados especificamente para resolver esse problema são permitidos.