Trình tự SUDSI ( su m, d ifference, s wap, i ncrement) là một chuỗi số nguyên gây tò mò xuất hiện để thể hiện hành vi khá hỗn loạn. Nó có thể được tạo ra như sau:
Đặt S là danh sách vô hạn các số tự nhiên : 1 2 3 4 5 6 ...
. Hãy S i biểu thị một lập chỉ mục i th yếu tố của S . Vì vậy, ban đầu, S 1 là 1, S 2 là 2, v.v. (không có S 0 ).
Bắt đầu với S 1 và S 2 ...
- Tính tổng của họ:
sum = S1 + S2
- Tính toán sự khác biệt tuyệt đối của chúng (cái lớn hơn trừ đi cái nhỏ hơn):
diff = |S1 - S2|
Hoán đổi hai giá trị trong S tại các chỉ số của tổng và hiệu:
swap(Ssum, Sdiff)
Tăng các chỉ số của S bạn đang làm việc. Vì vậy, lần tới, bạn sẽ tính tổng và hiệu của S 2 và S 3 , và thời gian sau đó sẽ là S 3 và S 4 , v.v.
- Lặp lại quá trình này vô thời hạn.
Dưới đây là một vài giai đoạn đầu tiên của S khi quy trình này được áp dụng. Dấu ngoặc []
bao quanh hai giá trị sắp được tổng hợp và phân biệt.
S gốc :
[1 2] 3 4 5 6 7 8 9 10 11 12 ...
Sau khi S 3 ( 3 = 1 + 2
) và S 1 ( 1 = |1 - 2|
) được hoán đổi:
3 [2 1] 4 5 6 7 8 9 10 11 12 ...
Sau khi S 3 và S 1 được hoán đổi:
1 2 [3 4] 5 6 7 8 9 10 11 12 ...
Sau khi S 7 và S 1 được hoán đổi:
7 2 3 [4 5] 6 1 8 9 10 11 12 ...
Sau khi S 9 và S 1 được hoán đổi:
9 2 3 4 [5 6] 1 8 7 10 11 12 ...
Sau khi S 11 và S 1 được hoán đổi:
11 2 3 4 5 [6 1] 8 7 10 9 12 ...
Sau khi S 7 và S 5 được hoán đổi:
11 2 3 4 1 6 [5 8] 7 10 9 12 ...
Vân vân.
Trình tự SUDSI được định nghĩa là trình tự của các phần tử đầu tiên trong mỗi danh sách này. Vì vậy, một vài điều khoản đầu tiên của chuỗi SUDSI là 1 3 1 7 9 11 11
.
Dưới đây là 200 điều khoản đầu tiên của chuỗi SUDSI (20 trên mỗi dòng):
1 3 1 7 9 11 11 11 15 15 19 19 19 19 19 19 19 19 19 19
19 19 19 19 19 19 19 19 57 59 59 59 59 59 59 59 59 59 77 79
81 83 85 87 89 91 91 91 91 91 91 91 91 91 91 91 91 91 115 115
121 123 125 127 127 127 127 127 137 139 141 143 145 147 147 147 147 147 147 147
147 147 147 147 167 167 167 167 167 167 167 167 167 167 167 167 167 167 167 167
167 167 167 167 209 211 211 211 211 211 221 223 223 223 223 223 223 223 223 223
223 223 243 243 243 243 243 243 257 259 261 263 263 263 263 263 263 263 263 263
263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263 263
263 263 325 327 329 331 331 331 331 331 331 331 331 331 349 351 351 351 351 351
361 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363 363
Không rõ ràng (với tôi ít nhất) làm thế nào một người có thể dự đoán các điều khoản trong tương lai. Nó chỉ cảm thấy an toàn khi nói rằng các điều khoản luôn luôn lẻ, không giảm (sau thuật ngữ thứ hai) và một số số được lặp lại rất nhiều lần.
Thử thách
Viết chương trình hoặc hàm lấy số nguyên dương n và in hoặc trả về số hạng thứ n của chuỗi SUDSI. Ví dụ: nếu n là 1, thì đầu ra là 1
, nếu n là 2, đầu ra là 3
, nếu n là 200, thì đầu ra là 363
.
Lấy đầu vào theo bất kỳ cách thông thường nào (stdin / dòng lệnh / hàm arg).
Câu trả lời ngắn nhất trong byte thắng.
(Trang web đó mã hóa mọi thứ trong UTF-8, nhưng bạn có thể sử dụng bất kỳ mã hóa hiện có nào bạn muốn.)
Phần thưởng toán học: (có khả năng đủ điều kiện nhận tiền thưởng)
- Cho tôi biết thêm về trình tự SUDSI. Mô hình cơ bản cho những con số nào là một phần của nó và có bao nhiêu trong số chúng (và những thứ như vậy)? (Nhân tiện, tôi không thể tìm thấy SUDSI trên OEIS .)