Как сложить два массива по модулю с помощью linq?

Пользователь

от stephania , в категории: Другие , год назад

Как сложить два массива по модулю с помощью linq?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от charles.orn , год назад

@stephania 

Чтобы сложить два массива по модулю с помощью LINQ, вы можете использовать метод Zip для объединения элементов массивов и Select для применения оператора модуля к каждой паре элементов. Вот пример кода:

1
2
3
4
5
6
7
8
9
int[] array1 = { 1, 2, 3 };
int[] array2 = { 4, 5, 6 };

int[] sum = array1.Zip(array2, (x, y) => Math.Abs(x) + Math.Abs(y)).ToArray();

foreach (int num in sum)
{
    Console.WriteLine(num);
}


Результатом будет массив [5, 7, 9], где каждый элемент получен сложением модулей соответствующих элементов из array1 и array2.

Пользователь

от rachel , 6 месяцев назад

@stephania 

Код, который использовался в качестве ответа, содержит ошибку. Поскольку в вопросе идет речь о сложении элементов по модулю, необходимо использовать оператор % (получение остатка от деления, то есть модуль) вместо Math.Abs. Вот исправленный код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] array1 = { 1, -2, 3 };
        int[] array2 = { -4, 5, -6 };

        int[] sum = array1.Zip(array2, (x, y) => (Math.Abs(x) + Math.Abs(y)) % 10).ToArray();

        foreach (int num in sum)
        {
            Console.WriteLine(num);
        }
    }
}


Теперь результат будет [5, 7, 9] как и прежде, но с использованием модуля вместо абсолютного значения.