public Dna(Dna template) { genes = new List <Gen>(); for (var i = 0; i < template.length; i++) { genes.Add(new Gen(template.genes[i])); } }
public void UseTemplate(Dna template) { sampleDna = template; for (var i = 0; i < count; i++) { pool[i].AdjustByTemplate(template); } }
public Dna Copy() { Dna result = new Dna(0); for (var i = 0; i < length; i++) { result.Add(genes[i].Copy()); } return(result); }
public bool CompatibleWith(Dna dna) { if (length == dna.length) { for (var i = 0; i < length; i++) { if (!genes[i].CompatibleWith(dna.genes[i])) { return(false); } } return(true); } return(false); }
public void AdjustByTemplate(Dna template) { if (genes.Count > template.genes.Count) { genes.RemoveRange(template.genes.Count, genes.Count - template.genes.Count); for (var i = 0; i < genes.Count; i++) { genes[i].AdjustByTemplate(template.genes[i]); } } else { for (var i = 0; i < genes.Count; i++) { genes[i].AdjustByTemplate(template.genes[i]); } for (var i = genes.Count; i < template.genes.Count; i++) { genes.Add(template.genes[i]); } } }
public Genepool(Dna template, int newCount) { pool = new List <Dna>(); sampleDna = template.Copy(); if (newCount > 0) { if (newCount > count) { for (var i = count; i < newCount; i++) { pool.Add(new Dna(template)); } } else { pool.RemoveRange(newCount, count - newCount); } } else { throw new System.InvalidOperationException($"Count can not be equal or less then 0. Requested {count}"); } }