Giới thiệu - Vòng cổ là gì?
Vòng cổ là thứ mà mọi người OEIS bị ám ảnh. Thử thách OEIS có 5 chuỗi vòng cổ.
Một sợi dây chuyền nhị phân có độ dài n
là một vòng lặp với n
hạt đó là một trong hai 0
hoặc 1
. Hai dây chuyền là như nhau nếu một cái có thể được xoay để trở thành cái kia, và hai dây chuyền có thể đảo ngược là như nhau nếu một cái có thể được xoay, đảo ngược, hoặc đảo ngược và xoay để trở thành cái khác.
Một vòng cổ nguyên thủy là một thứ không thể được thể hiện bằng nhiều hơn một bản sao của chuỗi hạt được xâu chuỗi lại với nhau. Lưu ý rằng các bản sao phải được lắp ráp tất cả theo cùng một thứ tự (không đảo ngược) để vòng cổ được coi là không nguyên thủy.
Ví dụ: chúng ta hãy xem vòng cổ này : 0 1 1 0 1 1
. Nó không phải là nguyên thủy bởi vì nó có thể được thể hiện như được 0 1 1
lặp lại hai lần. 0 1 0 1 1
là nguyên thủy.
0 1 1 0
là nguyên thủy bởi vì 0 1
và 1 0
không được coi là cùng một chuỗi. Vòng cổ này tương đương với 1 1 0 0
vì nó có thể được xoay trái một hạt để trở thành hạt này, nhưng không tương đương với 0 1 0 1
(không phải là nguyên thủy bằng cách này).
Thử thách
Cho một số nguyên không âm n
, trả về số lượng vòng cổ nhị phân nguyên thủy có thể đảo ngược có chiều dài n
. Đầu vào và đầu ra dưới dạng một số nguyên duy nhất.
Một vài thuật ngữ đầu tiên của chuỗi này là 1, 2, 1, 2, 3, 6, 8, 16, 24, 42, 69, 124, 208, 378, 668, 1214, 2220, 4110
, 0-index.
Đây là OEIS A001371
Tham chiếu thực hiện trong Python 3 - khá chậm
0 1 0 1
nguyên thủy? Nó không 0 1
lặp lại hai lần sao?