挑战
给定ASCII艺术形状,您必须找出形状是否为正六边形。
六边形
使用两个规则定义正六边形:
- 它有六个侧面
- 每边有相等数量的字符
例如,以下形状是规则的,但没有六个边,因此不是规则的六边形:
B a a h
s a i d
y o u r
g a o t
类似地,以下形状具有六个边,但是具有不同长度的边,因此不是正六边形:
* *
* * *
* * * *
* * *
* *
但是,以下形状具有六个边,并且所有边均具有相同数量的字符,因此它是正六边形:
T h e
h e x a
g o n s a
r e c o
m i n
规则
输出应为真或假值(如果形状为正六边形则为真,否则为假)。
形状将仅包含可打印的ASCII字符。
形状的边界将永远不会包含空格。如果是这样,则可以返回false。
形状之前和/或之后可以有任意数量的空格。
形状中的所有角度可能不相等,例如,以下形状是有效输入:
. . .
. . .
. . . . .
. . . .
. . .
它将返回一个假值。
所有形状输入都将在空间分隔的网格上。六角形输入将在交错网格上(每条线都从下一行偏移)。
例子
特鲁西
以下形状应返回真实值:
# _
+ + +
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
虚假
以下应返回假值
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
*
* *
* * *
.....
.......
.........
.......
.....
此形状不在空间分隔的网格上,也不交错。
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
对于单字符输入,您的程序可能会输出真或假:
&
获奖
以字节为单位的最短程序获胜。
5 6 7\n8 9 0 1\n2 3 4 5 6\n7 8 9 0\n1 2 3
和一个对一行中的一行有一个额外的空格领导的测试用例:(以这种无格式的形式ss5 6 7\nss8 9 0 1\n2 3 4 5 6\ns7 8 9 0\nss1 2 3
替换了前导空格s
以使其更加清晰) 。您的所有10个测试用例当前都已使用我的代码正确验证,但是使用我使用的方法,这两种情况将失败。