Напишіть функцію, яка приймає набір цілих чисел і друкує кожну перестановку набору, а своп виконується між кожним кроком
Вхідні дані
набір цілих чисел, наприклад (0, 1, 2)
Вихідні дані
список перестановок і свопів у форматі (set) (swap) (set) ...
Тестовий випадок
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) недійсний)
Це код-гольф, тому найкоротший код виграє!
(3, 1, 4)
або так - читаючи його в перший раз, я дуже заплутався, тому що перший swap 0,1
поміняв елементи, 0,1
але й індекси 0,1
, але потім наступний своп не пішов за цією схемою. Я також вкажу вам на пісочницю, де ви можете розмістити виклики та отримати зворотній зв'язок, перш ніж розміщувати їх на головному сайті.