public void Part1GamePlayWorksOnExample()
 {
     var(player1, player2) = CrabCombat.LoadGame("example1.txt");
     var(result1, result2) = CrabCombat.PlayGame(player1, player2);
     result1.ShouldBeEmpty();
     result2.ShouldBe(new List <int> {
         3, 2, 10, 6, 8, 5, 9, 4, 7, 1
     });
 }
 public void Part2GamePlayWorksOnExample()
 {
     var(player1, player2) = CrabCombat.LoadGame("example1.txt");
     var(result1, result2) = CrabCombat.PlayRecursiveGame(player1, player2);
     result1.ShouldBeEmpty();
     result2.ShouldBe(new List <int> {
         7, 5, 6, 2, 4, 1, 10, 8, 9, 3
     });
 }
 public void Part1GamePlayWorksOnRealInput()
 {
     var(player1, player2) = CrabCombat.LoadGame("input.txt");
     var(result1, result2) = CrabCombat.PlayGame(player1, player2);
     result1.ShouldBeEmpty();
     result2.ShouldBe(new List <int> {
         47, 30, 43, 22, 44, 31, 32, 17, 36, 24, 27, 9, 5, 2, 50, 37, 39, 21, 45, 15, 11, 1, 49, 41, 26, 14, 46,
         38, 25, 7, 48, 12, 23, 6, 34, 33, 16, 3, 42, 29, 40, 19, 35, 28, 20, 10, 18, 8, 13, 4
     });
 }
 public void ParserWorksOnExample()
 {
     var(player1, player2) = CrabCombat.LoadGame("example1.txt");
     player1.ShouldBe(new List <int> {
         9, 2, 6, 3, 1
     });
     player2.ShouldBe(new List <int> {
         5, 8, 4, 7, 10
     });
 }
示例#5
0
        public void Example_2()
        {
            var cc = new CrabCombat
            {
                P1 = new Queue <int>(new [] { 9, 2, 6, 3, 1 }),
                P2 = new Queue <int>(new [] { 5, 8, 4, 7, 10 })
            };

            cc.BattleRecursive(cc.P1, cc.P2);

            Assert.Equal(0, cc.P1Score);
            Assert.Equal(291, cc.P2Score);
        }
示例#6
0
        public void Example_3()
        {
            var cc = new CrabCombat
            {
                P1 = new Queue <int>(new [] { 43, 19 }),
                P2 = new Queue <int>(new [] { 2, 29, 14 })
            };

            cc.BattleRecursive(cc.P1, cc.P2);

            Assert.Equal(105, cc.P1Score);
            Assert.Equal(0, cc.P2Score);
        }
示例#7
0
        public override string First()
        {
            string        filename = GetFilename();
            List <string> input    = System.IO.File.ReadAllLines(filename).ToList();

            PRINT = false;
            CrabCombat game = new CrabCombat(input);

            game.PlayGame();

            var result = game.Score();

            return(result.ToString());
        }
示例#8
0
        public void Player_1_should_win_if_decks_reoccur()
        {
            var player1 = new List <int> {
                43, 19
            };
            var player2 = new List <int> {
                2, 29, 14
            };
            var _crabCombat = new CrabCombat(player1, player2);

            _crabCombat.playGame2();
            Assert.Equal(2, _crabCombat.Player1.Count);
            Assert.Equal(3, _crabCombat.Player2.Count);
        }
示例#9
0
        public void Example_1()
        {
            var cc = new CrabCombat
            {
                P1 = new Queue <int>(new [] { 9, 2, 6, 3, 1 }),
                P2 = new Queue <int>(new [] { 5, 8, 4, 7, 10 })
            };

            cc.Battle();

            Assert.Equal(29, cc.RoundsPlayed);
            Assert.Equal(0, cc.P1Score);
            Assert.Equal(306, cc.P2Score);
        }
示例#10
0
        public void Puzzle_22A()
        {
            var cc = new CrabCombat
            {
                P1 = new Queue <int>(PuzzleP1),
                P2 = new Queue <int>(PuzzleP2)
            };

            cc.Battle();

            Assert.Equal(687, cc.RoundsPlayed);
            Assert.Equal(33098, cc.P1Score);
            Assert.Equal(0, cc.P2Score);
        }
示例#11
0
        public void Should_play_a_round()
        {
            var player1 = new List <int> {
                9
            };
            var player2 = new List <int> {
                5
            };
            var _crabCombat = new CrabCombat(player1, player2);

            _crabCombat.playRoundGame1();
            Assert.Equal(2, _crabCombat.Player1.Count);
            Assert.Empty(_crabCombat.Player2);
        }
示例#12
0
        public void Should_play_game2_until_deck_empty()
        {
            var player1 = new List <int> {
                9, 2, 6, 3, 1
            };
            var player2 = new List <int> {
                5, 8, 4, 7, 10
            };
            var _crabCombat = new CrabCombat(player1, player2);

            _crabCombat.playGame2();
            Assert.Equal(10, _crabCombat.Player2.Count);
            Assert.Empty(_crabCombat.Player1);
        }
示例#13
0
        public override bool Test()
        {
            string        filename = GetTestFilename();
            List <string> input    = System.IO.File.ReadAllLines(filename).ToList();

            PRINT = false;
            CrabCombat game = new CrabCombat(input);

            game.PlayGame();
            var result = game.Score();

            bool testSucceeded = result == 306;

            return(testSucceeded);
        }
示例#14
0
        public void Should_calculate_winners_score_for_game_2()
        {
            var player1 = new List <int> {
                9, 2, 6, 3, 1
            };
            var player2 = new List <int> {
                5, 8, 4, 7, 10
            };
            var _crabCombat = new CrabCombat(player1, player2);

            _crabCombat.playGame2();
            var score = _crabCombat.calculateScore(_crabCombat.GameWinner);

            Assert.Equal(291, score);
        }
示例#15
0
        public void Puzzle_22B()
        {
            var cc = new CrabCombat
            {
                P1 = new Queue <int>(PuzzleP1),
                P2 = new Queue <int>(PuzzleP2)
            };

            cc.BattleRecursive(cc.P1, cc.P2);

            Assert.True(cc.P1Score > 11908, "too low");
            Assert.True(cc.P1Score > 15110, "too low");
            Assert.Equal(35055, cc.P1Score);
            Assert.Equal(0, cc.P2Score);
        }
 public void ScoreCalculatorWorksOnExample()
 {
     var(player1, player2) = CrabCombat.LoadGame("example1.txt");
     var(result1, result2) = CrabCombat.PlayGame(player1, player2);
     CrabCombat.CalculateScore(result2).ShouldBe(306);
 }
 public void ScoreCalculatorWorksOnRealInput()
 {
     var(player1, player2) = CrabCombat.LoadGame("input.txt");
     var(result1, result2) = CrabCombat.PlayGame(player1, player2);
     CrabCombat.CalculateScore(result2).ShouldBe(35397);
 }
示例#18
0
        static void Main()
        {
            var day22 = new CrabCombat();

            Console.WriteLine(day22.problem1());
            Console.WriteLine(day22.problem2());

            //var day10 = new AdapterArray();
            //Console.WriteLine(day10.problem1());
            //Console.WriteLine(day10.problem2());

            //var day9 = new EncodingError();
            //var day9Problem1 = day9.problem1();
            //Console.WriteLine(day9Problem1);
            //var day9Problem2 = day9.problem2();
            //Console.WriteLine(day9Problem2);

            //var day8 = new HandheldHalting();
            //var day8Problem1 = day8.problem1();
            //Console.WriteLine(day8Problem1);
            //var day8Problem2 = day8.problem2();
            //Console.WriteLine(day8Problem2);

            //var day7 = new HandyHaversacks();
            //var day7Problem1 = day7.problem1();
            //Console.WriteLine(day7Problem1);

            //var day6 = new CustomCustoms();
            //var day6Problem1 = day6.problem1();
            //Console.WriteLine(day6Problem1);
            //var day6Problem2 = day6.problem2();
            //Console.WriteLine(day6Problem2);

            //var day5 = new BinaryBoarding();
            //var day5Problem1 = day5.problem1();
            //Console.WriteLine(day5Problem1);
            //var day5Problem2 = day5.problem2();
            //Console.WriteLine(day5Problem2);

            //var day4 = new PassportProcessing();
            //var day4Problem1 = day4.problem1();
            //Console.WriteLine(day4Problem1);
            //var day4Problem2 = day4.problem2();
            //Console.WriteLine(day4Problem2);

            //var day3 = new TobogganTrajectory();
            //var day3Problem1 = day3.Problem1();
            //Console.WriteLine(day3Problem1);
            //var day3Problem2 = day3.Problem2();
            //Console.WriteLine(day3Problem2);

            //var day2 = new PasswordChecker();
            //var day2Problem1 = day2.checkLotsOfPasswords("first");
            //Console.WriteLine(day2Problem1);
            //var day2Problem2 = day2.checkLotsOfPasswords("second");
            //Console.WriteLine(day2Problem2);

            //var day1 = new ReportRepair();
            //var day1Problem1 = day1.Problem1();
            //Console.WriteLine(day1Problem1);
            //var day1Problem2 = day1.Problem2();
            //Console.WriteLine(day1Problem2);
        }