public static async Task <int> get_three_by_three_power_rating(fuel_cell top_left, List <fuel_cell> grid, int search_size) { int total_power = 0; int start_x = top_left.x; int start_y = top_left.y; for (int i = 0; i < search_size; i++) { for (int j = 0; j < search_size; j++) { var temp = grid.FirstOrDefault(e => e.x == start_x + i && e.y == start_y + j); if (temp != null) { total_power += temp.power_level; } else { return(0); } } } return(total_power); }
static void Main(string[] args) { var input = 7347; List <fuel_cell> cells = new List <fuel_cell>(); for (int i = 1; i <= 300; i++) { for (int j = 1; j <= 300; j++) { fuel_cell cell = new fuel_cell() { x = i, y = j }; cell.power_level = cell.get_power_level(input); cells.Add(cell); } } Console.WriteLine("Starting Task 1"); Task <result> task1 = Task <result> .Factory.StartNew(() => { var result = Part1(cells); return(result); }); Console.WriteLine("Starting Task 2"); Task <result> task2 = Task <result> .Factory.StartNew(() => { var result = Part2(cells); return(result); }); result res_one = task1.Result; Console.WriteLine("Part 1"); Console.WriteLine(res_one.ToString()); result res_two = task2.Result; Console.WriteLine("Part 2"); Console.WriteLine(res_two.ToString()); }