Advertisement
Guest User

Untitled

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