Advertisement
ROMaster2

Percentile

Oct 1st, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Imports LiveSplit.Model.RunFactories
  2. Imports System.IO
  3. Imports LiveSplit.Model.Comparisons
  4.  
  5. Module Module1
  6.  
  7.     Sub Main()
  8.         Dim stream = File.OpenRead("C:\Users\Administrator\Downloads\LiveSplit\oWiI.lss")
  9.         Dim runFactory As New XMLRunFactory(stream)
  10.         Dim comparisonGeneratorsFactory As New StandardComparisonGeneratorsFactory()
  11.         Dim run = runFactory.Create(comparisonGeneratorsFactory)
  12.  
  13.         Dim Goaltimestring As String
  14.         Dim Goaltime As TimeSpan
  15.         Goaltimestring = InputBox("What is your goaltime? Enter as hh:mm:ss.000")
  16.         ''Goaltimestring = "04:37:03.589"
  17.        Goaltime = TimeSpan.Parse(Goaltimestring)
  18.  
  19.         Dim i As Integer
  20.         Dim n As Integer
  21.         Dim Percentile As Double
  22.         Dim PercMin As Double
  23.         Dim PercMax As Double
  24.         Dim PercPosi As Double
  25.         Dim PercPosiUp As Integer
  26.         Dim PercPosiDn As Integer
  27.         Dim SplitTimes As New ArrayList
  28.         Dim SegTime As Double
  29.         Dim RunSum As Double
  30.         PercMin = 0
  31.         PercMax = 1
  32.         Do
  33.             RunSum = 0
  34.             Percentile = 0.5 * (PercMax - PercMin) + PercMin
  35.             For i = 0 To run.Count - 1
  36.                 Dim TempSplits As New ArrayList
  37.                 For n = 0 To run(i).SegmentHistory.Count - 1
  38.                     If i > 0 Then
  39.                         If run(i).SegmentHistory(n).Time.HasValue And run(i - 1).SegmentHistory(n).Time.HasValue Then
  40.                             TempSplits.Add(run(i).SegmentHistory(n).Time.Value.TotalMilliseconds)
  41.                         End If
  42.                     Else
  43.                         If run(i).SegmentHistory(n).Time.HasValue Then
  44.                             TempSplits.Add(run(i).SegmentHistory(n).Time.Value.TotalMilliseconds)
  45.                         End If
  46.                     End If
  47.                 Next
  48.                 PercPosi = Percentile * (TempSplits.Count - 1)
  49.                 PercPosiUp = Math.Ceiling(PercPosi)
  50.                 PercPosiDn = Math.Floor(PercPosi)
  51.                 If PercPosiUp > PercPosiDn Then
  52.                     SegTime = TempSplits(PercPosiUp) * (PercPosi - PercPosiDn) + TempSplits(PercPosiDn) * Math.Abs(PercPosiDn - PercPosi)
  53.                 Else
  54.                     SegTime = TempSplits(PercPosi)
  55.                 End If
  56.                 SplitTimes.Add(SegTime)
  57.                 RunSum += SegTime
  58.             Next
  59. ''          For Each num In SplitTimes
  60. ''              Console.WriteLine(TimeSpan.FromMilliseconds(num))
  61. ''          Next
  62. ''          Console.WriteLine(RunSum.ToString)
  63. ''          Console.WriteLine(Percentile.ToString)
  64.            If Math.Round(RunSum, 0) = Math.Round(Goaltime.TotalMilliseconds, 0) Or PercMax = PercMin Then
  65.                 Exit Do
  66.             Else
  67.                 SplitTimes.Clear()
  68.             End If
  69.             If RunSum > Goaltime.TotalMilliseconds Then
  70.                 PercMax = Percentile
  71.             Else
  72.                 PercMin = Percentile
  73.             End If
  74.         Loop
  75.  
  76.         Console.WriteLine(run.GameName)
  77.         For Each num In SplitTimes
  78.             Console.WriteLine(TimeSpan.FromMilliseconds(num))
  79.         Next
  80.         Console.Read()
  81.     End Sub
  82.  
  83. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement