Una cadena cuya longitud es un número triangular positivo (1, 3, 6, 10, 15 ...) se puede organizar en un "triángulo de texto equilátero" agregando algunos espacios y nuevas líneas (y manteniéndolo en el mismo orden de lectura).
Por ejemplo, la cadena de longitud 10 se ABCDEFGHIJ
convierte en:
A
B C
D E F
G H I J
Escriba un programa o función que tome dicha cadena, excepto que solo contendrá los caracteres 0
y 1
. (Puede suponer que la entrada es válida).
Para el "triángulo de texto equilátero" resultante, imprima (imprima o devuelva) uno de los cuatro números que denota el tipo de simetría exhibida:
Salida
2
si el triángulo tiene simetría bilateral. es decir, tiene una línea de simetría desde cualquier esquina hasta el punto medio del lado opuesto.Ejemplos:
0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1
Salida
3
si el triángulo tiene simetría rotacional. es decir, podría rotarse 120 ° sin cambio visual.Ejemplos:
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
Salida
6
si el triángulo tiene simetría tanto bilateral como rotacional. es decir, coincide con las condiciones para generar ambos2
y3
.Ejemplos:
0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0
Salida
1
si el triángulo no tiene simetría bilateral ni rotacional.Ejemplos:
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
El código más corto en bytes gana. Tiebreaker es la respuesta anterior.
Aparte de una nueva línea final opcional, la cadena de entrada puede no tener espacio o nueva línea de relleno o estructura, debe ser simple 0
y 1
's.
Si lo desea, puede usar dos caracteres ASCII imprimibles distintos en lugar de 0
y 1
.
Casos de prueba
Tomado directamente de ejemplos.
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
"Girar" cualquier entrada en 120 °, por supuesto, dará como resultado la misma salida.