Bu zorluk, Mathematica.SE konusundaki bir sorudan esinlenmiştir .
Diyelim ki bazı keyfi yapıların iç içe geçmiş bir listesi / dizisi var (her seviyedeki listelerin mutlaka aynı uzunlukta olması gerekmez). Basit olması için, düğümlerin negatif olmayan tamsayılar veya boş diziler olduğunu varsayacağız. Örnek olarak
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
Bazen bu listeyi düzleştirmek, düğümlerin bazı manipülasyonlarını gerçekleştirmek için örneğin
--> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7]
--> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]
Ama sonunda, aslında orijinal yapıyı korumak istiyorsunuz, bu yüzden bunu tekrar açmak istiyorsunuz.
--> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]]
Göreviniz bu son adımı gerçekleştirmek.
Sonuçta istenen yapıyı temsil eden iç içe geçmiş bir tamsayı olmayan negatif tamsayı listesi ve istenen değerleri temsil eden düz olmayan bir tamsayı listesi göz önüne alındığında, düz listeyi yapılandırılmış liste biçiminde yeniden şekillendirir. Her iki listenin de aynı sayıda tam sayı içerdiğini varsayabilirsiniz.
Her zamanki gibi geçersiz girdiyle uğraşmak zorunda değilsiniz (örneğin ikinci liste düz değil, girdi sözdizimsel olarak bozuk, düğüm gibi tamsayılar yok, vb.). Giriş dizilerini kodunuzda değiştirebilirsiniz.
STDIN, komut satırı argümanı veya işlev argümanı üzerinden girdi alarak bir işlev veya program yazabilir ve sonucu döndürebilir veya STDOUT'a yazdırabilirsiniz. Girdi ve çıktıyı temsil etmek için herhangi bir uygun liste veya dize biçimini kullanabilirsiniz (biçim belirsiz ve girdi önceden işlenmediği sürece). Ayrıca, her iki girişin biçiminin de tutarlı olması gerekir (bu nedenle örneğin bir girişi dize, diğerini liste olarak alamazsınız). Giriş listelerini her iki sırada da alabilirsiniz, ancak lütfen cevabınızdaki giriş yöntemini tam olarak belirtin.
Bir kısıtlama daha: normal ifadeler kullanmamalısınız. Bu bir dizi manipülasyon mücadelesi değil, bir dizi manipülasyon mücadelesidir.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.
Test Kılıfları
Structure Values Result
[[[1,3],2],[1,4],12,[[0,0],[5,[7]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[[[0,0],0],[0,0],0,[[0,0],[0,[0]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[] [] []
[[]] [] [[]]
[0,1,2,3] [5,1,0,5] [5,1,0,5]
[[[[[0]]]]] [123] [[[[[123]]]]]
[0,[1,[]],[[]],[2,3],[]] [1,6,1,8] [1,[6,[]],[[]],[1,8],[]]