Nesse desafio, você deve analisar uma lista de listas em um formato de lista mais simples.
Esse desafio é baseado no meu analisador sadflak. No meu analisador sadflak, todos os () foram removidos, substituídos pela soma dos () s no início da lista, para acelerar a execução do programa.
Para analisar uma Sad-List, você precisa fazer isso (coisa de implementação em python, usa uma tupla de tuplas):
def sadlistfunc(list):
new-sadlist = [0]
for i in list:
if i == ():
new-sadlist[0]+=1
else:
new-sadlist.append(sadlistfunc(i))
Esta é uma função recursiva. Para uma lista, inicie uma nova lista, começando com o número de () da entrada da lista e, em seguida, o restante desta lista são versões da lista triste de todas as listas que não eram () da entrada da lista, em ordem. retorne a lista.
Entrada:
você pode receber entradas em alguns formatos diferentes:
- você pode tomá-lo como uma lista
- você pode tomá-lo como uma tupla
- você pode tomá-lo como uma corda
se você a usar como uma corda, use algum conjunto de colchetes, como aparece no cérebro. você não pode usar os caracteres 1 e 2
apenas seja razoável
A entrada sempre estará dentro de uma lista, mas seu programa pode assumir uma camada de lista implícita fora da entrada, ou seja, () () () = (() () ())) ou pode optar por não. Exemplos serão com lista externa explícita
resultado:
pode ser lista ou tupla ou string, ou qualquer outra coisa. você pode usar qualquer formato de saída razoável, como é o meta consenso.
Exemplo:
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]
note que a entrada não é estrita. essas entradas podem ser:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]
ou algum outro formato razoável
caso de teste explicado:
(()()((())())())
para "entristecer" isso, primeiro contamos o número de ()
()() ()
( ((())()) )
3. depois removemos e adicionamos um 3 no início
(3,((())()))
existe uma lista nesta lista. nós entristecemos isso
((())())
quantos ()?
()
((()) )
1. removemos e adicionamos um 1 no início
(1,(()))
isso tem uma lista nele
(())
contagem
()
( )
remover e adicionar contagem
(1)
então colocamos isso de volta em sua lista
(1,(1))
então colocamos isso de volta em sua lista
(3,(1,(1)))
feito
Isso é código-golfe , então quanto menor, melhor
((((())())())(())()) = [1, [1, [1, [1]], [1]]
deveria ser ((((())())())(())()) = [1, [1, [1, [1]]], [1]]
.