บทนำ
พีชคณิตเรียงลำดับของรายการที่มีองค์ประกอบnสามารถกำหนดหมายเลขได้ตั้งแต่ 0 ถึงn ! - 1. ตัวอย่างเช่น 3! = 6 พีชคณิต(1,2,3)
จะ(1,2,3)
, (1,3,2)
, (2,1,3)
, (2,3,1)
, ,(3,1,2)
(3,2,1)
เมื่อการเรียงสับเปลี่ยนถูกนำไปใช้กับรายการองค์ประกอบของมันจะเรียงลำดับตามลำดับเดียวกับตัวเลขในการเรียงลำดับ ยกตัวอย่างเช่นการใช้การเปลี่ยนลําดับ(2,3,1)
การอัตราผลตอบแทนl = (a,b,c)
(l[2],l[3],l[1]) = (b,c,a)
อินเวอร์สของการเปลี่ยนแปลงนั้นหมายถึงการเรียงสับเปลี่ยนที่ย้อนกลับการดำเนินการนี้คือการใช้การเปลี่ยนแปลงและจากนั้นอินเวอร์สของมัน (หรือกลับกัน) ไม่ได้ปรับเปลี่ยนอาร์เรย์ ยกตัวอย่างเช่นค่าผกผันของการ(2,3,1)
เป็น(3,1,2)
ตั้งแต่การใช้ที่อัตราผลตอบแทน(b,c,a)
(a,b,c)
นอกจากนี้การเปลี่ยนแปลงผกผันของนำไปใช้กับการเปลี่ยนแปลงของตัวเองผลตอบแทนถัวเฉลี่ยเลข 1 ... n ยกตัวอย่างเช่นการใช้(3,1,2)
เพื่อให้อัตราผลตอบแทน(2,3,1)
(1,2,3)
ตอนนี้เรากำหนดฟังก์ชั่นrevind ( x ) เป็นดัชนีของการเปลี่ยนแปลงผกผันของการเปลี่ยนแปลงที่มีดัชนีx (นี่คือA056019หากคุณสนใจ)
เนื่องจากการเรียงสับเปลี่ยนกับดัชนีฉันเพียงแก้ไขรายการสุดท้ายkของรายการiff 0 ≤ i < k !,เราสามารถเพิ่มองค์ประกอบจำนวนใด ๆ ไปยังจุดเริ่มต้นของรายการโดยไม่มีผลต่อrevind ( i ) ดังนั้นความยาวของรายการจึงไม่มีผลต่อผลลัพธ์
ท้าทาย
งานของคุณคือการใช้revind ( x ) คุณจะเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบที่รับค่าจำนวนเต็มไม่ใช่ค่าลบเดียวxเป็นอินพุต / อาร์กิวเมนต์และเอาต์พุต / ส่งคืนผลลัพธ์เป็นจำนวนเต็มไม่ใช่ค่าลบเดียว
อินพุตและเอาต์พุตอาจเป็นดัชนี 0 หรือดัชนี 1 แต่จะต้องสอดคล้องกันระหว่างพวกเขา
บิวด์อินที่สร้างการเรียงสับเปลี่ยนโดยดัชนีส่งคืนดัชนีของการเปลี่ยนแปลงหรือค้นหาการเปลี่ยนแปลงการผกผันถูกแบน (บิวบินอินที่สร้างการเรียงสับเปลี่ยนทั้งหมดหรือการเปลี่ยนลำดับครั้งต่อไปจะได้รับอนุญาต)
ใช้กฎมาตรฐานของกอล์ฟ
ตัวอย่าง
ตัวอย่างด้านล่างเป็นดัชนี 0
Input Output
0 0
1 1
2 2
3 4
4 3
5 5
6 6
13 10
42 51
100 41
1000 3628
2000 3974
10000 30593
100000 303016
การใช้งานอ้างอิง (Python 3)
def revind(n):
from math import factorial
from itertools import permutations, count
l = next(filter(lambda x: factorial(x) > n, count(1)))
pms = list(permutations(range(l)))
return [k for k in range(len(pms)) if tuple(pms[n][i] for i in pms[k]) == pms[0]][0]
(a,b,c)
อย่างชัดเจน โปรดระบุคำอธิบายที่ถูกต้องว่าการเปลี่ยนรูปแบบอินเวอร์สคืออะไร
Ụ
(เกรดขึ้น) ซึ่งเรียงลำดับดัชนีของอาร์เรย์ตามค่าที่สอดคล้องกัน สิ่งนี้เกิดขึ้นเมื่อเปลี่ยนการเรียงสับเปลี่ยนของ1, …, nแต่มันไม่ได้ผลสำหรับการเรียงสับเปลี่ยนอื่น ๆ เป็นที่Ụ
ต้องห้ามในตัว?