É comum precisar fazer uma interface de seleção de página. Normalmente, é assim:
prev 1 ... 3 4 [5] 6 7 ... 173 next
O que significa que existem totalmente 173 páginas e você está na quinta página atualmente.
Esse desafio exige que você pegue o número total de páginas e o número da página atual como entrada e imprima uma string (ou uma matriz) para "exibir" o seletor de páginas.
Entrada
2 inteiros positivos
- número da página atual
- contagem de páginas
É garantido que 1 <= atual <= total.
Resultado
Saída de uma string ou matriz que representa a interface do usuário para seletores de página.
- Se a saída for string, um único espaço (U + 0020) deve ser usado entre cada página.
- Se a saída for uma matriz, a matriz deverá produzir o mesmo resultado que a sequência depois de converter cada item em sequência e juntá-los com um único espaço.
- Os três pontos (
...
) não são opcionais para a saída da matriz.
- Os três pontos (
Detalhes
- Se atual == 1, nenhum "prev" será emitido, caso contrário, "prev" será o primeiro.
- Se atual == total, nenhum "próximo" será emitido, caso contrário, "próximo" será o último.
- A primeira página (1) e a última página (total) devem sempre ser exibidas.
- A página atual, a página (atual - 1), a página (atual - 2), a página (atual + 1) e a (atual + 2) devem ser exibidas desde que estejam no intervalo de [1..total].
- Nenhum outro número de página deve ser gerado.
- As páginas produzidas devem ser classificadas em ordem crescente.
- A saída não deve conter números de página duplicados.
- A página atual deve ser destacada envolvendo-a em um par de
[]
. - Se houver um espaço entre vizinhos, três pontos (
...
) devem ser inseridos.
Casos de teste
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
Regras
- Este é o código-golfe, o código mais curto vence!
4,7
caso de teste seria muito apreciada - asseguraria que ambas as situações limites que excluem elipses podem ser simultaneamente conheci
4 , 6
como um caso de teste. Semelhante ao3, 6
caso, mas garante que os pontos não sejam adicionados ao lado esquerdo.