Futurama 에피소드 에서 승무원 의 Benda의 죄수는 서로 몸을 교환하고, 한 쌍의 몸도 마음을 두 번 이상 교환 할 수 없다는 캐치를 사용합니다 .
도전
이미 발생한 유효한 마인드 바디 스왑 모음을 허용하고 각 마인드를 원래 바디에 반환하는 합법적 인 스왑 세트를 출력하는 프로그램 또는 함수를 작성하십시오. 이러한 마인드 바디 컬렉션의 식별자는 개행 문자를 포함하지 않는 문자열이어야합니다. 입력 그룹과의 이전 스왑이없는 최대 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")]
Fry Phillip, Zoidberg John 및 Hermes Hermes가 기계 를 얼마나 적게 사용했기 때문에 Ethan과 Clyde가 필요하지 않기 때문에 이것은 유효하지 않습니다 . 이 경우에 유효한 솔루션은 다음과 같습니다.
[("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')]