Es común tener que hacer una interfaz de selección de página. Normalmente se ve así:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Lo que significa que hay 173 páginas en total, y actualmente estás en la quinta página.
Este desafío requiere que tome el número total de páginas y el número de página actual como entrada, y envíe una cadena (o una matriz) para "mostrar" el selector de página.
Entrada
2 enteros positivos
- número de página actual
- recuento de páginas
Se garantiza que 1 <= actual <= total.
Salida
Genere una cadena o una matriz que represente la interfaz de usuario para los selectores de página.
- Si se genera como una cadena, se debe usar un solo espacio (U + 0020) entre cada página.
- Si se genera como una matriz, la matriz debería producir el mismo resultado que la cadena después de convertir cada elemento en una cadena y unirlos con un solo espacio.
- Los tres puntos (
...
) no son opcionales para la salida de la matriz.
- Los tres puntos (
Detalles
- Si actual == 1, no se generará "prev", de lo contrario, "prev" es lo primero.
- Si actual == total, no se generará "siguiente", de lo contrario, "siguiente" es el último.
- La primera página (1) y la última página (total) siempre deben imprimirse.
- La página actual, la página (actual - 1), la página (actual - 2), la página (actual + 1), la página (actual + 2) deben salir siempre que estén en el rango de [1..total].
- No se deben generar otros números de páginas.
- Las páginas enviadas deben clasificarse en orden ascendente.
- La salida no debe contener números de página duplicados.
- La página actual debe resaltarse envolviéndola en un par de
[]
. - Si hay un espacio entre los vecinos, se
...
deben insertar tres puntos ( ).
Casos de prueba
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
Reglas
- Este es el código de golf, ¡el código más corto gana!
4,7
caso de prueba sería muy apreciado, aseguraría que los dos casos límite que excluyen elipses puedan cumplirse simultáneamente
4 , 6
como un caso de prueba. Similar al3, 6
caso, pero asegura que no se agreguen puntos en el lado izquierdo.