Вы можете преобразовать слово в список символов,
chars = list(word)
удалить выбранный символ из списка, используя его позицию
chars.pop(index)
, а затем добавить этот символ в разные места в этом списке
new_chars = chars[:pos] + [char] + chars[pos:]
Код:
word = 'study'
for index, char in enumerate(word):
print('char:', char)
# create list without selected char
chars = list(word)
chars.pop(index)
# put selected char in different places
for pos in range(len(chars)+1):
# create new list
new_chars = chars[:pos] + [char] + chars[pos:]
new_word = ''.join(new_chars)
# skip original word
if new_word != word:
print(pos, '>', new_word)
Результат:
char: s
1 > tsudy
2 > tusdy
3 > tudsy
4 > tudys
char: t
0 > tsudy
2 > sutdy
3 > sudty
4 > sudyt
char: u
0 > ustdy
1 > sutdy
3 > stduy
4 > stdyu
char: d
0 > dstuy
1 > sdtuy
2 > stduy
4 > stuyd
char: y
0 > ystud
1 > sytud
2 > styud
3 > stuyd
Кстати: Я бы не назвал это"swapping"
но "moving"
char. В «обмене» я бы предпочел заменить два символа - т.е. замена a
на c
в abcd
дает cbad
, а не bcad
(как в «перемещении»)