Problema
Dividir datos en fragmentos de tamaño fijo es cómo los programas paginan resultados, agrupan escrituras en bases de datos o envían datos en paquetes.
Dada una lista y un tamaño de fragmento, corta la lista en fragmentos consecutivos de exactamente size valores, en orden. El último fragmento contiene lo que quede y puede ser más corto.
Implementa split_into_chunks(values, size).
Entrada
values: La lista que se va a dividir.
size: El tamaño del fragmento.
Salida
Devuelve la lista de fragmentos. Una lista vacía no da ningún fragmento.
Restricciones
0 ≤ número de valores ≤ 10,000
1 ≤ size ≤ 10,000
Ejemplos
Entrada:
size = 3
values = [1, 2, 3, 4, 5, 6, 7]
Salida esperada:
expected = [
[1, 2, 3],
[4, 5, 6],
[7]
]
Entrada:
long long size = 3;
std::vector<long long> values = {1, 2, 3, 4, 5, 6, 7};
Salida esperada:
std::vector<std::vector<long long>> expected = {
{1, 2, 3},
{4, 5, 6},
{7}
};
Entrada:
long size = 3;
long[] values = new long[] {1, 2, 3, 4, 5, 6, 7};
Salida esperada:
long[][] expected = new long[][] {
new long[] {1, 2, 3},
new long[] {4, 5, 6},
new long[] {7}
};
Explicación
Grupos de 3: [1, 2, 3] y [4, 5, 6], y el 7 sobrante forma un último bloque más corto.
Entrada:
size = 5
values = [8, 9]
Salida esperada:
expected = [
[8, 9]
]
Entrada:
long long size = 5;
std::vector<long long> values = {8, 9};
Salida esperada:
std::vector<std::vector<long long>> expected = {
{8, 9}
};
Entrada:
long size = 5;
long[] values = new long[] {8, 9};
Salida esperada:
long[][] expected = new long[][] {
new long[] {8, 9}
};
Explicación
El tamaño es mayor que la lista, así que todo cabe en un bloque: [[8, 9]].
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Las posiciones de inicio son 0, size, 2·size, etc.
Pista 2
Toma un trozo desde cada posición de inicio hasta start + size.
Pista 3
El último trozo puede ser más corto, y una lista vacía no da ningún bloque.
Complejidad esperada
tiempo O(n), espacio extra O(n)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.