トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

11-13 隣り合う二項の差

問題

整数のリストがxsが与えられたときに、隣り合う2要素の差のリストを作る関数diffを作ってください。

サンプル入力
[ 3, 1,  4, 1, 5,  9, 2, 6, 5]
サンプル出力
[-2, 3, -3, 4, 4, -7, 4,-1]


ソース

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int[] intArr = { 3, 1, 4, 1, 5, 9, 2, 6, 5 };
        foreach (var each in diff(intArr)) {
            Console.WriteLine(each);
        }
    }

    static int[] diff(int[] hikiArr)
    {
        var wkList = new List<int>();

        for (int I = 0; I <= hikiArr.GetUpperBound(0) - 1; I++) {
            wkList.Add(hikiArr[I+1] - hikiArr[I]);
        }
        return wkList.ToArray();
    }
}


実行結果

-2
3
-3
4
4
-7
4
-1


解説

C#4.0ならLINQのZip拡張メソッドが使えます。

Enumerable.Zip(TFirst, TSecond, TResult) メソッド (System.Linq)