Add Life as a sequence of Gneerations

This commit is contained in:
Andrew Cooper
2022-09-13 07:56:27 +10:00
parent db186bb86e
commit a9ec4e3eb1
3 changed files with 53 additions and 22 deletions

View File

@@ -0,0 +1,31 @@
using System.Collections;
internal class Life : IEnumerable<Generation>
{
private readonly IReadWrite _io;
public Life(IReadWrite io)
{
_io = io;
FirstGeneration = Generation.Create(io);
}
public Generation FirstGeneration { get; }
public string? Result { get; private set; }
public IEnumerator<Generation> GetEnumerator()
{
var current = FirstGeneration;
while (current.Result is null)
{
current = current.CalculateNextGeneration();
yield return current;
if (current.Result is null) { current.AddPieces(_io); }
}
Result = current.Result;
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}