Bu soruda açıklandığı gibi :
David Morgan-Mar tarafından tasarlanan Dropsort, aslında, sıralanan, ancak orijinal öğelerin yalnızca bazılarını içeren bir liste üreten doğrusal zamanlı bir "sıralama algoritması" örneğidir. En azından ondan önceki öğelerin maksimum büyüklüğü kadar büyük olmayan herhangi bir öğe listeden çıkarılır ve atılır.
Test durumlarından birini kullanmak için, önceki ve "sıralanan" değerden daha küçük olmaları için olduğu gibi ve her ikisi de düşürülmüş bir {1, 2, 5, 4, 3, 7}
verim girişidir .{1, 2, 5, 7}
4
3
5
"Sıralama" algoritmalarını istemiyoruz, onların gerçek anlaşma olmasını istiyoruz. Bu nedenle, bir sayı listesi verilen, DropSorted listelerinin bir listesini çıkaran bir program yazmanızı istiyorum (tam bir sıralama algoritması olmak için, bu listeleri birleştirmemiz gerekir, ancak iki sıralı listenin birleştirilmesi daha önce yapıldı ve sizden tekrar yapmanı istemek hemen hemen iki soru sormaktır, bu yüzden bu soru özellikle tüm DropSort'umuzun "bölme" adımıdır).
Bununla birlikte, listelerimizin düzeni ve içeriği çok önemlidir. Programınızın çıktısı, bir DropSort çıktısına eşdeğer olmalı, ardından atılan değerlerin bir DropSort'unu takip etmelidir, vb. Yine, mevcut test takımını ödünç almak (ve iki tane daha eklemek):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
Girişin boş olmadığını kabul edebilirsiniz.
Bu kod golf , bu yüzden standart kurallar geçerli!
{3,4,5,3,4,5,3,4,5}
sonuçlanır {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?