Tiêu đề được tạo thành, từ 'Chỉ số chuỗi số không'.
Thử thách:
Cho một số nguyên n
là >= 0
, xuất n
số thứ tự của dãy sau.
Dưới đây là 50 mục đầu tiên, với chỉ mục (được lập chỉ mục 0) phía trên nó:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
1 0 3 2 5 4 7 6 9 8 22 20 30 24 23 26 25 28 27 32 11 33 10 14 13 16 15 18 17 31 12 29 19 21 50 40 41 42 44 45 35 36 37 51 38 39 52 53 55 56 34
Trình tự này hoạt động như thế nào?
Số tại chỉ mục n
phải là số đầu tiên không có bất kỳ chữ số nào chung n
và chưa xảy ra đối với các chỉ mục trước đó. Vì vậy, khi chúng ta nhìn vào chuỗi bình thường như thế này từ 0-60
:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Chúng tôi xác định các n
giá trị như thế này:
0
: Số đầu tiên (0
) chứa cùng một chữ số, vì vậy chúng tôi tìm số tiếp theo (1
) không chứa cùng một chữ số. Vì vậy,n=0
đầu ra1
.1
: Số đầu tiên (0
) không chứa cùng một chữ số, do đó,n=1
đầu ra0
.2
: Chúng tôi đã gặp0
và1
và chữ số tiếp theo (2
) chứa cùng một chữ số, vì vậy chúng tôi tìm kiếm (3
) không chứa cùng một chữ số. Vì vậy,n=2
đầu ra3
.- ...
10
: Chúng tôi đã gặp phải0-9
, vì vậy dòng tiếp theo là10
.10-19
chứa chữ số phù hợp1
,20
chứa chữ số phù hợp0
, lại21
chứa chữ số phù hợp1
,22
là hợp lệ, do đó,n=10
đầu ra22
.- v.v.
Quy tắc thử thách:
- Nếu ngôn ngữ của bạn được lập chỉ mục 1 (hoặc bạn chọn), bạn được phép bắt đầu chuỗi tại
3 2 5 4 7 ...
(bỏ qua1
tạin=0
và0
tạin=1
). - Chỉ số lớn nhất tối thiểu bạn nên hỗ trợ là
25,000
. LƯU Ý: Chuỗi dừng tại chỉ mục1,023,456,788
, vì chỉ mục tiếp theo trong dòng chứa tất cả 10 chữ số. - Bạn cũng được phép xuất / trả về một mảng / danh sách của toàn bộ chuỗi lên đến và bao gồm chỉ mục
n
nếu bạn muốn.
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Các quy tắc chuẩn áp dụng cho câu trả lời của bạn, vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, các chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn.
- Ngoài ra, xin vui lòng thêm một lời giải thích nếu cần thiết.
Các trường hợp thử nghiệm:
Trình tự này thực sự tạo ra các cặp liên quan đến chỉ số và đầu ra. Nếu n
đầu ra o
chỉ mục, o
đầu ra chỉ mục n
. Vì vậy, bạn có thể nhập bên trái hoặc bên phải và đầu ra sẽ là phía bên kia:
0 <-> 1 (this test case is optional)
2 <-> 3
10 <-> 22
12 <-> 30
34 <-> 50
89 <-> 100
111 <-> 200
112 <-> 300
199 <-> 322
2231 <-> 4456
9605 <-> 11118
19235 <-> 46000
23451 <-> 60668
25000 <-> 13674
Dưới đây là một pastebin của 25.001 trường hợp thử nghiệm đầu tiên nếu bạn muốn thử người khác.