Склеить массив с переходом на новую строку от первого элемента

Основываясь на инфу с этого сайта https://stackoverflow.com/questions/59217/merging-two-arrays-in-net

int[] front = { 1 };//данные в массиве изменил для простоты...
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();

в результате будет так:

1
5
6
7
8

Но как быть если нужен такой результат:

15
16
17
18

Не прибегая к двум форичам ?


Ответы (1 шт):

Автор решения: return

Ядро

var combined = new int[front.Length * back.Length];

for (var i = 0; i < front.Length; i++)
    for (var j = 0; j < back.Length; j++)
        combined[i * back.Length + j] = front[i] * 10 + back[j];

Вывод

for (var i = 0; i < front.Length; i++)
{
    for (var j = 0; j < back.Length - 1; j++)
    {
        Console.Write(combined[(i * back.Length + j)].ToString("D2"));
        Console.Write(' ');
    }

    Console.Write(combined[(i * back.Length + back.Length - 1)].ToString("D2"));
    Console.WriteLine();
}

Оптимизированный вывод

var buf = new char[2];

for (var i = 0; i < front.Length; i++)
{
    for (var j = 0; j < back.Length - 1; j++)
    {
        var num = combined[(i * back.Length + j)];

        if (!num.TryFormat(buf, "D2")) { /*throw*/ }

        Console.Write(buf);
        Console.Write(' ');
    }

    var num = combined[(i * back.Length + back.Length - 1)];

    if (!num.TryFormat(buf, "D2")) { /*throw*/ }

    Console.Write(buf);
    Console.WriteLine();
}
→ Ссылка