Une chaîne dont la longueur est un nombre triangulaire positif (1, 3, 6, 10, 15 ...) peut être arrangée en un "triangle de texte équilatéral" en ajoutant des espaces et des retours à la ligne (et en les conservant dans le même ordre de lecture).
Par exemple, la chaîne de longueur 10 ABCDEFGHIJ
devient:
A
B C
D E F
G H I J
Écrivez un programme ou une fonction qui accepte une telle chaîne, sauf qu'elle ne contiendra que les caractères 0
et 1
. (Vous pouvez supposer que l'entrée est valide.)
Pour le "triangle de texte équilatéral" résultant, sortez (impression ou retour) l'un des quatre nombres qui dénote le type de symétrie affiché:
Sortie
2
si le triangle a une symétrie bilatérale. c'est-à-dire qu'il a une ligne de symétrie depuis n'importe quel coin jusqu'au milieu du côté opposé.Exemples:
0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1
Sortie
3
si le triangle a une symétrie de rotation. c'est-à-dire qu'il pouvait être tourné de 120 ° sans changement visuel.Exemples:
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
Sortie
6
si le triangle a la fois une symétrie bilatérale et de rotation. c'est-à-dire qu'il correspond aux conditions de sortie de2
et3
.Exemples:
0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0
Sortie
1
si le triangle n'a ni symétrie bilatérale ni rotationnelle.Exemples:
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
Le code le plus court en octets gagne. Tiebreaker est une réponse antérieure.
Mis à part un retour à la ligne facultatif, la chaîne d'entrée peut ne pas avoir d'espace ou de structure de remplissage de nouvelle ligne - il doit s'agir de simples 0
et 1
de.
Si vous le souhaitez, vous pouvez utiliser deux caractères ASCII imprimables distincts à la place de 0
et 1
.
Cas de test
Tiré directement d'exemples.
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
"Faire tourner" n'importe quelle entrée de 120 ° entraînera bien sûr la même sortie.