public void NoDimensionCalcSumTest()
        {
            var array = new[] { 1, 2 };
            var iterator = new MatrixBuilder<int, int>(array.Repeat(),
                (int target, int[] locals, ref bool continuation) =>
                {
                    var localSum = locals.Sum();
                    if (localSum + target == 3)
                    {
                        continuation = false;
                        return new[] { target };
                    }
                    if (localSum + target > 3)
                    {
                        continuation = false;
                        return new int[0];
                    }

                    return array;
                });

            var actual = iterator.Select(x => string.Join("+", x)).Distinct().ToArray();
            Assert.AreEqual(3, actual.Length);
            CollectionAssert.AreEquivalent(new[] { "1+1+1", "1+2", "2+1" }, actual);
        }
示例#2
0
        public static void Repeats_the_given_sequence_lazily()
        {
            IEnumerable<int> infiniteSequence = new[] { 1, 2, 3 }.Cycle();

            var repeatedSequence = infiniteSequence.Repeat(2048);
            var firstFiveItems = repeatedSequence.Take(5);

            firstFiveItems.Should().Equal(new[] { 1, 2, 3, 1, 2 });
        }
示例#3
0
        public void Repeat_Sample() {
            EnumerableEx.Repeat(1).Take(4).Run(Console.WriteLine); // 1이 4번

            EnumerableEx.Repeat(1).Take(4).SequenceEqual(Enumerable.Repeat(1, 4));

            EnumerableEx.Repeat(2, 5).Run(Console.WriteLine); // 2가 5번

            EnumerableEx.Repeat(2, 5).SequenceEqual(EnumerableEx.Repeat(2).Take(5));


            var sequence = new[] { 3, 4 };
            sequence.Repeat().Take(4).Run(Console.WriteLine); // 3, 4, 3, 4 : "3, 4" 쌍이 반복되어 열거되는데, 4개의 요소를 취하므로

            sequence.Repeat().Take(4)
                .SequenceEqual(sequence.Repeat(2));
        }
示例#4
0
 private void ZipExample2()
 {
     var classNames = new[] { "odd", "even" };
     new[] { "A", "B", "C", "D" }
         .Zip(classNames.Repeat(), (l, i) => l + i)
         .Write();
 }