Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3.  
  4. namespace linq_slideviews
  5. {
  6. public class StatisticsTask
  7. {
  8. public static double GetMedianTimePerSlide(List<VisitRecord> visits, SlideType slideType)
  9. {
  10. if (visits.Count == 0) return 0;
  11. var l = visits.OrderBy(visit => visit.UserId)
  12. .ThenBy(visit => visit.DateTime).ToArray();
  13. var a = visits
  14. .OrderBy(visit => visit.UserId)
  15. .ThenBy(visit => visit.DateTime)
  16. //делаю чтобы подряд один и тот жеюзер шел
  17. .Bigrams()
  18. .Select(t =>
  19. {
  20. if (t.Item1.UserId == t.Item2.UserId && t.Item1.SlideType == slideType)
  21. //делаю так чтобы только время одного юзера считалось, не разных
  22. return 60*(t.Item2.DateTime.Hour - t.Item1.DateTime.Hour) + t.Item2.DateTime.Minute - t.Item1.DateTime.Minute + 0.0;
  23. else return -1;
  24. //тупо для ретурна, все равно это не учитывается
  25. })
  26. .Where(b => b >= 1 && b <= 120);
  27. //фильтрую маленькие и большие значения
  28. if (a.Count() == 0) return 0;
  29. //если вдруг есть слайды, но они не образуют туплы, вывожу ноль как в тесте сказано
  30. return a.Median();
  31. }
  32. }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement