コード例 #1
0
ファイル: Day9Tests.cs プロジェクト: TobbenTM/AdventOfCode
        public void GameShouldPlay(int players, int lastMarble, ulong expectedScore)
        {
            var game = new MarbleGame(players, lastMarble);

            game.Play();
            Assert.Equal(expectedScore, game.LeadingPlayer.score);
        }
コード例 #2
0
ファイル: Day9Tests.cs プロジェクト: TobbenTM/AdventOfCode
        public void Part1()
        {
            var game = new MarbleGame(_players, _lastMarble);

            game.Play();
            Assert.Equal((ulong)404611, game.LeadingPlayer.score);
        }
コード例 #3
0
ファイル: Day9Tests.cs プロジェクト: TobbenTM/AdventOfCode
        public void Part2()
        {
            var game = new MarbleGame(_players, _lastMarble * 100);

            game.Play();
            Assert.Equal((ulong)3350093681, game.LeadingPlayer.score);
        }
コード例 #4
0
        public void Puzzle1Examples_FindsCorrectMaxScore(int playerCount, int maxMarbleValue, ulong expectedMaxScore)
        {
            var game = new MarbleGame(playerCount, maxMarbleValue);

            game.Play();

            game.Players.Max(x => x.Score).Should().Be(expectedMaxScore);
        }
コード例 #5
0
        public void Puzzle2_FindMaxScoreWith100xTheMaxMarbleValue()
        {
            var game = new MarbleGame(Input.Day09.Players, Input.Day09.LastMarble * 100);

            game.Play();

            game.Players.Max(x => x.Score).Should().Be(3243916887);
        }
コード例 #6
0
        public void Puzzle1_FindMaxScore()
        {
            var game = new MarbleGame(Input.Day09.Players, Input.Day09.LastMarble);

            game.Play();

            game.Players.Max(x => x.Score).Should().Be(404502);
        }
コード例 #7
0
        public void PlayGame__Test3()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(13, 7999);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(146373, highScore);
        }
コード例 #8
0
        public void PlayGame__Test4()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(17, 1104);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(2764, highScore);
        }
コード例 #9
0
        public void PlayGame__Test5()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(21, 6111);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(54718, highScore);
        }
コード例 #10
0
        public void PlayGame__Test6()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(30, 5807);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(37305, highScore);
        }
コード例 #11
0
        public void PlayGame__Test1()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(9, 25);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(32, highScore);
        }
コード例 #12
0
        public void PlayGame__Test2()
        {
            MarbleGame marbleGame = new MarbleGame();

            marbleGame.PlayGame(10, 1618);
            long highScore = marbleGame.GetHighScore();

            Assert.AreEqual(8317, highScore);
        }
コード例 #13
0
        public static void SolvePartOne()
        {
            var marbleGame = new MarbleGame(424, 71482);

            while (!marbleGame.IsGameFinished)
            {
                marbleGame.AddNextMarble();
            }

            marbleGame.GetPlayerWithHighestScore().WriteLine("Day 9, Part One: ");
        }
コード例 #14
0
        public void Puzzle1Example_FindsCorrectPlayerAndTopScore()
        {
            const int players        = 9;
            const int maxMarbleValue = 25;
            var       game           = new MarbleGame(players, maxMarbleValue);

            game.Play();

            game.Current.Value.Should().Be(25);
            var maxPlayer = game.Players.MaxBy(x => x.Score).Single();

            maxPlayer.Id.Should().Be(5);
            maxPlayer.Score.Should().Be(32);
        }
コード例 #15
0
        public void Puzzle1Example_StepsCorrectly()
        {
            const int players        = 9;
            const int maxMarbleValue = 25;
            var       game           = new MarbleGame(players, maxMarbleValue);

            game.Players.Should().HaveCount(9).And.BeInAscendingOrder(x => x.Id);
            game.Players.First().Id.Should().Be(1);

            Output.WriteLine($"\n[-] {game}");
            foreach (var player in game.Players)
            {
                game.Play(player);
                Output.WriteLine($"[{player.Id}] {game}");
            }

            game.Current.Value.Should().Be(9);
        }
コード例 #16
0
        public void PlayTest()
        {
            // the size of the board (2 ≤ N ≤ 40)
            byte N = 4;
            // the number of marbles (M > 0)
            byte M = 3;
            // the number of walls
            byte W = 1;

            // locations of the marbles
            Marble[] marbles = new Marble[] { new Marble(1, 0, 1), new Marble(2, 1, 0), new Marble(3, 1, 2) };

            // locations of the holes
            Hole[] holes = new Hole[] { new Hole(1, 2, 3), new Hole(2, 2, 1), new Hole(3, 3, 2) };

            WallLocation[] walls = new WallLocation[] { new WallLocation(new Location(1, 1), new Location(1, 2)) };

            MarbleGame game = new MarbleGame();

            var result = game.Play(N, walls, holes, marbles);

            Assert.Fail();
        }
コード例 #17
0
 private void ReadInput()
 {
     marbleGame = new MarbleGame(438, 7162600);
 }
コード例 #18
0
        public static long Puzzle1(int numPlayers, int lastMarble)
        {
            var mg = new MarbleGame(numPlayers);

            return(mg.PlayGame(lastMarble));
        }
コード例 #19
0
 public override void Run(string part)
 {
     Console.WriteLine(MarbleGame.CalculateHighScore(9, 25));
     Console.WriteLine(MarbleGame.CalculateHighScore(21, 6111));
     Console.WriteLine(MarbleGame.CalculateHighScore(448, 7162800));
 }