public
anonymous / Program.cs
Created

Functional Squares program

  • Download Gist
Program.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
class Program
{
static void Main(string[] args)
{
foreach (int value in SquareOf(Integers()).Take(25))
{
Console.Out.WriteLine(value);
}
}
 
private static IEnumerable<int> SquareOf(IEnumerable<int> integers)
{
return new SquareEnumerable(integers);
}
 
static IEnumerable<int> Integers()
{
return new IntegerEnumerable();
}
 
class SquareEnumerable : IEnumerable<int>
{
IEnumerable<int> _source;
public SquareEnumerable(IEnumerable<int> source)
{
_source = source;
}
public IEnumerator<int> GetEnumerator()
{
return new SquareEnumerator(_source);
}
 
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
 
class SquareEnumerator : IEnumerator<int>
{
private IEnumerator<int> _source;
public SquareEnumerator(IEnumerable<int> source)
{
_source = source.GetEnumerator();
}
 
public int Current
{
get { return _source.Current * _source.Current; }
}
 
public void Dispose() { }
 
object IEnumerator.Current
{
get { return Current; }
}
 
public bool MoveNext()
{
return _source.MoveNext();
}
 
public void Reset()
{
_source.Reset();
}
}
 
class IntegerEnumerable : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
return new IntegerEnumerator();
}
 
IEnumerator IEnumerable.GetEnumerator()
{
return new IntegerEnumerator();
}
}
 
class IntegerEnumerator : IEnumerator<int>
{
private int _counter;
 
public int Current
{
get { return _counter; }
}
 
object IEnumerator.Current
{
get { return _counter; }
}
 
public void Dispose() { }
 
public bool MoveNext()
{
if (_counter == Int32.MaxValue) return false;
_counter++;
return true;
}
 
public void Reset()
{
_counter = 0;
}
}
 
static IEnumerator<int> Integers2()
{
return null;
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.