예제 #1
0
 public ChaveamentoPartidas DisputarPartidas(ChaveamentoPartidas chaveamentoAtual)
 {
     if (chaveamentoAtual.Count == 1)
     {
         return(chaveamentoAtual);
     }
     else
     {
         var proximoChaveamento = new ChaveamentoPartidas(chaveamentoAtual);
         for (int i = 0; i < chaveamentoAtual.Count; i += 2)
         {
             var vencedorA = _regraVencedor.Ranquear(chaveamentoAtual[i])[0];
             var vencedorB = _regraVencedor.Ranquear(chaveamentoAtual[i + 1])[0];
             proximoChaveamento.Add(new Partida(vencedorA, vencedorB));
         }
         return(DisputarPartidas(proximoChaveamento));
     }
 }
예제 #2
0
        public ChaveamentoPartidas CriarChaveamento(Filme[] filmes)
        {
            if (filmes == null)
            {
                throw new NullReferenceException("A coleção de filmes não pode ser nula.");
            }

            if (filmes.Length % 2 != 0)
            {
                throw new ArgumentOutOfRangeException("É necessário um Nº par de filmes para gerar o chaveamento.");
            }
            var filmesOrdenados = filmes
                                  .OrderBy(f => f.Titulo)
                                  .ToList();

            var chaveamento    = new ChaveamentoPartidas();
            var totalIteracoes = filmesOrdenados.Count / 2;

            for (int i = 0; i < totalIteracoes; i++)
            {
                chaveamento.Add(new Partida(filmesOrdenados[i], filmesOrdenados[filmesOrdenados.Count - 1 - i]));
            }
            return(chaveamento);
        }