У епізоді " Футурама " члени екіпажу "В'язень Бенди " обмінюються тілами один з одним, із тим, що жодна пара тіл не може змінювати розум не один раз.
Виклик
Напишіть програму або функцію, яка приймає дійсну колекцію змін, що вже відбулися, і виводить законний набір свопів, які повертають кожен розум до його початкового тіла. Ідентифікатори цих колекцій душевного тіла повинні бути рядками, які не містять нових рядків. Ви можете додати до двох (чітко названих) людей, які не мали попередніх свопів до групи вводу. (Доказ того, що вам потрібно лише щонайменше 2 додаткові органи) Однак потрібно додати мінімальну кількість людей, необхідних для вирішення проблеми.
Вхід і вихід можуть мати будь-яку чітку форму, однак жодна додаткова інформація не може зберігатися ні в одному. Ви можете припустити, що це завжди дійсно. Це кодовий гольф, тож переможцем стає подання з найменшими байтами.
Приклади
[('A','B'),('C','D')] -> [('A','C'),('B','D'),('A','D'),('B','C')]
['A','B'] -> ['C','D','A','C','B','D','A','D','B','C']
[('A','B'),('C','D'),('A','C'),('A','D')] -> [('B', 'E'), ('A', 'E'), ('C', 'B'), ('C', 'E')]
"A\nB\nC\nD\n" -> "A\nC\nB\nD\nA\nD\nB\nC\n"
Той із шоу:
[("Amy","Hubert"),("Bender","Amy"),("Hubert","Turanga"),("Amy","Wash Bucket"),("Wash Bucket","Nikolai"),("Phillip","John"),("Hermes","Turanga")]
Наведене нижче рішення шоу недійсне:
[("Clyde","Phillip"),("Ethan","John"),("Clyde","John"),("Ethan",Phillip"),("Clyde","Hubert"),("Ethan","Wash Bucket"),("Clyde","Leela"),("Ethan","Nikolai"),("Clyde","Hermes"),("Ethan","Bender"),("Clyde","Amy"),("Ethan","Hubert"),("Clyde","Wash Bucket")]
Це недійсно, тому що Етан та Клайд непотрібні через те, як мало Фрі Філліп, Джон Зойдберг та Гермес Гермес використовували машину. Дійсне рішення для цього випадку подано нижче:
[("Philip","Hubert"),("John","Wash Bucket"),("Philip","Turanga"),("John","Nikolai"),("Philip","Hermes"),("John","Bender"),("Philip","Amy"),("John","Hubert"),("Philip","Wash Bucket")]
Зауважте, що на будь-який дійсний вклад є явно багато можливих відповідей. Будь-яка дійсна.
[('Nikolai', 'Phillip'), ('Nikolai', 'Hubert'), ('Nikolai', 'Turanga'), ('Nikolai', 'Bender'), ('Phillip', 'Amy'), ('John', 'Wash Bucket'), ('Nikolai', 'John'), ('Phillip', 'Wash Bucket'), ('Hubert', 'John'), ('Bender', 'Hermes')]