Es ist üblich, eine Seitenauswahlschnittstelle zu erstellen. Es sieht normalerweise so aus:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Das bedeutet, dass insgesamt 173 Seiten vorhanden sind und Sie sich derzeit auf der 5. Seite befinden.
Für diese Herausforderung müssen Sie die Gesamtzahl der Seiten und die aktuelle Seitenzahl als Eingabe verwenden und eine Zeichenfolge (oder ein Array) ausgeben, um die Seitenauswahl anzuzeigen.
Eingang
2 positive ganze Zahlen
- aktuelle Seitennummer
- Anzahl der Seiten
Es ist garantiert, dass 1 <= aktuell <= gesamt.
Ausgabe
Geben Sie eine Zeichenfolge oder ein Array aus, das die Benutzeroberfläche für die Seitenauswahl darstellt.
- Bei der Ausgabe als Zeichenfolge sollte zwischen jeder Seite ein einzelnes Leerzeichen (U + 0020) verwendet werden.
- Bei der Ausgabe als Array sollte das Array dasselbe Ergebnis wie die Zeichenfolge erzeugen, nachdem jedes Element in eine Zeichenfolge konvertiert und mit einem einzelnen Leerzeichen verbunden wurde.
- Die drei Punkte (
...
) sind für die Array-Ausgabe nicht optional.
- Die drei Punkte (
Einzelheiten
- Wenn current == 1, wird kein "prev" ausgegeben, ansonsten steht "prev" an erster Stelle.
- Wenn current == total, wird kein "next" ausgegeben, andernfalls kommt "next" als letztes.
- Die erste Seite (1) und die letzte Seite (gesamt) sollten immer ausgegeben werden.
- Die aktuelle Seite, (aktuelle - 1) Seite, (aktuelle - 2) Seite, (aktuelle + 1) Seite, (aktuelle + 2) Seite sollte ausgegeben werden, solange sie im Bereich von [1..Total] liegen.
- Es sollten keine anderen Seitenzahlen ausgegeben werden.
- Die ausgegebenen Seiten sollten in aufsteigender Reihenfolge sortiert werden.
- Die Ausgabe sollte keine doppelten Seitenzahlen enthalten.
- Die aktuelle Seite sollte hervorgehoben werden, indem Sie sie in ein Paar von einwickeln
[]
. - Wenn zwischen Nachbarn eine Lücke besteht, sollten drei Punkte (
...
) eingefügt werden.
Testfälle
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
Regeln
- Das ist Code-Golf, der kürzeste Code gewinnt!
4,7
Testfall sehr dankbar - würde sicherstellen, dass beide Grenzfälle, die Ellipsen ausschließen, gleichzeitig erfüllt sind
4 , 6
als Testfall hinzugefügt zu werden. Ähnlich wie im3, 6
Fall, stellt jedoch sicher, dass keine Punkte auf der linken Seite hinzugefügt werden.