Пример #1
0
            public WhetherReport DataUpdate()
            {
                WhetherReport updatedReport = new WhetherReport();

                int beginningRainTime = GetBeginningRainTime();
                int endingRainTime = GetEndingRainTime();

                beginningRainTime -= beginningRainTime % 5;

                int endingTimeDiff = (endingRainTime % 5);
                endingRainTime += (endingTimeDiff != 0 ? 5 - endingTimeDiff : 0);


                if (endingRainTime % 100 == 60)
                {
                    endingRainTime += 40;
                }

                if (beginningRainTime % 100 == 60)
                {
                    beginningRainTime += 40;
                }

                string begin = beginningRainTime.ToString().PadLeft(4, '0');
                string end = endingRainTime.ToString().PadLeft(4, '0');

                updatedReport.rainDuration = $"{begin}-{end}";

                return updatedReport;
            }
Пример #2
0
        public void Answer()
        {
            int rainNum = Int32.Parse(Console.ReadLine());
            List<WhetherReport> whetherReports = new List<WhetherReport>();
            for (int i = 0; i < rainNum; i++)
            {
                WhetherReport report = new WhetherReport();
                report.rainDuration = Console.ReadLine();
                whetherReports.Add(report);
            }

            WhetherReportComparer comparer = new WhetherReportComparer();
            whetherReports = whetherReports.Distinct(comparer).ToList();

            whetherReports = whetherReports.Select(d => d.DataUpdate()).ToList();

            whetherReports = whetherReports.Distinct(comparer).ToList();
            whetherReports.Sort((a, b) => a.GetBeginningRainTime() - b.GetBeginningRainTime());

            List<WhetherReport> foldingReports = new List<WhetherReport>();
            var beginFoldingReport = whetherReports[0];

            for (int i = 1; i < whetherReports.Count; i++)
            {
                var nextReport = whetherReports[i];

                if (beginFoldingReport.IsBetweenTheDays(nextReport))
                {

                    WhetherReport combineReport = new WhetherReport();
                    if (beginFoldingReport.GetEndingRainTime() <= nextReport.GetEndingRainTime())
                    {
                        var beginTime = beginFoldingReport.GetBeginningRainTime().ToString().PadLeft(4, '0');
                        var endTime = nextReport.GetEndingRainTime().ToString().PadLeft(4, '0');
                        combineReport.rainDuration = $"{beginTime}-{endTime}";
                    }
                    else
                    {
                        var beginTime = beginFoldingReport.GetBeginningRainTime().ToString().PadLeft(4, '0');
                        var endTime = beginFoldingReport.GetEndingRainTime().ToString().PadLeft(4, '0');
                        combineReport.rainDuration = $"{beginTime}-{endTime}";
                    }

                    beginFoldingReport = combineReport;
                }
                else
                {
                    foldingReports.Add(beginFoldingReport);
                    beginFoldingReport = nextReport;
                }
            }

            foldingReports.Add(beginFoldingReport);

            foreach (var whetherReport in foldingReports)
            {
                Console.WriteLine(whetherReport.ToString());
            }
        }
Пример #3
0
            public bool IsBetweenTheDays(WhetherReport other)
            {
//                Console.WriteLine($"begin : {GetBeginningRainTime()}");
//                Console.WriteLine($"end   : {GetEndingRainTime()}");
//                Console.WriteLine($"other begin : {other.GetBeginningRainTime()}");
//                Console.WriteLine($"other end   : {other.GetEndingRainTime()}");

                bool betweenBeginRainTime = GetBeginningRainTime() <= other.GetBeginningRainTime() &&
                                            other.GetBeginningRainTime() <= GetEndingRainTime();

//                Console.WriteLine(betweenBeginRainTime);

                return(betweenBeginRainTime);
            }
Пример #4
0
 public bool IsBetweenTheDays(WhetherReport other)
 {
     bool betweenBeginRainTime = GetBeginningRainTime() <= other.GetBeginningRainTime() &&
                                 other.GetBeginningRainTime() <= GetEndingRainTime();
     return betweenBeginRainTime;
 }