Напишите функцию, которая принимает набор целых чисел и печатает каждую перестановку набора, а перестановка выполняется между каждым шагом.
вход
набор целых чисел, например (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)
или около того - читая его в первый раз, я сильно растерялся, потому что при первом обмене 0,1
менялись не только элементы, 0,1
но и индексы 0,1
, а затем следующий своп не следовал этому образцу. Я также укажу вам на Песочницу, где вы можете публиковать вызовы и получать отзывы, прежде чем публиковать их на основном сайте.