Sebuah string yang panjangnya adalah bilangan segitiga positif (1, 3, 6, 10, 15 ...) dapat disusun menjadi "segitiga teks sama sisi" dengan menambahkan beberapa spasi dan baris baru (dan menjaganya dalam urutan bacaan yang sama).
Misalnya, string 10 panjang ABCDEFGHIJ
menjadi:
A
B C
D E F
G H I J
Tulis program atau fungsi yang menggunakan string seperti itu, kecuali itu hanya akan berisi karakter 0
dan 1
. (Anda dapat menganggap input tersebut valid.)
Untuk "segitiga teks sama sisi" yang dihasilkan, output (cetak atau kembalikan) salah satu dari empat angka yang menunjukkan jenis simetri yang ditunjukkan:
Keluaran
2
jika segitiga memiliki simetri bilateral. yaitu memiliki garis simetri dari salah satu sudut ke titik tengah sisi yang berlawanan.Contoh:
0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1
Output
3
jika segitiga memiliki simetri rotasi. yaitu bisa diputar 120 ° tanpa perubahan visual.Contoh:
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
Output
6
jika segitiga memiliki kedua simetri bilateral dan rotasi. yaitu cocok dengan kondisi untuk menghasilkan keduanya2
dan3
.Contoh:
0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0
Keluaran
1
jika segitiga tidak memiliki simetri bilateral atau rotasi.Contoh:
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
Kode terpendek dalam byte menang. Tiebreaker adalah jawaban sebelumnya.
Selain dari baris baru tambahan opsional, string input mungkin tidak memiliki ruang / baris baru atau struktur - itu harus polos 0
dan 1
's.
Jika diinginkan, Anda dapat menggunakan dua karakter ASCII yang dapat dicetak untuk menggantikan 0
dan 1
.
Uji Kasus
Diambil langsung dari contoh.
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
"Memutar" setiap input dengan 120 ° tentu saja akan menghasilkan output yang sama.