Advertisement
Guest User

async

a guest
Dec 25th, 2014
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.70 KB | None | 0 0
  1. open System
  2. open System.IO
  3. open System.Diagnostics
  4.  
  5. let path = @"C:\Users\juegest\"
  6. let parse s = ()
  7.  
  8. let calc x coef =
  9.     let res, _, _ =
  10.         coef
  11.         |> Array.fold
  12.             (fun (r, d, pow) k ->
  13.                 let npow = pow * x
  14.                 (r + (k * npow) / d, d + 1., npow) ) (0., 1., 1.)
  15.     res
  16.  
  17. let awaitTask = Async.AwaitIAsyncResult >> Async.Ignore
  18. let processAllFiles n =
  19.     seq { for i in 1 .. n -> async {
  20.             let in_filename = path + @"inp" + string i + ".txt"
  21.             let out_filename = path + @"out" + string i + ".txt"
  22.             use fin = File.OpenRead(in_filename)
  23.             use sr = new StreamReader(fin)
  24.             let! s = sr.ReadLineAsync() |> Async.AwaitTask
  25.             let coef =
  26.                 s.Split([| ' ' |], StringSplitOptions.RemoveEmptyEntries)
  27.                 |> Array.map float
  28.                 |> Array.rev
  29.             let! s = sr.ReadLineAsync() |> Async.AwaitTask
  30.             let lims = s.Split([| ' ' |], StringSplitOptions.RemoveEmptyEntries) |> Array.map float
  31.             let a, b = lims.[0], lims.[1]
  32.             let result = (calc a coef - calc b coef) |> string
  33.             use fout = File.OpenWrite(out_filename)
  34.             use sw = new StreamWriter(fout)
  35.             do! sw.WriteLineAsync(result) |> awaitTask
  36.         }    
  37.     }
  38.     |> Async.Parallel
  39.     |> Async.RunSynchronously
  40.     |> ignore
  41.  
  42.  
  43. [<EntryPoint>]
  44. let main argv =  
  45.     let sw = new Stopwatch()
  46.     sw.Start()
  47.     processAllFiles 3
  48.     sw.Stop()
  49.     printfn "Done (time: %f)" (float sw.ElapsedMilliseconds / 1000.)
  50.     System.Console.ReadKey() |> ignore
  51.     0 // возвращение целочисленного кода выхода
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement