En este desafío, debe analizar una lista de listas en un formato de lista más simple.
Este desafío se basa en mi analizador sadflak. En mi analizador sadflak, tiene todo el () eliminado, reemplazado por la suma de los () s al comienzo de la lista, para que el programa se ejecute más rápido.
Para analizar en una Lista triste, debe hacer esto (lo de la implementación de Python, usa una 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 es una función recursiva. Para una lista, comience una nueva lista, comenzando con el número de () de la entrada de la lista, luego el resto de esta lista son versiones de lista triste de cada lista que no era un () de la entrada de la lista, en orden. devolver la lista
Entrada:
Puede tomar la entrada en algunos formatos diferentes:
- puedes tomarlo como una lista
- puedes tomarlo como una tupla
- puedes tomarlo como una cuerda
Si lo toma como una cuerda, debe usar un conjunto de corchetes, como aparece en el cerebro-flak. no puedes usar los caracteres 1 y 2
solo se razonable
La entrada siempre estará dentro de una lista, pero su programa puede asumir una capa de lista implícita fuera de la entrada, es decir () () () = (() () ()), o puede elegir no hacerlo. Los ejemplos serán con lista externa explícita
salida:
puede ser list o tuple o string, o lo que sea. puede usar cualquier formato de salida razonable, como es el meta consenso.
Ejemplo:
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]
Tenga en cuenta que la entrada no es estricta. Estas entradas podrían ser:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]
o algún otro formato razonable
caso de prueba explicado:
(()()((())())())
para "entristecer" esto, primero contamos el número de ()
()() ()
( ((())()) )
3. luego los eliminamos y agregamos un 3 al comienzo
(3,((())()))
Hay una lista en esta lista. lamentamos esto
((())())
cuántos ()?
()
((()) )
1. eliminamos y agregamos un 1 al comienzo
(1,(()))
esto tiene una lista
(())
contar
()
( )
eliminar y agregar recuento
(1)
luego volvemos a poner esto en su lista
(1,(1))
luego volvemos a poner esto en su lista
(3,(1,(1)))
hecho
Este es el código de golf , así que más corto es mejor
((((())())())(())()) = [1, [1, [1, [1]], [1]]
debería ser ((((())())())(())()) = [1, [1, [1, [1]]], [1]]
.