Bloquear orden aleatorio
La ordenación aleatoria de bloques es un método (más bien artificial) de ordenar una lista. Funciona de la siguiente manera, ilustrada por un ejemplo.
[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]
La partición en bloques contiguos se puede elegir arbitrariamente. Sin embargo, no todas las opciones de bloques producirán una lista ordenada al final:
[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]
Si todos los bloques tienen longitud 1, o si solo hay un bloque, entonces el resultado se ordenará, por supuesto. Pero estos son casos bastante extremos. En este desafío, su tarea es encontrar un equilibrio entre el número de bloques y la longitud máxima de un bloque.
La tarea
Su entrada es una lista no vacía de enteros L , tomada en cualquier formato razonable. Su salida será el número entero más pequeño N tal que L puede ser bloque aleatoria ordenadas de modo que el número de bloques y la longitud de cada bloque están en más N .
El conteo de bytes más bajo en cada idioma gana. Aplican reglas estándar de código de golf .
Casos de prueba
[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