задачка 2. книжная полка.в библиотеке на полке стоят 8 томов полного

Задачка 2. книжная полка.
в библиотеке на полке стоят 8 томов полного собрания сочинений 1-го писателя. библиотекарь обозначил их латинскими знаками от а до н в порядке выхода томов. вышла последующая последовательность: e d g h c b f a
библиотекарь решил переставить эти книжки так чтоб они шли по порядку : a b c d e f g h. за одно деянье библиотекарь может брать несколько попорядку идущих книжек, достать их с полки и, не меняя порядок следования книжек, перевернуть их и поставить на место в оборотном порядке. например если библиотекарь достанет книги H по F и перевернет их то новый порядок следования книжек будет таким: E D G F B C G H A. помогите библиотекарю упорядочить этот ряд книжек за малое число деяний

Задать свой вопрос
Любовь Абушева
Кто знает ответ
1 ответ
Беря во внимание, что 8 букв можно переставить приблизительно 40 тыщами методов, можно просто запустить поиск в ширину, сохранить для всех перестановок то, из какой строки они вышли, и позже вернуть ответ для строки abcdefgh.

Код на python 3:
from queue import Queue

to_process = Queue()
to_process.put(("edghcbfa", None))
prec =

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)

Вывод программки:
abcdefgh
edcbafgh
edcbhgfa
edbchgfa
edghcbfa
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт