Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Linq;
- namespace linq_slideviews
- {
- public class StatisticsTask
- {
- public static double GetMedianTimePerSlide(List<VisitRecord> visits, SlideType slideType)
- {
- if (visits.Count == 0) return 0;
- var l = visits.OrderBy(visit => visit.UserId)
- .ThenBy(visit => visit.DateTime).ToArray();
- var a = visits
- .OrderBy(visit => visit.UserId)
- .ThenBy(visit => visit.DateTime)
- //делаю чтобы подряд один и тот жеюзер шел
- .Bigrams()
- .Select(t =>
- {
- if (t.Item1.UserId == t.Item2.UserId && t.Item1.SlideType == slideType)
- //делаю так чтобы только время одного юзера считалось, не разных
- return 60*(t.Item2.DateTime.Hour - t.Item1.DateTime.Hour) + t.Item2.DateTime.Minute - t.Item1.DateTime.Minute + 0.0;
- else return -1;
- //тупо для ретурна, все равно это не учитывается
- })
- .Where(b => b >= 1 && b <= 120);
- //фильтрую маленькие и большие значения
- if (a.Count() == 0) return 0;
- //если вдруг есть слайды, но они не образуют туплы, вывожу ноль как в тесте сказано
- return a.Median();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement