private static void PartTwo() { var programs = new Dictionary <int, Prog>(); using (var reader = File.OpenText(@"inputs\day12.txt")) { while (!reader.EndOfStream) { var line = reader.ReadLine().Split("<->"); var prog = new Prog { Id = int.Parse(line[0].Trim()), Connections = new List <int>(line[1].Split(", ").Select(int.Parse)) }; programs.Add(prog.Id, prog); } var groups = new List <Group>(); foreach (var prog in programs) { var thisGroup = new Group { ProgramIds = FindConnections(prog.Value.Connections, new List <int> { }, programs) }; var groupExists = false; foreach (var group in groups) { if (group.ProgramIds.Intersect(thisGroup.ProgramIds).Any()) { groupExists = true; break; } } if (!groupExists) { groups.Add(thisGroup); } } Console.WriteLine(groups.Count); } }
private static void PartOne() { var programs = new Dictionary <int, Prog>(); using (var reader = File.OpenText(@"inputs\day12.txt")) { while (!reader.EndOfStream) { var line = reader.ReadLine().Split("<->"); var prog = new Prog { Id = int.Parse(line[0].Trim()), Connections = new List <int>(line[1].Split(", ").Select(int.Parse)) }; programs.Add(prog.Id, prog); } var count = FindConnections(programs[0].Connections, new List <int> { 0 }, programs, 1); Console.WriteLine(count); } }