public void Part1() { var parsed = Parse(Common.DayInput(nameof(Day23))); var game = new CrabCups(parsed); for (int i = 0; i < 100; i++) { game.Move(); } Assert.AreEqual("52937846", game.Result()); }
public void Part1_Example1() { var parsed = Parse(Common.GetLines(example1)); var game = new CrabCups(parsed); for (int i = 0; i < 100; i++) { game.Move(); } Assert.AreEqual("67384529", game.Result()); }
public void Puzzle_23A() { var cc = new CrabCups(new[] { 6, 8, 5, 9, 7, 4, 2, 1, 3 }); for (var i = 0; i < 100; i++) { cc.Move(); } var result = cc.GetOrderFromOne().Aggregate("", (c, n) => $"{c}{n}"); Assert.Equal("82635947", result); }
public void Example_1(int[] start, int turns, int[] expectedEnd) { var cc = new CrabCups(start); for (var i = 0; i < turns; i++) { cc.Move(); } for (var i = 0; i < expectedEnd.Length; i++) { Assert.Equal(expectedEnd[i], cc.GetOrderFromOne().Skip(i).First()); } }
public void Part2() { var parsed = Parse(Common.DayInput(nameof(Day23)), 1000000); Assert.AreEqual(1000000, Node.Count); var game = new CrabCups(parsed); for (int i = 0; i < 10000000; i++) { game.Move(); } Assert.AreEqual(8456532414, game.Result2()); }
public void Part2_Example1() { var parsed = Parse(Common.GetLines(example1), 1000000); Assert.AreEqual(1000000, Node.Count); var game = new CrabCups(parsed); for (int i = 0; i < 10000000; i++) { game.Move(); } Assert.AreEqual(149245887792, game.Result2()); }
public void Puzzle1() { var cups = CupParser.Parse("394618527"); var crabCups = new CrabCups(cups); for (var i = 0; i < 100; i++) { crabCups.PlayRound(3); } var finalPosition = crabCups.GetState(2); var s = finalPosition.Aggregate(string.Empty, (current, value) => current + $", {value}"); Assert.Equal(", 2, 3, 4, 1, 7, 8, 5, 6, 9", s); }
public void Puzzle_23B() { var firstNumbers = new List <int> { 6, 8, 5, 9, 7, 4, 2, 1, 3 }; var following = Enumerable.Range(firstNumbers.Max() + 1, 1_000_000 - firstNumbers.Count); firstNumbers.AddRange(following); var cc = new CrabCups(firstNumbers); for (var i = 0; i < 10_000_000; i++) { cc.Move(); } Assert.Equal(157047826689, (long)cc.GetOrderFromOne().First() * cc.GetOrderFromOne().Skip(1).First()); }
public void Speeeeed() { var cupList = new List <int>(); for (var i = 0; i < 19000; i++) { cupList.Add(i); } var crabCups = new CrabCups(cupList); for (var i = 0; i < 10000; i++) { crabCups.PlayRound(3); } var finalPosition = crabCups.GetState(2); var s = finalPosition.Aggregate(string.Empty, (current, value) => current + $", {value}"); // Assert.Equal(", 2, 3, 4, 1, 7, 8, 5, 6, 9", s); }
public void CrabCupsTest() { var cups = CupParser.Parse("389125467"); var crabCups = new CrabCups(cups); for (var i = 0; i < 10; i++) { _testOutputHelper.WriteLine($"Iteration: {i}"); crabCups.PlayRound(3); } var finalPosition = crabCups.GetState(5); Assert.Equal(5, finalPosition[0]); Assert.Equal(8, finalPosition[1]); Assert.Equal(3, finalPosition[2]); Assert.Equal(7, finalPosition[3]); Assert.Equal(4, finalPosition[4]); Assert.Equal(1, finalPosition[5]); Assert.Equal(9, finalPosition[6]); Assert.Equal(2, finalPosition[7]); Assert.Equal(6, finalPosition[8]); }
public void Example_2() { var firstNumbers = new List <int> { 3, 8, 9, 1, 2, 5, 4, 6, 7 }; var following = Enumerable.Range(firstNumbers.Max() + 1, 1_000_000 - firstNumbers.Count); firstNumbers.AddRange(following); var cc = new CrabCups(firstNumbers); var sw = new Stopwatch(); sw.Start(); for (var i = 0; i < 10_000_000; i++) { cc.Move(); } sw.Stop(); Console.WriteLine($"{sw.ElapsedMilliseconds}ms"); Assert.Equal(934001, cc.GetOrderFromOne().First()); Assert.Equal(159792, cc.GetOrderFromOne().Skip(1).First()); Assert.Equal(149245887792, (long)cc.GetOrderFromOne().First() * cc.GetOrderFromOne().Skip(1).First()); }