Giới thiệu
Lấy cảm hứng từ video gần đây The Trapping Knight - Numberphile , tôi đã đưa ra một thử thách.
Chuỗi hiệp sĩ bị mắc kẹt là một chuỗi số nguyên hữu hạn có độ dài 2016, bắt đầu từ 1 và có các quy tắc xây dựng sau:
- Viết một số xoắn ốc theo cách sau:
17 16 15 14 13 ...
18 5 4 3 12 ...
19 6 1 2 11 ...
20 7 8 9 10 ...
21 22 23 24 25 ...
- Đặt một hiệp sĩ trên 1.
- Di chuyển hiệp sĩ vào lưới với số lượng nhỏ nhất mà nó có thể đi mà chưa được truy cập trước đó, theo quy tắc của cờ vua (tức là 2 đơn vị theo chiều dọc và 1 đơn vị theo chiều ngang hoặc ngược lại).
- Lặp lại cho đến khi hiệp sĩ bị mắc kẹt.
Đây là ba bước đầu tiên:
Bước 1
17 [16] 15 [14] 13
[18] 5 4 3 [12]
19 6 < 1> 2 11
[20] 7 8 9 [10]
21 [22] 23 [24] 25
Di chuyển có thể là 10, 12, 14, 16, 18, 20, 22, 24, trong đó nhỏ nhất là 10, vì vậy thuật ngữ thứ hai là 10.
Bước 2
4 [ 3] 12 [29] 54
( 1) 2 11 28 [53]
8 9 <10> 27 52
[23] 24 25 26 [51]
46 [47] 48 [49] 50
Di chuyển có thể là 1 , 3, 23, 29, 47, 49, 51, 53, trong đó nhỏ nhất là 3, vì vậy thuật ngữ thứ ba là 3.
Bước 3
35 [34] 33 [32] 31
[16] 15 14 13 [30]
5 4 < 3> 12 29
[ 6] ( 1) 2 11 [28]
7 [ 8] 9 (10) 27
Di chuyển có thể là 6, 8, 10 , 16, 28, 30, 32, 34, trong đó nhỏ nhất là 6, vì vậy thuật ngữ thứ tư là 6.
Chuỗi sao với:
1 10 3 6 9 4 7 2 5 8 11 14 ...
và kết thúc bằng
... 2099 2284 2477 2096 2281 2474 2675 2884 3101 2880 2467 2084
Thử thách
Viết chương trình hoặc hàm ngắn nhất, nhận số nguyên trong phạm vi [1, 2016](hoặc [0, 2015]nếu sử dụng chỉ mục 0) làm đầu vào, xuất số ở chỉ mục đó trong chuỗi hiệp sĩ bị mắc kẹt. Bạn có thể chọn lập chỉ mục chuỗi với 0-index hoặc 1-index, nhưng bạn phải chỉ định sơ đồ lập chỉ mục nào bạn sử dụng.
Các trường hợp thử nghiệm (1 chỉ mục)
n | s(n)
-----+-----
1 | 1
2 | 10
3 | 3
6 | 4
11 | 11
21 | 23
51 | 95
101 | 65
201 | 235
501 | 761
1001 | 1069
2001 | 1925
2016 | 2084
Đối với tất cả các đầu ra có thể, xin vui lòng tham khảo trang này .
Tiêu chí chiến thắng
Mã ngắn nhất của mỗi ngôn ngữ sẽ thắng. Hạn chế về sơ hở tiêu chuẩn áp dụng.
12851850258