Skip to content

Instantly share code, notes, and snippets.

@einarwh
einarwh / ContinuationIncrementer.cs
Created October 4, 2011 23:15
Alternative implementation for a positive integer iterator.
public class ContinuationIncrementer : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
int n = 0;
while (true)
{
yield return ++n;
}
}
@einarwh
einarwh / Iterating.cs
Created October 4, 2011 23:25
Iterating over positive integers!
foreach (int i in new Incrementer())
{
Console.WriteLine(i);
if (i == 10) { break; }
}
@einarwh
einarwh / NumberSequence.cs
Created October 4, 2011 23:35
Simple number sequence.
public class NumberSequence : IEnumerable<int>
{
private readonly int _startValue;
private readonly int _increment;
public NumberSequence(int startValue, int increment)
{
_startValue = startValue;
_increment = increment;
}
@einarwh
einarwh / BrokenRecord.cs
Created October 4, 2011 23:44
An infinite sequence repeating another sequence.
public class BrokenRecord<T> : IEnumerable<T>
{
private readonly IEnumerable<T> _seq;
public BrokenRecord(IEnumerable<T> seq)
{
_seq = seq;
}
public IEnumerator<T> GetEnumerator()
@einarwh
einarwh / PlayBrokenRecord.cs
Created October 4, 2011 23:56
Using a broken record iterator
var words = new [] { "Hello", "dear", "friend" };
int wordCount = 0;
foreach (string s in new BrokenRecord(words))
{
Console.WriteLine(s);
if (++wordCount == 10) { break; }
}
@einarwh
einarwh / PrimeSequence.cs
Created October 5, 2011 00:10
Simple iterator for primes.
public class PrimeSequence : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
return new SimplePrimeEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
@einarwh
einarwh / OddPrimeSequence.cs
Created October 5, 2011 00:33
A slightly optimized prime sequence.
public class PrimeSequence : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
yield return 2;
var e = new OddPrimeEnumerator();
while (e.MoveNext())
{
yield return e.Current;
}
@einarwh
einarwh / OddPrimeEnumerator.cs
Created October 5, 2011 00:35
An enumerator for the odd primes (i.e. all but 2)
public class OddPrimeEnumerator : IEnumerator<int>
{
private readonly IEnumerator<int> _candidates =
new NumberEnumerator(3, 2);
private readonly IPriorityQueue<NumberEnumerator> _pq =
new IntervalHeap<NumberEnumerator>();
public int Current
{
get { return _candidates.Current; }
@einarwh
einarwh / WheelSequence.cs
Created October 5, 2011 00:54
Sequence for generating prime number candidates using wheel factorization.
public class WheelSequence : IEnumerable<int>
{
private readonly int _startValue;
private readonly IEnumerable<int> _;
public WheelSequence(int startValue,
IEnumerable<int> skipSequence)
{
_startValue = startValue;
_ = skipSequence;
@einarwh
einarwh / SkipSequence.cs
Created October 5, 2011 01:02
Simple skip sequence using a broken record iterator.
var skip = new[] { 4, 2, 4, 2, 4, 6, 2, 6 };
var skipSequence = new BrokenRecord<int>(skip);