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 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 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()); }