private static IEnumerable<Dna> match(Dna input, Peptide peptide) { var resultMatches = new List<Dna>(); var rna1 = input.Translate(); for (uint offset = 0; offset < 3; offset++) { var pep = rna1.Transcribe(offset, true); var matches = DnaPattern.FindAllMatches(pep, peptide); foreach (uint match in matches) { var of = match * 3 + offset; var transDna = input.Substring(of, 3 * peptide.Length); resultMatches.Add(transDna); } } return resultMatches; }