Una stringa la cui lunghezza è un numero triangolare positivo (1, 3, 6, 10, 15 ...) può essere disposta in un "triangolo del testo equilatero" aggiungendo alcuni spazi e nuove linee (e mantenendolo nello stesso ordine di lettura).
Ad esempio, la stringa di lunghezza 10 ABCDEFGHIJdiventa:
A
B C
D E F
G H I J
Scrivi un programma o una funzione che accetta una tale stringa, tranne che conterrà solo i caratteri 0e 1. (Si può presumere che l'input sia valido.)
Per il risultante "triangolo del testo equilatero", output (stampa o ritorno) uno dei quattro numeri che indica il tipo di simmetria esibita:
Uscita
2se il triangolo ha simmetria bilaterale. cioè ha una linea di simmetria da qualsiasi angolo al punto medio del lato opposto.Esempi:
0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1Emissione
3se il triangolo ha simmetria rotazionale. cioè poteva essere ruotato di 120 ° senza alcun cambiamento visivo.Esempi:
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 1Output
6se il triangolo ha sia simmetria bilaterale e rotazionale. cioè soddisfa le condizioni per la produzione di entrambi2e3.Esempi:
0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0Uscita
1se il triangolo non ha simmetria bilaterale né rotazionale.Esempi:
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
Vince il codice più breve in byte. Tiebreaker è la risposta precedente.
A parte una nuova riga finale facoltativa, la stringa di input potrebbe non avere spaziatura o struttura di spaziatura / riga nuova - dovrebbe essere semplice 0e normale 1.
Se lo si desidera, è possibile utilizzare due caratteri ASCII stampabili distinti al posto di 0e 1.
Casi test
Tratto direttamente dagli esempi.
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
"Ruotando" qualsiasi input di 120 ° si otterrà ovviamente lo stesso output.