Guest User

Untitled

a guest
Sep 10th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Session
  2.     @DNF: -1
  3.     solves = []
  4.  
  5.     solves: -> solves
  6.     length: -> solves.length
  7.     reset:  -> solves = []
  8.  
  9.     add: (solve) ->
  10.         solves[solves.length] = solve
  11.  
  12.     delete: (index) ->
  13.         solves.splice index, 1
  14.  
  15.     current_average: (n) ->
  16.         average(solves.length - n, n)
  17.    
  18.     trim_count = (n) ->
  19.         Math.ceil n / 20.0
  20.  
  21.     average = (index, length) ->
  22.         return Session.DNF if (length - index) < 3
  23.  
  24.         trim = trim_count length
  25.         copy = solves.slice index, index + length
  26.         copy.sort session_sort
  27.         copy.splice(0, trim)
  28.         copy.splice(copy.length - trim, trim)
  29.  
  30.         return Session.DNF if copy[copy.length - 1]['DNF']
  31.  
  32.         sum = copy.reduce ((a, b) -> a + b['time']), 0
  33.         sum / (length - (2 * trim))
  34.  
  35.     mean = ->
  36.         return Session.DNF if solves.length < 1
  37.  
  38.         dnfs = 0
  39.         sum = solves.reduce ((t, s) ->
  40.             t + if s['DNF'] then ++dnfs; 0 else s['time']), 0
  41.  
  42.         return Session.DNF if solves.length == dnfs
  43.         sum / (solves.length - dnfs)
  44.  
  45.     session_sort = (a, b) ->
  46.         return 1  if a['DNF']
  47.         return -1 if b['DNF']
  48.         return a['time'] - b['time']
  49.  
  50. @Session = Session
Add Comment
Please, Sign In to add comment