Dalam episode Futurama, Tahanan Benda anggota kru bertukar tubuh satu sama lain, dengan tangkapan bahwa tidak ada pasangan tubuh yang dapat bertukar pikiran lebih dari satu kali.
Tantangan
Tulis sebuah program atau fungsi yang menerima kumpulan swap pikiran-tubuh yang sah yang telah terjadi, dan mengeluarkan serangkaian pertukaran hukum yang akan mengembalikan setiap pikiran ke tubuh aslinya. Pengidentifikasi untuk koleksi pikiran-tubuh ini harus berupa string yang tidak akan berisi baris baru. Anda dapat menambahkan hingga dua orang (yang diberi nama berbeda) yang belum pernah berganti ke grup input. (Bukti bahwa Anda hanya membutuhkan paling banyak 2 badan tambahan) Namun, Anda harus menambahkan jumlah minimum orang yang diperlukan untuk menyelesaikan masalah.
Input dan output dapat mengambil bentuk yang jelas, namun tidak ada informasi tambahan yang dapat disimpan. Anda mungkin menganggap itu selalu valid. Ini adalah kode golf, jadi pemenangnya adalah pengiriman dengan byte paling sedikit.
Contohnya
[('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"
Yang dari acara:
[("Amy","Hubert"),("Bender","Amy"),("Hubert","Turanga"),("Amy","Wash Bucket"),("Wash Bucket","Nikolai"),("Phillip","John"),("Hermes","Turanga")]
Solusi acara, yang diberikan di bawah ini tidak valid:
[("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")]
Ini tidak valid karena Ethan, dan Clyde tidak perlu karena seberapa sedikit Fry Phillip, Zoidberg John dan Hermes Hermes menggunakan mesin. Solusi yang valid untuk kasus ini disediakan di bawah ini:
[("Philip","Hubert"),("John","Wash Bucket"),("Philip","Turanga"),("John","Nikolai"),("Philip","Hermes"),("John","Bender"),("Philip","Amy"),("John","Hubert"),("Philip","Wash Bucket")]
Perhatikan bahwa ada banyak kemungkinan jawaban untuk setiap input yang valid. Apa pun valid.
[('Nikolai', 'Phillip'), ('Nikolai', 'Hubert'), ('Nikolai', 'Turanga'), ('Nikolai', 'Bender'), ('Phillip', 'Amy'), ('John', 'Wash Bucket'), ('Nikolai', 'John'), ('Phillip', 'Wash Bucket'), ('Hubert', 'John'), ('Bender', 'Hermes')]