Рассмотрим следующий сценарий.
У меня есть массив чисел:
[ 1,2,3,4 ]
Если бы этот массив был объединен, у меня был бы номер 1234.
Я хочу поменять местами числа, чтобы получить самое близкое большее число.
1234 станет 1243, которое станет 1324, которое станет 1342 и т. д.
Какой алгоритм мне нужно использовать, чтобы внести эти изменения в массив?
В идеале я хотел бы использовать алгоритм таким образом: (скажем, у Array есть этот алгоритм как функция, называемая пошаговым руководством)
[ 1,2,3,4].walkthrough() # gives [ 1, 2, 4, 3 ]
[ 1,2,4,3].walkthrough() # gives [ 1, 3, 2, 4 ]
список номеров продолжается:
1234
1243
1324
1342
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241