public static void part1() { long output = 0; var outputs = new List <long>(); var phasesettings = new long[] { 0, 1, 2, 3, 4 }; var range = Enumerable.Range(0, 44444).ToList().Select(x => x.ToString("00000")).Where(x => !x.Contains("5") && !x.Contains("6") && !x.Contains("7") && !x.Contains("8") && !x.Contains("9")).ToList(); range = range.Where(x => x.Count(s => s == '0') == 1 && x.Count(s => s == '1') == 1 && x.Count(s => s == '2') == 1 && x.Count(s => s == '3') == 1 && x.Count(s => s == '4') == 1).ToList(); long finaloutput = 0; foreach (var r in range) { for (int i = 0; i < 5; i++) { phasesettings = r.ToList() .Select(x => long.Parse(x.ToString())) .ToArray(); var code = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); //var code = new int[] { 3, 15, 3, 16, 1002, 16, 10, 16, 1, 16, 15, 15, 4, 15, 99, 0, 0 }; var amp = new IntCodeVMOLD(); amp.RunProgram(code, new long[] { phasesettings[i], output }); output = amp.outputs.Last(); outputs.Add(output); } if (finaloutput < outputs.Last()) { finaloutput = outputs.Last(); } outputs.Clear(); output = 0; } Console.WriteLine(finaloutput); }
static void P1() { var lines = Utilities.GetStringFromFile("Day13.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); //vm.WriteMemory(0, 1); vm.RunProgram(); processOutputs(vm); Draw(grid); var blockcount = 0; for (int i = 0; i < grid.GetLength(0); i++) { for (int j = 0; j < grid.GetLength(1); j++) { if (grid[i, j] == 'B') { blockcount++; } } } }
public static void RunDay() { Console.WriteLine("Day 8"); var lines = Utilities.GetStringFromFile("Day8.txt"); var layerCount = lines.Length / 150; int skip = 0; List <KeyValuePair <int, int> > zerosinlayers = new List <KeyValuePair <int, int> >(); var layers = new List <KeyValuePair <int, string> >(); for (int i = 0; i < layerCount; i++) { layers.Add(new KeyValuePair <int, string>(i + 1, lines.Substring(skip, 150))); skip += 150; } var leastzeros = layers.Select(x => new { zeroes = x.Value.Count(x => x == '0'), ones = x.Value.Count(x => x == '1'), twos = x.Value.Count(x => x == '2'), x }).OrderBy(x => x.zeroes); char[] finaloutput = new char[150]; foreach (var layer in layers) { for (int i = 0; i < 150; i++) { if (finaloutput[i] != ' ' && finaloutput[i] != '█') { switch (layer.Value[i]) { case '0': finaloutput[i] = ' '; break; case '1': finaloutput[i] = '█'; break; case '2': default: break; } } } } for (int i = 0; i < 6; i++) { Console.WriteLine(string.Join("", finaloutput.ToList().Skip(i * 25).Take(25).ToList())); } Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void RunDay() { Console.WriteLine("Day 6"); var code = Utilities.GetStringFromFile("Day6.txt"); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void P1() { var lines = Utilities.GetStringFromFile("Day17.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); char[,] charmap = new char[41, 49]; while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { break; } string map = ""; int J = 0; int I = 0; while (vm.outputs.Count > 0) { char tile; tile = (char)vm.outputs.Dequeue(); map += tile; if (tile == 10) { J++; I = 0; } else { charmap[J, I] = tile; I++; } } int score = 0; for (int i = 1; i < charmap.GetLength(1) - 1; i++) { for (int j = 1; j < charmap.GetLength(0) - 1; j++) { if (charmap[j, i] == '#' && (charmap[j, i - 1] == '#' && charmap[j, i + 1] == '#' && charmap[j - 1, i] == '#' && charmap[j + 1, i] == '#')) { score += i * j; } } } Console.Write(map); }
public static void P2() { var lines = Utilities.GetStringFromFile("Day9.txt").SplitLongArrayFromString(','); var config = new IntCodeVMConfiguration(); //config = new IntCodeVMConfiguration { Logging = true, FriendlyLogging = false }; var vm = new IntCodeVMOLD(config); vm.RunProgram(lines, new long[] { 2 }); Console.WriteLine(vm.outputs.Peek()); }
static int CheckBeam(int x, int y) { var lines = Utilities.GetStringFromFile("Day19.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { vm.WriteInput(x); vm.WriteInput(y); } return((int)vm.outputs.Dequeue()); }
public static void RunDay() { Console.WriteLine("Day 2"); var lines = Utilities.GetStringFromFile("Day2.txt"); var output = mysterfunc(12, 2, lines); Console.WriteLine(output); var outputstr = RunAllComobos(lines); Console.WriteLine(outputstr); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void RunDay() { Console.WriteLine("Day 5"); var code = Utilities.GetStringFromFile("Day5.txt").SplitIntArrayFromString(','); var vm = new IntCodeVMDay5(); vm.RunProgram(code, 1); Console.WriteLine(vm.outputs.Last()); code = Utilities.GetStringFromFile("Day5.txt").SplitIntArrayFromString(','); vm.RunProgram(code, 5); Console.WriteLine(vm.outputs.Last()); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void RunDay() { Console.WriteLine("Day 4"); var lines = Utilities.GetStringFromFile("Day4.txt"); var passwords2 = ParsePasswordsP1(new List <string>() { "112233", "123444", "111122" }); var passwords = ParsePasswordsP1(GeneratePasswords(lines)); Console.WriteLine($" Part 1 Password Count: {passwords.Count()}"); passwords = ParsePasswordsP2(GeneratePasswords(lines)); Console.WriteLine($" Part 2 Password Count: {passwords.Count()}"); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
static void P2() { var lines = Utilities.GetStringFromFile("Day13.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); vm.WriteMemory(0, 2); processOutputs(vm); //Draw(grid); while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { processOutputs(vm); if (ballPos < paddlepos) { vm.WriteInput(-1); } else if (ballPos > paddlepos) { vm.WriteInput(1); } else { vm.WriteInput(0); } Draw(grid); if (blockcount == 0) { break; } } processOutputs(vm); Draw(grid); }
static void P1() { var lines = Utilities.GetStringFromFile("Day19.txt").SplitLongArrayFromString(','); char[,] charmap = new char[1200, 1200]; Queue <KeyValuePair <int, int> > coords = new Queue <KeyValuePair <int, int> >(); Queue <KeyValuePair <int, int> > usedcoords = new Queue <KeyValuePair <int, int> >(); for (int i = 0; i < 1200; i++) { for (int j = 0; j < 1200; j++) { coords.Enqueue(new KeyValuePair <int, int>(i, j)); } } Queue <long> outputs = new Queue <long>(); while (coords.Count > 0) { Console.WriteLine(coords.Count); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); var coord = coords.Dequeue(); vm.WriteInput(coord.Key); vm.WriteInput(coord.Value); while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { if (coords.Count == 0) { break; } } outputs.Enqueue(vm.outputs.Dequeue()); usedcoords.Enqueue(new KeyValuePair <int, int>(coord.Key, coord.Value)); } long count = 0; while (outputs.Count > 0) { var output = outputs.Dequeue(); var outcoord = usedcoords.Dequeue(); charmap[outcoord.Key, outcoord.Value] = output.ToString()[0]; count += output; } Draw(charmap); var strgen = new StringBuilder(); for (int i = 0; i < charmap.GetLength(0); i++) { for (int j = 0; j < charmap.GetLength(1); j++) { strgen.Append(charmap[i, j]); } strgen.Append(Environment.NewLine); } var s = strgen.ToString(); }
static void P1() { var code = Utilities.GetStringFromFile("Day11.txt").SplitLongArrayFromString(','); var paintedPoints = new List <string>(); var vm = new IntCodeVMOLD(new IntCodeVMConfiguration() { }); var grid = new int[100, 100]; var curPos = new int[2] { 50, 50 }; var currentColor = 0; var input = new long[1] { 1 }; var state = 0; int facing = 90; while (true) { //get color to paint state = vm.RunProgram(code, input, true); if (state == 1) { var ls = paintedPoints.Distinct().ToList(); Draw(grid); break; } var paint = vm.outputs.Dequeue(); //get direction to turn state = vm.RunProgram(code, input, true); if (state == 1) { break; } var turnDir = vm.outputs.Dequeue(); var turnAngle = turnDir == 0 ? -90 : 90; //paint grid[curPos[0], curPos[1]] = (int)paint; //turn facing += turnAngle; facing = facing < 0 ? facing + 360 : facing; //less than 0, add 360 facing = facing == 360 ? 0 : facing; //360, set to 0 //Move switch (facing) { case 90: //up curPos[0]++; break; case 270: //down curPos[0]--; break; case 180: //right curPos[1]++; break; case 0: //left curPos[1]--; break; default: break; } paintedPoints.Add($"{curPos[0]}, {curPos[1]}"); //check to make sure we are on the grid if (curPos[0] > 99 || curPos[0] < 0 || curPos[1] > 99 || curPos[1] < 0) { throw new Exception("Fail!"); } currentColor = grid[curPos[0], curPos[1]]; input[0] = currentColor; } }
public static void part2() { long output = 0; var outputs = new List <long>(); var phasesettings = new long[] { 0, 1, 2, 3, 4 }; var range = Enumerable.Range(0, 99999).ToList().Select(x => x.ToString("00000")).Where(x => !x.Contains("0") && !x.Contains("1") && !x.Contains("2") && !x.Contains("3") && !x.Contains("4")).ToList(); range = range.Where(x => x.Count(s => s == '5') == 1 && x.Count(s => s == '6') == 1 && x.Count(s => s == '7') == 1 && x.Count(s => s == '8') == 1 && x.Count(s => s == '9') == 1).ToList(); long finaloutput = 0; foreach (var r in range) { phasesettings = r.ToList() .Select(x => long.Parse(x.ToString())) .ToArray(); //phasesettings = new int[] { 9, 8, 7, 6, 5 }; var amp1 = new IntCodeVMOLD(); var amp2 = new IntCodeVMOLD(); var amp3 = new IntCodeVMOLD(); var amp4 = new IntCodeVMOLD(); var amp5 = new IntCodeVMOLD(); var code1 = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); var code2 = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); var code3 = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); var code4 = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); var code5 = Utilities.GetStringFromFile("Day7.txt").SplitLongArrayFromString(','); //var code1 = new int[] { 3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 }; //var code2 = new int[] { 3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 }; //var code3 = new int[] { 3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 }; //var code4 = new int[] { 3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 }; //var code5 = new int[] { 3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5 }; bool initSetup = true; //var code = Utilities.GetStringFromFile("Day7.txt").SplitIntArrayFromString(','); while (true) { var isdone = 0; long[] inp1 = initSetup ? new long[] { phasesettings[0], output } : new long[] { output }; isdone += amp1.RunProgram(code1, inp1, true); output = amp1.outputs.Last(); //outputs.Add(output); long[] inp2 = initSetup ? new long[] { phasesettings[1], output } : new long[] { output }; isdone += amp2.RunProgram(code2, inp2, true); output = amp2.outputs.Last(); //outputs.Add(output); long[] inp3 = initSetup ? new long[] { phasesettings[2], output } : new long[] { output }; isdone += amp3.RunProgram(code3, inp3, true); output = amp3.outputs.Last(); //outputs.Add(output); long[] inp4 = initSetup ? new long[] { phasesettings[3], output } : new long[] { output }; isdone += amp4.RunProgram(code4, inp4, true); output = amp4.outputs.Last(); //outputs.Add(output); long[] inp5 = initSetup ? new long[] { phasesettings[4], output } : new long[] { output }; isdone += amp5.RunProgram(code5, inp5, true); output = amp5.outputs.Last(); outputs.Add(output); if (initSetup) { initSetup = false; } if (isdone != 0) { break; } } if (finaloutput < outputs.Last()) { finaloutput = outputs.Last(); } outputs.Clear(); output = 0; } Console.WriteLine(finaloutput); }
public static void P2() { var lines = Utilities.GetStringFromFile("Day17.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { FriendlyLogging = false }); vm.WriteProgram(lines); vm.WriteMemory(0, 2); var input = "65,44,65,44,66,44,67,44,66,44,67,44,66,44,67,44,67,44,65,10,76,44,49,48,44,82,44,56,44,82,44,56,10,76,44,49,48,44,76,44,49,50,44,82,44,56,44,82,44,49,48,10,82,49,48,44,76,49,50,44,82,49,48,10".Split(",").Select(int.Parse).ToList(); var main = "65,44,65,44,66,44,67,44,66,44,67,44,66,44,67,44,67,44,65,10".Split(",").Select(int.Parse).ToList(); var A = "76,44,49,48,44,82,44,56,44,82,44,56,10".Split(",").Select(int.Parse).ToList(); var B = "76,44,49,48,44,76,44,49,50,44,82,44,56,44,82,44,49,48,10".Split(",").Select(int.Parse).ToList(); var C = "82,44,49,48,44,76,44,49,50,44,82,44,49,48,10".Split(",").Select(int.Parse).ToList(); //foreach (var inp in input) //{ // vm.WriteInput(inp); //} //vm.WriteInput(110); //vm.WriteInput(10); var inpPhase = 0; while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { while (vm.outputs.Count > 0) { Console.Write((char)vm.outputs.Dequeue()); } switch (inpPhase) { case 0: foreach (var inp in main) { vm.WriteInput(inp); } inpPhase++; break; case 1: foreach (var inp in A) { vm.WriteInput(inp); } inpPhase++; break; case 2: foreach (var inp in B) { vm.WriteInput(inp); } inpPhase++; break; case 3: foreach (var inp in C) { vm.WriteInput(inp); } inpPhase++; break; case 4: vm.WriteInput((int)'Y'); vm.WriteInput(10); inpPhase++; break; } } var x = vm.outputs.First(); var y = vm.outputs.Last(); int e = 0; var s = ""; while (vm.outputs.Count > 0) { s += (char)vm.outputs.Dequeue(); e++; if (e == 2051) { Console.Clear(); Console.WriteLine(s); s = ""; e = 0; Thread.Sleep(250); } } while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { } }
static void P1() { var lines = Utilities.GetStringFromFile("Day15.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); vm.WriteProgram(lines); grid[25, 25] = 'S'; Draw(grid); vm.WriteInput((long)Facing.north); //vm.WriteMemory(0, 1); while (vm.RunProgram() == HALTTYPE.HALT_WAITING) { processOutputs(vm); if (complete) { break; } //what type of step was taken? switch (stepType) { case StepType.forward: //was step forward successful? if not turn left if (!stepSuccess) { TurnDirection(Direction.left); } //attempt to turn right now. stepType = StepType.right; vm.WriteInput((long)GetTurnDirection(Direction.right)); break; case StepType.right: //if step was successful change facing and try to turn right again if (stepSuccess) { TurnDirection(Direction.right); stepType = StepType.right; vm.WriteInput((long)GetTurnDirection(Direction.right)); } //step unsuccessful, continue forward. else { vm.WriteInput((long)currentFacing); stepType = StepType.forward; } break; default: break; } //Draw(grid); } Draw(grid); int[] target = new int[] { 0, 0 }; for (int i = 0; i < grid.GetLength(0); i++) { for (int j = 0; j < grid.GetLength(1); j++) { if (grid[i, j] == 'O') { target = new int[] { i, j }; } } } var s = new seeker(target, 0, grid, new int[] { 25, 25 }, Facing.north); var result = s.Seek(); Console.WriteLine($"Min Steps to get to Oxygen Control: {result.Value}"); }
static void P2() { var lines = Utilities.GetStringFromFile("Day19.txt").SplitLongArrayFromString(','); var vm = new IntCodeVM(new IntCodeVMConfiguration() { }); var rows = 500; char[,] charmap = new char[1200, 1200]; bool hitbeam = false; int beamstart = 0; int drawx = 0; int drawy = 0; for (int i = 4; i < 1200; i++) { for (int j = 0; j < 1200; j++) { var output = CheckBeam(j, i); if (output == 1) { if (!hitbeam) { hitbeam = true; beamstart = j - 2; } charmap[i, j] = '#'; //Draw(charmap); //check if 99 up is valid //if (i > 100) //{ // output = CheckBeam(j, i - 9); // if (output == 1) // { // if (CheckBeam(j + 9, i - 9) == 1) // { // Draw(charmap, j - 5, i - 20, 12, 12); // Console.Write($"{j} , {i - 10}"); // return; // } // } //} } else { if (hitbeam) { hitbeam = false; j = beamstart; i++; if (i == 1200) { break; } continue; } } } } string map = ""; for (int i = 0; i < charmap.GetLength(1); i++) { for (int j = 0; j < charmap.GetLength(0); j++) { map += (charmap[j, i] == '\0' ? '.' : charmap[j, i]); } map += Environment.NewLine; } Console.WriteLine(map); //for (int i = 101; i < 120; i++) //{ // for (int j = 70; j < 100; j++) // { // var output = CheckBeam(j, i); // if (output == 1) // { // charmap[i, j] = '#'; // } // } //} //Draw(charmap, 101, 70, 20, 20); }