Dalam tantangan ini, Anda harus menguraikan daftar daftar, ke dalam format daftar yang lebih sederhana.
Tantangan ini didasarkan pada parser sadflak saya. Dalam parser sadflak saya, semua () dihapus, diganti dengan jumlah () pada awal daftar, untuk membuat program berjalan lebih cepat.
Untuk menguraikan Sad-List, Anda harus melakukan ini (implementasi python, menggunakan tuple tuple):
def sadlistfunc(list):
new-sadlist = [0]
for i in list:
if i == ():
new-sadlist[0]+=1
else:
new-sadlist.append(sadlistfunc(i))
Ini adalah fungsi rekursif. Untuk daftar, mulailah daftar baru, mulai dengan jumlah () dari input daftar, kemudian daftar ini adalah versi sedih-daftar setiap daftar yang bukan () dari input daftar, secara berurutan. kembalikan daftar.
Memasukkan:
Anda dapat mengambil input dalam beberapa format berbeda:
- Anda dapat menganggapnya sebagai daftar
- Anda bisa menganggapnya sebagai tuple
- Anda dapat menganggapnya sebagai string
jika Anda menganggapnya sebagai string, Anda harus menggunakan beberapa tanda kurung, seperti yang ditampilkan di brain-flak. Anda tidak boleh menggunakan karakter 1 dan 2
masuk akal saja
Input akan selalu berada di dalam satu daftar, tetapi program Anda dapat mengasumsikan lapisan daftar implisit di luar input, yaitu () () () = (() () () ()), atau mungkin memilih untuk tidak melakukannya. Contohnya akan dengan daftar luar eksplisit
keluaran:
mungkin daftar atau tupel atau string, atau apa pun. Anda dapat menggunakan format output apa pun yang masuk akal, seperti konsensus meta.
Contoh:
(()()()) = [3]
(((()))) = [0,[0,[1]]]
((())()(())) = [1, [1], [1]]
() = invalid input, if the outside bracket is explicit.
((((())())())(())()) = [1, [1, [1, [1]]], [1]]
perhatikan bahwa input tidak ketat. input ini bisa berupa:
[[],[],[]]
[[[[]]]]
[[[]],[],[[]]]
[]
[[[[[]],[]],[]],[[]],[]]
atau format lain yang masuk akal
menjelaskan test case:
(()()((())())())
untuk "membuat sedih" ini, pertama kita hitung jumlah ()
()() ()
( ((())()) )
3. lalu kita hapus ini, dan tambahkan 3 di awal
(3,((())()))
ada satu daftar dalam daftar ini. kami sedih ini
((())())
berapa banyak ()?
()
((()) )
1. kami menghapus dan menambahkan 1 di awal
(1,(()))
ini memiliki satu daftar di dalamnya
(())
menghitung
()
( )
hapus dan tambahkan hitungan
(1)
lalu kita masukkan ini kembali ke daftar
(1,(1))
lalu kita masukkan ini kembali ke daftar
(3,(1,(1)))
selesai
Ini kode-golf , jadi lebih pendek lebih baik
((((())())())(())()) = [1, [1, [1, [1]], [1]]
seharusnya begitu ((((())())())(())()) = [1, [1, [1, [1]]], [1]]
.