Здравствуйте, изучаю c# и нашел задачу с ее решение на python, нужно решение на c#

Определите метод, на вход которого подаётся список чисел в виде одной строки, метод должен сформировать результирующий список, содержащий результат расчёта для каждого элемента исходного списка сумму двух его соседних элементов. Например, если на вход подаётся список «1 3 5 6 10», то на выход ожидается список «13 6 9 15 7». Решение на питоне:

   lst=[1, 3, 5, 6, 10]
res=[]
if len(lst) != 1:
    for i in range(0,len(lst)):
        res.append(lst[(i-1)%len(lst)]+lst[(i+1)%len(lst)])
else:
    res.append(lst[0])
print res

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

Автор решения: Влад Бочкарёв
    static class Program
    {

        public static int NormalizeIndex(int index, int maxindex)
        {
            if (index < 0)
                return maxindex + index;
            return index % maxindex;
        }
        static void Main() 
        {

            string numbers = Console.ReadLine();
            var elements = numbers.Split(' ');

            for(int i = 0; i < elements.Length; i++)
            {
                Console.WriteLine(int.Parse(elements[NormalizeIndex(i-1, elements.Length)]) + int.Parse(elements[NormalizeIndex(i + 1, elements.Length)]));
            }

            Console.ReadLine();
        }
    }
→ Ссылка
Автор решения: slippyk
static void Main(string[] args)
{
    int[] originArray = { 1, 3, 5, 6, 10 };
    Console.WriteLine(string.Join(" ", originArray));
    // "1 3 5 6 10"

    int[] modifiedArray = SumNeighboringElements(originArray);
    Console.WriteLine(string.Join(" ", modifiedArray));
    // "13 6 9 15 7"

    SumNeighboringElements2(ref originArray);
    Console.WriteLine(string.Join(" ", originArray));
    // originArray = "13 6 9 15 7"

    Console.ReadKey();
}

// возвращает новый массив
public static int[] SumNeighboringElements(int[] originArray)
{
    if (originArray.Length == 1)
    {
        return originArray;
    }

    int[] modifiedArray = new int[originArray.Length];

    for (int i = 0; i < originArray.Length; i++)
    {
        modifiedArray[i] = originArray[(i - 1 + originArray.Length) % originArray.Length] + originArray[(i + 1 + originArray.Length) % originArray.Length];
    }

    return modifiedArray;
}

// изменяет текущий массив
public static void SumNeighboringElements2(ref int[] originArray)
{
    if (originArray.Length != 1)
    {
        int firstItem = originArray[0];
        int leftNeighbor = originArray[originArray.Length - 1];

        int index = 0;
        while (index < originArray.Length - 1)
        {
            int value = leftNeighbor + originArray[(index + 1 + originArray.Length) % originArray.Length];

            leftNeighbor = originArray[index];

            originArray[index] = value;

            index++;
        }

        originArray[originArray.Length - 1] = leftNeighbor + firstItem;
    }
}
→ Ссылка