示例#1
0
        static void Execute(string filePath)
        {
            var lines = File.ReadAllLines(filePath);

            var rankEngine = new RankEngine();

            List <Card> playerOneCards;
            List <Card> playerTwoCards;

            int playerOneHandCount = 0;
            int playerTwoHandCount = 0;

            for (int index = 0; index < lines.Count(); index++)
            {
                var playerCards = Common.ConvertInputToPlayerCards(lines[index]);

                playerCards = playerCards.Where(card => card != null);

                if (playerCards.Count() != 10)
                {
                    continue;
                }

                playerOneCards = playerCards.Take(5).ToList();
                playerTwoCards = playerCards.Skip(5).Take(5).ToList();

                var playerOneRank = rankEngine.CalculateRank(playerOneCards);
                var playerTwoRank = rankEngine.CalculateRank(playerTwoCards);

                if (playerOneRank == playerTwoRank)
                {
                    playerOneRank += rankEngine.CalculateRankOnTie(playerOneCards, playerTwoCards, playerOneRank);
                    playerTwoRank += rankEngine.CalculateRankOnTie(playerTwoCards, playerOneCards, playerTwoRank);
                }

                if (playerOneRank > playerTwoRank)
                {
                    playerOneHandCount++;
                }
                else
                {
                    playerTwoHandCount++;
                }
            }

            Console.WriteLine($"Player 1: {playerOneHandCount}");
            Console.WriteLine($"Player 2: {playerTwoHandCount}");
        }
示例#2
0
        public void CalculateRightRank()
        {
            var A = new Programmer("A");
            var B = new Programmer("B");
            var C = new Programmer("C");
            var D = new Programmer("D");
            B.Recommendations.Add(A);
            C.Recommendations.Add(A);
            A.Recommendations.Add(C);
            B.Recommendations.Add(C);
            D.Recommendations.Add(C);

            var network = new List<Programmer> { A,B,C,D };

            var rankEngine = new RankEngine();
            rankEngine.CalculateRank(network);
            Assert.That(network.Single(x=>x.Name=="D").Rank,Is.EqualTo(0.15));
        }
示例#3
0
        public void CalculateRightRank()
        {
            var A = new Programmer("A");
            var B = new Programmer("B");
            var C = new Programmer("C");
            var D = new Programmer("D");

            B.Recommendations.Add(A);
            C.Recommendations.Add(A);
            A.Recommendations.Add(C);
            B.Recommendations.Add(C);
            D.Recommendations.Add(C);

            var network = new List <Programmer> {
                A, B, C, D
            };

            var rankEngine = new RankEngine();

            rankEngine.CalculateRank(network);
            Assert.That(network.Single(x => x.Name == "D").Rank, Is.EqualTo(0.15));
        }