Рядок, довжина якого є позитивним трикутним числом (1, 3, 6, 10, 15 ...), можна впорядкувати в "рівносторонній текстовий трикутник", додавши деякі пробіли та нові рядки (і утримуючи його в одному порядку читання).
Наприклад, рядок довжиною 10 ABCDEFGHIJ
стає:
A
B C
D E F
G H I J
Напишіть програму або функцію, яка займає такий рядок, за винятком того, що вона містить лише символи 0
та 1
. (Ви можете припустити, що введення дійсне.)
Для отриманого "рівностороннього текстового трикутника" виведіть (надрукуйте або поверніть) одне з чотирьох чисел, що позначає тип виставленої симетрії:
Виведіть,
2
якщо трикутник має двосторонню симетрію. тобто має лінію симетрії від будь-якого кута до середини протилежної сторони.Приклади:
0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1
Виведіть,
3
якщо трикутник має обертальну симетрію. тобто його можна повертати на 120 ° без візуальних змін.Приклади:
0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1
Виведіть,
6
якщо трикутник має як двосторонню, так і обертальну симетрію. тобто відповідає умовам виведення2
і3
.Приклади:
0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0
Виведіть,
1
якщо трикутник не має ані двосторонньої, ані обертової симетрії.Приклади:
1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1
Виграє найкоротший код у байтах. Тирбекер - це відповідь раніше.
Окрім необов’язкового контуру нового рядка, вхідний рядок може не мати пробілу / нової строчки або структури - він повинен бути простим 0
's та 1
' s.
За бажанням ви можете використовувати замість та та будь-які два символи ASCII для друку .0
1
Випробування
Взяте прямо з прикладів.
011 -> 2
101 -> 2
001010 -> 2
1111010111 -> 2
0100110100 -> 3
0011000010 -> 3
101111111010111 -> 3
101001100010000100111 -> 3
0 -> 6
1 -> 6
000 -> 6
100101 -> 6
0000100000 -> 6
110000 -> 1
001101 -> 1
1101111111 -> 1
111111000111111 -> 1
"Обертання" будь-якого входу на 120 °, звичайно, призведе до того ж виходу.