หากคุณเคยสัมผัสวัฒนธรรมญี่ปุ่นหรือเอเชียตะวันออกคุณจะได้พบกับเกม Amidakuji:
ตามที่Wikipedia อธิบายมันเป็นลอตเตอรีประเภทหนึ่งที่วาดบนกระดาษและใช้ในการสุ่มเลือกการเรียงสับเปลี่ยนของรายการ N
ตัวอย่างเช่นอาจใช้เพื่อกำหนดลำดับการเริ่มต้นแบบสุ่มให้กับคน N หรือรางวัล N ให้กับคน N และอื่น ๆ
เคล็ดลับในการทำความเข้าใจว่าทำไมเกมถึงแสดงถึงการเปลี่ยนแปลงคือการตระหนักว่าทุกจังหวะในแนวนอน (เรียกว่า "ขา") สลับสองรายการเข้าที่
หน้า Wikipedia เดียวกันนี้ยังอธิบายว่าการเปลี่ยนแปลง P ของ N รายการแต่ละรายการสอดคล้องกับแผนภาพ Amidakuji จำนวนไม่ จำกัด (s) ที่มีจำนวนน้อยที่สุดในแนวนอน (ขา) เรียกว่า "ช่วงเวลา" ของการเปลี่ยนแปลงเฉพาะ p
งานของคุณคือการรับไดอะแกรม Amidakuji ที่มีเส้นแนวตั้งตั้งแต่ 2 เส้นขึ้นไป (ในตัวอย่างนี้คือ 6) ในรูปแบบนี้ (ลบด้วยตัวอักษร):
A B C D E F
| | | | | |
|-| |-| |-|
| |-| |-| |
| | | | |-|
| |-| |-| |
| | |-| |-|
| | |-| | |
|-| | |-| |
|-| |-| | |
| |-| | |-|
| | | | | |
B C A D F E
และผลิตหนึ่งในช่วงเวลาของมัน (อีกครั้งลบตัวอักษร):
A B C D E F
| | | | | |
|-| | | |-|
| |-| | | |
| | | | | |
B C A D F E
บรรทัดแรกและบรรทัดสุดท้ายที่มีตัวอักษรไม่ได้เป็นส่วนหนึ่งของรูปแบบ ฉันได้เพิ่มพวกเขาที่นี่เพื่อแสดงการเปลี่ยนแปลง นอกจากนี้ยังไม่จำเป็นที่บรรทัดแรกหรือสุดท้ายประกอบด้วยไม่มีขา|-|
, หรือว่าการส่งออกจะเป็นขนาดเล็กที่สุดเท่าที่ทำได้
ตัวอย่างอินพุตเฉพาะนี้เป็นหนึ่งในการแทน ASCII (ไม่ จำกัด ) ของแผนภาพ Amidakuji ที่ด้านบนของหน้า Wikipedia
มีกฎข้อหนึ่งที่ไม่ชัดเจนเกี่ยวกับไดอะแกรม ASCII เหล่านี้คือห้ามไม่ให้ใช้ขาข้างกัน
|-|-| <- NO, this does not represent a single swap!
Wikipedia อธิบายขั้นตอนมาตรฐานเพื่อให้ได้ไพรม์จากไดอะแกรมที่เรียกว่า "bubblization" ซึ่งประกอบด้วยการประยุกต์ใช้การทำให้เรียบง่ายต่อไปนี้ซ้ำแล้วซ้ำอีก:
1) ทางขวาไปทางซ้ายของทางแยก:
| |-| |-| |
|-| | -> | |-|
| |-| |-| |
2) กำจัดคู่:
|-| | |
|-| -> | |
ฉันไม่แน่ใจว่าคำอธิบายนั้นไม่คลุมเครือหรือไม่ รหัสของคุณอาจใช้เทคนิคนั้นหรืออัลกอริทึมอื่น ๆ ที่สร้างช่วงเวลาที่ต้องการ
รหัสที่สั้นที่สุดชนะ
ใช้กฎมาตรฐานและค่าเผื่อมาตรฐาน (หากอินพุตไม่ถูกต้องโปรแกรมของคุณอาจติดไฟรูปแบบอินพุต / เอาท์พุตอาจเป็น stdin / stdout อาร์กิวเมนต์ string รายชื่อบรรทัดเมทริกซ์ของตัวอักษรสิ่งใดก็ได้ที่ดีที่สุดสำหรับคุณ ฯลฯ )