Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- open FSharp.Collections
- let secondsToArrive (distance:int) (speed:int) =
- ((float distance)/((float speed)*1000.0))*3600.0
- let checkGreenLight (duration:int) (arrive:float) =
- eprintfn "llegada : %f , duracion : %i" arrive duration
- eprintfn "llegada entre duracion: %f" (arrive/(float duration))
- (int( arrive/(float duration)) % 2) = 0
- let mutable SuccesChekers = []
- let addToList (listan) (element) = element::listan
- let speed = int(Console.In.ReadLine())
- let lightCount = int(Console.In.ReadLine())
- for i in 0 .. lightCount - 1 do
- let token = (Console.In.ReadLine()).Split [|' '|]
- let distance = int(token.[0])
- let duration = int(token.[1])
- let currentSeconds = secondsToArrive distance
- let currentGreen = checkGreenLight duration
- let succesCheck = currentSeconds >> currentGreen
- SuccesChekers <- addToList SuccesChekers succesCheck
- ()
- let mutable maxSpeed =0
- let checkGivenSpeed speed (listOfChecks: (int->bool)list) =
- List.forall(fun elem-> elem speed ) listOfChecks
- let speeds= Seq.sortDescending (seq { 0 .. speed })
- eprintfn " Para 60 el resultado es: %b " (checkGivenSpeed speed SuccesChekers)
- let result=Seq.find (fun elem-> (eprintfn "%i" elem ); checkGivenSpeed elem SuccesChekers) speeds
- (* Write an action using printfn *)
- (* To debug: eprintfn "Debug message" *)
- printfn "%i" result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement