Escreva uma função que pegue um conjunto de números inteiros e imprima todas as permutações do conjunto, e a troca seja realizada entre cada etapa
Entrada
um conjunto de números inteiros, por exemplo (0, 1, 2)
Resultado
a lista de permutações e swaps no formato (conjunto) (swap) (conjunto) ...
Caso de teste
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)
Regras
- Você pode formatar o conjunto de números da maneira que desejar.
- Você pode fazer as trocas em qualquer ordem
- Você pode repetir permutações e swaps para obter um novo
- Seu código não precisa executar os swaps, a saída precisa apenas mostrar qual troca foi feita entre sua última saída e a atual
- Seu código precisa funcionar apenas para conjuntos com 2 ou mais elementos
- O conjunto fornecido não terá elementos repetitivos (por exemplo, (0, 1, 1, 2) é inválido)
Isso é código-golfe, então o código mais curto vence!
(3, 1, 4)
ou algo assim - lendo-o pela primeira vez, fiquei muito confuso porque a primeira troca 0,1
trocou os elementos, 0,1
mas também os índices 0,1
, mas depois a próxima A troca não seguiu esse padrão. Também apontarei para o Sandbox, onde é possível postar desafios e obter feedback antes de publicá-los no site principal.