Défi
Étant donné une forme d'art ASCII, vous devez savoir si la forme est un hexagone régulier ou non.
Hexagones
Un hexagone régulier est défini selon deux règles:
- Il a six côtés
- Chaque côté a un nombre égal de caractères
Par exemple, la forme suivante est régulière mais elle n'a pas six côtés et n'est donc pas un hexagone régulier :
B a a h
s a i d
y o u r
g a o t
De même, la forme suivante a six côtés mais a des côtés de longueurs différentes et n'est donc pas un hexagone régulier :
* *
* * *
* * * *
* * *
* *
Cependant, la forme suivante a six côtés et tous les côtés ont le même nombre de caractères, il s'agit donc d'un hexagone normal:
T h e
h e x a
g o n s a
r e c o
m i n
Règles
La sortie doit être une valeur true ou falsey (true si la forme est un hexagone régulier, falsey sinon).
Les formes ne contiendront que des caractères ASCII imprimables.
La bordure de la forme ne contiendra jamais d'espace. Si c'est le cas, vous pouvez retourner falsey.
Il peut y avoir des quantités arbitraires d'espaces avant et / ou après la forme.
Tous les angles de la forme peuvent ne pas être égaux par exemple, la forme suivante est une entrée valide:
. . .
. . .
. . . . .
. . . .
. . .
Il renverra une valeur de falsey.
Toutes les entrées de forme seront sur une grille séparée par des espaces. L'entrée hexagonale sera sur une grille décalée (chaque ligne est décalée de la suivante).
Exemples
Truthy
Les formes suivantes doivent renvoyer des valeurs véridiques:
# _
+ + +
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
Les éléments suivants doivent renvoyer les valeurs de 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
*
* *
* * *
.....
.......
.........
.......
.....
Cette forme n'est pas sur une grille séparée par des espaces et n'est pas décalée.
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Pour les entrées à un seul caractère, votre programme peut produire soit true soit falsey:
&
Gagnant
Le programme le plus court en octets gagne.
5 6 7\n8 9 0 1\n2 3 4 5 6\n7 8 9 0\n1 2 3
et un avec un espace supplémentaire en tête pour l'une des lignes: ss5 6 7\nss8 9 0 1\n2 3 4 5 6\ns7 8 9 0\nss1 2 3
(les espaces de tête sont remplacés par s
pour le rendre un peu plus clair dans cette forme non formatée) . Tous les 10 de vos cas de test valident correctement avec mon code actuellement, mais ces deux cas échoueraient avec l'approche que j'ai utilisée.