Вызов
Учитывая художественную форму 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.
Граница фигуры никогда не будет содержать пробелов. Если это произойдет, вы можете вернуть фальси.
Может быть произвольное количество пробелов до и / или после фигуры.
Все углы в форме могут быть не равны, например, следующая форма является допустимым вводом:
. . .
. . .
. . . . .
. . . .
. . .
Это возвратит фальшивое значение.
Все входные данные формы будут находиться в сетке, разделенной пробелами. Гексагональный вход будет находиться в шахматном порядке (каждая строка смещена относительно следующей).
Примеры
Truthy
Следующие формы должны возвращать истинные значения:
# _
+ + +
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
Следующее должно возвращать значения 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
*
* *
* * *
.....
.......
.........
.......
.....
Эта форма не находится на сетке, разделенной пробелами, и не находится в шахматном порядке.
* * * *
---------
* * * * * *
-------------
* * * * * *
---------
* * * *
5 6 7
8 9 0 1
2 3 4 5 6
7 8 9 0
1 2 3
Для односимвольных вводов ваша программа может выводить truey или falsey:
&
выигрыш
Самая короткая программа в байтах побеждает.
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 ваших тестов в настоящее время корректно проверяются с помощью моего кода, но эти два случая потерпят неудачу с подходом, который я использовал.