diff --git a/ocaml/1.ml b/ocaml/1.ml index 4b4017a..ddba180 100644 --- a/ocaml/1.ml +++ b/ocaml/1.ml @@ -1,12 +1,19 @@ #load "str.cma" ;; #use "lib/file_utils.ml" ;; +let top n calories = + let topn = List.filteri (fun i _ -> i < n) calories in + let numcal = List.fold_left (+) 0 topn in + Printf.printf "Top %d: %d\n" n numcal +;; + +let order_desc a b = if a < b then 1 else -1 in let contents = read_file "inputs/1.txt" in -let maxcal = Str.split (Str.regexp "\n\n") contents +let calories = Str.split (Str.regexp "\n\n") contents |> List.map (String.split_on_char '\n') |> List.map (List.map (int_of_string)) |> List.map (List.fold_left (+) 0) - |> List.fold_left (max) 0 - in - -Printf.printf "%d" maxcal + |> List.sort order_desc +in +top 1 calories; +top 3 calories