Đếm danh sách tự mô tả theo chu kỳ


19

Danh sách tự mô tả theo chu kỳ

Một danh sách của các số nguyên dương là tự mô tả theo chu kỳ , nếu các điều kiện sau đây được giữ.L

  1. L là không trống rỗng.
  2. Các yếu tố đầu tiên và cuối cùng của là khác nhau.L
  3. Nếu bạn chia thành các phần tử bằng nhau, phần tử của mỗi lần chạy bằng với độ dài của lần chạy tiếp theo và phần tử của lần chạy cuối cùng bằng với độ dài của lần chạy đầu tiên.L

Ví dụ: xem xét . Nó là không trống rỗng, và các yếu tố đầu tiên và cuối cùng là khác nhau. Khi chúng tôi chia nó thành các lần chạy, chúng tôi nhận được .L=[1,1,1,2,3,3,1,1,1,3][[1,1,1],[2],[3,3],[1,1,1],[3]]

  • Lần chạy đầu tiên là một lần chạy trong giây và độ dài của lần chạy tiếp theo, , là .1[2]1
  • Lần chạy thứ hai là một lần chạy trong giây và độ dài của lần chạy tiếp theo, , là .2[3,3]2
  • Lần chạy thứ ba là một lần chạy giây và độ dài của lần chạy tiếp theo, , là .3[1,1,1]3
  • Lần chạy thứ tư là một lần chạy trong giây và độ dài của lần chạy tiếp theo, , là .1[3]1
  • Cuối cùng, lần chạy cuối cùng là một lần chạy giây và độ dài của lần chạy đầu tiên, , là 3 .3[1,1,1]3

Điều này có nghĩa là L là một danh sách tự mô tả theo chu kỳ.

Đối với một ví dụ không phải là ví dụ, danh sách [3,2,2,2,1,4,1,1,1] không tự mô tả theo chu kỳ, vì một lần chạy 2 giây được theo sau bởi một bước dài 1 . Danh sách [2,2,4,4,3,3,3,3] cũng không tự mô tả theo chu kỳ, vì lần chạy cuối cùng là 3 giây, nhưng lần chạy đầu tiên có độ dài2 .

Nhiệm vụ

Trong thử thách này, đầu vào của bạn là số nguyên n1 . Đầu ra của bạn sẽ là số lượng danh sách tự mô tả theo chu kỳ có tổng bằng n . Ví dụ: n=8 sẽ dẫn đến 4 , vì các danh sách tự mô tả theo chu kỳ có tổng bằng 8[1,1,1,1,4] , [1,1,2,1,1,2] , [2,1,1,2,1,1][4,1,1,1,1] . Số byte thấp nhất sẽ thắng vàáp dụng quy tắctiêu chuẩn khác.

Dưới đây là các giá trị đầu ra chính xác cho các đầu vào từ 1 đến 50 :

1 -> 0
2 -> 0
3 -> 0
4 -> 2
5 -> 0
6 -> 2
7 -> 0
8 -> 4
9 -> 0
10 -> 6
11 -> 6
12 -> 12
13 -> 0
14 -> 22
15 -> 10
16 -> 32
17 -> 16
18 -> 56
19 -> 30
20 -> 96
21 -> 56
22 -> 158
23 -> 112
24 -> 282
25 -> 198
26 -> 464
27 -> 364
28 -> 814
29 -> 644
30 -> 1382
31 -> 1192
32 -> 2368
33 -> 2080
34 -> 4078
35 -> 3844
36 -> 7036
37 -> 6694
38 -> 12136
39 -> 12070
40 -> 20940
41 -> 21362
42 -> 36278
43 -> 37892
44 -> 62634
45 -> 67154
46 -> 108678
47 -> 118866
48 -> 188280
49 -> 209784
50 -> 326878

4
Một bước ngoặt bất ngờ! Nửa chừng mô tả tôi đã mong đợi nhiệm vụ ít thú vị hơn là chỉ xác định xem một danh sách có phải là CSD hay không. Thanh danh.
Sparr

Tôi hơi buồn khi định nghĩa không bao gồm các danh sách trong đó phần tử đầu tiên và phần tử cuối cùng giống nhau và được tính là cùng một nhóm, giống như nếu danh sách đó thực sự là một chu kỳ không có phần bắt đầu / kết thúc riêng biệt.
Sparr

Đây là môn đánh gôn, vì vậy tôi nghĩ việc xác định xem một danh sách có tự mô tả theo chu kỳ hay không sẽ thú vị hơn (giải pháp nhanh hơn để thực hiện) - nếu không có cách nào khác ngoài việc tạo ra tất cả các danh sách và đếm.
dùng202729

Có một thuật toán thời gian đa thức, nhưng nó khá khó để lập trình và chắc chắn không phải là golf như một giải pháp tạo và xác minh tất cả các danh sách có thể.
dùng202729

2
Mọi số chẵn trừ 2 có thể được lấy là n,1,...,1và mọi số lẻ lớn hơn 13 có thể thu được bằng cách ghép 3,2,2,2,1,1với một số chẵn. Bằng chứng là 13 là không thể được để lại như một bài tập cho người đọc.
Nitrodon

Câu trả lời:


6

Haskell , 75 byte

Cảm ơn Ørjan vì đã tiết kiệm một byte!

g n=sum[x#n|x<-[1..n],let a#n=sum$[b#(n-a*b)|b<-[1..n],a/=b]++[0^n^2|a==x]]

Hãy thử trực tuyến!

Vấn đề tương đương với:

Có bao nhiêu cách n có thể được viết là i=0kaiai+1 với aiN,aiai+1,a0=ak



1

Thạch , 18 byte

ṗⱮ¹Ẏ;ḷ/$€IẠ$Ƈ×Ɲ€§ċ

Hãy thử trực tuyến!

Ý tưởng: Mỗi danh sách tự mô tả theo chu kỳ có thể được mô tả dưới dạng danh sách các giá trị cho mỗi khối và chúng ta có thể suy ra độ dài từ các giá trị. Lưu ý rằng hai giá trị liền kề phải khác nhau. Tất nhiên có thể có nhiều nhất ncác khối và chiều dài của mỗi khối nhiều nhất n.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.