สมมติว่ามีลูกบอลจำนวน n ลูก ลูกเรียงเป็นแบบ 1,2,3,4,...,n. ตอนนี้ลูกบอลกลับรายการตามลำดับหรือเรียงลำดับในลักษณะ n, n-1, n-2, ......, 2, 1 ลูกบอลจะกลับรายการอีกครั้งตามลำดับ คราวนี้พวกเขาจะกลับรายการจากตำแหน่ง 1 ถึง n หรือตอนนี้ลำดับกลายเป็น n, 1, 2,....., n-1 กระบวนการย้อนกลับนี้ทำซ้ำ n ครั้ง และทุกครั้งที่ตำแหน่งเริ่มต้นถูกย้าย 1 ตำแหน่งไปทางขวา ตอนนี้เราต้องหาตำแหน่งของลูกบอลในตำแหน่ง 'index' ก่อนหลังการกลับตัว
ดังนั้น หากอินพุตเหมือนลูกบอล =5 ดัชนี =2 ผลลัพธ์จะเป็น 4 ลูกบอลเริ่มต้นคือ:1, 2, 3, 4, 5
จากนั้น
5,4,3,2,1 5,1,2,3,4 5,1,4,3,2 5,1,4,2,3
บอลในตำแหน่ง 2 ปัจจุบันอยู่ที่ตำแหน่ง 4
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าดัชนี <ค่าพื้นของ (ลูก / 2) แล้ว
- ผลตอบแทน 2 * ดัชนี + 1
- มิฉะนั้น
- ผลตอบแทน 2 *(ลูก - ดัชนี - 1)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(balls, index): if index < balls // 2: return 2 * index + 1 else: return 2 * (balls - index - 1) print(solve(5, 2))
อินพุต
5, 2
ผลลัพธ์
4