public Generacion GenerarGeneracionRandom() { var random = new Random(); var _matrix = Enumerable.Range(1, SizeX * SizeY) .Select((x) => random.NextDouble() < 0.20) .ToArray(); var result = new Generacion(Generaciones != null ? Generaciones.Count : 0, _matrix, SizeX, SizeY); return(result); }
// Constructor public Juego(int sizeX, int sizeY, bool isRandom = true, Generacion generacion = null) { SizeX = sizeX; SizeY = sizeY; Generaciones = new List <Generacion>(); if (isRandom && generacion == null) { GeneracionActual = GenerarGeneracionRandom(); } else { GeneracionActual = generacion; } Generaciones.Add(GeneracionActual); }
public static Generacion GetNextGeneracion(Generacion generacion) { var _matrix = ( from y in Enumerable.Range(0, generacion.SizeY) from x in Enumerable.Range(0, generacion.SizeX) let val = generacion.GetValor(x, y) let vecinosCercanos = ( from x2 in Enumerable.Range(x - 1, 3) from y2 in Enumerable.Range(y - 1, 3) where x2 >= 0 && x2 < generacion.SizeX where y2 >= 0 && y2 < generacion.SizeY where x2 != x || y2 != y where generacion.GetValor(x2, y2) select 1).Sum() select((val && (vecinosCercanos == 2 || vecinosCercanos == 3)) || (!val && vecinosCercanos == 3))) .ToArray(); return(new Generacion(0, _matrix, generacion.SizeX, generacion.SizeY));; }
// Metodos Estaticos public static bool GetValor(Generacion generacion, int x, int y) { return(generacion.Matrix[x + y * generacion.SizeX]); }