Blok karıştırma sıralaması
Blok shuffle sıralama listesini sıralamak bir (daha doğrusu yapay) yöntemidir. Bir örnekle gösterildiği gibi aşağıdaki gibi çalışır.
[6, 1, 0, 3, 2, 4, -2, -1]
Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
Sort each block
[6][0, 1][2, 3, 4][-2, -1]
Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]
Bitişik bloklara bölünme keyfi olarak seçilebilir. Ancak, tüm blok seçenekleri sonunda sıralı bir liste vermeyecektir:
[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]
Tüm blokların uzunluğu 1 ise veya sadece bir blok varsa, sonuç elbette sıralanır. Ancak bunlar oldukça aşırı durumlar. Bu meydan okumada, göreviniz blok sayısı ile bir bloğun maksimum uzunluğu arasında bir denge bulmaktır.
Görev
Girişiniz , herhangi bir makul biçimde alınmış, L olmayan tam sayıların bir listesidir . İşletme çıkış küçük tamsayı olacaktır N , öyle ki L blok rasgele blok sayısı ve her blok uzunluğu en fazla olacak şekilde kriteri olabilir N .
Her dilde en düşük bayt sayısı kazanır. Standart kod golf kuralları geçerlidir.
Test senaryoları
[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4