public void Day02Part2_TestSolution() { long expectedOutput = 19690720; for (long noun = 0; noun <= 99; noun++) { for (long verb = 0; verb <= 99; verb++) { try { List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day02.txt"); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Noun = noun; sut.Run(); if (expectedOutput == sut.ProgramValues[0]) { Assert.Equal(6472, 100 * noun + verb); return; } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } Debug.WriteLine("Done"); }
public void Day09Part1_Example03() { List <long> pgm = new List <long>(new long[] { 104, 1125899906842624, 99 }); var sut = new MagicSmokeComputer(pgm); sut.Run(MagicSmokeComputer.ProgramMode.Start); Assert.Equal(1125899906842624, sut.OutputPort()); }
public void Day09Part1_Example02() { List <long> pgm = new List <long>(new long[] { 1102, 34915192, 34915192, 7, 4, 7, 99, 0 }); var sut = new MagicSmokeComputer(pgm); sut.Run(MagicSmokeComputer.ProgramMode.Start); string actual = sut.OutputPort().ToString(); Assert.Equal(16, actual.Length); }
public void Day02Part1_ExampleTest01() { List <long> values = new List <long>(new long[] { 1, 9, 10, 3, 2, 3, 11, 0, 99, 30, 40, 50 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Run(); Assert.Equal(3500, sut.ProgramValues[0]); }
public void Day09Part1_Example01() { List <long> pgm = new List <long>(new long[] { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 }); var sut = new MagicSmokeComputer(pgm); sut.Run(MagicSmokeComputer.ProgramMode.Start); foreach (var step in pgm) { Assert.Equal(step, sut.OutputPort()); } }
public void Day05_Part1_example02() { List <long> values = new List <long>(new long[] { 1002, 4, 3, 4, 33 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Run(); Assert.Equal(99, sut.ProgramValues[4]); }
public void Day02Part1_ExampleTest02() { List <long> values = new List <long>(new long[] { 1, 0, 0, 0, 99 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Run(); Assert.Equal(2, sut.ProgramValues[0]); }
public void Day09Part2_TestSolution() { List <long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day09.txt"); Assert.NotNull(pgm); var sut = new MagicSmokeComputer(pgm); sut.InputPort = 2; sut.Run(MagicSmokeComputer.ProgramMode.Start); Assert.Equal(1, sut.OutputQueueSize()); Assert.Equal(80379, sut.OutputPort()); }
public void Day05_Part1_example08(int input, int expectedOutput) { List <long> values = new List <long>(new long[] { 3, 3, 1105, -1, 9, 1101, 0, 0, 12, 4, 12, 99, 1 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = input; sut.Run(); Assert.Equal(expectedOutput, sut.OutputPort()); }
public void Day05_Part1_example01() { List <long> values = new List <long>(new long[] { 3, 0, 4, 0, 99 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = 666; sut.Run(); Assert.Equal(666, sut.OutputPort()); }
public void Day05_Part1_example05() { List <long> values = new List <long>(new long[] { 3, 3, 1108, -1, 8, 3, 4, 3, 99 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = 8; sut.Run(); Assert.Equal(1, sut.OutputPort()); }
public void Day05_Part1_example04() { List <long> values = new List <long>(new long[] { 3, 9, 7, 9, 10, 9, 4, 9, 99, -1, 8 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = 8; sut.Run(); Assert.Equal(0, sut.OutputPort()); }
public void Day02Part1_ExampleTest04() { List <long> values = new List <long>(new long[] { 2, 4, 4, 5, 99, 0 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Run(); Assert.Equal(2, sut.ProgramValues[0]); Assert.Equal(9801, sut.ProgramValues[5]); }
public void Day05_Part1_example09(int input, int expectedOutput) { List <long> values = new List <long>(new long[] { 3, 21, 1008, 21, 8, 20, 1005, 20, 22, 107, 8, 21, 20, 1006, 20, 31, 1106, 0, 36, 98, 0, 0, 1002, 21, 125, 20, 4, 20, 1105, 1, 46, 104, 999, 1105, 1, 46, 1101, 1000, 1, 20, 4, 20, 1105, 1, 46, 98, 99 }); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = input; sut.Run(); Assert.Equal(expectedOutput, sut.OutputPort()); }
public void Day02Part1_TestSolution() { List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day02.txt"); Assert.Equal(137, values.Count); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.Noun = 12; sut.Verb = 2; sut.Run(); Assert.Equal(3716250, sut.ProgramValues[0]); }
public void Day13Part1_TestSolution() { List <long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day13.txt"); Assert.NotNull(pgm); var sut = new MagicSmokeComputer(pgm); MagicSmokeComputer.ProgramMode status = MagicSmokeComputer.ProgramMode.Start; do { status = sut.Run(status); } while (status != MagicSmokeComputer.ProgramMode.Stop); Assert.Equal(MagicSmokeComputer.ProgramMode.Stop, status); // analyze the out put queue PointEqualityComparer peqc = new PointEqualityComparer(); Dictionary <Point, int> dictGameBoard = new Dictionary <Point, int>(peqc); do { int x = (int)sut.OutputPort(); int y = (int)sut.OutputPort(); int tileId = (int)sut.OutputPort(); Point p = new Point(x, y); if (dictGameBoard.ContainsKey(p)) { dictGameBoard[p] = tileId; } else { dictGameBoard.Add(p, tileId); } } while (sut.OutputQueueSize() > 0); Assert.NotEmpty(dictGameBoard); int blocktiles = 0; foreach (var tile in dictGameBoard.Values) { if (tile == 2) { blocktiles++; } } //int blockedTiles = dictGameBoard.Values.Select(t => t == 2).ToList().Count(); Assert.Equal(268, blocktiles); }
public void Day05Part2_TestSolution() { List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day05.txt"); Assert.Equal(223, values[values.Count - 3]); Assert.Equal(99, values[values.Count - 2]); Assert.Equal(226, values[values.Count - 1]); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = 5; //sut.InputPort = 1; sut.Run(); Assert.Equal(4655956, sut.OutputPort()); }
public void Day05Part1_TestSolution() { List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day05.txt"); Assert.Equal(223, values[values.Count - 3]); Assert.Equal(99, values[values.Count - 2]); Assert.Equal(226, values[values.Count - 1]); var sut = new MagicSmokeComputer(); sut.ProgramValues = values; sut.InputPort = 1; sut.Run(); long actualCode = 0; do { actualCode = sut.OutputPort(); } while (actualCode == 0); Assert.Equal(14522484, actualCode); }
static void Main(string[] args) { Console.WriteLine("Day13 Part 2 Start!"); List<long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day13.txt"); int blockedTiles = 0; int val = 0; var sut = new MagicSmokeComputer(pgm); Point pscore = new Point(-1, 0); Point ball = null; Point paddle = null; PointEqualityComparer peqc = new PointEqualityComparer(); Dictionary<Point, int> dictGameBoard = new Dictionary<Point, int>(peqc); sut.Coins = 2; MagicSmokeComputer.ProgramMode status = MagicSmokeComputer.ProgramMode.Start; do { status = sut.Run(status); // dump out the screen while (sut.OutputQueueSize() > 0) { int x = (int)sut.OutputPort(); int y = (int)sut.OutputPort(); int tileId = (int)sut.OutputPort(); Point p = new Point(x, y); if (dictGameBoard.ContainsKey(p)) { dictGameBoard[p] = tileId; } else { dictGameBoard.Add(p, tileId); } } // print the score //Console.Clear(); //foreach (Point p in dictGameBoard.Keys) //{ // if (p.X != -1) // { // WriteAt(p, dictGameBoard[p]); // } //} blockedTiles = 0; foreach (var item in dictGameBoard) { if (item.Value == 2) { blockedTiles++; } if (item.Value == 3) { paddle = item.Key; } if (item.Value == 4) { ball = item.Key; } } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Score: {0}", dictGameBoard[pscore]); Console.WriteLine("Tiles: {0}", blockedTiles); Console.WriteLine(); // put the input here if (ball.X < paddle.X) { // left val = -1; } else if (ball.X > paddle.X) { // right val = 1; } else { val = 0; } sut.InputPort = val; } while (status != MagicSmokeComputer.ProgramMode.Stop); Console.WriteLine("Day13 Part 2 Done!"); }