ขอคำปรึกษาวิธีการเขียนโปรแกรม เพื่อหาคำตอบที่เป็นไปได้ในการจัดเรียงทีละคู่ แล้วแสดงคำตอบที่เป็นไปได้ครับ

กระทู้คำถาม
ขอคำปรึกษาวิธีการเขียนโปรแกรม  เพื่อหาคำตอบที่เป็นไปได้ในการจัดเรียงทีละคู่ แล้วแสดงคำตอบที่เป็นไปได้ทั้งหมดครับ
ตัวอย่าง มี n =  A B C D  
ความเป็นไปได้ในการจัดทีละคู่(r)จะได้   n!/(r!(n-r)!)   วิธี  หรือ 4!/(2!(4-2)!) = 6 วิธี    (ถ้า 5 จะได้ 10 วิธี)

>> จากโจทย์จะได้คู่อันดับ  AB AC AD BC BD CD (แปลความหมาย A ก่อน B , A มาก่อน C, A มาก่อน D, B มาก่อน C, ...)
>> คำตอบจะได้ ABCD
>> ถ้าสุ่มเงื่อนไข สลับก่อนหลัง ของคู่อันดับเข้าไป สมมุติสลับคู่แรก  เช่น BA AC AD BC BD CD  (แปลความหมาย B ก่อน A , A มาก่อน C, A มาก่อน D, B มาก่อน C, ...)
>> หาคำตอบว่า จากเงื่อนไขข้างต้น  จะได้คำตอบเป็นอะไร  ในที่นี้คำตอบคือ  BACD  
>> ถ้าสลับการมาก่อนหลังของ คู่อันดับ  ทำมากกว่า 1 คู่ เช่น  AB  CA  AD CB BD CD   จะได้คำตอบเป็นอย่างไร
รบกวนขอคำแนะนำ concept หรือ code ด้วยภาษาอะไรก็ได้ครับ
**แต่ปัญหาที่อาจเกิดขึ้นคือหากสุ่มการสลับก่อนหลังของคู่อันดับ อาจเจอ case ที่เป็นไปไม่ได้ หรือขัดแย้งกัน จะเช็ดและป้องกันอย่างไรดีครับ
แก้ไขข้อความเมื่อ
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่