Войти Создать аккаунт

Массовое переименование · Шаг 3 из 4

В каком порядке

План проверен, но выполнять его по порядку нельзя. 1.jpg → 2.jpg первым же шагом затрёт настоящий 2.jpg, который сам должен стать 3.jpg. А если нумеровать задом наперёд, получится круг: 1 → 3, 3 → 1 — и как ни начни, первый шаг что-нибудь затрёт.

Что сделать

Расставьте переименования так, чтобы ни одно не затёрло файл, который ещё ждёт своей очереди; круги разорвите временным именем.

Что приходит

  • plan — проверенный шагом 2 план: пары (старое, новое), новые имена все разные, и каждое либо свободно, либо это старое имя другой пары

Что вернуть

Список шагов (откуда, куда) для выполнения по одному, сверху вниз, — с временными именами там, где был круг.

Допишите функцию poryadok в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В проекте

Программа выполняет шаги ровно в этом порядке и каждый записывает в журнал — до того, как переименовать. Журнал нужен шагу 4 для отмены.

Пример

Обмен именами a.txt ⇄ b.txt кругом: оба имени заняты. Первый по плану, a.txt, уходит во временное a.txt.~1, потом b.txt становится a.txt, а временный — b.txt. Три шага: ("a.txt", "a.txt.~1"), ("b.txt", "a.txt"), ("a.txt.~1", "b.txt").

Тот же пример кодом
Вызов
poryadok([("a.txt", "b.txt"), ("b.txt", "a.txt")])
Вернуть
[('a.txt', 'a.txt.~1'), ('b.txt', 'a.txt'), ('a.txt.~1', 'b.txt')]
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.