Un conjunto de puntos satisfactoriamente arboralmente es un conjunto de puntos 2D de tal manera que, para cualquier rectángulo alineado con un eje que se pueda formar utilizando dos puntos en el conjunto como esquinas opuestas, ese rectángulo contiene o toca al menos otro punto. Aquí hay una definición equivalente de Wikipedia:
Se dice que un conjunto de puntos se satisface arboralmente si se cumple la siguiente propiedad: para cualquier par de puntos que no se encuentren en la misma línea horizontal o vertical, existe un tercer punto que se encuentra en el rectángulo atravesado por los dos primeros puntos ( ya sea dentro o en el límite).
La siguiente imagen ilustra cómo se forman los rectángulos. Este conjunto de puntos NO se satisface arboralmente porque este rectángulo necesita contener al menos un punto más.
En el arte ASCII, este conjunto de puntos se puede representar como:
......
....O.
......
.O....
......
Una ligera modificación puede hacer que esto esté satisfecho:
......
....O.
......
.O..O.
......
Arriba, puede ver que todos los rectángulos (de los cuales solo hay uno) contienen al menos tres puntos.
Aquí hay otro ejemplo de un conjunto de puntos más complejo que se satisface arboralmente:
Para cualquier rectángulo que se pueda dibujar que abarque dos puntos, ese rectángulo contiene al menos otro punto.
El reto
Dada una cuadrícula rectangular de puntos (que represento con O
) y un espacio vacío (con el que represento .
), genera un valor verdadero si se satisface arboralmente, o un valor falsey si no lo es. Este es el código de golf.
Reglas adicionales:
- Puede elegir tener los caracteres
O
e.
intercambiarlos con cualquier otro par de caracteres ASCII imprimibles. Simplemente especifique qué mapeo de caracteres usa su programa. - La cuadrícula siempre será rectangular. Se permite una nueva línea final.
Más ejemplos
Arboralmente satisfecho:
.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
No Arboralmente Satisfecho:
..O..
O....
...O.
.O...
....O
..O..
O.OO.
...O.
.O.O.
...OO
O.....
..O...
.....O