Bu zorlukta, bir liste listesini daha basit bir liste biçiminde ayrıştırmalısınız.
Bu zorluk sadflak ayrıştırıcıma dayanıyor. Sadflak ayrıştırıcımda, programın daha hızlı çalışmasını sağlamak için, listenin başındaki () toplamıyla değiştirilen tüm () kaldırıldı.
Bir Sad-List'e ayrıştırmak için bunu yapmanız gerekir (python uygulama işi, bir grup tuple kullanır):
def sadlistfunc(list):
new-sadlist = [0]
for i in list:
if i == ():
new-sadlist[0]+=1
else:
new-sadlist.append(sadlistfunc(i))
Bu özyinelemeli bir işlevdir. Bir liste için, liste girişindeki () sayısıyla başlayarak yeni bir liste başlatın, ardından bu listenin geri kalanı, liste girişinden () olmayan her listenin sıralı liste sürümleridir. listeyi döndür.
Giriş:
birkaç farklı biçimde girdi alabilirsiniz:
- bir liste olarak alabilirsin
- onu bir demet olarak alabilirsin
- onu bir dize olarak alabilirsin
Eğer bir dize olarak alırsanız, beyin-flak'ta göründüğü gibi bazı braketler kullanmalısınız. 1 ve 2 karakterlerini kullanamazsınız
sadece makul ol
Girdi her zaman bir listenin içinde olacaktır, ancak programınız girdinin dışında örtük bir liste katmanı varsayabilir, yani () () () = (() () ()) veya yapmamayı tercih edebilir. Örnekler açık dış listeyle olacak
çıktı:
liste veya grup veya dize ya da her neyse olabilir. meta konsensüs gibi makul çıktı biçimlerini kullanabilirsiniz.
Misal:
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]
girişin katı olmadığını unutmayın. bu girdiler şunlar olabilir:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]
veya başka bir makul format
Açıklanan test örneği:
(()()((())())())
bunu "üzmek" için, önce () sayısını sayıyoruz
()() ()
( ((())()) )
3. sonra bunları kaldırırız ve başında 3 ekleriz
(3,((())()))
bu listede bir liste var. bunu üzüyoruz
((())())
kaç ()?
()
((()) )
1. biz kaldırmak ve başında 1 ekleyin
(1,(()))
içinde bir liste var
(())
Miktar
()
( )
kaldır ve sayı ekle
(1)
sonra bunu tekrar listeye ekledik
(1,(1))
sonra bunu tekrar listeye ekledik
(3,(1,(1)))
tamam
Bu kod golf , bu yüzden daha kısa daha iyidir
((((())())())(())()) = [1, [1, [1, [1]], [1]]
olmalı ((((())())())(())()) = [1, [1, [1, [1]]], [1]]
.