Nó là phổ biến để làm cho một giao diện lựa chọn trang. Nó thường trông như thế này:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Điều đó có nghĩa là có tổng cộng 173 trang và hiện tại bạn đang ở trang thứ 5.
Thử thách này yêu cầu bạn lấy tổng số trang và số trang hiện tại làm đầu vào và xuất một chuỗi (hoặc một mảng) để "hiển thị" bộ chọn trang.
Đầu vào
2 số nguyên dương
- số trang hiện tại
- số trang
Nó được đảm bảo rằng 1 <= hiện tại <= tổng.
Đầu ra
Xuất ra một chuỗi hoặc một mảng đại diện cho ui cho các bộ chọn trang.
- Nếu đầu ra dưới dạng chuỗi, một khoảng trắng (U + 0020) nên được sử dụng giữa mỗi trang.
- Nếu đầu ra là một mảng, mảng sẽ tạo ra kết quả giống như chuỗi sau khi chuyển đổi từng mục thành chuỗi và nối chúng với một khoảng trắng.
- Ba dấu chấm (
...
) không phải là tùy chọn cho đầu ra mảng.
- Ba dấu chấm (
Chi tiết
- Nếu hiện tại == 1, sẽ không có "tiền tố" nào được xuất ra, nếu không, "trước" sẽ xuất hiện trước.
- Nếu hiện tại == tổng, sẽ không có "tiếp theo" nào được xuất ra, nếu không, "tiếp theo" sẽ đến sau cùng.
- Trang đầu tiên (1) và trang cuối cùng (tổng cộng) phải luôn được xuất ra.
- Trang hiện tại, trang (hiện tại - 1), trang (hiện tại - 2), trang (hiện tại + 1), trang (hiện tại + 2) phải được xuất ra miễn là nằm trong phạm vi của [1..total].
- Không có số trang khác nên được xuất ra.
- Các trang xuất ra nên được sắp xếp theo thứ tự tăng dần.
- Đầu ra không được chứa số trang trùng lặp.
- Trang hiện tại nên được làm nổi bật bằng cách bọc nó trong một cặp
[]
. - Nếu có một khoảng cách giữa bất kỳ hàng xóm nào,
...
nên chèn ba dấu chấm ( ).
Các trường hợp thử nghiệm
Current Total Output
1 1 [1]
1 2 [1] 2 next
1 10 [1] 2 3 ... 10 next
3 3 prev 1 2 [3]
3 6 prev 1 2 [3] 4 5 6 next
4 6 prev 1 2 3 [4] 5 6 next
4 7 prev 1 2 3 [4] 5 6 7 next
3 10 prev 1 2 [3] 4 5 ... 10 next
5 10 prev 1 ... 3 4 [5] 6 7 ... 10 next
10 10 prev 1 ... 8 9 [10]
52 173 prev 1 ... 50 51 [52] 53 54 ... 173 next
Quy tắc
- Đây là code-golf, mã ngắn nhất sẽ thắng!
4,7
trường hợp thử nghiệm sẽ được đánh giá rất cao - sẽ đảm bảo rằng cả hai trường hợp ranh giới loại trừ dấu chấm lửng có thể được đáp ứng đồng thời
4 , 6
như một trường hợp thử nghiệm. Tương tự như3, 6
trường hợp, nhưng đảm bảo các dấu chấm không được thêm vào phía bên trái.