Você é fazendeiro e seu rebanho de ovelhas escapou! Ah não!
Junte essas ovelhas construindo cercas para contê-las. Como agricultor com orçamento limitado, você deseja usar a menor quantidade possível de cercas. Felizmente para você, elas não são as ovelhas mais inteligentes do mundo e não se incomodam em se mover depois de terem escapado.
Tarefa
Dada uma lista de coordenadas, produza a menor quantidade de segmentos de cerca necessária para conter as ovelhas.
Regras
- Ovelhas são contidas se não puderem se afastar (sem buracos na cerca).
- Você não precisa conter todas as ovelhas em um bloco de cerca - pode haver várias áreas cercadas, independentes umas das outras.
- Os segmentos de vedação são orientados em direções cardinais.
- Cada tupla de coordenadas representa uma única ovelha.
- A entrada deve ser pares inteiros positivos,
x>0&y>0, mas pode ser formatada adequadamente para o seu idioma.- ou seja:
{{1,1},{2,1},{3,7}, .. }ou[1,2],[2,1],[3,7], ..
- ou seja:
- Espaços vazios dentro de uma área cercada são aceitáveis.
- Você não pode assumir que as coordenadas são inseridas em qualquer ordem específica.
Por exemplo, uma única ovelha exige que os 4segmentos da cerca estejam totalmente contidos.
Casos de teste
[1,1]
4
[1,1],[1,2],[2,2]
8
[2,1],[3,1],[2,3],[1,1],[1,3],[3,2],[1,2],[3,3]
12
[1,1],[1,2],[2,2],[3,7],[4,9],[4,10],[4,11],[5,10]
22
[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]
36
[1,1],[2,2],[3,3],[4,4],[6,6],[7,7],[8,8],[9,9]
32
[2,1],[8,3],[8,4]
10
Notas
- Você pode assumir que as coordenadas de entrada são válidas.
- Teoricamente, seu algoritmo deve funcionar para qualquer coordenada inteira razoavelmente grande (até o valor máximo suportado do seu idioma).
- As respostas completas do programa ou da função estão corretas.
Isso é código-golfe , então a resposta mais curta em bytes vence!
x,yentrada deve estar junto. Bom pensamento, porém, eu não tinha pensado nisso.
{1,2,3,4},{5,6,7,8} -> {1,5},{2,6},{3,7},{4,8}