Guest User

Untitled

a guest
Jan 26th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.52 KB | None | 0 0
  1. module NWS
  2.  
  3.     type Czas =
  4.     | Sekunda of float
  5.     | Kwarta of float
  6.     | Tercja of float
  7.     | Miesiac of float
  8.  
  9.     let wypisz (c: Czas) =
  10.         match c with
  11.         | Sekunda x -> printfn "%A sekund" x
  12.         | Kwarta x -> printfn "%A kwart" x
  13.         | Tercja x -> printfn "%A tercji" x
  14.         | Miesiac x -> printfn "%A miesiecy" x
  15.  
  16.     let zsumuj (cl: Czas list) =
  17.         let sek = (List.fold (fun acc x ->
  18.             match x with
  19.             | Sekunda x -> acc + x
  20.             | _ -> acc
  21.         ) 0.0 cl)
  22.         let kwart = (List.fold (fun acc x ->
  23.             match x with
  24.             | Kwarta x -> acc + x
  25.             | _ -> acc
  26.         ) 0.0 cl)
  27.         let tercji = (List.fold (fun acc x ->
  28.             match x with
  29.             | Tercja x -> acc + x
  30.             | _ -> acc
  31.         ) 0.0 cl)
  32.         let mies = (List.fold (fun acc x ->
  33.             match x with
  34.             | Miesiac x -> acc + x
  35.             | _ -> acc
  36.         ) 0.0 cl)
  37.         [Sekunda (sek); Kwarta (kwart); Tercja (tercji); Miesiac (mies)]
  38.  
  39.     let rec calkowitaSek (cl: Czas list) =
  40.         match cl with
  41.         | [] -> 0.0
  42.         | x::xs ->
  43.             let value =
  44.                 match x with
  45.                     | Sekunda v -> v
  46.                     | Tercja v -> v / 60.0
  47.                     | Kwarta v -> v / 3600.0
  48.                     | Miesiac v -> 86400.0 * 29.5 * v
  49.             value * (calkowitaSek xs)
  50.  
  51.     let najwiekszyPrzedzial (cl: Czas list) =
  52.         List.maxBy (fun x -> calkowitaSek [x]) cl
Advertisement
Add Comment
Please, Sign In to add comment