Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.27 KB | None | 0 0
  1. open System
  2. open FSharp.Collections
  3.  
  4. let secondsToArrive  (distance:int) (speed:int)  =
  5.     ((float distance)/((float speed)*1000.0))*3600.0
  6.    
  7. let checkGreenLight (duration:int) (arrive:float)  =
  8.     let period=(arrive/(float duration))
  9.     let intperiod= int( System.Math.Round(period,10))
  10.     (intperiod % 2) = 0
  11.    
  12. let mutable SuccesChekers = []
  13. let addToList (listan) (element) = element::listan
  14. let speed = int(Console.In.ReadLine())
  15. let lightCount = int(Console.In.ReadLine())
  16.  
  17.  
  18.  
  19. for i in 0 .. lightCount - 1 do
  20.     let token = (Console.In.ReadLine()).Split [|' '|]
  21.     let distance = int(token.[0])
  22.     let duration = int(token.[1])
  23.     let currentSeconds = secondsToArrive distance
  24.     let currentGreen =  checkGreenLight duration
  25.     let succesCheck = currentSeconds >>  currentGreen
  26.     SuccesChekers <- addToList SuccesChekers succesCheck
  27.     ()
  28. let mutable maxSpeed =0
  29. let checkGivenSpeed speed (listOfChecks: (int->bool)list) =
  30.     List.forall(fun elem-> elem speed ) listOfChecks
  31.  
  32. let speeds= Seq.sortDescending (seq { 0 .. speed })
  33.  
  34. let result=Seq.find (fun elem-> (eprintfn "%i" elem );  checkGivenSpeed elem SuccesChekers) speeds
  35.  
  36.    
  37.  
  38. (* Write an action using printfn *)
  39. (* To debug: eprintfn "Debug message" *)
  40.  
  41. printfn "%i" result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement