ความท้าทาย
สำหรับชุดจำนวนเต็ม n จำนวนที่กำหนดให้เขียนโปรแกรมที่จะส่งออกดัชนี lexicographic
กฎระเบียบ
- อินพุตจะต้องเป็นชุดของจำนวนเต็มที่ไม่เป็นลบเท่านั้นคั่นด้วยช่องว่าง
- คุณควรส่งออกดัชนี lexicographic (ช่วง 0 ถึง n! -1 รวม) ของการเปลี่ยนแปลง
- ไม่สามารถใช้ไลบรารีการเปลี่ยนแปลงหรือการแปลงร่างภายในได้
- คุณไม่สามารถสร้างชุดการเรียงสับเปลี่ยนหรือชุดย่อยของการเรียงสับเปลี่ยนของอินพุตเพื่อช่วยคุณค้นหาดัชนี
- นอกจากนี้คุณยังไม่สามารถเพิ่มหรือลดการเปลี่ยนแปลงที่ให้กับการเปลี่ยนลำดับถัดไป / ก่อนหน้า (การทำพจนานุกรม)
- คะแนนโบนัส (-10 ไบต์) หากคุณพบวิธีที่จะทำให้เสร็จโดยไม่ต้องใช้แฟกทอเรียล
- รันไทม์ควรน้อยกว่า 1 นาทีสำหรับ n = 100
- รหัสที่สั้นที่สุดนับเป็นไบต์ชนะ
- ผู้ชนะที่ได้รับเลือกวันอังคาร (22 กรกฎาคม 2014)
เพิ่มเติมเกี่ยวกับการเรียงสับเปลี่ยน
- http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html
- การดำเนินการกลุ่มการเปลี่ยนแปลง
- http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html
ตัวอย่าง
0 1 2 --> 0
0 2 1 --> 1
1 0 2 --> 2
1 2 0 --> 3
2 0 1 --> 4
2 1 0 --> 5
0 1 2 3 4 5 6 7 --> 0
0 1 2 3 4 5 7 6 --> 1
0 1 2 3 4 6 5 7 --> 2
1 3 5 17 --> 0
781 780 779 13 --> 23
81 62 19 12 11 8 2 0 --> 40319
195 124 719 1 51 6 3 --> 4181