Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }