Sfida
Data una forma d'arte ASCII, devi scoprire se la forma è un esagono regolare o meno.
esagoni
Un esagono regolare viene definito usando due regole:
- Ha sei lati
- Ogni lato ha un uguale numero di personaggi
Ad esempio, la seguente forma è regolare ma non ha sei lati e quindi non è un esagono regolare :
B a a h
s a i d
y o u r
g a o t
Allo stesso modo, la seguente forma ha sei lati ma ha lati di lunghezze diverse e quindi non è un esagono regolare :
* *
* * *
* * * *
* * *
* *
Tuttavia, la forma seguente ha sei lati e tutti i lati hanno lo stesso numero di caratteri, quindi è un esagono regolare:
T h e
h e x a
g o n s a
r e c o
m i n
Regole
L'output dovrebbe essere un valore di verità o falsità (verità se la forma è un esagono regolare, falsa in caso contrario).
Le forme conterranno sempre e solo caratteri ASCII stampabili.
Il bordo della forma non conterrà mai spazi. In tal caso, puoi restituire falsey.
Possono esserci quantità arbitrarie di spazi bianchi prima e / o dopo la forma.
Tutti gli angoli nella forma potrebbero non essere uguali, ad esempio, la seguente forma è un input valido:
. . .
. . .
. . . . .
. . . .
. . .
Restituirà un valore di falso.
Tutti gli input di forma saranno su una griglia separata da spazio. L'input esagonale sarà su una griglia sfalsata (ogni linea è sfalsata dalla successiva).
Esempi
Truthy
Le seguenti forme dovrebbero restituire valori veritieri:
# _
+ + +
9 :
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
t h i s
i s
a h
e x
a g
o n
! ! ! !
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Falsey
Quanto segue dovrebbe restituire valori falsi
r e c t a
n g l e s
h e l l o
w o r l d s
t h i s i s b
e t a d e c
a y n o w
*
* *
* * *
.....
.......
.........
.......
.....
Questa forma non è su una griglia separata da spazio e non è sfalsata.
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Per i caratteri a carattere singolo, il tuo programma può generare verità o falsa:
&
vincente
Vince il programma più breve in byte.
5 6 7\n8 9 0 1\n2 3 4 5 6\n7 8 9 0\n1 2 3
e uno con uno spazio aggiuntivo che porta per una delle righe: ss5 6 7\nss8 9 0 1\n2 3 4 5 6\ns7 8 9 0\nss1 2 3
(gli spazi iniziali vengono sostituiti con s
per renderlo un po 'più chiaro in questa forma non formattata) . Tutti e 10 i tuoi casi di test stanno validando correttamente con il mio codice attualmente, ma questi due casi fallirebbero con l'approccio che ho usato.