using System; using System.IO; using System.Linq; namespace _2021___Day_05 { class Program { static void Main(string[] args) { int count = 0; int[,] map = new int[1000, 1000]; for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { map[i,j] = 0; } } string[] fileBuffer; char[] separators = new char[] { ' ', '.', '>', '-', ',' }; var lines = File.ReadAllLines("../../../../Input.in"); fileBuffer = lines.ToArray(); for (int i = 0; i < fileBuffer.Length; i++) { lines = fileBuffer[i].Split(separators, StringSplitOptions.RemoveEmptyEntries); if (lines[0] == lines[2] || lines[1] == lines[3]) { if (int.Parse(lines[0]) < int.Parse(lines[2]) || int.Parse(lines[1]) < int.Parse(lines[3])) { for (int x = int.Parse(lines[0]); x <= int.Parse(lines[2]); x++) { for (int y = int.Parse(lines[1]); y <= int.Parse(lines[3]); y++) { map[x, y]++; } } } if (int.Parse(lines[0]) > int.Parse(lines[2]) || int.Parse(lines[1]) > int.Parse(lines[3])) { for (int x = int.Parse(lines[2]); x <= int.Parse(lines[0]); x++) { for (int y = int.Parse(lines[3]); y <= int.Parse(lines[1]); y++) { map[x, y]++; } } } } } for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { //Console.Write(map[i, j].ToString()); if (map[i,j] > 1) { count++; } } //Console.Write("\n"); } Console.WriteLine("There are " + count.ToString() + " intersection points"); count = 0; int[,] map2 = new int[1000, 1000]; for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { map2[i, j] = 0; } } for (int i = 0; i < fileBuffer.Length; i++) { lines = fileBuffer[i].Split(separators, StringSplitOptions.RemoveEmptyEntries); if (lines[0] == lines[2] || lines[1] == lines[3]) { if (int.Parse(lines[0]) < int.Parse(lines[2]) || int.Parse(lines[1]) < int.Parse(lines[3])) { for (int x = int.Parse(lines[0]); x <= int.Parse(lines[2]); x++) { for (int y = int.Parse(lines[1]); y <= int.Parse(lines[3]); y++) { map2[x, y]++; } } } if (int.Parse(lines[0]) > int.Parse(lines[2]) || int.Parse(lines[1]) > int.Parse(lines[3])) { for (int x = int.Parse(lines[2]); x <= int.Parse(lines[0]); x++) { for (int y = int.Parse(lines[3]); y <= int.Parse(lines[1]); y++) { map2[x, y]++; } } } } else { if (int.Parse(lines[0]) < int.Parse(lines[2]) && int.Parse(lines[1]) < int.Parse(lines[3])) { for (int m = 0; m < int.Parse(lines[2]) - int.Parse(lines[0])+1; m++) { map2[int.Parse(lines[0]) + m, int.Parse(lines[1]) + m]++; } } if (int.Parse(lines[0]) > int.Parse(lines[2]) && int.Parse(lines[1]) > int.Parse(lines[3])) { for (int m = 0; m < int.Parse(lines[0]) - int.Parse(lines[2])+1 ; m++) { map2[int.Parse(lines[0]) - m, int.Parse(lines[1]) - m]++; } } if (int.Parse(lines[0]) < int.Parse(lines[2]) && int.Parse(lines[1]) > int.Parse(lines[3])) { for (int m = 0; m < int.Parse(lines[2]) - int.Parse(lines[0]) +1; m++) { map2[int.Parse(lines[0]) + m, int.Parse(lines[1]) - m]++; } } if (int.Parse(lines[0]) > int.Parse(lines[2]) && int.Parse(lines[1]) < int.Parse(lines[3])) { for (int m = 0; m < int.Parse(lines[0]) - int.Parse(lines[2]) +1; m++) { map2[int.Parse(lines[0]) - m, int.Parse(lines[1]) + m]++; } } } } for (int i = 0; i < 1000; i++) { for (int j = 0; j < 1000; j++) { if (map2[i, j] > 1) { count++; } } } Console.WriteLine("There are " + count.ToString() + " intersection points"); } } }