У цьому виклику ви повинні розібрати список списків у більш простий формат списку.
Цей виклик грунтується на моєму аналізаторі sadflak. У моєму аналізаторі sadflak він видалив (() замінено сумою () s на початку списку), щоб програма запустила швидше.
Щоб розібратися в 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]]
.