งาน
เขียนโปรแกรมหรือฟังก์ชั่นซึ่งอินพุตเป็นรายการ / อาร์เรย์Xของจำนวนเต็มและเอาต์พุตเป็นรายการชุดของจำนวนเต็มYเช่นนั้นสำหรับแต่ละองค์ประกอบอีในแต่ละชุดY [ i ], X [ e ] = iและ ดังกล่าวว่าจำนวนขององค์ประกอบในชุดในYเท่ากับจำนวนขององค์ประกอบในX
(นี่เป็นการดำเนินการเดียวกับการย้อนกลับ hashtable / พจนานุกรมยกเว้นนำไปใช้กับอาร์เรย์แทน)
ตัวอย่าง
ตัวอย่างเหล่านี้ใช้การจัดทำดัชนีแบบ 1 แต่คุณสามารถใช้การจัดทำดัชนีแบบ 0 แทนหากคุณต้องการ
X Y
[4] [{},{},{},{1}]
[1,2,3] [{1},{2},{3}]
[2,2,2] [{},{1,2,3}]
[5,5,6,6] [{},{},{},{},{1,2},{3,4}]
[6,6,5,5] [{},{},{},{},{3,4},{1,2}]
ชี้แจง
- คุณอาจแสดงชุดเป็นรายการหากคุณต้องการ หากคุณทำเช่นนั้นลำดับขององค์ประกอบจะไม่สำคัญ แต่คุณไม่สามารถทำซ้ำองค์ประกอบได้
- คุณสามารถใช้รูปแบบ I / O ที่ไม่น่าสงสัยอย่างสมเหตุสมผล ตัวอย่างเช่นคุณสามารถแยกองค์ประกอบของชุดที่มีช่องว่างและชุดตัวเองด้วยการขึ้นบรรทัดใหม่
- Yควรจะมีความยาวที่แน่นอนและอย่างน้อยก็นานพอที่จะมีองค์ประกอบทั้งหมดของXเป็นดัชนีอาร์เรย์ อย่างไรก็ตามอาจยาวกว่าองค์ประกอบสูงสุดของX (องค์ประกอบเพิ่มเติมจะเป็นชุดว่าง)
- องค์ประกอบของXจะเป็นดัชนีอาร์เรย์ที่ถูกต้องเช่นจำนวนเต็มไม่เป็นลบหากคุณใช้การจัดทำดัชนีแบบ 0 หรือจำนวนเต็มบวกหากคุณใช้การจัดทำดัชนีแบบ 1
เงื่อนไขชัยชนะ
ในฐานะที่เป็นความท้าทายรหัส - กอล์ฟสั้นจะดีกว่า
[5,5,6,6]
และ[6,6,5,5]
อาจเหมือนกันหรือไม่
[5,5,6,6]
และ[6,6,5,5]
ไม่สามารถมีเอาต์พุตที่เหมือนกันได้ แต่ผลลัพธ์สำหรับ[5,5,6,6]
อาจมีเช่น[{},{},{},{},{2,1},{4,3}]
กัน
[{0},{0},{0},{0},{1,2},{3,4}]
เป็นผลลัพธ์ที่ถูกต้องสำหรับ[5,5,6,6]
?