Le griglie esagonali sono diventate recentemente una svolta abbastanza popolare per le sfide relative ai dati bidimensionali. Tuttavia, sembra che finora le altrettanto interessanti griglie triangolari siano state in gran parte trascurate. Vorrei correggerlo con una sfida piuttosto semplice.
Innanzitutto, come possiamo rappresentare una griglia triangolare? Considera il seguente esempio (ignora il diagramma giusto per ora):
Le celle cadono ordinatamente su una griglia regolare (la differenza rispetto a una griglia normale è solo le celle considerate adiacenti):
1234567
89abcde
fghijkl
mnopqrs
Ora, come mostra il diagramma a destra, una griglia triangolare ha tre assi principali: uno orizzontale e due diagonali.
Evidenziando questi nella griglia ASCII:
AVAVAVA
VAabcAV
fVAiAVl
mnVAVrs
La sfida
Ti viene data una stringa rettangolare che rappresenta una griglia triangolare (dove l'angolo in alto a sinistra è un triangolo rivolto verso l'alto). La maggior parte delle celle sarà .
, ma esattamente due celle saranno #
, ad esempio:
....#
.#...
.....
Determina se i due #
sono allineati lungo uno dei tre assi della griglia (ovvero se si trovano su una singola riga in una delle tre direzioni evidenziate sopra). Per questo esempio, la risposta è "no".
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).
L'input può essere una singola stringa delimitata da avanzamenti di riga o altri caratteri utili o un elenco di stringhe. È possibile utilizzare due caratteri ASCII stampabili (coerenti) al posto di .
e #
.
L'output dovrebbe essere un valore veritiero se le celle evidenziate sono allineate e un valore errato in caso contrario.
Si applicano le regole standard del code-golf .
Casi test
Griglie sincere:
.#..#.
#
#
...........
...#.......
...........
...........
...........
.......#...
...........
...........
.......#...
...........
...........
...........
...#.......
...........
.#.........
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.......#...
.........#.
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
...#.......
...........
.#.....#...
...........
...........
...........
Griglie Falsy:
#.....
.....#
.....#
#.....
...#.......
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.........#.
.......#...
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
.#.........