Это вопрос, на который я должен ответить:
Найдите последовательность перестановок букв, которые преобразуют последовательность MARINE (буквы пронумерованы 0..5) в последовательность AIRMEN. Транспозиции представлены парами целых чисел. Например, пара (0,1) преобразует MARINE в AMRINE. Транспозиции выполняются слева направо. Вы должны определить последовательность, написав что-то вроде этого (точки должны быть заменены числами, каждая пара в круглых скобках определяет одну перестановку, и эти перестановки выполняются последовательно слева направо):
def sequence () :
return [(..., ...), ..., (..., ...)]
Когда я запускаю программу, мне кажется, что она работает ошибка. Я не могу найти ошибку. Было бы очень полезно, если бы мне помогли. Спасибо! :)
Это мой код:
def sequence(original, target):
permutation = []
chars_original = []
for char in original:
chars_original.append(char)
#print('original: ', chars_original)
chars_target = []
for char in target:
chars_target.append(char)
#print('target: ', chars_target)
for i in range(0, len(target)):
if chars_target[i]== chars_original[i]:
continue
else:
temp_list = []
temp_list.append(i)
j = chars_original.index(chars_target[i])
temp_list.append(j)
temp = chars_original[i]
chars_original[i] = chars_original[j]
chars_original[j] = temp
a = tuple (temp_list)
permutation.append(a)
#print(permutation)
#print(chars_original)
return permutation
sequence('MARINE', 'AIRMEN')