internal string Analisar(List <string> cartasDoPrimeiroJogador, List <string> cartasDoSegundoJogador)
        {
            var cartasDuplicadasDoPrimeiroJogador =
                cartasDoPrimeiroJogador
                .Select(carta => ConversorDeCarta.Converter(carta))
                .GroupBy(carta => carta.Valor)
                .Where(grupo => grupo.Count() > 1);

            var cartasDuplicadasDoSegundoJogador =
                cartasDoSegundoJogador
                .Select(carta => ConversorDeCarta.Converter(carta))
                .GroupBy(carta => carta.Valor)
                .Where(grupo => grupo.Count() > 1);

            if (cartasDuplicadasDoPrimeiroJogador.Any() && cartasDuplicadasDoSegundoJogador.Any())
            {
                var maiorCartaDoPrimeiroJogador = cartasDuplicadasDoPrimeiroJogador.Select(carta => carta.Key).Max();
                var maiorCartaDoSegundoJogador  = cartasDuplicadasDoSegundoJogador.Select(carta => carta.Key).Max();

                return(maiorCartaDoPrimeiroJogador > maiorCartaDoSegundoJogador ?
                       "Primeiro Jogador" : "Segundo Jogador");
            }

            else if (cartasDuplicadasDoPrimeiroJogador != null)
            {
                return("Primeiro Jogador");
            }

            else if (cartasDuplicadasDoSegundoJogador != null)
            {
                return("Segundo Jogador");
            }

            var cartaComMaiorNumeroDoPrimeiroJogador =
                cartasDoPrimeiroJogador
                .Select(carta => ConversorDeCarta.Converter(carta))
                .OrderBy(pesoDaCarta => pesoDaCarta).Max();

            var cartaComMaiorNumeroDoSegundoJogador =
                cartasDoSegundoJogador
                .Select(carta => ConversorDeCarta.Converter(carta))
                .OrderBy(pesoDaCarta => pesoDaCarta).Max();

            return(cartaComMaiorNumeroDoPrimeiroJogador.Valor > cartaComMaiorNumeroDoSegundoJogador.Valor ?
                   "Primeiro Jogador" : "Segundo Jogador");
        }
Beispiel #2
0
        public void DeveConverterUmaCartaParaSeuValor(string cartaEmString, double valorEsperado)
        {
            var carta = ConversorDeCarta.Converter(cartaEmString);

            Assert.Equal(valorEsperado, carta.Valor);
        }