Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module NWS
- type Czas =
- | Sekunda of float
- | Kwarta of float
- | Tercja of float
- | Miesiac of float
- let wypisz (c: Czas) =
- match c with
- | Sekunda x -> printfn "%A sekund" x
- | Kwarta x -> printfn "%A kwart" x
- | Tercja x -> printfn "%A tercji" x
- | Miesiac x -> printfn "%A miesiecy" x
- let zsumuj (cl: Czas list) =
- let sek = (List.fold (fun acc x ->
- match x with
- | Sekunda x -> acc + x
- | _ -> acc
- ) 0.0 cl)
- let kwart = (List.fold (fun acc x ->
- match x with
- | Kwarta x -> acc + x
- | _ -> acc
- ) 0.0 cl)
- let tercji = (List.fold (fun acc x ->
- match x with
- | Tercja x -> acc + x
- | _ -> acc
- ) 0.0 cl)
- let mies = (List.fold (fun acc x ->
- match x with
- | Miesiac x -> acc + x
- | _ -> acc
- ) 0.0 cl)
- [Sekunda (sek); Kwarta (kwart); Tercja (tercji); Miesiac (mies)]
- let rec calkowitaSek (cl: Czas list) =
- match cl with
- | [] -> 0.0
- | x::xs ->
- let value =
- match x with
- | Sekunda v -> v
- | Tercja v -> v / 60.0
- | Kwarta v -> v / 3600.0
- | Miesiac v -> 86400.0 * 29.5 * v
- value * (calkowitaSek xs)
- let najwiekszyPrzedzial (cl: Czas list) =
- List.maxBy (fun x -> calkowitaSek [x]) cl
Advertisement
Add Comment
Please, Sign In to add comment