В этой задаче вы должны разобрать список списков в более простой формат списка.
Этот вызов основан на моем парсере sadflak. В моем анализаторе sadflak все () удалено, заменено суммой () в начале списка, чтобы программа работала быстрее.
Чтобы разобраться в Sad-List, вы должны сделать это (вещь реализации Python, использует кортеж кортежей):
def sadlistfunc(list):
new-sadlist = [0]
for i in list:
if i == ():
new-sadlist[0]+=1
else:
new-sadlist.append(sadlistfunc(i))
Это рекурсивная функция. Для списка начните новый список, начиная с номера () из входного списка, затем остальная часть этого списка - это версии всех списков, которые не были () из входного списка, по порядку. вернуть список.
Входные данные:
Вы можете принимать входные данные в нескольких разных форматах:
- Вы можете принять это как список
- Вы можете принять это как кортеж
- вы можете принять это как строку
если вы воспринимаете это как строку, вы должны использовать несколько скобок, как показано в мозговом флаке. Вы не можете использовать символы 1 и 2
просто будь разумным
Ввод всегда будет находиться внутри одного списка, но ваша программа может предполагать наличие неявного слоя списка за пределами ввода, т. Е. () () () = (() () ()), Или она может отказаться. Примеры будут с явным внешним списком
выход:
может быть списком, кортежем или строкой, или чем угодно. Вы можете использовать любой разумный формат вывода, как и мета-консенсус.
Пример:
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]
обратите внимание, что ввод не является строгим. эти входные данные могут быть:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]
или какой-то другой разумный формат
объяснил контрольный пример:
(()()((())())())
чтобы «осквернить» это, сначала посчитаем количество ()
()() ()
( ((())()) )
3. затем мы удалим их и добавим 3 в начале
(3,((())()))
в этом списке есть один список мы опечаливаем это
((())())
Как много ()?
()
((()) )
1. убираем и добавляем 1 в начале
(1,(()))
это один список
(())
подсчитывать
()
( )
удалить и добавить счет
(1)
затем мы помещаем это обратно в свой список
(1,(1))
затем мы помещаем это обратно в свой список
(3,(1,(1)))
сделано
Это код-гольф , поэтому чем короче, тем лучше
((((())())())(())()) = [1, [1, [1, [1]], [1]]
должно быть ((((())())())(())()) = [1, [1, [1, [1]]], [1]]
.