SHARE
TWEET

Untitled

a guest Mar 23rd, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top