Учитывая, что 8 букв можно переставить примерно 40 тысячами можно просто запустить поиск в ширину, сохранить для всех перестановок то, из какой строчки они получились, и потом восстановить ответ для строчки abcdefgh.
while not to_process.empty(): s, prev = to_process.get() if s in prec: continue for i in range(7): for j in range(i + 1, 8): if i == 0: next_s = s[j::-1] + s[j+1:] else: next_s = s[:i] + s[j:i-1:-1] + s[j+1:] if next_s not in prec: to_process.put((next_s, s)) prec[s] = prev
current = "abcdefgh" print(current) while prec[current] is not None: current = prec[current] print(current)
9
Объяснение:
ROW(C2) - эта функция определяющая порядковый номер ячейки C2 по строкам, то есть 2 (вторая строка)
COLUMN(B3) - эта функция определяющая порядковый номер ячейки В3 по столбцам, то есть 2 (В второй столбец)
SQRT(B3) - эта функция определяющая квадратный корень числа из ячейки В3=4, то есть SQRT(4)=√4=2
AVERAGE(B1; SQRT(B3)) - эта функция вычисляющая среднее арифметическое чисел B1; SQRT(B3), которое математически равно
(B1 + SQRT(B3))/2=(5+2)/2=7/2=3,5
Тогда
=ROW(C2)+AVERAGE(B1;SQRT(B3))*COLUMN(B3) = 2+3,5*2=2+7=9