1
0

20 lines
534 B
OCaml
Raw Normal View History

2023-01-10 17:23:37 +01:00
#load "str.cma" ;;
2023-01-13 00:02:20 +01:00
#use "lib/utils.ml" ;;
2023-01-10 17:23:37 +01:00
2023-01-11 22:25:41 +01:00
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
2023-01-11 13:35:10 +01:00
let contents = read_file "inputs/1.txt" in
2023-01-11 22:25:41 +01:00
let calories = Str.split (Str.regexp "\n\n") contents
2023-01-10 17:23:37 +01:00
|> List.map (String.split_on_char '\n')
|> List.map (List.map (int_of_string))
|> List.map (List.fold_left (+) 0)
2023-01-11 22:25:41 +01:00
|> List.sort order_desc
in
top 1 calories;
top 3 calories