Esempio n. 1
0
        static void Main(string[] args)
        {
            var schema = new MetroSchema();

            schema.Load("input.txt");

            var processor = new CloseStationsProcessor("output.txt");

            processor.Process(schema);

            Console.WriteLine("См. файл output.txt");
        }
        public void Process(MetroSchema schema)
        {
            while (schema.Stations.Any())
            {
                // закрывать можно либо последнюю оставшуюся станцию, либо любую, связанную только с одной другой
                var stationToClose = schema.Stations.Count() == 1
                    ? schema.Stations.First()
                    : schema.Stations.FirstOrDefault(s => s.LinkedStations.Count() == 1);

                if (stationToClose == null)
                {
                    throw new InvalidOperationException("Невозможно в оставшейся схеме метро найти станцию для закрытия");
                }

                ProcessStationClose(stationToClose);

                schema.Close(stationToClose);
            }
        }