Herkes yuvalanmış listeleri sever! Bununla birlikte, bazen iç içe bir liste yapmak zordur. Daha derine yerleştirmek isteyip istemediğinize veya daha sığ yerleştirmeniz gerekip gerekmediğine karar vermelisiniz. Yani meydan okuma için bir liste "Autonest" gerekir. Bir listeyi otomatik olarak test etmek için listedeki her bir öğe çiftini karşılaştırın.
İkinci öğe daha küçükse, aralarına kapatma ve açma köşebentleri ekleyerek iki öğeyi ayırın, şöyle:
} { {2 , 1}
Örneğin,
{2, 1}
olur{2}, {1}
ve{3, 2, 1}
olur{3}, {2}, {1}
İkinci öğe aynıysa, hiçbir şeyi değiştirmeyin. Örneğin
{1, 1, 1}
, aynı kalır ve{2, 1, 1, 1}
olur{2}, {1, 1, 1}
.İkinci öğe daha büyükse, aşağıdaki her öğeyi bir seviye daha derine yuvalayın. Örneğin,
{1, 2}
olur{1, {2}}
ve{1, 2, 3}
olur{1, {2, {3}}}
Meydan okuma
Bir sayı listesi alan ve otonestleştirildikten sonra aynı listeyi döndüren bir program veya işlev yazmalısınız. Bu girdiyi dilinizin yerel liste biçiminde (veya en yakın alternatif olarak) veya dize olarak alın. Örneklerimde yaptığım gibi kıvırcık parantez kullanmak zorunda değilsiniz. Tutarlı olduğu sürece, dilinizde en doğal olan parantez türlerini kullanabilirsiniz. Listenin yalnızca tamsayı içereceğini varsayabilirsiniz. Ayrıca listenin içinde en az 2 sayı olduğunu varsayabilirsiniz. İşte bazı örnek IO:
{1, 3, 2} --> {1, {3}, {2}}
{1, 2, 3, 4, 5, 6} --> {1, {2, {3, {4, {5, {6}}}}}}
{6, 5, 4, 3, 2, 1} --> {6}, {5}, {4}, {3}, {2}, {1}
{7, 3, 3, 2, 6, 4} --> {7}, {3, 3}, {2, {6}, {4}}
{7, 3, 1, -8, 4, 8, 2, -9, 2, 8} --> {7}, {3}, {1}, {-8, {4, {8}, {2}, {-9, {2, {8}}}}}
Standart boşluklar uygulanır ve bayt cinsinden en kısa cevap kazanır!
[-100, 100]
ama devasa girdiler vermeyi düşünmüyorum.
{2, 1}
olur {2}, {1}
" Nasıl olduğunu bir seviye daha yüksek ? Bir seviye daha yüksek olurdu {2}, 1
. Sahip olduğunuz şey aynı seviyede.