Desafío
Dada una forma de arte ASCII, debe averiguar si la forma es un hexágono regular o no.
Hexágonos
Un hexágono regular se define usando dos reglas:
- Tiene seis lados
- Cada lado tiene el mismo número de caracteres
Por ejemplo, la siguiente forma es regular pero no tiene seis lados y, por lo tanto, no es un hexágono regular :
B a a h
s a i d
y o u r
g a o t
De manera similar, la siguiente forma tiene seis lados pero tiene lados de diferentes longitudes y, por lo tanto, no es un hexágono regular :
* *
* * *
* * * *
* * *
* *
Sin embargo, la siguiente forma tiene seis lados y todos los lados tienen el mismo número de caracteres, por lo que es un hexágono regular:
T h e
h e x a
g o n s a
r e c o
m i n
Reglas
La salida debe ser un valor verdadero o falso (verdadero si la forma es un hexágono regular, falso si no).
Las formas solo contendrán caracteres ASCII imprimibles.
El borde de la forma nunca contendrá espacios. Si lo hace, puede regresar falsey.
Puede haber cantidades arbitrarias de espacios en blanco antes y / o después de la forma.
Todos los ángulos en la forma pueden no ser iguales, por ejemplo, la siguiente forma es una entrada válida:
. . .
. . .
. . . . .
. . . .
. . .
Devolverá un valor falsey.
Todas las entradas de forma estarán en una cuadrícula separada por espacios. La entrada hexagonal estará en una cuadrícula escalonada (cada línea está desplazada de la siguiente).
Ejemplos
Verdad
Las siguientes formas deberían devolver valores verdaderos:
# _
+ + +
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
Lo siguiente debería devolver valores falsey
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
*
* *
* * *
.....
.......
.........
.......
.....
Esta forma no está en una cuadrícula separada por espacios y no está escalonada.
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Para entradas de un solo carácter, su programa puede generar verdadero o falso:
&
Victorioso
El programa más corto en bytes gana.
5 6 7\n8 9 0 1\n2 3 4 5 6\n7 8 9 0\n1 2 3
y otro con un espacio adicional que conduzca a una de las filas: ss5 6 7\nss8 9 0 1\n2 3 4 5 6\ns7 8 9 0\nss1 2 3
(los espacios iniciales se reemplazan por s
para que quede un poco más claro en esta forma sin formato) . Los 10 casos de prueba se están validando correctamente con mi código actualmente, pero estos dos casos fallarían con el enfoque que utilicé.