Example #1
0
 public static Track[] ReadTracks(string path)
 {
     return((from strLine in FileExtensions.AllLines(path)
             let line = new Line(strLine)
                        orderby line.Time
                        group line by new { line.Day, line.Street }
             into g
             select new Track(g, g.Key.Street, g.Key.Day)).ToArray());
 }
Example #2
0
        public void Prepare()
        {
            var jams1 =
                FileExtensions.AllLines(Paths.Jams_txt).Select(x => new Line(x)).GroupBy(x => x.Street);

            var okRoads = new HashSet <int>(jams1.Where(g => g.Count(x => x.Day == 36 && x.Time.Hour <= 18) >= 20 &&
                                                        g.Count(x => x.Day == 41) >= 20).Select(x => x.Key));

            GC.Collect();

            /*var task = FileExtensions.AllLines(Paths.Task_txt).Select(x => new Line(x)).Select(x =>
             * {
             *      if (!okRoads.Contains(x.Street)) x.Velocity = 0;
             * return x;});*/

            //Line.OutputLines(Paths.Task_36_txt+ "xyu",task);
            var edges3000 = new HashSet <int>(File.ReadAllLines(Paths.Edges_3000_txt).Select(x => Convert.ToInt32(x)));

            var rawTracks =
                (from strLine in FileExtensions.AllLines(Paths.Jams_txt)
                 let line = new Line(strLine)
                            where edges3000.Contains(line.Street)
                            where (line.Day + 1) % 7 < 5
                            group line by new { line.Day, line.Street }
                 into g
                 select Smoothed(new Track(g, g.Key.Street, g.Key.Day))).ToArray();

            GC.Collect();

            var ttt  = rawTracks.Where(g => g.Day == 36 && g.Lines.Count(x => x.Time.Hour < 18) >= 20).ToArray();
            var task = ttt.SelectMany(x => x.Lines.Where(y => y.Time.Hour >= 18)).ToArray();

            var jams = rawTracks.SelectMany(x => x.Lines).ToArray();

            GC.Collect();

            Line.OutputLines(Paths.Jams_wo36_txt, jams);
            GC.Collect();
            Line.OutputLines(Paths.Task_36_txt, task);
        }