フューチュラマエピソードでは、乗組員のベンダの囚人のメンバーが遺体を交換しましたが、遺体のペアが2度以上心を交換することはできません。
チャレンジ
既に発生している心身のスワップの有効なコレクションを受け入れ、それぞれの心を元の体に戻す正当なスワップのセットを出力するプログラムまたは関数を記述します。これらの心身のコレクションの識別子は、改行を含まない文字列である必要があります。入力グループには、以前にスワップしたことがない2人まで(明確に名前が付けられた)人を追加できます。(必要な証明は、追加のボディが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')]