Элегантная организация задач
В качестве нового менеджера проекта в быстрорастущей технологической компании вам поручают управление сложным и разнообразным списком задач. Однако этот список не является простым плоским перечнем, а представляет собой иерархическую структуру, где каждая задача может иметь несколько связанных подзадач. Задачи и подзадачи представлены во вложенном списке, где каждый элемент — либо отдельная задача (в виде строки), либо список подзадач.
Ваша задача — написать рекурсивную функцию, которая будет обходить эту иерархию и выводить всех задачи и подзадачи в том порядке, в котором они появляются во вложенном списке. Для удобочитаемости и лучшего понимания каждая подзадача должна быть сдвинута на один табулятор больше, чем ее родительская задача.
Входные данные будут представлять собой вложенный список из n задач и подзач. Каждый элемент списка — либо задача (в виде строки), либо другой список, который представляет подзадачи. Вы можете загрузить список с помощью
eval(input())
или json.loads(...)
.Программа должна выводить все задачи и подзадачи в виде строк, в том порядке, в котором они появляются в списке. Каждая подзадача должна быть сдвинута на один табулятор больше, чем ее родительская задача.
Ввод | Вывод |
["Task 1", ["Subtask 1.1", "Subtask 1.2", ["Subtask 1.2.1", "Subtask 1.2.2"], "Subtask 1.3"], "Task 2", ["Subtask 2.1"]] | Task 1
Subtask 1.1
Subtask 1.2
Subtask 1.2.1
Subtask 1.2.2
Subtask 1.3
Task 2
Subtask 2.1 |
Примечание: В выводе каждый табулятор представлен символом
\t
. Также порядок задач и подзадач в выводе должен соответствовать их порядку во входном вложенном списке.Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB