Un set di punti soddisfatto arboralmente è un set di punti 2D tale che, per qualsiasi rettangolo allineato all'asse che può essere formato usando due punti nel set come angoli opposti, quel rettangolo contiene o tocca almeno un altro punto. Ecco una definizione equivalente da Wikipedia:
Si dice che un insieme di punti sia soddisfatto arboralmente se vale la seguente proprietà: per qualsiasi coppia di punti che non si trovano entrambi sulla stessa linea orizzontale o verticale, esiste un terzo punto che si trova nel rettangolo attraversato dai primi due punti ( all'interno o al limite).
L'immagine seguente mostra come si formano i rettangoli. Questo set di punti NON è soddisfatto arboralmente perché questo rettangolo deve contenere almeno un altro punto.
Nell'arte ASCII, questo set di punti può essere rappresentato come:
......
....O.
......
.O....
......
Una leggera modifica può rendere questo arboralmente soddisfatto:
......
....O.
......
.O..O.
......
Sopra, puoi vedere che tutti i rettangoli (di cui ce n'è solo uno) contengono almeno tre punti.
Ecco un altro esempio di un insieme di punti più complesso che è soddisfatto arboralmente:
Per qualsiasi rettangolo che può essere disegnato su due punti, quel rettangolo contiene almeno un altro punto.
La sfida
Data una griglia rettangolare di punti (con cui rappresento O
) e uno spazio vuoto (con cui rappresento .
), genera un valore di verità se è soddisfatto arboralmente o un valore di falsa se non lo è. Questo è code-golf.
Regole aggiuntive:
- Puoi scegliere di avere i personaggi
O
e.
scambiarli con qualsiasi altra coppia di caratteri ASCII stampabili. Basta specificare quale mappatura dei caratteri viene utilizzata dal programma. - La griglia sarà sempre rettangolare. È consentita una nuova riga finale.
Altri esempi
Arboralmente soddisfatto:
.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 soddisfatto dell'arboricamente:
..O..
O....
...O.
.O...
....O
..O..
O.OO.
...O.
.O.O.
...OO
O.....
..O...
.....O