Зазвичай потрібно зробити інтерфейс вибору сторінки. Зазвичай це виглядає так:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Це означає, що тут загалом 173 сторінки, а ви зараз на 5-й сторінці.
Цей виклик вимагає взяти загальну кількість сторінок та номер поточної сторінки як вхідні дані та вивести рядок (або масив) для "відображення" селектора сторінки.
Вхідні дані
2 натуральних числа
- номер поточної сторінки
- кількість сторінок
Гарантується, що 1 <= поточний <= загальний.
Вихід
Виведіть рядок або масив, які представляють інтерфейс для селекторів сторінки.
- Якщо виводиться як рядок, слід використовувати один пробіл (U + 0020) між кожною сторінкою.
- Якщо виводиться як масив, масив повинен давати такий самий результат, що і рядок після перетворення кожного елемента в рядок і з'єднувати їх з єдиним пробілом.
- Три точки (
...
) не є обов'язковими для виведення масиву.
- Три точки (
Деталі
- Якщо current == 1, жодне "prev" не виводиться, інакше "prev" вийде першим.
- Якщо current == total, "next" не буде виведено, інакше "next" стане останнім.
- Перша сторінка (1) і остання сторінка (загальна) завжди повинні виводитися.
- Поточна сторінка, (поточна - 1) сторінка, (поточна - 2) сторінка, (поточна + 1) сторінка, (поточна + 2) сторінка повинна виводитися до тих пір, поки вони знаходяться в діапазоні [1..total].
- Ніякі інші сторінки сторінок не повинні виводитися.
- Сторінки, що виводяться, повинні бути відсортовані у порядку зростання.
- Вихідні дані не повинні містити повторюваних номерів сторінок.
- Поточну сторінку слід виділити, загорнувши її в пару
[]
. - Якщо між будь-якими сусідами є проміжок,
...
слід вставити три крапки ( ).
Випробування
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
Правила
- Це код-гольф, виграє найкоротший код!
4,7
тестовий випадок буде дуже вдячний - запевнив би, що обидва граничні випадки, що виключають еліпси, можуть бути одночасно виконані
4 , 6
як тестовий випадок. Подібно до3, 6
випадку, але крапки не додаються зліва.