เขียนฟังก์ชันหรือโปรแกรมที่ประมวลผลบล็อกข้อความและส่งคืนข้อความใหม่ โปรแกรมที่ถูกต้องที่เล็กที่สุดชนะ
แต่ละบรรทัดในบล็อกข้อความจะมีรูปแบบต่อไปนี้:
12:34,56
หมายเลขแรกคือ ID บรรทัดส่วนอีกสองหมายเลขคั่นด้วยเครื่องหมายจุลภาคเป็นการอ้างอิงถึงบรรทัดอื่น
ในข้อความอินพุตตัวเลขสามารถเป็นจำนวนเต็มใด ๆ ที่มากกว่าหรือเท่ากับ 0 ตัวเลขทั้งหมดจะเป็นทศนิยมทศนิยม ASCII ที่ไม่มีเลขศูนย์นำหน้า จะไม่มีรหัสบรรทัดที่ซ้ำกัน จะไม่มีการอ้างอิงถึง ID บรรทัดที่ไม่มีอยู่แม้ว่าอาจมี ID บรรทัดที่ไม่ได้อ้างอิง
ในข้อความเอาต์พุตบรรทัดที่มีหมายเลขต่ำสุดจะถูกย้ายไปที่จุดเริ่มต้นของบล็อกข้อความและกำหนดหมายเลขใหม่เป็น 0 การอ้างอิงใด ๆ กับบรรทัดนี้ต้องถูกอัพเดตด้วย การอ้างอิงแรกในบรรทัดนั้นต้องเป็น 0 หรือ 1 การอ้างอิงที่สองสามารถเป็น 2 ได้หากการอ้างอิงแรกคือ 1 มิฉะนั้นจะต้องเป็น 0 หรือ 1
บรรทัดทั้งหมดต้องอยู่ในลำดับขึ้นและลง (ไม่มีตัวเลขที่ข้าม) คุณสามารถมีการอ้างอิงถึงบรรทัด n เท่านั้นหากมีการอ้างอิงก่อนหน้าไปที่บรรทัด n-1 หรือ ID บรรทัดปัจจุบันคือ n ต้องไม่มีบรรทัดที่ไม่ได้อ้างอิงโดย ID บรรทัดล่างยกเว้นบรรทัด 0 บรรทัดใด ๆ ดังกล่าวจะต้องถูกลบออกก่อนเอาต์พุตสุดท้าย
คุณอาจคิดว่าข้อความที่ป้อนนั้นอยู่ในรูปแบบที่ถูกต้องเสมอ
ทดสอบอินพุต # 1:
45:73,24
78:24,78
89:24,73
73:45,3
72:3,24
3:24,24
24:3,89
จัดลำดับใหม่:
3:24,24
24:3,89
89:24,73
73:45,3
45:73,24
78:24,78
72:3,24
ลำดับที่:
0:1,1
1:0,2
2:1,3
3:4,0
4:3,1
78:1,78
72:0,1
ลบบรรทัดที่ไม่มีการอ้างอิงสำหรับเอาต์พุตสุดท้าย:
0:1,1
1:0,2
2:1,3
3:4,0
4:3,1
แน่นอนโปรแกรมของคุณไม่จำเป็นต้องทำตามคำสั่งนี้เพียงแค่สร้างผลลัพธ์ที่ถูกต้อง ผลลัพธ์จะต้องเป็นบล็อกข้อความเดียวหรือใกล้เคียงที่สุดในภาษาของคุณนั่นคือไม่มีอักขระจากเอาต์พุตโดยตรงของอักขระ คุณสามารถส่งคืนมัน (ที่ต้องการ) หรือส่งออกทั้งบล็อกโดยตรง สมมติว่าเอาต์พุตของคุณจะถูกส่งไปยังฟังก์ชันหรือโปรแกรมอื่น
ทดสอบอินพุต # 2
5:2,3
7:3,2
2:4,2
4:2,3
3:4,3
เอาท์พุท:
0:1,0
1:0,2
2:1,2
ทดสอบอินพุต # 3
7:6,3
3:9,7
9:7,3
2:9,6
6:6,7
เอาท์พุท:
0:1,2
1:3,4
2:2,3
3:2,4
4:1,3