정수 세트를 취하고 세트의 모든 순열을 인쇄하는 함수를 작성하고 각 단계 사이에서 스왑을 수행하십시오.
입력
정수 세트 (예 : (0, 1, 2))
산출
형식 (세트) (스왑) (세트)의 순열 및 스왑 목록 ...
테스트 사례
Input:
(3, 1, 5)
Output:
(3, 1, 5)
(3, 1)
(1, 3, 5)
(3, 5)
(1, 5, 3)
(1, 3)
(3, 5, 1)
(3, 5)
(5, 3, 1)
(3, 1)
(5, 1, 3)
규칙
- 원하는 숫자 세트를 포맷 할 수 있습니다.
- 어떤 순서로든 스왑을 수행 할 수 있습니다
- 새로운 순열을 얻기 위해 순열과 스왑을 반복 할 수 있습니다
- 코드는 실제로 스왑을 수행 할 필요가 없으며 출력은 마지막 출력과 현재 출력 사이에 스왑이 무엇인지 보여 주기만하면됩니다.
- 코드는 2 개 이상의 요소가있는 세트에서만 작동해야합니다.
- 주어진 세트에는 반복되는 요소가 없습니다 (예 : (0, 1, 1, 2)가 유효하지 않습니다)
이것은 코드 골프이므로 가장 짧은 코드가 승리합니다!
우리는 무작위성을 사용할 수 있습니까?
—
Zgarb
모든 순열을 달성 할 때까지 임의의 스왑을로드한다는 의미입니까? 예, 그러나 모든 순열이 인쇄되었는지 확인해야합니다
—
Billyoyo
PPCG에 오신 것을 환영합니다! 좋은 첫 번째 도전. 예제를 편집하여 요소가 사용 세트와 같은 인덱스와 혼동되지 않도록 제안
—
AdmBorkBork
(3, 1, 4)
합니다. 처음 스왑 0,1
이 요소 0,1
와 인덱스를 교환 했기 때문에 처음 혼란 스러울 때 읽은 0,1
다음 다음 스왑은 그 패턴을 따르지 않았습니다. 또한 기본 사이트에 게시하기 전에 문제를 게시하고 피드백을받을 수 있는 샌드 박스를 안내합니다.
@TimmyD 제안에 감사드립니다. 예를 변경했습니다. 게시 한 직후 샌드 박스 링크를 보았습니다. 지금부터 먼저 게시하겠습니다!
—
Billyoyo
STEINHAUS - 존슨 - 트로터 알고리즘 최소 필요한 시퀀스를 생성한다.
—
Neil