Il est courant de devoir créer une interface de sélection de page. Cela ressemble typiquement à ceci:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Ce qui signifie qu'il y a au total 173 pages et que vous êtes actuellement à la 5ème page.
Ce défi nécessite que vous preniez le nombre total de pages et le numéro de la page actuelle en entrée, puis que vous produisiez une chaîne (ou un tableau) pour "afficher" le sélecteur de page.
Contribution
2 entiers positifs
- numéro de page actuel
- nombre de pages
Il est garanti que 1 <= actuel <= total.
Sortie
Affiche une chaîne ou un tableau représentant l'interface utilisateur pour les sélecteurs de page.
- Si la sortie est sous forme de chaîne, un seul espace (U + 0020) doit être utilisé entre chaque page.
- En cas de sortie sous forme de tableau, le tableau doit produire le même résultat que la chaîne après avoir converti chaque élément en chaîne et les joindre avec un seul espace.
- Les trois points (
...
) ne sont pas facultatifs pour la sortie de tableau.
- Les trois points (
Détails
- Si current == 1, aucun "prev" ne sera émis, sinon, "prev" vient en premier.
- Si courant == total, aucun "suivant" ne sera émis, sinon, "suivant" sera le dernier.
- La première page (1) et la dernière page (total) doivent toujours être imprimées.
- La page en cours, page (actuelle - 1), page (en cours - 2), page (en cours + 1), (page en cours + 2) doit être sortie tant qu'ils sont dans la plage de [1..total].
- Aucun autre numéro de page ne doit être sorti.
- Les pages imprimées doivent être triées par ordre croissant.
- La sortie ne doit pas contenir de numéros de page en double.
- La page en cours doit être mise en évidence en l’enveloppant dans une paire de
[]
. - S'il y a un espace entre les voisins, trois points (
...
) doivent être insérés.
Cas de 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
Règles
- C'est du code-golf, le code le plus court gagne!
4,7
cas test serait grandement apprécié - garantirait que les deux cas limites qui excluent les ellipses puissent être respectés simultanément
4 , 6
tant que test. Semblable au3, 6
cas, mais assure que les points ne sont pas ajoutés sur le côté gauche.