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"); }
public void DeveConverterUmaCartaParaSeuValor(string cartaEmString, double valorEsperado) { var carta = ConversorDeCarta.Converter(cartaEmString); Assert.Equal(valorEsperado, carta.Valor); }