/// <summary> /// Esse é o método que ordena quais são os melhores espelhos. /// O score é calculado com base nas repetições dos mesmos colegas. Quanto menos repetições, /// melhor o score. /// </summary> /// <param name="historico"></param> /// <param name="arraysEmbaralhados"></param> /// <returns></returns> private List <Espelho> OrdenarEspelhosPorScoreDeRepeticao(Historico historico, List <string[]> arraysEmbaralhados) { List <Espelho> espelhos = new List <Espelho>(); foreach (var arrayEmbaralhado in arraysEmbaralhados) { var projecao = historico.ObterHistoricoProjetadoComNovoEmbaralhamento(arrayEmbaralhado); var score = new Espelho(projecao, arrayEmbaralhado); espelhos.Add(score); } var espelhosOrdenadosPorScore = espelhos.OrderBy(x => x.ValorScore); return(espelhosOrdenadosPorScore.ToList()); }