public static void P1() { var mostHits = new KeyValuePair <string, int>("", 0); var lines = Utilities.GetLinesFromFile("Day10.txt").Select(x => x.Replace(",", "").ToArray()).ToArray(); var arr = new char[lines.GetLength(0), lines.GetLength(0)]; for (int i = 0; i < lines.GetLength(0); i++) { for (int j = 0; j < lines[0].GetLength(0); j++) { arr[i, j] = lines[i][j]; } } for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { if (arr[i, j] == '#') { var hits = SearchRadius(CopyArray(arr), i, j); if (hits > mostHits.Value) { mostHits = new KeyValuePair <string, int>($"x{j} y{i}", hits); } Console.WriteLine($"x{j} y{i} Hits {hits}"); } } } Console.WriteLine($"Most Hits is: {mostHits.Key} With {mostHits.Value} Hits"); }
public static void RunDay() { Console.WriteLine("Day 3"); Console.WriteLine(); var lines = Utilities.GetLinesFromFile("Day3.txt"); var circuit1 = new Circuit(); circuit1.runPath(lines[0].Split(',').ToList()); var circuit2 = new Circuit(); circuit2.runPath(lines[1].Split(',').ToList()); var matches = circuit1.path.Intersect(circuit2.path).ToList(); var matchesint = circuit1.path.Intersect(circuit2.path).Where(x => x != "0,0").ToList().Select(x => x.Split(',').Select <string, int>(x => Math.Abs(int.Parse(x)))).ToList(); var sums = matchesint.Select(x => x.Sum()).ToList(); Console.WriteLine(sums.Min()); var matchlist = new List <KeyValuePair <string, int> >(); foreach (var match in matches.Where(x => x != "0,0")) { var cind1 = circuit1.path.FindIndex(x => x == match); var cind2 = circuit2.path.FindIndex(x => x == match); matchlist.Add(new KeyValuePair <string, int>(match, cind1 + cind2)); } var ms1 = matchlist.OrderBy(x => x.Value).ToList(); Console.WriteLine(ms1.First().Value); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void RunDay() { var FuelForComponents = 0; var FuelForWholeRocket = 0; var lines = Utilities.GetLinesFromFile("Day1.txt"); var inputs = lines.Select <string, int>(int.Parse).ToList(); foreach (var component in inputs) { FuelForComponents += GetFuelForModule(component); } foreach (var component in inputs) { FuelForWholeRocket += GetAllFuelRecursivly(component); } Console.WriteLine("Day 1"); Console.WriteLine($"Part 1, Fuel for rocket: {FuelForComponents}"); Console.WriteLine($"Part 2, Fuel for whole rocket + fuel: {FuelForWholeRocket}"); Console.WriteLine("**************"); Console.WriteLine(Environment.NewLine); }
public static void P2() { var s = Utilities.GetLinesFromFile("Day10.txt").Select(x => x.Replace(",", "").ToArray()).ToArray(); var arr = new char[s.GetLength(0), s.GetLength(0)]; for (int i = 0; i < s.GetLength(0); i++) { for (int j = 0; j < s[0].GetLength(0); j++) { arr[i, j] = s[i][j]; } } int[] centerpoint = new int[] { 20, 23 }; arr[centerpoint[0], centerpoint[1]] = '*'; var angles = new Dictionary <float, List <Asteroid> >(); for (int i = 0; i < s.GetLength(0); i++) { for (int j = 0; j < s[0].GetLength(0); j++) { if (arr[i, j] == '#') { var angle = (float)(Math.Atan2((centerpoint[0] - i), (centerpoint[1] - j)) * (180 / (Math.PI))); var x1 = (angle < 0 ? 360 : 0); angle = angle + (angle < 0 ? 360 : 0); angle = angle + (angle < 90 ? 360 : 0); //Console.WriteLine($"x{j} y{i} angle: {angle}"); if (!angles.ContainsKey(angle)) { angles[angle] = new List <Asteroid>(); } angles[angle].Add(new Asteroid() { coords = $"x{j} y{i}", dist = Distance(centerpoint, new int[] { j, i }), x = j, y = i }); } } } var targets = angles.OrderBy(a => a.Key).ToList(); Asteroid lasthit = new Asteroid(); int countdown = 200; int it = 0; while (countdown > 0) { if (targets[it].Value.Count > 0) { var tdist = targets[it].Value.Min(x => x.dist); var t = targets[it].Value.First(v => v.dist == tdist); lasthit = t; Console.WriteLine($"PEW! {t.coords}"); targets[it].Value.Remove(t); countdown--; } it++; if (it >= targets.Count()) { it = 0; } } Console.WriteLine($"Last ateroid hit: {lasthit.coords} answer is: {lasthit.answer}"); }