Использование yield return - C#
Формулировка задачи:
Здравствуйте, нужна ваша помощь.
Задание:
Необходимо реализовать функцию ZipSum с использованием yield return, которая принимает на вход две последовательности целых чисел и возвращает последовательность, состоящую из попарных сумм их элементов. Можно считать, что входные последовательности одинаковой длины.
Дан такой код:
И дана заготовка функции, которую необходимо дописать:
Ожидаемый вывод:
1
2 4
6 6 4
public static void Main()
{
Console.WriteLine(string.Join(" ", ZipSum(new[] { 1 }, new[] { 0 })));
Console.WriteLine(string.Join(" ", ZipSum(new[] { 1, 2 }, new[] { 1, 2 })));
Console.WriteLine(string.Join(" ", ZipSum(new int[0], new int[0])));
Console.WriteLine(string.Join(" ", ZipSum(new[] { 1, 3, 5 }, new[] { 5, 3, -1 })));
}private static IEnumerable<int> ZipSum(IEnumerable<int> first, IEnumerable<int> second)
{
var e1 = first.GetEnumerator();
var e2 = second.GetEnumerator();
while(...)
...
}Решение задачи: «Использование yield return»
textual
Листинг программы
private static IEnumerable<int> ZipSum(IEnumerable<int> first, IEnumerable<int> second)
{
var e1 = first.GetEnumerator();
var e2 = second.GetEnumerator();
while (e1.MoveNext())
{
e2.MoveNext();
yield return e1.Current + e2.Current;
}
}