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); }
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 }); }
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)); }
private void ZipExample2() { var classNames = new[] { "odd", "even" }; new[] { "A", "B", "C", "D" } .Zip(classNames.Repeat(), (l, i) => l + i) .Write(); }