È comune dover creare un'interfaccia di selezione della pagina. In genere si presenta così:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Ciò significa che ci sono in totale 173 pagine e attualmente sei sulla 5a pagina.
Questa sfida richiede di prendere il numero totale di pagine e il numero di pagina corrente come input e di generare una stringa (o un array) per "visualizzare" il selettore di pagine.
Ingresso
2 numeri interi positivi
- numero di pagina corrente
- conteggio delle pagine
È garantito che 1 <= corrente <= totale.
Produzione
Emette una stringa o un array che rappresenta l'interfaccia utente per i selettori di pagina.
- Se viene emesso come stringa, è necessario utilizzare un singolo spazio (U + 0020) tra ciascuna pagina.
- Se l'output è un array, l'array dovrebbe produrre lo stesso risultato della stringa dopo aver convertito ogni elemento in stringa e unirli con un singolo spazio.
- I tre punti (
...
) non sono opzionali per l'output di array.
- I tre punti (
Dettagli
- Se corrente == 1, non verrà emesso alcun "precedente", altrimenti verrà visualizzato "precedente".
- Se current == totale, non verrà emesso alcun "successivo", altrimenti "successivo" arriva per ultimo.
- La prima pagina (1) e l'ultima (totale) devono sempre essere emesse.
- La pagina corrente, la pagina (corrente - 1), la pagina (corrente - 2), la pagina (corrente + 1), la pagina (corrente + 2) devono essere emesse purché siano nell'intervallo di [1..totale].
- Nessun altro numero di pagine deve essere emesso.
- Le pagine generate devono essere ordinate in ordine crescente.
- L'output non deve contenere numeri di pagina duplicati.
- La pagina corrente deve essere evidenziata avvolgendola in una coppia di
[]
. - Se è presente uno spazio tra i vicini, è
...
necessario inserire tre punti ( ).
Casi test
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
Regole
- Questo è code-golf, vince il codice più corto!
4,7
caso di test sarebbe molto apprezzato - assicurerebbe che entrambi i casi limite che escludono le ellissi possano essere incontrati contemporaneamente
4 , 6
come test case. Simile al3, 6
caso, ma assicura che i punti non vengano aggiunti sul lato sinistro.