Un ensemble de points satisfaits sur le plan arborescent est un ensemble 2D de points tels que, pour tout rectangle aligné sur l'axe qui peut être formé en utilisant deux points de l'ensemble comme coins opposés, ce rectangle contient ou touche au moins un autre point. Voici une définition équivalente de Wikipedia:
Un ensemble de points est dit satisfait sur le plan de l'arborescence si la propriété suivante est vérifiée: pour toute paire de points qui ne se trouvent pas tous les deux sur la même ligne horizontale ou verticale, il existe un troisième point qui se trouve dans le rectangle couvert par les deux premiers points ( soit à l'intérieur soit sur la limite).
L'image suivante illustre la formation des rectangles. Cet ensemble de points n'est PAS satisfait sur le plan arborescent car ce rectangle doit contenir au moins un point supplémentaire.
Dans l'art ASCII, cet ensemble de points peut être représenté comme:
......
....O.
......
.O....
......
Une légère modification peut rendre cette arborescence satisfaite:
......
....O.
......
.O..O.
......
Ci-dessus, vous pouvez voir que tous les rectangles (dont il n'y en a qu'un) contiennent au moins trois points.
Voici un autre exemple d'un ensemble de points plus complexe qui est satisfait sur le plan arborescent:
Pour tout rectangle pouvant être dessiné sur deux points, ce rectangle contient au moins un autre point.
Le défi
Étant donné une grille rectangulaire de points (avec laquelle je représente O
) et un espace vide (avec lequel je représente .
), affichez une valeur véridique si elle est satisfaite sur le plan arborescent, ou une valeur de falsey si ce n'est pas le cas. C'est du code-golf.
Règles supplémentaires:
- Vous pouvez choisir d'avoir les caractères
O
et.
permutée avec une autre paire de caractères ASCII imprimables. Spécifiez simplement le mappage de caractères utilisé par votre programme. - La grille sera toujours rectangulaire. Une nouvelle ligne de fin est autorisée.
Plus d'exemples
Arboriquement satisfait:
.OOO.
OO...
.O.OO
.O..O
....O
..O..
OOOO.
...O.
.O.O.
...OO
O.O.
..O.
OOOO
.O.O
OO..
...
...
...
...
..O
...
O.....
O.O..O
.....O
OOO.OO
Non satisfaits sur le plan de l’arborescence:
..O..
O....
...O.
.O...
....O
..O..
O.OO.
...O.
.O.O.
...OO
O.....
..O...
.....O
Réponses:
Escargots , 29
30 39octetsCela fonctionne en traçant les 2 côtés du rectangle, puis en vérifiant s'il y a un carré contenant un O de telle sorte que le déplacement en ligne droite du carré dans 2 des directions cardinales entraînerait de frapper un côté du rectangle.
Imprime le maximum de 1 et la zone de la grille si l'entrée est "satisfaite sur le plan de l'arborescence"; sinon 0.
la source
Oracle SQL 11.2,
364344 octets: g est la grille sous forme de chaîne
: w est la largeur de la grille
Renvoie aucune ligne comme véridique, renvoie les rectangles qui ne correspondent pas aux critères comme fausses
Non golfé
La vue v calcule les coordonnées de chaque point O.
La première partie du moins renvoie tous les rectangles, la clause where garantit qu'un point ne peut pas être apparié avec lui-même.
La deuxième partie recherche un troisième point dans chaque rectangle. Ce point doit avoir une coordonnée, x ou y, égale à cette coordonnée pour l'un des deux points définissant le rectangle. L'autre coordonnée de ce troisième point doit être dans la plage délimitée par cette coordonnée pour chacun des points définissant le rectangle.
La dernière partie de la clause where garantit que le troisième point n'est pas l'un des deux points définissant le rectangle.
Si tous les rectangles ont au moins un troisième point, la première partie du moins est égale à la deuxième partie et la requête ne renvoie rien.
la source
MATL , 38 octets
Cela utilise un tableau de caractères 2D en entrée, avec des lignes séparées par
;
. Donc, le premier exemple estLes autres cas de test dans ce format sont les suivants.
Arboriquement satisfait:
Non satisfaits sur le plan de l’arborescence:
Essayez-le en ligne! Vous pouvez également vérifier tous les cas de test à la fois .
Explication
Le code obtient d'abord les coordonnées des caractères
O
dans l'entrée. Il utilise ensuite deux boucles imbriquées. La boucle externe sélectionne chaque point P (2-tuple de ses coordonnées), compare avec tous les points et conserve les points qui diffèrent de P dans les deux coordonnées. Ce sont les points qui peuvent former un rectangle avec P. Appelez-les ensemble R.La boucle intérieure sélectionne chaque point T de R et vérifie si le rectangle défini par P et T comprend au moins 3 points. Pour ce faire, il soustrait P de tous les points; c'est-à-dire déplace l'origine des coordonnées vers P. Un point est dans le rectangle si chacune de ses coordonnées divisée par la coordonnée correspondante de T est dans l'intervalle fermé [0, 1].
la source
PHP,
1123 octets,851 octets, 657 octets(php débutant)
explication (code commenté):
la source
C, 289 octets
Requiert un retour à la ligne, ce qui est autorisé (sans le retour à la ligne, le code aurait deux octets de plus). Sorties 0 (non satisfait à l'arborescence) ou 1 (satisfait à l'arborescence).
la source