SSブログ

επιστημηさんの「こんなのもあっていいかなーと」に触発されてみた [プログラム]

元記事:こんなのもあっていいかなーと

個人的には,initialに対しての拡張メソッドにしたいかな,というわけで作ってみました。

using System;
using System.Collections.Generic;

namespace Yuo.Extensions
{
    public static class SystemExtensions
    {
        // 初項:initial 公差:stride の等差数列
        public static IEnumerable<int> MySequence (this int initial, int stride)
        {
            for (; ; )
            {
                yield return initial;
                initial += stride;
            }
        }
        // initialから1刻み
        public static IEnumerable<int> MySequence (this int initial)
        {
            return initial.MySequence(1);
        }
    }
}

項数はTake 拡張メソッドに丸投げしたので,引数が減っています。 また0からcount - 1までは,Enumerable.Range メソッドでできるので作っていません。


比較用。

using System;
using System.Collections.Generic;
using System.Linq;
using Wankuma.Extensions;
using Yuo.Extensions;

public class Program
{
    public static void Main ()
    {
        // 初項2, 公差3 で 5つ。
        var seq = 5.Sequence(2, 3);
        var seq2 = 2.MySequence(3).Take(5);
        Console.WriteLine(seq.SequenceEqual(seq2)); // 比較

        // 要素数10コ、ぜんぶ-1で埋める
        var array = new List(10.Sequence(-1, 0));
        var array2 = new List((-1).MySequence(0).Take(10));
        Console.WriteLine(array.SequenceEqual(array2)); // 比較
    }
}

結果

True
True

コメント(0)  トラックバック(0) 

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。