เป็นเรื่องปกติที่จะต้องสร้างส่วนต่อประสานการเลือกหน้า โดยทั่วไปจะมีลักษณะเช่นนี้:
prev 1 ... 3 4 [5] 6 7 ... 173 next
ซึ่งหมายความว่ามีทั้งหมด 173 หน้าและคุณอยู่ในหน้าที่ 5 ในขณะนี้
ความท้าทายนี้ต้องการให้คุณใช้จำนวนหน้าทั้งหมดและหมายเลขหน้าปัจจุบันเป็นอินพุตและส่งออกสตริง (หรืออาร์เรย์) เพื่อ "แสดง" ตัวเลือกหน้า
อินพุต
2 จำนวนเต็มบวก
- หมายเลขหน้าปัจจุบัน
- จำนวนหน้า
รับประกันได้ว่า 1 <= current <= total
เอาท์พุต
ส่งออกสตริงหรืออาร์เรย์ซึ่งเป็นตัวแทนของ UI สำหรับตัวเลือกหน้า
- หากเอาต์พุตเป็นสตริงควรใช้เว้นวรรค (U + 0020) ระหว่างแต่ละหน้า
- หากเอาต์พุตเป็นอาร์เรย์อาร์เรย์ควรสร้างผลลัพธ์เดียวกันกับสตริงหลังจากแปลงแต่ละรายการเป็นสตริงและเข้าร่วมกับช่องว่างเดียว
- สามจุด (
...
) ไม่ใช่ตัวเลือกสำหรับเอาต์พุตอาร์เรย์
- สามจุด (
รายละเอียด
- หากปัจจุบัน == 1 จะไม่มีการแสดงผล "prev" มิฉะนั้น "prev" จะมาก่อน
- หากปัจจุบัน == ผลรวมจะไม่มีการแสดง "ถัดไป" มิฉะนั้นจะแสดงว่า "ถัดไป" เป็นครั้งสุดท้าย
- หน้าแรก (1) และหน้าสุดท้าย (ทั้งหมด) ควรแสดงผลลัพธ์เสมอ
- หน้าปัจจุบัน (ปัจจุบัน - 1) หน้า (ปัจจุบัน - 2) หน้า (ปัจจุบัน + 1) หน้า (ปัจจุบัน +2) หน้าควรจะออกตราบใดที่อยู่ในช่วง [1..total]
- ไม่ควรแสดงหมายเลขหน้าอื่น
- หน้าที่เรียงลำดับควรเรียงตามลำดับจากน้อยไปมาก
- ผลลัพธ์ไม่ควรมีหมายเลขหน้าซ้ำกัน
[]
หน้าปัจจุบันควรจะเน้นโดยห่อไว้ในคู่ของ- หากมีช่องว่างระหว่างเพื่อนบ้านใด ๆ
...
ควรแทรกจุดสามจุด ( )
กรณีทดสอบ
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
กฎระเบียบ
- นี่คือรหัส - กอล์ฟรหัสที่สั้นที่สุดชนะ!
4,7
กรณีทดสอบจะได้รับการชื่นชมอย่างมาก - จะประกันว่าทั้งสองกรณีขอบเขตที่แยกออกจากจุดไข่ปลาอาจจะพบพร้อมกัน
4 , 6
เป็นกรณีทดสอบ คล้ายกับ3, 6
เคส แต่ให้แน่ใจว่าจุดจะไม่ถูกเพิ่มทางด้านซ้าย