Desafio
Dada uma matriz de números inteiros positivos, determine se existem "anéis" de montanhas. A definição formal para esse desafio é: dada uma matriz de números inteiros positivos, existe algum número inteiro positivo n
para o qual exista um anel fechado de células na matriz que seja estritamente maior do que n
tal que todas as células fechadas no anel sejam menores ou iguais para n
.
Vamos dar um exemplo verdadeiro:
3 4 5 3
3 1 2 3
4 2 1 3
4 3 6 5
Se definirmos n
para 2
:
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
Como podemos ver claramente, os 1
s ao longo da borda formam um anel.
Definimos um anel como uma coleção ordenada de células onde as células adjacentes na coleção também são adjacentes (aresta ou canto) na grade. Além disso, o anel deve conter pelo menos 1 célula dentro dele; isto é, a tentativa de preencher somente a borda do BFS em toda a matriz, excluindo as células da coleção e nunca atravessando uma célula na coleção, deve perder pelo menos uma célula.
Casos de teste de verdade
4 7 6 5 8 -> 1 1 1 1 1
6 2 3 1 5 -> 1 0 0 0 1 (n = 3)
6 3 2 1 5 -> 1 0 0 0 1
7 5 7 8 6 -> 1 1 1 1 1
1 3 2 3 2
1 6 5 7 2
1 7 3 7 4
1 6 8 4 6
1 3 1
3 1 3
1 3 1
7 5 8 7 5 7 8 -> if you have n = 4, you get an interesting ridge shape around the top and right of the grid
8 4 4 2 4 2 7
6 1 8 8 7 2 7
5 4 7 2 5 3 5
5 6 5 1 6 4 5
3 2 3 2 7 4 8
4 4 6 7 7 2 5
3 2 8 2 2 2 8
2 4 8 8 6 8 8
5 7 6 8 6 8 7 -> there is an island in the outer ring (n = 4), but the island is a ring
5 3 2 4 2 4 7
6 3 7 8 5 1 5
8 2 5 2 8 2 7
8 3 8 8 8 4 7
6 1 4 1 1 2 8
5 5 5 5 7 8 7
150 170 150
170 160 170
150 170 150
Casos de teste de falsidade
1 2 3 2 1 -> this is just a single mountain if you picture it graphcially
2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1
4 5 4 3 2 -> this is an off-centered mountain
5 6 5 4 3
4 5 4 3 2
3 4 3 2 1
1 1 1 1 1 -> this is four mountains, but they don't join together to form a ring
1 2 1 2 1
1 1 1 1 1
1 2 1 2 1
1 1 1 1 1
3 3 3 3 3 -> there is a ring formed by the `3`s, but the `4` in the middle is taller so it doesn't qualify as a mountain ring
3 1 1 1 3
3 1 4 1 3
3 1 1 1 3
3 3 3 3 3
3 4 4 4 3
4 4 3 4 4
3 3 3 3 4
4 4 3 4 4
3 4 4 4 3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
22 23 24 25 26
Regras
- As brechas padrão se aplicam
- Isso é código-golfe , então a resposta mais curta em bytes em cada idioma é declarada a vencedora do seu idioma. Nenhuma resposta será aceita.
- A entrada pode ser tomada como qualquer forma razoável para uma matriz de números inteiros positivos
- A saída pode ser dada como dois valores razoáveis, consistentes e distintos, indicando [verdadeiro] ou [falso].
n
é realmente o terceiro caso de teste "verdade"? [1,2] ?