Обычно нужно сделать интерфейс выбора страницы. Обычно это выглядит так:
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
случаю, но гарантирует, что точки не добавляются на левую сторону.