Pendahuluan - Apa itu kalung?
Kalung adalah sesuatu yang membuat orang OEIS terobsesi. Tantangan OEIS memiliki seperti 5 urutan kalung.
Kalung panjang biner nadalah lingkaran dengan nmanik - manik yang bisa 0atau 1. Dua kalung adalah sama jika satu dapat diputar untuk menjadi yang lain, dan dua kalung yang dapat dibalik adalah sama jika satu dapat diputar, terbalik, atau terbalik dan diputar untuk menjadi yang lain.
Kalung primitif adalah kalung yang tidak dapat dinyatakan sebagai lebih dari satu salinan untaian manik-manik yang dirantai menjadi satu. Perhatikan bahwa salinan harus dikumpulkan semua dalam urutan yang sama (tidak terbalik) agar kalung dianggap non-primitif.
Sebagai contoh, mari kita lihat kalung ini: 0 1 1 0 1 1. Itu tidak primitif karena dapat diekspresikan sebagai 0 1 1diulang dua kali. 0 1 0 1 1primitif.
0 1 1 0primitif karena 0 1dan 1 0tidak dianggap sebagai string yang sama. Kalung ini setara dengan 1 1 0 0karena dapat diputar satu manik untuk menjadi yang satu ini, tetapi tidak setara dengan 0 1 0 1(yang tidak primitif dengan cara).
Tantangan
Dengan bilangan bulat non-negatif n, kembalikan jumlah kalung biner primitif panjang reversibel yang berbeda n. Input dan output masing-masing sebagai integer tunggal.
Beberapa istilah pertama dari urutan ini adalah 1, 2, 1, 2, 3, 6, 8, 16, 24, 42, 69, 124, 208, 378, 668, 1214, 2220, 4110, 0-diindeks.
Ini adalah OEIS A001371
Referensi Implementasi di Python 3 - cukup lambat
0 1 0 1primitif? Bukankah itu 0 1diulang dua kali?