Lý lịch
Một chuỗi fractal là một chuỗi số nguyên, nơi bạn có thể loại bỏ sự xuất hiện đầu tiên của mỗi số nguyên và kết thúc với cùng một chuỗi như trước đây.
Một chuỗi rất đơn giản như vậy được gọi là paraph cụm của Kimberling . Bạn bắt đầu với các số tự nhiên tích cực:
1, 2, 3, 4, 5, 6, 7, 8, 9, ...
Sau đó, bạn riffle trong một số khoảng trống:
1, _, 2, _, 3, _, 4, _, 5, _, 6, _, 7, _, 8, _, 9, ...
Và sau đó bạn liên tục điền vào chỗ trống bằng chính chuỗi đó (bao gồm cả khoảng trống):
1, 1, 2, _, 3, 2, 4, _, 5, 3, 6, _, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, _, 5, 3, 6, 2, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, 1, 5, 3, 6, 2, 7, 4, 8, _, 9, ...
1, 1, 2, 1, 3, 2, 4, 1, 5, 3, 6, 2, 7, 4, 8, 1, 9, ...
Đó là chuỗi fractal của chúng tôi! Bây giờ hãy lấy một phần tiền:
1, 2, 4, 5, 8, 10, 14, 15, 20, 23, 29, 31, 38, 42, 50, 51, 60, ...
Nhưng nếu chúng ta lặp lại quá trình này thì sao? "Fractalise" chuỗi mới (nghĩa là tổng một phần thu được từ các bước trên):
1, _, 2, _, 4, _, 5, _, 8, _, 10, _, 14, _, 15, _, 20, _, 23, ...
1, 1, 2, _, 4, 2, 5, _, 8, 4, 10, _, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, _, 8, 4, 10, 2, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, 1, 8, 4, 10, 2, 14, 5, 15, _, 20, 8, 23, ...
1, 1, 2, 1, 4, 2, 5, 1, 8, 4, 10, 2, 14, 5, 15, 1, 20, 8, 23, ...
Và lấy một phần tiền một lần nữa:
1, 2, 4, 5, 9, 11, 16, 17, 25, 29, 39, 41, 55, 60, 75, 76, 96, ...
Rửa sạch, lặp lại. Nó chỉ ra rằng quá trình này hội tụ. Mỗi khi bạn lặp lại quá trình này, một tiền tố lớn hơn của chuỗi sẽ được cố định. Sau một số lần lặp vô hạn, bạn sẽ kết thúc với OEIS A085765 .
Sự thật thú vị: Quá trình này sẽ hội tụ vào cùng một chuỗi ngay cả khi chúng ta không bắt đầu từ các số tự nhiên miễn là chuỗi ban đầu bắt đầu 1
. Nếu chuỗi ban đầu bắt đầu với bất kỳ thứ gì khác x
, chúng tôi sẽ có được x*A085765
thay vào đó.
Các thách thức
Cho một số nguyên dương N
, xuất N
phần tử thứ của chuỗi hội tụ.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Bạn có thể chọn chỉ mục N
là 0 hoặc 1 dựa trên.
Các trường hợp thử nghiệm
Trình tự bắt đầu bằng:
1, 2, 4, 5, 9, 11, 16, 17, 26, 30, 41, 43, 59, 64, 81, 82, 108, 117, 147, 151, 192, 203, 246, 248, 307, 323, 387, 392, 473, 490, 572, 573, 681, 707, 824, 833, 980, 1010, 1161, 1165, 1357, 1398, 1601, 1612, 1858, 1901, 2149, 2151, 2458, 2517
Vì vậy, đầu vào 5
nên dẫn đến đầu ra 9
.
Dưới đây là một triển khai tham chiếu CJam ngây thơ tạo ra các N
số đầu tiên (được đưa ra N
trên STDIN). Lưu ý rằng mã của bạn chỉ nên trả về N
phần tử thứ, không phải toàn bộ tiền tố.
N
thuật ngữ thứ A085765 , đúng không?