Défi
Étant donné une matrice d'entiers positifs, déterminez s'il existe des «anneaux» de montagnes. La définition formelle de ce défi est: étant donné une matrice d'entiers positifs, y a-t-il un entier positif n
pour lequel il y a un anneau fermé de cellules dans la matrice qui est strictement supérieur à n
tel que toutes les cellules enfermées dans l'anneau soient inférieures ou égales à n
.
Prenons un exemple véridique:
3 4 5 3
3 1 2 3
4 2 1 3
4 3 6 5
Si nous nous mettons n
à 2
:
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
Comme nous pouvons le voir clairement, les 1
s le long du bord forment un anneau.
Nous définissons un anneau comme une collection ordonnée de cellules où les cellules adjacentes de la collection sont également adjacentes (bord ou coin) sur la grille. De plus, l'anneau doit contenir au moins 1 cellule à l'intérieur de celui-ci; c'est-à-dire que toute tentative de remplissage BFS en bordure seule de la matrice entière à l'exclusion des cellules de la collection et de ne jamais traverser une cellule de la collection doit manquer au moins une cellule.
Cas de test authentiques
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
Cas de test de falsification
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
Règles
- Les échappatoires standard s'appliquent
- Il s'agit de code-golf , donc la réponse la plus courte en octets dans chaque langue est déclarée gagnante de sa langue. Aucune réponse ne sera acceptée.
- L'entrée peut être prise sous n'importe quelle forme raisonnable pour une matrice d'entiers positifs
- La sortie peut être donnée sous la forme de deux valeurs raisonnables, cohérentes et distinctes indiquant [vrai] ou [faux].
la source
n
est le troisième cas de test "véridique" réellement véridique? [1,2] ?Réponses:
Gelée , 38 octets
Essayez-le en ligne!
Affiche 1 si la matrice contient des chaînes de montagnes, 0 sinon.
Comment ça marche (un peu dépassé)
Je pourrais peut-être raccourcir un peu le code, donc cette section subira probablement une lourde édition.
Le lien d'aide
Par exemple, étant donné une matrice sous la forme:
Cela renvoie les tableaux (l'ordre n'a pas d'importance):
Pour faire court, cela génère les lignes et colonnes les plus externes, avec les coins supprimés.
Le maillon principal
la source
Nettoyer ,
224... 161 octetsEssayez-le en ligne!
Définit la fonction
? :: [[Int]] -> Int
, renvoyant0
s'il y a un anneau, et1
sinon.Fonctionne en transformant la matrice en
2
s pour les montagnes et0
s pour les vallées, puis inonde avec1
s jusqu'à ce que le résultat cesse de changer. S'il0
en existe encore pour une hauteur de montagne, le produit sera0
.la source
JavaScript (Node.js) , 302 octets
Essayez-le en ligne!
Vérifie si l'écoulement d'un point ne peut pas atteindre la frontière, tandis que la frontière peut marcher jusqu'à chaque point
la source