はじめに-ネックレスとは?
ネックレスはOEISの人々が夢中になっているものです。OEISチャレンジには、ネックレスのシーケンスが5つあります。
長さのバイナリネックレスは、またはn
であるn
ビーズのループです。2つのネックレスは、一方を回転させてもう一方にすることができれば同じです。2つのリバーシブルネックレスは、一方を回転、反転、または反転して回転させてもう一方にすることができる場合は同じです。0
1
プリミティブネックレスは、一連のビーズのチェーンの複数のコピーとして表現できないネックレスです。ネックレスがプリミティブでないと見なされるためには、コピーがすべて同じ順序で(逆転なしで)組み立てられる必要があることに注意してください。
たとえば、このネックレスを見てみましょう0 1 1 0 1 1
。0 1 1
2回繰り返されていると表現できるため、プリミティブではありません。0 1 0 1 1
原始的です。
0 1 1 0
同じ文字列0 1
と1 0
は見なされないため、プリミティブです。このネックレスは、1 1 0 0
左に1つのビーズを回転させてこのネックレスにすることができるため、同等ですが、0 1 0 1
(プリミティブではありませんが)同等ではありません。
チャレンジ
負でない整数を指定するとn
、長さが異なる可逆的なプリミティブバイナリネックレスの数を返しn
ます。それぞれ単一の整数として入力および出力します。
このシーケンスの最初の数項は1, 2, 1, 2, 3, 6, 8, 16, 24, 42, 69, 124, 208, 378, 668, 1214, 2220, 4110
0インデックスです。
Python 3のリファレンス実装 -非常に遅い
0 1 0 1
原始的ですか?0 1
二度繰り返されていませんか?