Как разделить массив на несколько частей, где 1 число массива - кол-во элементов, которые нужно поместить в массив?
Допустим у нас на вход идёт массив [2, 5, 6, 3, 4, 5, 8, 1, 2]. Первое число является количеством последующих элементов, которые нужно поместить в массив, а за ней следуют элементы этого массива, и возврающаются отдельные массивы.
Как его разделить на подмассивы которые будут выглядеть как [5, 6], [4, 5 8], [2]?
Ответы (1 шт):
Автор решения: Виктор
→ Ссылка
Моё предложение реализации:
public static IEnumerable<int[]> Arr(int[] data) {
for (int p = 0; p < data.Length;) {
int d = data[p++]; // Получаем размер массива
d = (d <= 0) ? 0 : d; // Если размер не корректный, то правим
int[] arr = new int[d]; // Создаём массив
for(var i = 0; i < d && p < data.Length; i++, p++)
arr[i] = data[p]; // Заполняем массив данными
yield return arr; // Результат
}
}
public static void Main()
{
var data = new int[] {2, 5, 6, 3, 4, 5, 8, 1, 2};
var source = Arr( data );
foreach (var numarr in source) {
numarr.ToList().ForEach(i => Console.Write( "{0} ", i));
Console.WriteLine();
}
}
Результат:
5 6
4 5 8
2